查看: 4725|回复: 5

[已经过期] 如何修改这个脚本(已解决)

[复制链接]
梦石
10
星屑
7625
在线时间
684 小时
注册时间
2017-1-9
回帖
596

我没有哭开拓者

发表于 2017-9-21 22:55:02 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 世界第一中二 于 2017-9-22 22:03 编辑
  1. (function () {
  2.         var new_levelUp = Game_Actor.prototype.levelUp;
  3.         Game_Actor.prototype.levelUp = function() {
  4.                 new_levelUp.call(this);
  5.                 if(this._actorId === 1){ //←这里的数字 => 数据库人物id
  6.                         $gameTemp.reserveCommonEvent(1); //←这里的数字 => 公共事件id
  7.                 }
  8.         };
  9. }())();
复制代码

这个脚本是之前我的问题中【铅笔描绘的思念】大佬给我的解答,效果是当1号人物升级时执行1号公共事件。
现在我想普及这个系统,需要的效果是1号人物升级时执行1号公共事件,2号人物升级时执行2号公共事件,三号和四号同理(因为总共有四个角色)。
但是单纯的复制粘贴这一脚本,会导致在两个人物同时升级时在下面的脚本的效果覆盖上一脚本
我想要脚本能在战斗结束时分别判断不同人物是否升级,然后按照序号执行各自的公共事件。
但是作为脚本盲不知道应该怎么改……(哇的一声哭出来)
只能寻求各位dalao的帮忙了……新人才用mv没几天QvQ。

恳求各位大佬的帮忙!
这个B天天摸鱼,快点来个谁把他从被窝里拖出来
梦石
0
星屑
2306
在线时间
1010 小时
注册时间
2012-4-30
回帖
1455

开拓者

发表于 2017-9-21 23:12:48 | 显示全部楼层
本帖最后由 铅笔描绘的思念 于 2017-9-21 23:16 编辑

原贴评论问下就好了。。

其实很简单的修改下就好了。。
如果有想学习JS的想法的话。。w3school JavaScript Switch 语句这部分就能达到要求

想好要不要看
[pre lang="javascript"](function () {
        var new_levelUp = Game_Actor.prototype.levelUp;
        Game_Actor.prototype.levelUp = function() {
                new_levelUp.call(this);
                switch(this._actorId ){
                        case 1:
                                $gameTemp.reserveCommonEvent(1);
                                break;
                        case 2:
                                $gameTemp.reserveCommonEvent(2);
                                break;
                }
        };
}())();[/pre]

点评

人物同时升级的情况,后面的公共事件会把前面的顶替掉,同时只有一个事件执行……这个怎么解决啊大佬  发表于 2017-9-22 11:54
当然其实if……else也ok的啦  发表于 2017-9-21 23:17
回复

使用道具 举报

梦石
0
星屑
34460
在线时间
5096 小时
注册时间
2012-11-19
回帖
4715

开拓者

发表于 2017-9-22 14:35:52 | 显示全部楼层
本帖最后由 芯☆淡茹水 于 2017-9-22 15:12 编辑

我是来搞笑的。

[pre lang="javascript"](function () {
     var new_levelUp = Game_Actor.prototype.levelUp;
     Game_Actor.prototype.levelUp = function() {
             new_levelUp.call(this);
             $gameTemp.reserveCommonEvent(this._actorId);
     };
}())();[/pre]


才发现后面的公共事件会覆盖掉以前的,这样就行了:

[pre lang="javascript"](function () {
Game_System.prototype.commonEventData = function() {
    return this._commonEventData || [];
};
Game_System.prototype.addEventData = function(id) {
    this._commonEventData = this._commonEventData || [];
    this._commonEventData.push(id);
};
var new_levelUp = Game_Actor.prototype.levelUp;
Game_Actor.prototype.levelUp = function() {
     new_levelUp.call(this);
     if (this._actorId < 5) $gameSystem.addEventData(this._actorId);
};
Game_Interpreter.prototype.setupReservedCommonEvent = function() {
    if ($gameTemp.isCommonEventReserved()) {
        this.setup($gameTemp.reservedCommonEvent().list);
        $gameTemp.clearCommonEvent();
        return true;
    } else {
        //--------------------------------------------------------
        if (!this.isRunning()) {
            if ($gameSystem.commonEventData().length > 0){
                var evId = $gameSystem.commonEventData().shift();
                $gameTemp.reserveCommonEvent(evId);
            }
        }
        //--------------------------------------------------------
        return false;
    }
};
}())();[/pre]

点评

谢谢两位大佬的帮助,问题完美解决。 编程语言我也会努力学习的,即使6r不再,我热爱rpg的❤也永远不变!  发表于 2017-9-22 20:38

评分

参与人数 2星屑 +30 收起 理由
世界第一中二 + 10 我很赞同
铅笔描绘的思念 + 20 我很赞同

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复 1 0

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部