加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
我会陆续把自己适用的一些战斗脚本封成插件,并附上代码解析。
一方面整理找BUG 一方面为想深入脚本的朋友做教学
该插件功能
1.自定义tp上限
2.控制战前,战后tp重置
3.改变受伤时tp获取量
* 具体表现为愤怒值,单次受伤超过一定量获得定量的tp。
* trg大于200%时 角色将被激怒,每次受伤都将回满tp
var parameters = PluginManager.parameters('Limpid_PeculiarTP'); var Limpid_Maxtp = parseInt(String(parameters["MaxTP"])); var Limpid_InitTp = parseInt(String(parameters["InitTp"])); var Base_Tpget = parseFloat(String(parameters["Base_Tpget"]));
var parameters = PluginManager.parameters('Limpid_PeculiarTP');
var Limpid_Maxtp = parseInt(String(parameters["MaxTP"]));
var Limpid_InitTp = parseInt(String(parameters["InitTp"]));
var Base_Tpget = parseFloat(String(parameters["Base_Tpget"]));
这段是脚本读取插件配置的属性 存到对应的变量内。
/**tp上限改变*/ Game_BattlerBase.prototype.maxTp = function() {return Limpid_Maxtp;};
/**tp上限改变*/
Game_BattlerBase.prototype.maxTp = function() {return Limpid_Maxtp;};
初始化是战前 TP清除是战后 我也服原生是怎么想出来的 战前战后都清tp
/**控制tp初始化*/ Game_Battler.prototype.initTp = function() {if(Limpid_InitTp>0) this.setTp(Math.randomInt(25));};
/**控制tp初始化*/
Game_Battler.prototype.initTp = function() {if(Limpid_InitTp>0) this.setTp(Math.randomInt(25));};
/**控制tp清除*/ Game_Battler.prototype.clearTp = function() {if(Limpid_InitTp>0) this.setTp(0);};
/**控制tp清除*/
Game_Battler.prototype.clearTp = function() {if(Limpid_InitTp>0) this.setTp(0);};
/**受到伤害 固定得到tp*/ Game_Battler.prototype.chargeTpByDamage = function(damageRate) { var btp=Base_Tpget*0.01*((2-this.trg)/2) if(btp<=0) this.gainSilentTp(Limpid_Maxtp); else { var tp_slice=Limpid_Maxtp/10 var gtp=damageRate / btp; if(gtp<1) gtp=0 else if(gtp<2&>p>1) gtp= tp_slice; else gtp = Math.log2(damageRate / btp* tp_slice)+ tp_slice if (gtp > 0) this.gainSilentTp(Math.floor(gtp)); } };
/**受到伤害 固定得到tp*/
Game_Battler.prototype.chargeTpByDamage = function(damageRate) {
var btp=Base_Tpget*0.01*((2-this.trg)/2)
if(btp<=0) this.gainSilentTp(Limpid_Maxtp);
else
{
var tp_slice=Limpid_Maxtp/10
var gtp=damageRate / btp;
if(gtp<1) gtp=0
else if(gtp<2&>p>1) gtp= tp_slice;
else gtp = Math.log2(damageRate / btp* tp_slice)+ tp_slice
if (gtp > 0) this.gainSilentTp(Math.floor(gtp));
}
};
damageRate是伤害百分比
原生
只有一句话 var value = Math.floor(50 * damageRate * this.tcr); 意思是如果TP获取率为1 打100%血获得50tp tcr是人物的TP获取率 默认为1
--------------------------------------
改动后
trg原生是目标比例 我用它替代了tcr
如果嫌冲突 你可以用其他百分比属性进行替换
btp是 获得1tp 受伤基数 默认基数是 3.125%伤害 获得TP
如果trg大于0 这个值会变小 当trg为2 或以上 角色呈现激怒 只要受伤便回满TP
进入 else
tp_slice的作用是 无论你填写的Limpid_Maxtp 是多少 我都按10份TP来进行处理
gtp = 伤害百分比与获取tp相除
如果大于1 小于2 获得1份tp
大于2时 用gtp与2求对数 获得tp
这个算法的作用便是
默认的3.125%获得一份tp
6.25%获得二份
12.5%获得三份
类推
而基数会随着 tcr变小或变大
|