Project1

标题: 如何在战斗中角色死亡时打开对应开关 [打印本页]

作者: 电子旗鱼    时间: 2021-8-7 00:24
标题: 如何在战斗中角色死亡时打开对应开关
如题,目的是想要战斗界面时,角色被打死,获得死亡状态的时候,打开对应的开关。(打开的开关是用于开启战场条件的事件的,所以不能在战场事件中进行编辑,最好的情况就是通过“无法战斗”状态的备注输入指令,只要角色获得这个状态就开启开关)
如果是需要进入rpg.objects.js里面进行编辑的话,可能需要麻烦提供一下详细步骤,因为本人不是程序出身,比较适合直接套用插件来实现。
这个问题已经困扰许久,希望有处理方法的大神可以不啬赐教,非常感谢!

作者: MH-Pride    时间: 2021-8-7 00:24
这个就是增加状态的function stateId=数据库里面状态的id
为什么需要 switch case?
Game_Battler.prototype.addState = function(stateId) {
    if (this.isStateAddable(stateId)) {
        if (!this.isStateAffected(stateId)) {
            this.addNewState(stateId);
            this.refresh();
        }
        this.resetStateCounts(stateId);
        this._result.pushAddedState(stateId);
    }
};


这里就是死亡后加的状态在game_battler下直接增加状态this.addState(this.deathStateId()) 如果你把里面的this.deathStateId() 改成数据库里面的id就不会出现死亡状态而是数据库里面状态了
Game_Battler.prototype.refresh = function() {
    Game_BattlerBase.prototype.refresh.call(this);
    if (this.hp === 0) {
        this.addState(this.deathStateId());
    } else {
        this.removeState(this.deathStateId());
    }
};
问题是你想实现什么样子的效果 打开公共效果会发什么的事件直接写在脚本就可以了
不太清楚为什么要纠结在开关和公共事件
有$都可以调用 你打开游戏进入战斗按f12把 $gameSwitches.setValue(参数)就能直接执行
如果有效果就直接写到这下面 如果没有效果或者出错的话就证明你的公共事件可能有问题
Game_Actor.prototype.performCollapse = function() {
    Game_Battler.prototype.performCollapse.call(this);
  $gameSwitches.setValue(【开关编号】, true/false)
$gameTemp.reserveCommonEvent(【公共事件id】);
    if ($gameParty.inBattle()) {
        SoundManager.playActorCollapse();
    }
};
作者: MH-Pride    时间: 2021-8-7 09:28
JAVASCRIPT 代码复制
  1. Game_Actor.prototype.performCollapse = function() {
  2.     Game_Battler.prototype.performCollapse.call(this);
  3.     if ($gameParty.inBattle()) {
  4.         SoundManager.playActorCollapse();
  5.     }
  6. };




确实在objects 里面 这个就是但角色死了的时候触发的
我最近写了个角色死亡就换后备队员就靠这个
作者: 电子旗鱼    时间: 2021-8-7 16:22
MH-Pride 发表于 2021-8-7 09:28
Game_Actor.prototype.performCollapse = function() {
    Game_Battler.prototype.performCollapse.call( ...

感谢答复!如何写入JS才正确规范呢?这是之前的朋友给我的答复
添加状态方法
Game_Battler.prototype.addState
参数stateId 里面自己写switch case

开关操作
$gameSwitches.setValue(【开关编号】, true/false)

调用公共事件
$gameTemp.reserveCommonEvent(【公共事件id】);
苦逼的我不懂语言,尝试过很多次,不过肯定是因为书写不规范导致游戏报错。很不好意思,但还是想追问一下,根据上面的信息,switch case是书写在function(这里)吗,以及$gameSwitches.setValue(【开关编号】, true/false)这段指令应该放在哪边,感谢!
作者: 电子旗鱼    时间: 2021-8-8 00:27
MH-Pride 发表于 2021-8-7 00:24
这个就是增加状态的function stateId=数据库里面状态的id
为什么需要 switch case?
Game_Battler.prototy ...

使用你的代码完美解决问题了,如果不是你愿意回答的这么详细,可能我就只能放弃死亡回归的功能了,非常感谢!




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1