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

Project1

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

[原创发布] 【原创 代码?教学】受击TP获取

[复制链接]

Lv1.梦旅人

梦石
0
星屑
26
在线时间
701 小时
注册时间
2021-3-24
帖子
549
跳转到指定楼层
1
发表于 2021-5-31 15:27:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我会陆续把自己适用的一些战斗脚本封成插件,并附上代码解析。
一方面整理找BUG 一方面为想深入脚本的朋友做教学


该插件功能
1.自定义tp上限
2.控制战前,战后tp重置
3.改变受伤时tp获取量
*   具体表现为愤怒值,单次受伤超过一定量获得定量的tp。
*   trg大于200%时 角色将被激怒,每次受伤都将回满tp




JAVASCRIPT 代码复制
  1. var parameters = PluginManager.parameters('Limpid_PeculiarTP');
  2.     var Limpid_Maxtp = parseInt(String(parameters["MaxTP"]));
  3.     var Limpid_InitTp = parseInt(String(parameters["InitTp"]));
  4.     var Base_Tpget = parseFloat(String(parameters["Base_Tpget"]));


这段是脚本读取插件配置的属性  存到对应的变量内。


JAVASCRIPT 代码复制
  1. /**tp上限改变*/
  2.     Game_BattlerBase.prototype.maxTp = function() {return Limpid_Maxtp;};



初始化是战前  TP清除是战后  我也服原生是怎么想出来的  战前战后都清tp
JAVASCRIPT 代码复制
  1. /**控制tp初始化*/
  2.     Game_Battler.prototype.initTp = function() {if(Limpid_InitTp>0)  this.setTp(Math.randomInt(25));};

JAVASCRIPT 代码复制
  1. /**控制tp清除*/
  2.     Game_Battler.prototype.clearTp = function() {if(Limpid_InitTp>0)  this.setTp(0);};



JAVASCRIPT 代码复制
  1. /**受到伤害 固定得到tp*/
  2.     Game_Battler.prototype.chargeTpByDamage = function(damageRate) {
  3.         var btp=Base_Tpget*0.01*((2-this.trg)/2)
  4.         if(btp<=0) this.gainSilentTp(Limpid_Maxtp);
  5.         else
  6.         {
  7.             var tp_slice=Limpid_Maxtp/10
  8.             var gtp=damageRate / btp;
  9.             if(gtp<1) gtp=0
  10.             else if(gtp<2&&gtp>1) gtp= tp_slice;
  11.             else gtp = Math.log2(damageRate / btp* tp_slice)+ tp_slice
  12.             if (gtp > 0) this.gainSilentTp(Math.floor(gtp));
  13.         }
  14.     };


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变小或变大





  



Limpid_PeculiarTP.zip

1.04 KB, 下载次数: 70

全家活光光~

Lv1.梦旅人

梦石
0
星屑
191
在线时间
23 小时
注册时间
2021-8-17
帖子
19
2
发表于 2021-8-18 16:30:45 | 只看该作者
多谢分享解析教学,收藏一下

点评

什么阴间头像!  发表于 2023-7-22 12:47
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1169
在线时间
142 小时
注册时间
2021-5-3
帖子
20
3
发表于 2024-10-13 11:50:46 | 只看该作者
不错滴模组,YEP也没报错
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1169
在线时间
142 小时
注册时间
2021-5-3
帖子
20
4
发表于 2024-10-18 04:45:13 | 只看该作者
经过使用与测试,发现会与dspassiveskill被动插件有一定冲突,主要是在判定上,加上这个插件后似乎DS被动插件的TP判定条件就会失效,不管是低于还是高于。顺带一提这个可以设置单独几个角色的TP上限或者战前战后是否重置吗
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-13 14:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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