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

Project1

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

[已经过期] 如何给一个技能设置两个属性

[复制链接]

Lv2.观梦者

梦石
0
星屑
382
在线时间
36 小时
注册时间
2018-4-14
帖子
51
跳转到指定楼层
1
发表于 2018-5-25 22:16:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
求大神们帮助!
题目如题,
我想给一个技能设置多个属性,比如说 火+风
怎么做到?

Lv5.捕梦者

梦石
0
星屑
36402
在线时间
10791 小时
注册时间
2009-3-15
帖子
4813
2
发表于 2018-5-25 22:46:36 | 只看该作者
设定个属性名..叫火+风..就这么简单..
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
1
星屑
14790
在线时间
2106 小时
注册时间
2017-9-28
帖子
662
3
发表于 2018-5-25 23:19:27 | 只看该作者
原地址:https://rpg.blue/thread-405900-1-1.html


RUBY 代码复制
  1. # =============================================================================
  2. # TheoAllen - 多属性技能
  3. # Version : 1.0
  4. # Contact : [url]www.rpgmakerid.com[/url]
  5. # (This script documentation is written in informal indonesian language)
  6. # =============================================================================
  7. $imported = {} if $imported.nil?
  8. $imported[:Theo_MultiElements] = true
  9. # =============================================================================
  10. # CHANGE LOGS:
  11. # -----------------------------------------------------------------------------
  12. # 2013.05.05 - Started and Finished script
  13. # =============================================================================
  14. =begin
  15.  
  16.   介绍 :
  17.   本脚本可以为技能设定多重属性,还可以选择计算所占比例.
  18.  
  19.   使用方法:
  20.   如果技能有火属性,武器有斩切属性,则该技能已经有两种属性了。
  21.   使用技能/物品备注添加属性:
  22.  
  23.   <elements id: x>
  24.   <elements id: x,x>
  25.  
  26.   使用规定 :
  27.   署名脚本作者, TheoAllen. 你可以自由编辑此脚本,只要你不声明你是脚本的原作者
  28.   如果你想用此脚本于商业游戏,请和我共享收益.别忘了给我一份免费的游戏拷贝.  
  29.  
  30.   注意:
  31.   如果你对管理属性有想法,请联系我 [url]http://theolized.blogspot.com[/url]
  32.  
  33. =end
  34. # =============================================================================
  35. # 设定 :
  36. # =============================================================================
  37. module THEO
  38.   module ELEMENTS
  39.  
  40.     # -----------------------------------------------------------------------
  41.     PHYSICAL_ELEMENT = true
  42.     # -----------------------------------------------------------------------
  43.     # 如果你希望物理技能组合攻击属性(武器),设定为true.
  44.     # -----------------------------------------------------------------------
  45.  
  46.     # -----------------------------------------------------------------------
  47.     MAGICAL_ELEMENT = false
  48.     # -----------------------------------------------------------------------
  49.     # 如果你希望魔法技能组合攻击属性(武器),设定为true.
  50.     # -----------------------------------------------------------------------
  51.  
  52.     # -----------------------------------------------------------------------
  53.     CERT_HIT_ELEMENT = false
  54.     # -----------------------------------------------------------------------
  55.     # 如果你希望必定命中技能组合攻击属性(武器),设定为true.
  56.     # -----------------------------------------------------------------------
  57.  
  58.     # -----------------------------------------------------------------------
  59.     IGNORE_RECOVERY = true
  60.     # -----------------------------------------------------------------------
  61.     # 回复技能是否带属性. (回复带属性?)
  62.     # -----------------------------------------------------------------------
  63.  
  64.     # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  65.     # 合并类型
  66.     # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  67.     # 在这里设定属性的计算公式,如果这种计算方式局限性太大了,我很抱歉。
  68.     # 如果你有建议,记得联系我:[url]http://theolized.blogspot.com[/url]
  69.     #
  70.     # 嗯,如果一个技能同时拥有两种属性,且技能目标对这两种属性的抗性为50%, 100%,
  71.     # -----------------------------------------------------------------------
  72.     # 0 : 由最大的那个决定
  73.     # -----------------------------------------------------------------------
  74.     # --> 结果为 = 100%
  75.     # -----------------------------------------------------------------------
  76.     # 1 : 加法 / 添加
  77.     # -----------------------------------------------------------------------
  78.     # 公式 = 100 + (属性_1 - 100) + (属性_n - 100)
  79.     # --> 100 + (50 - 100) + (100 - 100) = 50%
  80.     # -----------------------------------------------------------------------
  81.     # 2 : 平均值 / 取平均数
  82.     # -----------------------------------------------------------------------
  83.     # 公式 = 总抗性 / 数量
  84.     # --> (50+100) / 2 = 75%
  85.     # -----------------------------------------------------------------------
  86.     # 3 : 乘法 / 相乘
  87.     # -----------------------------------------------------------------------
  88.     # 公式 = 100 * (属性_1/100) * (属性_n/100)
  89.     # --> 100 * (50/100) * (100/100)
  90.     # -----------------------------------------------------------------------
  91.     MERGE_TYPE = 2
  92.     # -----------------------------------------------------------------------
  93.  
  94.   end
  95. end
  96. # =============================================================================
  97. # 除非你理解否则以下勿动
  98. # =============================================================================
  99. module THEO
  100.   module ELEMENTS
  101.   module REGEXP
  102.  
  103.     ELEMENTS = /<(?:ELEMENTS_ID|elements id):[ ]*[ ]*(\d+(?:\s*,\s*\d+)*)>/i
  104.  
  105.   end
  106.   end
  107. end
  108.  
  109. module DataManager
  110.  
  111.   class << self
  112.     alias pre_load_multiple_elements_database load_database
  113.   end
  114.  
  115.   def self.load_database
  116.     pre_load_multiple_elements_database
  117.     load_multiple_elements
  118.   end
  119.  
  120.   def self.load_multiple_elements
  121.     [$data_skills, $data_items].each do |database|
  122.       database.each do |obj|
  123.         next unless obj
  124.         obj.load_multiple_elements
  125.       end
  126.     end
  127.   end
  128.  
  129. end
  130.  
  131. class RPG::UsableItem < RPG::BaseItem
  132.   attr_accessor :elements_array
  133.  
  134.   def load_multiple_elements
  135.     @elements_array = [self.damage.element_id]
  136.     self.note.split(/[\r\n]+/).each { |line|
  137.       case line
  138.       when THEO::ELEMENTS::REGEXP::ELEMENTS
  139.         $1.scan(/\d+/).each { |num|
  140.         @elements_array.push(num.to_i) if num.to_i > 0 }
  141.       end
  142.     }
  143.   end
  144.  
  145. end
  146.  
  147. class Game_Battler < Game_BattlerBase
  148.  
  149.   def item_element_rate(user, item)
  150.     return 1.0 if item.damage.recover? && THEO::ELEMENTS::IGNORE_RECOVERY
  151.     array = make_elements_array(user, item)
  152.     return 1.0 if array.empty?
  153.     return calculate_element_rate(user, item, array)
  154.   end
  155.  
  156.   def make_elements_array(user, item)
  157.     array = item.elements_array.dup
  158.     array = attack_elements_array(user, item, array)
  159.     array
  160.   end
  161.  
  162.   def attack_elements_array(user, item, array)
  163.     return array if user.atk_elements.empty?
  164.     array += user.atk_elements if item.physical? && THEO::ELEMENTS::PHYSICAL_ELEMENT
  165.     array += user.atk_elements if item.magical? && THEO::ELEMENTS::MAGICAL_ELEMENT
  166.     array += user.atk_elements if item.certain? && THEO::ELEMENTS::CERT_HIT_ELEMENT
  167.     return array
  168.   end
  169.  
  170.   def calculate_element_rate(user, item, array)
  171.     case THEO::ELEMENTS::MERGE_TYPE
  172.     when 0
  173.       return elements_max_rate(array)
  174.     when 1
  175.       return calculate_addition_rate(array)
  176.     when 2
  177.       return calculate_average_rate(array)
  178.     when 3
  179.       return calculate_multiply_rate(array)
  180.     else
  181.       return 1.0
  182.     end
  183.   end
  184.  
  185.   def calculate_addition_rate(array)
  186.     rate = 1.0
  187.     array.each do |element|
  188.       rate += element_rate(element) - 1.0
  189.     end
  190.     return rate
  191.   end
  192.  
  193.   def calculate_average_rate(array)
  194.     rate = 0.0
  195.     array.each do |element|
  196.       rate += element_rate(element)
  197.     end
  198.     puts array.size
  199.     return rate / array.size
  200.   end
  201.  
  202.   def calculate_multiply_rate(array)
  203.     rate = 1.0
  204.     array.each do |element|
  205.       rate *= element_rate(element)
  206.     end
  207.     return rate
  208.   end
  209.  
  210. end



VA外站脚本汉化群:226308173   |    部分远古文件备份:https://wwzv.lanzoue.com/b02rac5pc  密码:acgm
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 06:01

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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