设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1806|回复: 4
打印 上一主题 下一主题

[有事请教] 如何在战斗中角色死亡时打开对应开关

[复制链接]

Lv2.观梦者

梦石
0
星屑
287
在线时间
49 小时
注册时间
2021-3-22
帖子
13
跳转到指定楼层
1
发表于 2021-8-7 00:24:05 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
10星屑
如题,目的是想要战斗界面时,角色被打死,获得死亡状态的时候,打开对应的开关。(打开的开关是用于开启战场条件的事件的,所以不能在战场事件中进行编辑,最好的情况就是通过“无法战斗”状态的备注输入指令,只要角色获得这个状态就开启开关)
如果是需要进入rpg.objects.js里面进行编辑的话,可能需要麻烦提供一下详细步骤,因为本人不是程序出身,比较适合直接套用插件来实现。
这个问题已经困扰许久,希望有处理方法的大神可以不啬赐教,非常感谢!

最佳答案

查看完整内容

这个就是增加状态的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); } }; 这里就 ...
云儿愿为一只鸟,鸟儿愿为一朵云。

Lv3.寻梦者

梦石
0
星屑
2585
在线时间
297 小时
注册时间
2021-5-4
帖子
101
2
发表于 2021-8-7 00:24:06 | 只看该作者
这个就是增加状态的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();
    }
};
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2585
在线时间
297 小时
注册时间
2021-5-4
帖子
101
3
发表于 2021-8-7 09:28:36 | 只看该作者
JAVASCRIPT 代码复制
  1. Game_Actor.prototype.performCollapse = function() {
  2.     Game_Battler.prototype.performCollapse.call(this);
  3.     if ($gameParty.inBattle()) {
  4.         SoundManager.playActorCollapse();
  5.     }
  6. };




确实在objects 里面 这个就是但角色死了的时候触发的
我最近写了个角色死亡就换后备队员就靠这个
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
287
在线时间
49 小时
注册时间
2021-3-22
帖子
13
4
 楼主| 发表于 2021-8-7 16:22:13 | 只看该作者
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)这段指令应该放在哪边,感谢!
云儿愿为一只鸟,鸟儿愿为一朵云。
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
287
在线时间
49 小时
注册时间
2021-3-22
帖子
13
5
 楼主| 发表于 2021-8-8 00:27:41 | 只看该作者
MH-Pride 发表于 2021-8-7 00:24
这个就是增加状态的function stateId=数据库里面状态的id
为什么需要 switch case?
Game_Battler.prototy ...

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

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-28 00:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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