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

Project1

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

[已经解决] 接上次命中類型抗性的問題

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2634
在线时间
2380 小时
注册时间
2012-3-1
帖子
739
跳转到指定楼层
1
发表于 2017-2-10 02:06:22 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 卡奥尼特 于 2017-2-12 17:33 编辑


首先,這是妮特上次提問的問題
https://rpg.blue/forum.php?mod=viewthread&tid=396595


妮特在原帖要求了該腳本想實現以下要求
現在在這裡總結一下想要的功能
必中傷害加成 。可以參考VA自帶的 物理傷害加成魔法傷害加成
、所有命中類型變成必中類型,不過,也請加個判定,不希望每個技能都是 必中
、希望可以指定抵擋的,比如填 270 ,那麼就可以直接抵擋 270 點傷害……


因為第一個已經解決,所以忽略。
第二個就是,可以改變 物理攻擊魔法攻擊 為 不可閃避, 不過還是要加個判定。
這麼做只是不想讓 必定命中 這種類型的技能這麼孤單而已

第三個就是,可以指定抵擋多少點傷害,當然不需要纍計,是直接抵擋該數值的傷害。  
比如最多 抵擋  270 點傷害,程序計算的傷害為 500 點 ,實際受到的傷害為  230 點傷害。


如果能實現這兩個效果的話,就解決了 0.0
P.S. 不會寫腳本的妮特只能依賴別人了 QAQ
@cinderelmini



评分

参与人数 1星屑 +26 收起 理由
cinderelmini + 26 忘了看了………………

查看全部评分

Lv2.观梦者

梦石
0
星屑
644
在线时间
830 小时
注册时间
2016-7-24
帖子
649

开拓者

来自 9楼
发表于 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

查看全部评分

2016/07/17 加入RPG製作,勿忘初衷!
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
644
在线时间
830 小时
注册时间
2016-7-24
帖子
649

开拓者

2
发表于 2017-2-10 16:16:05 | 只看该作者
加寫這三行

然後在敵人的備註欄寫上數字

点评

看上去也只能寫在敵人上才有效。  发表于 2017-2-10 17:50
2016/07/17 加入RPG製作,勿忘初衷!
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
644
在线时间
830 小时
注册时间
2016-7-24
帖子
649

开拓者

3
发表于 2017-2-10 20:20:27 | 只看该作者
本帖最后由 QQ蚊子湯 于 2017-2-11 17:44 编辑

參考蹭得累桑的代碼,現在所有的備註欄都可以提供抵擋了
2016/07/17 加入RPG製作,勿忘初衷!
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2634
在线时间
2380 小时
注册时间
2012-3-1
帖子
739
4
 楼主| 发表于 2017-2-10 20:40:22 | 只看该作者
QQ蚊子湯 发表于 2017-2-10 20:20
參考蹭得累桑的代碼,現在所有的備註欄都可以提供抵擋了

代碼小白不會弄…… 但打上去之後似乎沒效果
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
644
在线时间
830 小时
注册时间
2016-7-24
帖子
649

开拓者

5
发表于 2017-2-10 22:45:38 | 只看该作者
本帖最后由 QQ蚊子湯 于 2017-2-10 22:49 编辑

因為這個腳本需要和蹭得累桑的命中類型增傷插件兼容一下
需要把我這個39行40行插入到,命中類型增傷的68和69行之間
並把命中增傷放在下方

要反過來作也可以
把蹭得累桑的命中類型增傷64行放這個腳本35行36行之間
並把被插入方放在下面
2016/07/17 加入RPG製作,勿忘初衷!
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2634
在线时间
2380 小时
注册时间
2012-3-1
帖子
739
6
 楼主| 发表于 2017-2-11 11:10:44 | 只看该作者
QQ蚊子湯 发表于 2017-2-10 22:45
因為這個腳本需要和蹭得累桑的命中類型增傷插件兼容一下
需要把我這個39行40行插入到,命中類型增傷的68和6 ...

加了後就變成這樣了,但去測試了下好像沒有效果。

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

使用道具 举报

Lv2.观梦者

梦石
0
星屑
644
在线时间
830 小时
注册时间
2016-7-24
帖子
649

开拓者

7
发表于 2017-2-11 13:56:52 | 只看该作者
雖然結構一樣,但是實際上這是兩個不一樣的插件
共通的地方只有樓上代碼的72~87行
其他地方也要輸入的說!

還有11行的方法名變得和5行一樣的話會覆蓋方法的!
不能完全理解建議先不要魔改,效果出來再改!
2016/07/17 加入RPG製作,勿忘初衷!
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2634
在线时间
2380 小时
注册时间
2012-3-1
帖子
739
8
 楼主| 发表于 2017-2-11 14:17:44 | 只看该作者
本帖最后由 卡奥尼特 于 2017-2-11 14:22 编辑
QQ蚊子湯 发表于 2017-2-11 13:56
雖然結構一樣,但是實際上這是兩個不一樣的插件
共通的地方只有樓上代碼的72~87行
其他地方也要輸入的說!


嗚,所以說是代碼小白。

…………
……
還是等dalao好了,但好像過於依賴了……
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2634
在线时间
2380 小时
注册时间
2012-3-1
帖子
739
10
 楼主| 发表于 2017-2-11 17:17:57 | 只看该作者
QQ蚊子湯 发表于 2017-2-11 16:51
提供放棄人生整合版本

只要複製貼上就可以了

嗯,這個,是哪裡出問題了?

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-13 11:01

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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