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

Project1

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

[已经过期] 一个可能有些奇葩的问题,伤害可以写入多个属性id吗?

[复制链接]

Lv2.观梦者

梦石
0
星屑
877
在线时间
195 小时
注册时间
2019-4-11
帖子
56
跳转到指定楼层
1
发表于 2021-3-2 23:05:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
首先今天参考了tomoaky的复数属性写法,在伤害公式中插入了这段实现了技能可以拥有多个属性修正的效果
RUBY 代码复制
  1. #==============================================================================
  2. # ★ RGSS3_複数属性スキル Ver1.0
  3. #==============================================================================
  4. =begin
  5.  
  6. 作者:tomoaky
  7. webサイト:ひきも記 ([url]http://hikimoki.sakura.ne.jp/[/url])
  8.  
  9. メモ欄にタグを書き込むことで複数の属性をもつスキルを作成できます。
  10.   <追加属性 3, 4, 5>
  11.  
  12. === 注意点 ===
  13.   ダメージ計算に適用される属性は最も有効なもののみです
  14.  
  15.  
  16. 2011.12.18 Ver1.0
  17.   公開
  18.  
  19. =end
  20.  
  21. #==============================================================================
  22. # ■ Game_Battler
  23. #==============================================================================
  24. class Game_Battler
  25.   #--------------------------------------------------------------------------
  26.   # ● スキル/アイテムの属性修正値を取得
  27.   #--------------------------------------------------------------------------
  28.   alias tmmelement_game_battler_item_element_rate item_element_rate
  29.   def item_element_rate(user, item)
  30.     result = [tmmelement_game_battler_item_element_rate(user, item)]
  31.     if /<追加属性\s+(\d+(?:\s*\,\s*\d+)*)\s*>/ =~ item.note
  32.       $1.scan(/\d+/).each do |id|
  33.         result.push(self.element_rate(id.to_i))
  34.       end
  35.     end
  36.     result.max
  37.   end
  38. end

RUBY 代码复制
  1. value *= item_element_rate(user, item)
  2.     if /<追加属性\s+(\d+(?:\s*\,\s*\d+)*)\s*>/ =~ item.note
  3.       $1.scan(/\d+/).each do |id|
  4.       value *= self.element_rate(id.to_i)
  5.       end
  6.     end

但是并没有高兴的太早,很快发现Taroxd的属性强化修正脚本的问题,只对主属性(也就是数据库的属性)生效伤害加成,额外属性并没有任何变化,试图用老办法(也就是效仿tomoaky的写法)居然提示报错属性修正不能变成浮点型(?),就在想有没有什么办法让技能用<追加属性 id>或者直接在脚本里定义来给技能写入多个属性id,这样有没有办法对多个属性生效?
RUBY 代码复制
  1. # @taroxd metadata 1.0
  2. # @display 属性修正的扩展
  3. # @require taroxd_core
  4. # @id element_effect
  5. # @help
  6. #             表示该角色/该职业/习得技能后/装上装备后/该敌人/获得状态后,
  7. #             战斗者使用第 id 号属性的技能时,效果乘以 rate
  8. # <ELEMENT 12 1.2>表示第12号属性效果乘以1.2
  9.  
  10. Taroxd::ElementEffect = true
  11.  
  12. class RPG::BaseItem
  13.   # 属性效果构成的 hash,属性ID => 效果
  14.   def element_effect
  15.     @element_effect ||= @note.scan(/<ELEMENT\s+(\d+)\s+(\d+(?:\.\d+)?)>/i)
  16.       .each_with_object(Hash.new(1.0)) { |(id, rate), hash|
  17.         hash[id.to_i] *= rate.to_f }
  18.   end
  19. end
  20.  
  21. class Game_Battler < Game_BattlerBase
  22.   def element_effect
  23.     note_objects.each_with_object(Hash.new(1.0)) do |e, h|
  24.       h.merge!(e.element_effect) { |_, r1, r2| r1 * r2 }
  25.     end
  26.   end
  27.  
  28.   calc_new_rate = lambda do |old, user, item|
  29.     if item.damage.element_id < 0
  30.       user.atk_elements.pi(old) { |id| user.element_effect[id] }
  31.     else
  32.       old * user.element_effect[item.damage.element_id]
  33.     end
  34.   end
  35.   def_with :item_element_rate, calc_new_rate
  36. end

Lv2.观梦者

梦石
0
星屑
877
在线时间
195 小时
注册时间
2019-4-11
帖子
56
2
 楼主| 发表于 2021-3-2 23:20:03 | 只看该作者
本帖最后由 sxjkjly8010 于 2021-3-2 23:25 编辑

刚关电脑就在思考是不是用value *= user.element_effect(id.to_i)就能实现了,明天试试……
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-29 20:26

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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