Project1

标题: 关于属性上限 [打印本页]

作者: 前世涅缘    时间: 2018-1-18 16:10
标题: 关于属性上限
RT啊,自带的各属性上限貌似是999?但是像力量敏捷智力这些属性如果要自定义一个上限怎么做呢,比如260?貌似用公共事件做了无效,也不知道为什么会这样,请各位大佬看看给个解决法子啊,不胜感激!

搜狗截图18年01月18日1603_1.png (8.69 KB, 下载次数: 33)

搜狗截图18年01月18日1603_1.png

作者: soulsaga    时间: 2018-1-18 16:22
操作变量並不影响角色能力的说..
作者: 前世涅缘    时间: 2018-1-18 16:24
好吧,仔细想了下,貌似一个是看不见的变量运算,一个是看的见的界面数值显示?就是有一个敏捷X2的首饰,游戏里力量敏捷智力幸运啥的最大值是260,所以如果本身敏捷超过130带上这个首饰也只能达到260,显示界面也是260,不足130就很简单了直接X2,希望有大佬帮忙解决下啊谢谢!
作者: chd114    时间: 2018-1-18 16:46
Game_BattleBase裏面的這部分決定了能力的最大值

  1.   #--------------------------------------------------------------------------
  2.   # ● 获取普通能力的最大值
  3.   #--------------------------------------------------------------------------
  4.   def param_max(param_id)
  5.     return 999999 if param_id == 0  # MHP
  6.     return 9999   if param_id == 1  # MMP
  7.     return 999
  8.   end
复制代码

參考其中對mhp、mmp的單獨設定上限修改就行
比如在
  1. retufn 999
复制代码
的上面加一個
  1. return 250 if param_id==2
复制代码
就是力量上限為250
你也可以通過角色id、職業id等等做更多更複雜的上限修改
甚至可以在這個方法的開始部分設一個新的變量,比如a
然後在下面加各種判定
如果職業id為1那a+=500
如果是1號角色a+=400
最後返回a也可以
作者: 芯☆淡茹水    时间: 2018-1-18 18:04
本帖最后由 芯☆淡茹水 于 2018-1-18 18:13 编辑

记得以前有一个帮别人写的最大属性,可以初始备注和游戏中更改

  1. #==============================================================================
  2. class Game_System
  3.   #--------------------------------------------------------------------------
  4.   def param_max_data
  5.     return @param_max_data || {}
  6.   end
  7.   #--------------------------------------------------------------------------
  8.   def param_max(actor_id, param_id)
  9.     return !param_max_data[actor_id] ? nil : param_max_data[actor_id][param_id]
  10.   end
  11.   #--------------------------------------------------------------------------
  12.   def change_param_max(actor_id, param_id, num)
  13.     @param_max_data = @param_max_data || {}
  14.     @param_max_data[actor_id] = @param_max_data[actor_id] || []
  15.     @param_max_data[actor_id][param_id] = [param_id == 1 ? 0 : 1, num].max
  16.   end
  17. end
  18. #==============================================================================
  19. class Game_Actor < Game_Battler
  20.   #--------------------------------------------------------------------------
  21.   def note_param_max(param_id)
  22.     reg = [/<MaxHp:(\d+)>/,/<MaxMp:(\d+)>/,/<MaxAtk:(\d+)>/,/<MaxDef:(\d+)>/]
  23.     reg += [/<MaxMat:(\d+)>/,/<MaxMdf:(\d+)>/,/<MaxAgi:(\d+)>/,/<MaxLuk:(\d+)>/]
  24.     return actor.note.match(reg[param_id]) ? $1.to_i : nil
  25.   end
  26.   #--------------------------------------------------------------------------
  27.   alias xr_new_param_max param_max
  28.   def param_max(param_id)
  29.     return $game_system.param_max(@actor_id, param_id) ||
  30.            note_param_max(param_id) || xr_new_param_max(param_id)
  31.   end
  32. end
  33. #==============================================================================
  34. class Game_Interpreter
  35.   #--------------------------------------------------------------------------
  36.   def change_param_max(actor_id, param_id, num)
  37.     $game_system.change_param_max(actor_id, param_id, num)
  38.   end
  39. end
  40. #==============================================================================
复制代码

作者: 前世涅缘    时间: 2018-1-19 14:18
chd114 发表于 2018-1-18 16:46
Game_BattleBase裏面的這部分決定了能力的最大值

參考其中對mhp、mmp的單獨設定上限修改就行

感谢大佬帮忙啊,只不过貌似无效啊,按你说的加了一行return 260 if param_id ==6没效果啊,6不是敏捷的ID编号么,是不是还要改别的什么东西?
作者: chd114    时间: 2018-1-19 17:45
前世涅缘 发表于 2018-1-19 14:18
感谢大佬帮忙啊,只不过貌似无效啊,按你说的加了一行return 260 if param_id ==6没效果啊,6不是敏捷的I ...

要加在return 999的前面,加在后面没效果,没有条件限制的返回值要放到最后处理,不然加进去不会处理
作者: 前世涅缘    时间: 2018-1-20 14:50
chd114 发表于 2018-1-19 17:45
要加在return 999的前面,加在后面没效果,没有条件限制的返回值要放到最后处理,不然加进去不会处理 ...

带上手镯之后状态里敏捷数据还是284,翻倍了的。

搜狗截图18年01月20日1445_1.png (7.62 KB, 下载次数: 47)

搜狗截图18年01月20日1445_1.png

搜狗截图18年01月20日1446_2.png (81.88 KB, 下载次数: 33)

搜狗截图18年01月20日1446_2.png

作者: chd114    时间: 2018-1-20 14:55
前世涅缘 发表于 2018-1-20 14:50
带上手镯之后状态里敏捷数据还是284,翻倍了的。

兩種原因:
1、你用到的其他腳本也動了param_max
2、你用的其他腳本動了param(param_id)
全局搜索一下def param_max或者def param(param_id)看看
作者: 前世涅缘    时间: 2018-1-20 17:07
chd114 发表于 2018-1-20 14:55
兩種原因:
1、你用到的其他腳本也動了param_max
2、你用的其他腳本動了param(param_id)

还真是,加入了一种代币,以前设置成贵重物品可是默认的数量上限只有10个,后来用了个大佬芙蕾雅的破限脚本解决了,刚刚为了不冲突把那个代币设置普通物品了,把那个破限脚本全部注释掉了,现在已经没事了!太感谢了!都是强迫症闹的啊,辛苦那么久才弄到那个破限脚本现在又不能用了。。。都是为了那一点点完美的感觉,代币弄成贵重物品舒服些,现在算了,不管这些了,感谢大佬帮忙
作者: chd114    时间: 2018-1-20 17:30
前世涅缘 发表于 2018-1-20 17:07
还真是,加入了一种代币,以前设置成贵重物品可是默认的数量上限只有10个,后来用了个大佬芙蕾雅 ...

一般那种破限脚本是用来破数据库最大999上限用的···只是属性和持有上限不需要这么干
作者: 前世涅缘    时间: 2018-1-21 15:57
chd114 发表于 2018-1-20 17:30
一般那种破限脚本是用来破数据库最大999上限用的···只是属性和持有上限不需要这么干 ...

破限有很多种,就看各人设置的方向了,反正我的这个问题已经解决啦,感谢大佬帮忙!大佬这么热心我又有动力继续了,,,就在这连帖吧!做了一个全体攻击伤害递减的技能,比方说公式100 - index X 20,貌似只有第1回合管用,比方说怪有ABCD4只都是90血,所以第1回合伤害一次是100,80,60,40没有问题,而且A死亡,但是第2回合开始就出问题了,伤害还是80,60,40而不是100,80,60(因为A死亡),貌似这公式不会刷新?不知大佬有空否。
作者: chd114    时间: 2018-1-21 16:28
前世涅缘 发表于 2018-1-21 15:57
破限有很多种,就看各人设置的方向了,反正我的这个问题已经解决啦,感谢大佬帮忙!大佬这么热心我又有动 ...

先p一下敵人的組看看
作者: soulsaga    时间: 2018-1-21 16:30
index?死亡不影响的吧..
作者: 前世涅缘    时间: 2018-1-21 22:01
soulsaga 发表于 2018-1-21 16:30
index?死亡不影响的吧..

所以才请教各位怎么让这个公式正常化啊,第一回合A已经死了,第2回合开始B才是第1个怪,伤害应该是100不是80,之前搜索到一个一样的帖子,回帖的就是回复我这个公式解决的,貌似那楼主就这么解决了没下文了,可是从2回合开始就出现我描述的问题啊。
作者: 前世涅缘    时间: 2018-1-21 22:02
chd114 发表于 2018-1-21 16:28
先p一下敵人的組看看

不懂,P一下敌人的组啥意思哈?




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1