加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员  
 
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变小或变大 
 
 
 
 
 
   
  
 
 
 |