Project1
标题:
小白的js修改之路~第一弹 地形伤害系列
[打印本页]
作者:
帝宗
时间:
2016-4-12 21:55
标题:
小白的js修改之路~第一弹 地形伤害系列
本帖最后由 帝宗 于 2016-4-12 21:56 编辑
本小白在做大地图的时候,发现对于沼泽等有害地形进行标记,玩家在上述图块行走时就会扣血10滴血,这种固定扣血方式太不高端了,于是本小白我默默地开始了伟大的研究计划。{:2_284:}
再修改之前,要下载一个叫做edit with Notepad++的软件。
PS:在翻遍了js文件夹下所有的js文件后,本小白终于找到了判断地形伤害的相关语句,一串basicfloordamage差点看晕本小白,本着研究先备份,不懂查有道的好习惯,本小白终于试出了修改的方法。
首先,我们打开工程目录下JS文件夹,找到rpg_objects.js文件,用刚刚下好的Notepad软件打开,在4172-4189行左右,找到以下语句:
Game_Actor.prototype.checkFloorEffect = function() {
if ($gamePlayer.isOnDamageFloor()) {
this.executeFloorDamage();
}
};
Game_Actor.prototype.executeFloorDamage = function() {
var damage = Math.floor(this.basicFloorDamage() * this.fdr);
damage = Math.min(damage, this.maxFloorDamage());
this.gainHp(-damage);
if (damage > 0) {
this.performMapDamage();
}
};
Game_Actor.prototype.basicFloorDamage = function() {
return
10
;
};
这时候,可以根据不同的需求,做出更改。
1.觉得10点血太多,可以把标红的10修改成需要的血量,或者把 this.gainHp(-damage); 修改成 this.gainHp(-需要扣除的血量);
甚至还可以把this.gainHp(-damage); 改成this.gainMp(-damage); ,变成可以掉蓝,如果两句都用,则表示有害地形红蓝都扣除。
2.希望在有害地形走一段距离以后,才开始扣血,可以在
if ($gamePlayer.isOnDamageFloor()) {
this.executeFloorDamage();
}
后面增加一段话,变成
Game_Actor.prototype.checkFloorEffect = function() {
if ($gamePlayer.isOnDamageFloor()) {
this.executeFloorDamage();
}else {
$gameVariables.setValue(1,0); //这里引用变量,玩家不在有害地形,1号变量赋值为0,可以考虑使用$gameVariables.setValue(1,$gameVariables.value(1)+1)之类的语句做成缓慢减少
} //防止玩家走3个有害的跑安全地形一下就不扣血的bug玩法
}; //但是这个需要完善,找到闪红光的语句,添加一个判定,扣血的条件下才闪红光,小白表示,闪红光语句到底长什么样.....
同时,把
ame_Actor.prototype.executeFloorDamage = function() {
var damage = Math.floor(this.basicFloorDamage() * this.fdr);
damage = Math.min(damage, this.maxFloorDamage());
this.gainHp(-damage);
if (damage > 0) {
this.performMapDamage();
}
};
修改为
Game_Actor.prototype.executeFloorDamage = function() {
var damage = Math.floor(this.basicFloorDamage() * this.fdr);
damage = Math.min(damage, this.maxFloorDamage());
$gameVariables.setValue(1,$gameVariables.value(1)+1) //在有害地形行走时,1号变量+1,注意,虽然这里是1,但实际游戏中走一格加的是5
if ($gameVariables.value(1) > 15) { //所以,这里判定的1号变量是大于15,代表有害地形行走超过3次开始损伤,这里可以考虑改成不固定的变量,做出一个可能不扣血的范围
this.gainHp(-damage);
}
if (damage > 0) {
this.performMapDamage();
}
};
3.由于扣血扣蓝可以选择能否导致战斗不能,这时候,我们需要在大地图界面直观标识血蓝的插件,这里,我使用的是MV图书馆提到的仿碧轨地图血条插件
https://rpg.blue/thread-386077-1-1.html
这个插件的使用在刚刚的网址里有详细的介绍。但是,这个插件默认是4个玩家头像,万一玩家默认队伍超过4人,所以还需要修改。
不过这个修改起来比较简单,用刚刚的软件打开插件,在205-207行可以找到:
Window_MapStatus.prototype.maxCols = function() {
return 4;
};
修改这个数字,就可以增加显示的人数,我建议改成5,一般5个角色足够了,而且AltmenuScreen1-3插件使用5个角色,配合立绘看起来刚刚好合适。
4.觉得扣血扣蓝太不高端,想做出类似随机事件的朋友,这里提供一个思路
ame_Actor.prototype.executeFloorDamage = function() {
var damage = Math.floor(this.basicFloorDamage() * this.fdr);
damage = Math.min(damage, this.maxFloorDamage());
this.gainHp(-damage);
if (damage > 0) {
this.performMapDamage();
}
};
把this.gainHp(-damage);去掉,修改为执行某公共事件的指令
同时在公共事件中利用区域赋值变量,根据变量出现分歧来开启不同的剧情,
你问我为什么不把使用的句子写上去?
因为我是小白....还没找到引用公共事件的语句,甚至是不是和ace一样要先用一个脚本引用公共事件的脚本,才能使用Game_Interpreter_Self.new(n)都不知道!{:2_251:}
最后,我想默默地提问,$game_party.actors[?].atk +=1 在mv里该怎么弄啊{:2_264:} 还有,怎么用脚本语言判定队伍中指定位置的角色是死亡状态{:2_270:} 欢淫各位大神前来指导!{:2_287:} 我打赌有人会想说:输入法暴露性格!
作者:
Maddoog
时间:
2024-4-7 10:38
增加攻击力么,可以看下有个方法
Game_BattlerBase.prototype.addParam = function(paramId, value) {
this._paramPlus[paramId] += value;
this.refresh();
};
复制代码
这里操作攻击力传入paramId为2,value为视角增加的值
判断死亡有个方法
Game_BattlerBase.prototype.isDead = function() {
return this.isAppeared() && this.isDeathStateAffected();
};
复制代码
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1