扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 128|回复: 0

[转载发布] 逃跑菜单并入ActorCommand的问题

[复制链接]
累计送礼:
0 个
累计收礼:
0 个
  • TA的每日心情
    开心
    2025-2-4 02:05
  • 签到天数: 110 天

    连续签到: 2 天

    [LV.6]常住居民II

    2327

    主题

    395

    回帖

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    6
    卡币
    10465
    OK点
    16
    推广点
    0
    同能卷
    0
    积分
    13215

    灌水之王

    发表于 2024-2-16 12:26:55 | 显示全部楼层 |阅读模式
    不太喜欢默认的逃跑选项的位置在PartyCommand,于是把逃跑并入了ActorCommand跟攻击物品技能放在一起

    使用Yanfly的插件的话,战斗开始的时候自动跳过partycommand那个战斗还是逃跑的菜单直接进入角色行动。
    稍微改一下ActorCommand加入逃跑,并且屏蔽掉退回上一层菜单就可以了,修改如下

    JAVASCRIPT 代码
    1. Scene_Battle.prototype.createActorCommandWindow = function(){
    2.     this._actorCommandWindow = new Window_ActorCommand();
    3.     this._actorCommandWindow.setHandler('attack', this.commandAttack.bind(this));
    4.     this._actorCommandWindow.setHandler('skill',  this.commandSkill.bind(this));
    5.     this._actorCommandWindow.setHandler('guard',  this.commandGuard.bind(this));
    6.     this._actorCommandWindow.setHandler('item',   this.commandItem.bind(this));
    7. //    this._actorCommandWindow.setHandler('cancel', this.selectPreviousCommand.bind(this));
    8. // 加入逃跑选项
    9.     this._actorCommandWindow.setHandler('escape', this.commandEscape.bind(this));
    10.     this.addWindow(this._actorCommandWindow);
    11.         //this._actorCommandWindow.opacity = 150;
    12. };
    13. Window_ActorCommand.prototype.makeCommandList = function(){
    14.     if(this._actor){
    15.         this.addAttackCommand();
    16.         this.addSkillCommands();
    17.         this.addGuardCommand();
    18.         this.addItemCommand();
    19. //加入逃跑选项
    20.                 this.addCommand(TextManager.escape, 'escape', BattleManager.canEscape());
    21.     }
    22. };
    复制代码


    回合制的时候没有任何问题,然而ATB的模式问题来了。
    如果逃跑失败的话,atb就不会继续更新,然后战斗就停留在逃跑失败的状态无法继续。翻了半天js也没找到究竟是哪个地方的问题。默认的在partycommand里面逃跑没有这个问题。应该是turn的计算哪里错了导致没有继续。这次代码一层套一层感觉很难找到哪里有问题。不知道有木有熟悉Yanfly的ATB的菊苣指点一下。。。

    Yanfly的逃跑的函数是这个
    JAVASCRIPT 代码
    1. BattleManager.processEscapeATB = function(){
    2.   $gameParty.performEscape();
    3.   SoundManager.playEscape();
    4.   var success = this._preemptive ? true : (Math.random() < this._escapeRatio);
    5.   if(success){
    6.       $gameParty.removeBattleStates();
    7.       this.displayEscapeSuccessMessage();
    8.       this._escaped = true;
    9.       this.processAbort();
    10.   }else{
    11.       this.displayEscapeFailureMessage();
    12.       this._escapeRatio += this._escapeFailBoost;
    13.       $gameParty.clearActions();
    14.       this.startTurn();
    15.       this.processFailEscapeATB();
    16.   }
    17.   return success;
    18. };
    复制代码


    然后那个默认的startTurn在ATB模式下是直接被跳过了,没有搞懂到底咋继续的。。。
    JAVASCRIPT 代码
    1. Yanfly.ATB.BattleManager_startTurn = BattleManager.startTurn;
    2. BattleManager.startTurn = function(){
    3.     if(this.isATB())return;
    4.     Yanfly.ATB.BattleManager_startTurn.call(this);
    5. };
    复制代码

                本帖来自P1论坛作者doranikofu,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=385854  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

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

    本版积分规则

    关闭

    幸运抽奖

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

    立即查看

    聊天机器人
    Loading...

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

    GMT+8, 2025-3-10 16:13 , Processed in 0.130326 second(s), 53 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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