设为首页收藏本站同能贴吧 切换语言 繁体中文
开启辅助访问 切换到窄版
扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 85|回复: 0

[制作教程] Restoring Lost Items After a Defeat

[复制链接]
累计送礼:
0 个
累计收礼:
1 个
  • TA的每日心情
    开心
    前天 04:10
  • 签到天数: 209 天

    连续签到: 2 天

    [LV.7]常住居民III

    4454

    主题

    864

    回帖

    2万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    7
    卡币
    22915
    OK点
    16
    推广点
    0
    同能卷
    50
    积分
    28263

    灌水之王

    发表于 5 天前 | 显示全部楼层 |阅读模式
    Have you ever been playing a game with a feature that returns you to some safe place after battle?
    What about maybe you're in a Dream Sequence and you lose the fight. You also lose all the really powerful healing items you said you'd never use until you really had to use them.

    With this neat trick you can allow the items used in combat to be restored the player in the event of a Battle Loss.

    Requirements
    Yanfly Auto Passive States
    SRD Battle End Events
    Any other Dependencies (such as Yanfly's Core Engine/SRD Core Engine) should be added to your project as well.

    Steps

    • Create a Passive State in the States tab. You may name it whatever you wish.
    • In your plugin manager add the state to the list of Actor Passives in YEP_AutoPassiveStates.
    • Inside the state you just created, add this code:
                    Code:       
    <Custom Battle Effect>  // Reset the Array at the start of battle.  // Store the items used into the Leader's Actor Variable.  $gameParty.leader()._itemsUsed = [];</Custom Battle Effect><Custom Action Start Effect>  // Check if the user is using an item.  if (user.currentAction()._item._dataClass === 'item') {    // Check if the item is a consumable which can be lost    if ($dataItems[user.currentAction()._item._itemId].consumable === true) {      // Add the item into the Array      $gameParty.leader()._itemsUsed.push(user.currentAction()._item._itemId);   }  }</Custom Action Start Effect>


    Next we add the code for the Lose Condition. Upon a loss, we will restore all items that were consumed in battle back to the player. Safety valves are pretty neat, yeah?

    • Create a common event for the lose condition. Name it whatever you want.
    • In your plugin manager add the common event ID to the Lose Common Event parameter in SRD_BattleEndEvents.
    • Inside of the common event you just created, add this in a Script Call event:
                    Code:       
    for (var i = 0; i < $gameParty.leader()._itemsUsed.length; i++) {$gameParty.gainItem($dataItems[$gameParty.leader()._itemsUsed], 1, false);}// Clear the Array$gameParty.leader()._itemsUsed = [];


    *For the sake of redundancy, you can add $gameParty.leader()._itemsUsed = []; into a win condition to wipe the array of items. This is redundant as the array is wiped at the start of each battle.
    **If you are not using SRD_BattleEndEvents and you do not use any random encounters in your game, you may instead opt to add the Lose Common Event to the Lose Condition under Battle Processing in the events that call it.
    ***This will not work if you are using Independent Items with Yanfly's Item Core.



    本贴来自国际rpgmaker官方论坛作者:residntevl处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:https://forums.rpgmakerweb.com/threads/restoring-lost-items-after-a-defeat.112747/
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    简体中文
    繁體中文
    English(英语)
    日本語(日语)
    Deutsch(德语)
    Русский язык(俄语)
    بالعربية(阿拉伯语)
    Türkçe(土耳其语)
    Português(葡萄牙语)
    ภาษาไทย(泰国语)
    한어(朝鲜语/韩语)
    Français(法语)
    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2026-7-14 15:37 , Processed in 0.063188 second(s), 55 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表