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

Project1

 找回密码
 注册会员
搜索

接上次命中類型抗性的問題

查看数: 2636 | 评论数: 16 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2017-2-10 02:06

正文摘要:

本帖最后由 卡奥尼特 于 2017-2-12 17:33 编辑 首先,這是妮特上次提問的問題 https://rpg.blue/forum.php?mod=viewthread&tid=396595 妮特在原帖要求了該腳本想實現以下要求 現在在這裡總結一下想要的功能 ...

回复

QQ蚊子湯 发表于 2017-2-11 16:51:23
本帖最后由 QQ蚊子湯 于 2017-2-11 19:49 编辑

提供放棄人生整合版本

只要複製貼上就可以了

包含主樓要的三樣功能

1.命中類型增傷

2.敵人、裝備、角色、狀態的備註欄輸入<抵擋:
數字> 都可以減免傷害

3.默認所有技能為必中,只要在技能的備註欄輸入<閃避:1或2>可以變更為指定閃避,1 為物理閃避 2為魔法閃避


RUBY 代码复制
  1. class RPG::BaseItem
  2.       #--------------------------------
  3.       # ○ 獲取抵擋備註
  4.       #--------------------------------
  5.       def qq_damage_parry
  6.         return (self.note =~ /<抵擋:\s*(\d+.*?)>/ ? $1.to_i: 0)
  7.       end
  8.       #--------------------------------
  9.       # ○ 获取必定命中的伤害比率备注信息(通用)
  10.       #--------------------------------
  11.       def certain_hit_damage_rate
  12.         return (self.note =~ /<必中伤害比率\s?(.*)?>/ ? $1.to_i / 100.0 : 1.0)
  13.       end
  14.       #--------------------------------
  15.       # ○ 獲取閃避備註
  16.       #--------------------------------
  17.       def qq_dege
  18.        if self.note =~ /<閃避:\s*(\d+.*?)>/
  19.          case $1.to_i
  20.           when 1
  21.             return "eva"
  22.           when 2
  23.             return "mev"
  24.           else
  25.             return 0
  26.           end
  27.           else
  28.             return 0
  29.         end
  30.       end
  31.     end
  32.     class Game_Actor < Game_Battler
  33.       #--------------------------------
  34.       # ○ 獲取角色抵擋備註
  35.       #--------------------------------
  36.       def qq_damage_parry
  37.         parry = actor.qq_damage_parry
  38.         parry += qq_equip_parry
  39.         return parry
  40.       end
  41.       #--------------------------------
  42.       # ○ 获取必定命中伤害比率备注信息(角色)
  43.       #--------------------------------
  44.       def certain_hit_damage_rate
  45.         rate = actor.certain_hit_damage_rate
  46.         rate *= c_hit_d_rate_plus
  47.         return rate
  48.       end
  49.       #--------------------------------
  50.       # ○ 獲取裝備抵擋備註
  51.       #--------------------------------
  52.       def qq_equip_parry
  53.         state_parry  = self.states.inject(0){|p, s| p += s.qq_damage_parry}
  54.         weapon_parry = self.weapons.inject(0){|p, w| p += w.qq_damage_parry}
  55.         armor_parry  = self.armors.inject(0){|p, a| p += a.qq_damage_parry}
  56.         return (state_parry + weapon_parry + armor_parry)
  57.       end
  58.       #--------------------------------
  59.       # ○ 获取状态/武器/防具的必定命中伤害比率备注信息
  60.       #--------------------------------
  61.       def c_hit_d_rate_plus
  62.         state_rate  = self.states.inject(1.0) {|r, s| r *= s.certain_hit_damage_rate}
  63.         weapon_rate = self.weapons.inject(1.0){|r, w| r *= w.certain_hit_damage_rate}
  64.         armor_rate  = self.armors.inject(1.0) {|r, a| r *= a.certain_hit_damage_rate}
  65.         return (state_rate * weapon_rate * armor_rate)
  66.       end
  67.     end
  68.     class Game_Enemy < Game_Battler
  69.       #--------------------------------
  70.       # ○ 獲取敵人備註
  71.       #--------------------------------
  72.       def qq_damage_parry
  73.         basic = enemy.qq_damage_parry
  74.         state_parry  = self.states.inject(0){|p, s| p += s.qq_damage_parry}
  75.         return (basic + state_parry)
  76.       end
  77.       #--------------------------------
  78.       # ○ 获取必定命中伤害比率备注信息(敌人)
  79.       #--------------------------------
  80.       def certain_hit_damage_rate
  81.         basic = enemy.certain_hit_damage_rate
  82.         state_rate = self.states.inject(1.0){|r, s| r *= s.certain_hit_damage_rate}
  83.         return (basic * state_rate)
  84.       end
  85.     end
  86.     class Game_Battler < Game_BattlerBase
  87.       def parry
  88.         return (self.qq_damage_parry)
  89.       end
  90.       end
  91.     class Game_Battler < Game_BattlerBase
  92.       #--------------------------------
  93.       # ○ 获取必定命中伤害比率(统一入口)
  94.       #--------------------------------
  95.       def cdr
  96.         p "#{self.name}比率:#{self.certain_hit_damage_rate}"
  97.         return (self.certain_hit_damage_rate / 1.0)
  98.       end
  99.       #--------------------------------
  100.       # ○ 计算伤害
  101.       #--------------------------------
  102.       def make_damage_value(user, item)
  103.         value = item.damage.eval(user, self, $game_variables)
  104.         value *= item_element_rate(user, item)
  105.         value *= pdr if item.physical?
  106.         value *= mdr if item.magical?
  107.         value *= rec if item.damage.recover?
  108.         # 必中伤害倍率计算
  109.         value *= cdr if item.certain?
  110.         #----------------
  111.         value = apply_critical(value) if @result.critical
  112.         value = apply_variance(value, item.damage.variance)
  113.         value = apply_guard(value)
  114.         value -= parry if !item.damage.recover?
  115.         value = 0  if !item.damage.recover? && value < 0
  116.         @result.make_damage(value.to_i, item)
  117.       end
  118.       #--------------------------------
  119.       # ○ 计算技能/物品的闪避几率(所有伤害类型的技能都改为无法闪避)
  120.       #--------------------------------
  121.       alias sny46_161005_item_eva item_eva
  122.       def item_eva(user, item)
  123.         return 0 if item.qq_dege == 0
  124.         return eval item.qq_dege if item.is_a?(RPG::Skill)
  125.         return sny46_161005_item_eva(user, item)
  126.       end
  127.       #--------------------------------
  128.       # ○ 计算技能/物品的成功几率(所有伤害类型的技能都改为不会miss)
  129.       #--------------------------------
  130.       alias sny46_161009_item_hit item_hit
  131.       def item_hit(user, item)
  132.         return 1 if item.is_a?(RPG::Skill)
  133.         return sny46_161009_item_hit(user, item)
  134.       end
  135.     end

评分

参与人数 2星屑 +80 收起 理由
卡奥尼特 + 60 嗯,测试成功。可能是之前没有保存好。.
魔法丶小肉包 + 20 本肉包选择放弃人生XDDDD

查看全部评分

QQ蚊子湯 发表于 2017-2-11 19:51:50
再次修改,
現在只要不是註解欄寫有閃避類型的技能
即使敵人有閃避特性也會必中了

点评

測試有效 。 0.0  发表于 2017-2-11 20:01

评分

参与人数 2星屑 +316 梦石 +1 收起 理由
cinderelmini + 66 递茶~~
RaidenInfinity + 250 + 1 认可答案

查看全部评分

卡奥尼特 发表于 2017-2-11 19:22:45
本帖最后由 卡奥尼特 于 2017-2-11 19:26 编辑
QQ蚊子湯 发表于 2017-2-11 18:57
新版本沒有135行,使用戰鬥測試需要按存檔之後才會應用腳本變動


在測試之後的發現的最後一個問題,就是
在所有技能类型(即物理攻擊、魔法攻擊)为必中的情况下, 如果主角、職業、裝備等具有閃避的特性的情況下,
那麼所有技能類型的 “必中” 都失效了
QQ蚊子湯 发表于 2017-2-11 18:57:52
新版本沒有135行,使用戰鬥測試需要按存檔之後才會應用腳本變動
卡奥尼特 发表于 2017-2-11 18:06:57
QQ蚊子湯 发表于 2017-2-11 17:59
剛忘了加個防護罩,你再重貼一次

還是提示135行出現錯誤。 嗯,建議您測試後再放上來 0.0
QQ蚊子湯 发表于 2017-2-11 17:59:21
剛忘了加個防護罩,你再重貼一次
QQ蚊子湯 发表于 2017-2-11 17:42:12
上面代碼有更改一下,不過跟你這問題沒關係
再重新複製一次吧

為了避免衝突,
你有把其他的版本移除或註解掉嗎
如果同時存在可能會出BUG哦
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-17 05:57

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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