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

Project1

 找回密码
 注册会员
搜索
查看: 2675|回复: 23

[已经解决] 【ACE】魔法盾脚本请教,如何做出复数的魔法盾

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1965
在线时间
174 小时
注册时间
2022-6-24
帖子
176
发表于 2022-7-29 11:40:13 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 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有不同的吸收率,最后是能否做到让状态没有魔法值自动解除?
在尝试做游戏了,但还是个菜狗(结果现在编程,音乐和剧情设计没开始学,画画也暂时没时间学了(;д;))

(个人精神状况不是很好,有时会说出一些奇怪且根本没法理解意思的话,直接无视就好,如果说出的话不小心冒犯到你,我会在精神状况良好时和你道歉的(`・ω・´)(不过一般在感觉到不适时会直接下线,请勿过于担心))

Lv3.寻梦者

最萌的小猫

梦石
0
星屑
1347
在线时间
692 小时
注册时间
2011-11-5
帖子
3443
发表于 2022-7-30 10:21:49 | 显示全部楼层
转成表 stateId = {}   statId["1"] = { "MP_RATE" => 1,  "MP_DAMAGE_RATE " => 1, "VARIABLE_ID" => 0 }   这种的不就行了 然后你改一下这个函数 后面加个编号

评分

参与人数 1+1 收起 理由
ACRI + 1 塞糖

查看全部评分

小猫,感情浓郁的天然嘿啾一只,属性:水,嘿啾,无轨迹流线萌。喜欢在正午伸出小爪子卖着各种次元萌。平行穿越次元萌差。
如需要小猫,请认准啾怪时空电话。这宇宙萌源的秘密,需要找到时空边界萌源能量爆发的封印钥匙。快来和小猫一同去冒险吧!
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1965
在线时间
174 小时
注册时间
2022-6-24
帖子
176
 楼主| 发表于 2022-7-30 17:01:02 | 显示全部楼层
houyuxiaoyang 发表于 2022-7-30 10:21
转成表 stateId = {}   statId["1"] = { "MP_RATE" => 1,  "MP_DAMAGE_RATE " => 1, "VARIABLE_ID" => 0 }  ...

个人不懂脚本(可以说是完全不懂那种)
所以不知道怎么弄啊,老哥

点评

其实感觉,差不多明白了(毕竟一眼就感觉很简单的样子)  发表于 2022-7-30 20:42
不懂就去学习喽~学不会就放弃喽~  发表于 2022-7-30 18:38
在尝试做游戏了,但还是个菜狗(结果现在编程,音乐和剧情设计没开始学,画画也暂时没时间学了(;д;))

(个人精神状况不是很好,有时会说出一些奇怪且根本没法理解意思的话,直接无视就好,如果说出的话不小心冒犯到你,我会在精神状况良好时和你道歉的(`・ω・´)(不过一般在感觉到不适时会直接下线,请勿过于担心))
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1965
在线时间
174 小时
注册时间
2022-6-24
帖子
176
 楼主| 发表于 2022-7-31 04:07:48 | 显示全部楼层
houyuxiaoyang 发表于 2022-7-30 10:21
转成表 stateId = {}   statId["1"] = { "MP_RATE" => 1,  "MP_DAMAGE_RATE " => 1, "VARIABLE_ID" => 0 }  ...

好吧,我是白痴,搞到工程全废了
在尝试做游戏了,但还是个菜狗(结果现在编程,音乐和剧情设计没开始学,画画也暂时没时间学了(;д;))

(个人精神状况不是很好,有时会说出一些奇怪且根本没法理解意思的话,直接无视就好,如果说出的话不小心冒犯到你,我会在精神状况良好时和你道歉的(`・ω・´)(不过一般在感觉到不适时会直接下线,请勿过于担心))
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
10
星屑
10949
在线时间
1400 小时
注册时间
2010-8-31
帖子
571

开拓者

发表于 2022-7-31 07:03:12 | 显示全部楼层
本帖最后由 alexncf125 于 2022-7-31 08:50 编辑

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

评分

参与人数 1+1 收起 理由
ACRI + 1 塞糖

查看全部评分

相比起做游戏,更热衷于素材的加工呢。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1965
在线时间
174 小时
注册时间
2022-6-24
帖子
176
 楼主| 发表于 2022-7-31 16:09:51 | 显示全部楼层
阿薩男爵 发表于 2022-7-31 07:03
现在大多数人都去用MV和MZ工具了,所以愿意回答你的人也不多,其实我也不懂,
但是你在下到一个脚本 ...

嗯,也是,还是得自己学脚本啊
在尝试做游戏了,但还是个菜狗(结果现在编程,音乐和剧情设计没开始学,画画也暂时没时间学了(;д;))

(个人精神状况不是很好,有时会说出一些奇怪且根本没法理解意思的话,直接无视就好,如果说出的话不小心冒犯到你,我会在精神状况良好时和你道歉的(`・ω・´)(不过一般在感觉到不适时会直接下线,请勿过于担心))
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1965
在线时间
174 小时
注册时间
2022-6-24
帖子
176
 楼主| 发表于 2022-7-31 16:14:45 | 显示全部楼层
本帖最后由 alexncf125 于 2022-7-31 17:22 编辑
阿薩男爵 发表于 2022-7-31 07:03
现在大多数人都去用MV和MZ工具了,所以愿意回答你的人也不多,其实我也不懂,
但是你在下到一个脚本 ...


游戏其实到不复杂,各种机制也很简陋,就是这个魔法盾实在是让我XX,本来是想搞个等级越高学习的魔法盾越强(抵消的伤害比例越高),但是这个并不支持多个状态,XX啊
在尝试做游戏了,但还是个菜狗(结果现在编程,音乐和剧情设计没开始学,画画也暂时没时间学了(;д;))

(个人精神状况不是很好,有时会说出一些奇怪且根本没法理解意思的话,直接无视就好,如果说出的话不小心冒犯到你,我会在精神状况良好时和你道歉的(`・ω・´)(不过一般在感觉到不适时会直接下线,请勿过于担心))
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
346
在线时间
63 小时
注册时间
2020-2-24
帖子
13
发表于 2022-7-31 20:55:51 | 显示全部楼层
  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
复制代码
可以用我这个试试 忘记从哪个大佬哪里拿到的了

点评

感谢这位老哥的帮助,很有用  发表于 2022-8-1 00:14

评分

参与人数 1+1 收起 理由
ACRI + 1 认可答案

查看全部评分

回复 支持 1 反对 0

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33038
在线时间
10469 小时
注册时间
2009-3-15
帖子
4756
发表于 2022-7-31 23:20:40 | 显示全部楼层
本帖最后由 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了..
可能存在误导成份..见谅

点评

再试吧..如果再报错..你发一下报错的信息..  发表于 2022-8-1 18:00
24....还是报错....  发表于 2022-8-1 17:09
老哥,可以了,我这也没弄悬赏,你能这样帮我已经很感谢了  发表于 2022-8-1 02:13
老哥,这次是24行......  发表于 2022-8-1 02:11

评分

参与人数 1+1 收起 理由
ACRI + 1 塞糖

查看全部评分

回复 支持 1 反对 0

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1965
在线时间
174 小时
注册时间
2022-6-24
帖子
176
 楼主| 发表于 2022-8-1 00:22:53 | 显示全部楼层
soulsaga 发表于 2022-7-31 23:20
class Game_Battler < Game_BattlerBase

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

感谢这位老哥的帮助,可惜28行那边报错了

点评

改了..可以再试..  发表于 2022-8-1 00:36
在尝试做游戏了,但还是个菜狗(结果现在编程,音乐和剧情设计没开始学,画画也暂时没时间学了(;д;))

(个人精神状况不是很好,有时会说出一些奇怪且根本没法理解意思的话,直接无视就好,如果说出的话不小心冒犯到你,我会在精神状况良好时和你道歉的(`・ω・´)(不过一般在感觉到不适时会直接下线,请勿过于担心))
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-3-29 08:00

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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