Project1

标题: 【ACE】魔法盾脚本请教,如何做出复数的魔法盾 [打印本页]

作者: ACRI    时间: 2022-7-29 11:40
标题: 【ACE】魔法盾脚本请教,如何做出复数的魔法盾
本帖最后由 ACRI 于 2022-7-29 22:46 编辑

RUBY 代码复制
  1. class Game_Battler < Game_BattlerBase
  2.  
  3.   STATE_ID = 14   #魔法盾状态的id号
  4.   MP_RATE  = 1.0  #魔法盾吸收伤害的比率0.4就是10点伤害hp6点mp4点
  5.   MP_DAMAGE_RATE = 1  #1MP抵消多少伤害
  6.   VARIABLE_ID = 0      #1点mp抵消(3号变量的值+2)点伤害,如果不需要变量功能,就把这个值设为0或负数
  7.   #--------------------------------------------------------------------------
  8.   # ● 计算伤害
  9.   #--------------------------------------------------------------------------
  10.   def make_damage_value(user, item)
  11.     value = item.damage.eval(user, self, $game_variables)
  12.     value *= item_element_rate(user, item)
  13.     value *= pdr if item.physical?
  14.     value *= mdr if item.magical?
  15.     value *= rec if item.damage.recover?
  16.     value = apply_critical(value) if @result.critical
  17.     value = apply_variance(value, item.damage.variance)
  18.     value = apply_guard(value)
  19.     if item.damage.to_hp? and self.state?(STATE_ID)
  20.       mrate = MP_DAMAGE_RATE
  21.       mrate += $game_variables[VARIABLE_ID] if $game_variables[VARIABLE_ID]
  22.       mp_value = [(value * MP_RATE/mrate).to_i  , self.mp].min
  23.       value -= mp_value * mrate
  24.       self.mp -= mp_value
  25.     end
  26.     @result.make_damage(value.to_i, item)
  27.   end
  28. end

这个魔法盾脚本,请问有没有办法让魔法盾的状态id更多,而且不同的状态ID有不同的吸收率,最后是能否做到让状态没有魔法值自动解除?
作者: houyuxiaoyang    时间: 2022-7-30 10:21
转成表 stateId = {}   statId["1"] = { "MP_RATE" => 1,  "MP_DAMAGE_RATE " => 1, "VARIABLE_ID" => 0 }   这种的不就行了 然后你改一下这个函数 后面加个编号

作者: ACRI    时间: 2022-7-30 17:01
houyuxiaoyang 发表于 2022-7-30 10:21
转成表 stateId = {}   statId["1"] = { "MP_RATE" => 1,  "MP_DAMAGE_RATE " => 1, "VARIABLE_ID" => 0 }  ...

个人不懂脚本(可以说是完全不懂那种)
所以不知道怎么弄啊,老哥
作者: ACRI    时间: 2022-7-31 04:07
houyuxiaoyang 发表于 2022-7-30 10:21
转成表 stateId = {}   statId["1"] = { "MP_RATE" => 1,  "MP_DAMAGE_RATE " => 1, "VARIABLE_ID" => 0 }  ...

好吧,我是白痴,搞到工程全废了
作者: 阿薩男爵    时间: 2022-7-31 07:03
本帖最后由 alexncf125 于 2022-7-31 08:50 编辑

现在大多数人都去用MV和MZ工具了,所以愿意回答你的人也不多,其实我也不懂,
但是你在下到一个脚本后弄清楚用法,然后做自己的设定,尽量贴合着脚本的功能来做,
没有脚本基础还是不要想着拓展脚本功能,这里请大佬改脚本是要rmb的,游戏也不必做得太过复杂,
没谁一开始就能做出个神作来的。
作者: ACRI    时间: 2022-7-31 16:09
阿薩男爵 发表于 2022-7-31 07:03
现在大多数人都去用MV和MZ工具了,所以愿意回答你的人也不多,其实我也不懂,
但是你在下到一个脚本 ...

嗯,也是,还是得自己学脚本啊
作者: ACRI    时间: 2022-7-31 16:14
本帖最后由 alexncf125 于 2022-7-31 17:22 编辑
阿薩男爵 发表于 2022-7-31 07:03
现在大多数人都去用MV和MZ工具了,所以愿意回答你的人也不多,其实我也不懂,
但是你在下到一个脚本 ...


游戏其实到不复杂,各种机制也很简陋,就是这个魔法盾实在是让我XX,本来是想搞个等级越高学习的魔法盾越强(抵消的伤害比例越高),但是这个并不支持多个状态,XX啊
作者: 和啊啊啊    时间: 2022-7-31 20:55
  1. class Game_ActionResult
  2.   #--------------------------------------------------------------------------
  3.   # ● 生成伤害
  4.   #--------------------------------------------------------------------------
  5.   alias eagle_mega_shield_make_damage make_damage
  6.   def make_damage(value, item)
  7.     eagle_mega_shield_make_damage(value, item)
  8.     if @battler.state?(31) && @hp_damage > 0
  9.       v = @hp_damage * 0.5 # 此处修改抵消比例
  10.       v = @battler.mp if @battler.mp < v.to_i # 新增 当mp不足时 只扣除mp数目
  11.       @hp_damage -= v.to_i
  12.       @mp_damage += v.to_i
  13.     end
  14.     if @battler.state?(32) && @hp_damage > 0
  15.       v = @hp_damage * 0.65 # 此处修改抵消比例
  16.       v = @battler.mp if @battler.mp < v.to_i # 新增 当mp不足时 只扣除mp数目
  17.       @hp_damage -= v.to_i
  18.       @mp_damage += v.to_i
  19.     end
  20.     if @battler.state?(33) && @hp_damage > 0
  21.       v = @hp_damage * 0.8 # 此处修改抵消比例
  22.       v = @battler.mp if @battler.mp < v.to_i # 新增 当mp不足时 只扣除mp数目
  23.       @hp_damage -= v.to_i
  24.       @mp_damage += v.to_i
  25.     end
  26.   end
  27. end
复制代码
可以用我这个试试 忘记从哪个大佬哪里拿到的了

作者: soulsaga    时间: 2022-7-31 23:20
本帖最后由 soulsaga 于 2022-8-1 22:07 编辑

RUBY 代码复制
  1. class Game_Battler < Game_BattlerBase
  2.  
  3. @state_id  = { #魔法盾状态的id号 左ID右魔法盾吸收伤害的比率
  4.    14 => 1.0,
  5.    15 => 1.0,
  6.    16 => 1.0
  7.   }
  8.   #STATE_ID = 14   #魔法盾状态的id号
  9.   #MP_RATE  = 1.0  #魔法盾吸收伤害的比率0.4就是10点伤害hp6点mp4点
  10.   MP_DAMAGE_RATE = 1  #1MP抵消多少伤害
  11.   VARIABLE_ID = 0      #1点mp抵消(3号变量的值+2)点伤害,如果不需要变量功能,就把这个值设为0或负数
  12.   #--------------------------------------------------------------------------
  13.   # ● 计算伤害
  14.   #--------------------------------------------------------------------------
  15.   def make_damage_value(user, item)
  16.     value = item.damage.eval(user, self, $game_variables)
  17.     value *= item_element_rate(user, item)
  18.     value *= pdr if item.physical?
  19.     value *= mdr if item.magical?
  20.     value *= rec if item.damage.recover?
  21.     value = apply_critical(value) if @result.critical
  22.     value = apply_variance(value, item.damage.variance)
  23.     value = apply_guard(value)
  24.     for state in @state_id.keys
  25.     if item.damage.to_hp? and self.state?(state)
  26.       mrate = MP_DAMAGE_RATE
  27.       mrate += $game_variables[VARIABLE_ID] if $game_variables[VARIABLE_ID]
  28.       for mpr in @state_id.values
  29.       mp_value = [(value * mpr/mrate).to_i  , self.mp].min
  30.       end
  31.       value -= mp_value * mrate
  32.       self.mp -= mp_value
  33.     end
  34. end
  35.     @result.make_damage(value.to_i, item)
  36.   end
  37. end


未测试..
很久没碰RGSS3了..
可能存在误导成份..见谅

作者: ACRI    时间: 2022-8-1 00:22
soulsaga 发表于 2022-7-31 23:20
class Game_Battler < Game_BattlerBase

STATE_ID = { #魔法盾状态的id号 左ID右魔法盾吸收伤害的比率

感谢这位老哥的帮助,可惜28行那边报错了
作者: ACRI    时间: 2022-8-1 00:44
soulsaga 发表于 2022-7-31 23:20
class Game_Battler < Game_BattlerBase

STATE_ID = { #魔法盾状态的id号 左ID右魔法盾吸收伤害的比率

额,改好了吗?
作者: ACRI    时间: 2022-8-1 01:15
soulsaga 发表于 2022-7-31 23:20
class Game_Battler < Game_BattlerBase

STATE_ID = { #魔法盾状态的id号 左ID右魔法盾吸收伤害的比率

又试了一次,不行啊,还是28报错
作者: ACRI    时间: 2022-8-1 22:01
本帖最后由 ACRI 于 2022-8-1 22:02 编辑
soulsaga 发表于 2022-7-31 23:20
class Game_Battler < Game_BattlerBase

state_id  = { #魔法盾状态的id号 左ID右魔法盾吸收伤害的比率


唉,还是24行

360截图20220801155906937.jpg (12.09 KB, 下载次数: 15)

就是这样了

就是这样了





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