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

Project1

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

[已经解决] 如何让一个状态增加的属性值是个变量

[复制链接]

Lv5.捕梦者

梦石
24
星屑
7492
在线时间
249 小时
注册时间
2020-12-4
帖子
306

极短24获奖极短23获奖极短22获奖

跳转到指定楼层
1
发表于 2022-11-28 12:18:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 纯属小虫 于 2022-11-28 12:22 编辑

想做一个根据敌人数量来增加自身能力的技能or状态
但是如果用常规做法来做,得做八个不同的状态(如果敌人最大数量是8的话),还得8个条件分支,挺繁杂也挺麻烦的;
并且更重要的是,数量判定只有使用技能那一下有,状态中的属性值并不会实时变化~

所以尝试魔改了一下状态中的脚本,加了个全局变量进去,不知道这样写会不会有BUG
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # 例子:::根据敌人数量获取最大MAXHP
  3.   # 10号状态便是根据敌人数量增加能力值的状态
  4.   # $敌人数量 会在每个角色或敌人行动结束时,判定并刷新一次
  5.   #--------------------------------------------------------------------------
  6. class Game_Battler
  7.   def maxhp
  8.     n = [[base_maxhp + @maxhp_plus, 1].max, 999999].min
  9.     for i in @states
  10.       n += $data_states[i].maxhp_rate - 100.0
  11.     end
  12.     # 如果包含指定的状态
  13.     if @states.include?(10)
  14.       n += 500 * $敌人数量
  15.     end
  16.     n = [[Integer(n), 1].max, 999999].min
  17.     return n
  18.   end
  19. end

还请路过的大侠指点一下

Lv5.捕梦者

梦石
0
星屑
39016
在线时间
5717 小时
注册时间
2006-11-10
帖子
6619
2
发表于 2022-11-28 15:29:55 | 只看该作者
BUG就是当$敌人数量没赋值为nil时会弹错误

点评

BUG还有改Game_Battler导致会对敌人也生效……  发表于 2022-11-28 15:44

评分

参与人数 1+1 收起 理由
纯属小虫 + 1 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

遠航の猫咪

梦石
3
星屑
23191
在线时间
2387 小时
注册时间
2005-10-15
帖子
1166

开拓者

3
发表于 2022-11-28 15:35:38 | 只看该作者
首先,插入以下两个脚本
脚本1:
RUBY 代码复制
  1. #==============================================================================
  2. # ■ [Data Note] 数据库通用备注接口 v2.4 by SailCat
  3. #------------------------------------------------------------------------------
  4. #   方法:本脚本插入到Main之前使用,且需在所有依赖此脚本的其他插件之前
  5. #   依赖:无
  6. #   版本:v2.4 (Build 220219)
  7. #   效果:给所有数据库项目增加如同VA、MV一样的备注,且备注长度同VA、MV一样无限
  8. #   配置:有大量配置项,见脚本配置区的具体说明,按默认设定可以正常运行
  9. #   冲突:其他的数据库扩展脚本
  10. #   说明:
  11. #
  12. #   1. 备注字段来源:
  13. #      游戏事件页、公共事件数据使用注释(第1条起的连续内容)作为备注(无限)
  14. #      队伍数据使用注释(第1页[不论条件]第1条起的连续内容)作为备注(无限)
  15. #      物品、特技、武器、防具数据,用描述作为备注(最多100字)
  16. #      角色、职业、敌人、状态、动画、图块数据,用名称作为备注(最多40字)
  17. #      地图、事件数据,用名称作为备注(最多100字)
  18. #      所有数据,皆可以引用公共事件中的标签或文件作为备注,因此理论上长度无限
  19. #      用于批量存放备注数据的公共事件编号和文件名,可以在脚本配置中指定
  20. #
  21. #   2. 备注字段写法:
  22. #      标准写法1:#备注项1;备注项2;...备注项n
  23. #      标准写法2:#>公共事件中的超长备注标签名
  24. #      标准写法3:#<配置文件中的超长备注标签名
  25. #      以上标准写法互相排斥,根据需要任选一种
  26. #      符号# (半角井号)用于区分备注与描述/名称正文,以及识别注释事件
  27. #      符号; (半角分号)用于给备注项分段
  28. #      符号#>用于整体引用公共事件中的超长备注标签
  29. #      符号#<用于整体引用配置文件中的超长备注标签
  30. #      上述分隔符可在下方脚本配置中,修改为其他字符
  31. #      非标准写法:#任意备注内容,此种情况下,备注不会自动解析为备注项集的形式
  32. #
  33. #   3. 备注项的写法:
  34. #      标准写法:标识符=表达式
  35. #      由于直接书写空间有限,当表达式为某些特殊情况时,本脚本支持以下简写:
  36. #      当表达式的值为true时,可写作 标识符 或者 标识符+
  37. #      当表达式的值为false时,可写作 标识符-
  38. #      当表达式的值为字符串时,可写作 标识符:字符串
  39. #      当表达式的值为超长备注标签的引用字符串时,可写作 标识符.标签名
  40. #      表达式中可用v 指代游戏变量,如v[8]相当于$game_variables[8]
  41. #      表达式中包括备注分段符号(默认为;)时,用前置反斜杠转义
  42. #      表达式中若包括了对变量或全局对象($开头)的引用,则每次调用都会重新计算值
  43. #      否则表达式的值在第一次生成后即固定不再变化
  44. #
  45. #   4. 标准写法备注的使用:
  46. #      脚本中调用备注项,使用 数据对象._+标识符(默认值) 方法
  47. #      符号_ 为标识符前缀,区分同原有字段的偶然重名,锁定不可修改
  48. #      若调用的标识符无效或未定义,将返回默认值,默认值省略的话返回nil
  49. #      强烈建议在植入备注功能时,用好记的写法和默认值,对标识符进行二次引用定义
  50. #    调用示例:
  51. #      角色1  名称设为:阿尔西斯 #a;b=4;c:5
  52. #      则  $data_actors[1].name       # => "阿尔西斯" 自动区隔备注内容
  53. #          $data_actors[1]._a         # => true
  54. #          $data_actors[1]._b         # => 4
  55. #          $data_actors[1]._c         # => "5"
  56. #          $data_actors[1]._d         # => nil 未定义的标识符,采用nil
  57. #          $data_actors[1]._d(2)      # => 2   未定义的标识符,采用默认值
  58. #      特技1  描述设为:回复己方单体HP。#f:a.atk - b*def / 2;cd=1.5;no_ref-
  59. #      则  $data_skills[1].description# => "回复己方单体HP。"
  60. #          $data_skills[1]._f         # => "a.atk - b.def / 2"
  61. #          $data_skills[1]._cd        # => 1.5
  62. #          $data_skills[1]._no_ref    # => false
  63. #    二次定义示例(采用默认值和好记写法,方便他处脚本的书写,并增强可读性):
  64. #      module RPG
  65. #        class Skill
  66. #          def formula;  _f;       end
  67. #          def cooldown; _cd(0.0); end
  68. #        end
  69. #      end
  70. #
  71. #   5. 非标准写法备注的使用:数据对象.note 方法可取得备注内容(字符串),以上
  72. #
  73. #   6. 狂野模式:
  74. #      如果在脚本配置中将相关选项打开,可以使用狂野模式的备注
  75. #      此时,若标识符写作该类数据的默认字段名称(只能是数值),原定数值会被覆盖
  76. #      该方法可以轻易突破数据库的数值限制,如负数武器攻击力,超过200的能力F值
  77. #      该方法可能破坏数据库的自洽性,因此请谨慎使用该功能
  78. #
  79. #   7. 本脚本只提供数据库内容的备注接口,没有植入关于备注项实装的任何扩展功能
  80. #      备注项的实际应用代码,请自行实现或插入后续发布的依赖插件
  81. #      脚本作者只承诺发布的所有基于本接口的依赖插件之间不会互相冲突
  82. #      如果与非依赖本接口的插件或他人插件冲突,请自行解决
  83. #
  84. #   8. 关于用公共事件实现超长备注:
  85. #      1)公共事件的超长备注,用事件指令书写在指定编号的公共事件中
  86. #         公共事件的编号在脚本配置区指定,默认分开12项,也可合并为1项
  87. #         超长备注可用以下指令书写:
  88. #         ·“显示文章”(最长160字符)
  89. #         ·“注释”(最长240字符)
  90. #         ·“脚本”(最长480字符)
  91. #         ·“条件分歧”中的“脚本”(最长10000字符)
  92. #         ·“设置移动路线”中的“脚本”(最长10000字符*n)
  93. #         仅提取这五条指令的相关文字内容,其他的指令会被自动忽略,不会有影响
  94. #      2) 建议在公共事件最开始插入“中断事件处理”指令,避免误执行(不是必须)
  95. #      3)每条超长备注之前,需加上标签指令,标签名不得互相重复
  96. #      4)超长备注可以作为备注项的字符串使用,例:
  97. #           阿尔西斯 #pr.c1 # => 将标签c1后文字作为$data_actors[1]._pr的内容
  98. #         也可以作为备注项数据,整体合使用,例:
  99. #           阿尔西斯 #>c1   # => 将标签c1后文字作为阿尔西斯的备注,并自动解析
  100. #         整体使用时,写在公共事件中的备注项需省略前置的#符号(因为已经写过了)
  101. #      5) 不是用配置中的公共事件ID存放时,标签名需指定公共事件ID,如:#>99,c1
  102. #      6) 标签名可以省略不写,用数据的名称和相关标识符作为默认标签名,如:
  103. #           阿尔西斯 #>   # => 系统会查找名为“阿尔西斯”的标签并取值
  104. #           阿尔西斯 #pr. # => 系统会查找名为“阿尔西斯_pr”的标签并取值
  105. #      7) 引用的标签没有定义的情况下,返回空的字符串
  106. #
  107. #   9. 关于备注文件:
  108. #      1) 备注文件的写法须为标准的INI配置文件写法,即标签分段,键值对书写,如:
  109. #           [特萝西]
  110. #           profile=这是特萝西,她是盗贼
  111. #           age=28
  112. #           gender=女
  113. #           height=175
  114. #           weight=60
  115. #           is_dual_wield=false
  116. #      2) 数据库引用的写法为:#<标签名,当标签名与数据名称一样时可以省略,如:
  117. #           特萝西 #<
  118. #         则有:$data_actors[4]._profile="这是特萝西,她是盗贼" 等等
  119. #==============================================================================
  120. #==============================================================================
  121. # ■ SailCat's 插件公用
  122. #==============================================================================
  123. module SailCat
  124.   #--------------------------------------------------------------------------
  125.   # ● 脚本配置区
  126.   #--------------------------------------------------------------------------
  127.   module DataNoteCore_Config
  128.     SEPARATOR = "#"               # 备注与正文的分隔符
  129.     DELIMITER = ";"               # 分隔不同备注项的符号
  130.     NOTE_LABEL_CHAR = ?>          # 超长备注(公共事件存储)的识别符
  131.     NOTE_FILE_CHAR = ?<           # 超长备注(文件存储)的识别符
  132.     NOTE_FILE = "Data/Note.ini"   # 超长备注(文件存储)的文件名
  133.     ACTOR_COMMON_EVENT_ID = 1     # 超长备注(角色类)用公共事件ID
  134.     CLASS_COMMON_EVENT_ID = 2     # 超长备注(职业类)用公共事件ID
  135.     SKILL_COMMON_EVENT_ID = 3     # 超长备注(特技类)用公共事件ID
  136.     ITEM_COMMON_EVENT_ID = 4      # 超长备注(物品类)用公共事件ID
  137.     WEAPON_COMMON_EVENT_ID = 5    # 超长备注(武器类)用公共事件ID
  138.     ARMOR_COMMON_EVENT_ID = 6     # 超长备注(防具类)用公共事件ID
  139.     ENEMY_COMMON_EVENT_ID = 7     # 超长备注(敌人类)用公共事件ID
  140.     STATE_COMMON_EVENT_ID = 8     # 超长备注(状态类)用公共事件ID
  141.     ANIMATION_COMMON_EVENT_ID = 9 # 超长备注(动画类)用公共事件ID
  142.     TILESET_COMMON_EVENT_ID = 10  # 超长备注(图块类)用公共事件ID
  143.     MAPINFO_COMMON_EVENT_ID = 11  # 超长备注(地图类)用公共事件ID
  144.     EVENT_COMMON_EVENT_ID = 12    # 超长备注(事件类)用公共事件ID
  145.     NOTE_STRING_LF = "\n"         # 超长备注(字符串引用)的行分隔符号
  146.     NOTE_DATA_LF = DELIMITER      # 超长备注(整体引用)的行分隔符号
  147.     USE_WILD_MODE = true          # 是否开启狂野模式
  148.     #--------------------------------------------------------------------------
  149.     # ● 配置检查,请勿更改
  150.     #--------------------------------------------------------------------------
  151.     raise "备注分隔符与分项分隔符不得一致" if SEPARATOR == DELIMITER
  152.     raise "公共事件标识与文件标识不得一致" if NOTE_LABEL_CHAR == NOTE_FILE_CHAR
  153.   end
  154. end
  155.  
  156. #==============================================================================
  157. # ■ DataNoteCore
  158. #------------------------------------------------------------------------------
  159. #   数据库内容通用备注接口核心引擎。
  160. #==============================================================================
  161. module DataNoteCore
  162.   include SailCat::DataNoteCore_Config
  163.   #--------------------------------------------------------------------------
  164.   # ● 常量
  165.   #--------------------------------------------------------------------------
  166.   SEP_REGEX = /#{SEPARATOR}.+$/  # 切分用正则表达式,请不要修改
  167.   #--------------------------------------------------------------------------
  168.   # ● 获取备注字段
  169.   #--------------------------------------------------------------------------
  170.   def note
  171.     # 如果备注值没有初始化
  172.     if @note.nil?
  173.       # 如果是公共事件,用执行列表前面的注释
  174.       @note = split(get_command_note(list)) if self.is_a?(RPG::CommonEvent)
  175.       # 如果是游戏事件,用执行列表前面的注释
  176.       @note = split(get_command_note(list)) if self.is_a?(Game_Event)
  177.       # 如果是队伍,用第1页执行列表前面的注释
  178.       @note = split(get_command_note(pages[0].list)) if self.is_a?(RPG::Troop)
  179.       # 如果是其他,用描述或者名称来备注
  180.       @note ||= has_description? ? split(@description) : split(@name)
  181.       # 解析备注字符串
  182.       analyze
  183.     end
  184.     # 返回值
  185.     return @note
  186.   end
  187.   #--------------------------------------------------------------------------
  188.   # ● 设置备注字段(运行时改变)
  189.   #      note: 新的备注
  190.   #--------------------------------------------------------------------------
  191.   def note=(note)
  192.     # 设置新值
  193.     @note = note
  194.     # 重新解析备注
  195.     analyze
  196.   end
  197.   #--------------------------------------------------------------------------
  198.   # ● 取得/设置备注值(泛用)
  199.   #--------------------------------------------------------------------------
  200.   def method_missing(param_name, *args, &block)
  201.     return super unless respond_to?(param_name)
  202.     param_str = param_name.to_s.sub!(/^_/, "")
  203.     # 备注赋值的情况下
  204.     if param_str[-1] == 61
  205.       param_key = param_str.chop
  206.       self.class.send :define_method, param_name do |value|
  207.         set_note(param_key, value)
  208.       end
  209.       set_note(param_key, *args)
  210.     # 备注取值的情况下
  211.     else
  212.       self.class.send :define_method, param_name do |value|
  213.         get_note(param_str, value)
  214.       end
  215.       return get_note(param_str, *args)
  216.     end
  217.   end
  218.   #--------------------------------------------------------------------------
  219.   # ● 判断方法名是否合法
  220.   #--------------------------------------------------------------------------
  221.   def respond_to?(method_name, *)
  222.     method_name.to_s[/^_.+/].nil? ? super : true
  223.   end
  224.   #--------------------------------------------------------------------------
  225.   # ● 狂野模式覆盖注入
  226.   #--------------------------------------------------------------------------
  227.   def define_wild_methods
  228.     return unless USE_WILD_MODE
  229.     v = instance_variables.select {|i| instance_variable_get(i).is_a?(Numeric)}
  230.     v.each do |i|
  231.       next if i == "@id"
  232.       var = i[1..-1]
  233.       get_method = var; wild_get = "_#{var}"
  234.       set_method = "#{var}="; wild_set = "_#{var}="
  235.       self.class.send :define_method, get_method do
  236.         send wild_get, instance_variable_get(i)
  237.       end
  238.       self.class.send :define_method, set_method do |value|
  239.         send wild_set, value
  240.         instance_variable_set(i, value)
  241.       end
  242.     end
  243.   end
  244.   #--------------------------------------------------------------------------
  245.   # ● 工具方法:扁平化数组
  246.   #--------------------------------------------------------------------------
  247.   def flat_array(param)
  248.     param.to_a.map {|f| f.to_a}.flatten
  249.   end
  250.   #--------------------------------------------------------------------------
  251.   # ● 是否有描述字段(内部使用)
  252.   #--------------------------------------------------------------------------
  253.   private
  254.   def has_description?
  255.     instance_variables.include?("@description")
  256.   end
  257.   #--------------------------------------------------------------------------
  258.   # ● 从事件列表中切取备注(内部使用)
  259.   #--------------------------------------------------------------------------
  260.   def get_command_note(list)
  261.     for index in 0...list.length
  262.       break if list[index].code != 108 and list[index].code != 408
  263.     end
  264.     join_command_note(list[0...index], DELIMITER)
  265.   end
  266.   #--------------------------------------------------------------------------
  267.   # ● 将事件内容转为备注字符串(内部使用)
  268.   #--------------------------------------------------------------------------
  269.   def join_command_note(list, linefeed)
  270.     (list.collect do |x|
  271.       case x.code
  272.       when 111
  273.         x.parameters[0] == 12 ? x.parameters[1] : ""
  274.       when 209
  275.         ((x.parameters[1].list.select do |c|
  276.           c.code == 45
  277.         end).map do |c|
  278.           c.parameters[0]
  279.         end).join(linefeed)
  280.       else
  281.         x.parameters[0]
  282.       end
  283.     end).join(linefeed)
  284.   end
  285.   #--------------------------------------------------------------------------
  286.   # ● 切分备注用字段(内部使用)
  287.   #--------------------------------------------------------------------------
  288.   def split(text)
  289.     text.slice(SEP_REGEX).to_s
  290.   end
  291.   #--------------------------------------------------------------------------
  292.   # ● 取得备注参数值(内部使用)
  293.   #--------------------------------------------------------------------------
  294.   def get_note(param_name, default = nil)
  295.     return default if self.note.empty? or not @note_set.include?(param_name)
  296.     value = @note_set[param_name].nil? ? default : @note_set[param_name]
  297.     value.is_a?(Proc) ? value.call($game_variables) : value
  298.   end
  299.   #--------------------------------------------------------------------------
  300.   # ● 设置备注参数值(内部使用)
  301.   #--------------------------------------------------------------------------
  302.   def set_note(param_name, value)
  303.     @note_set ||= {}
  304.     @note_set[param_name] = value
  305.   end
  306.   #--------------------------------------------------------------------------
  307.   # ● 获取标签备注值(内部使用)
  308.   #--------------------------------------------------------------------------
  309.   def get_label(label, identifier, linefeed)
  310.     # 返回已设置的缓存值
  311.     event_id = label.sub!(/^([0-9]+),/, "") ? $1.to_i : note_event_id
  312.     label = default_label(identifier) if label.empty?
  313.     $data_notes ||= {}
  314.     if $data_notes.has_key?([event_id, label])
  315.       return $data_notes[[event_id, label]]
  316.     end
  317.     # 初始化公共事件
  318.     $data_common_events ||= load_data("Data/CommonEvents.rxdata")
  319.     event = $data_common_events[event_id]
  320.     return "" if event.nil? or event.list.length == 1
  321.     # 检索标签
  322.     list = event.list
  323.     start_index = 0
  324.     end_index = list.length
  325.     for index in 0...list.length
  326.       next if list[index].code != 118
  327.       if list[index].parameters[0] == label
  328.         start_index = index + 1
  329.       elsif start_index > 0
  330.         break end_index = index
  331.       end
  332.     end
  333.     # 检索结果
  334.     if start_index == 0
  335.       result = ""
  336.     else
  337.       cmds = list[start_index...end_index]
  338.       cmds.reject! do |x|
  339.         not [101, 401, 108, 408, 111, 209, 355, 655].include?(x.code)
  340.       end
  341.       result = join_command_note(cmds, linefeed)
  342.     end
  343.     $data_notes[[event_id, label]] = result
  344.   end
  345.   #--------------------------------------------------------------------------
  346.   # ● 获取文件备注值(内部使用)
  347.   #--------------------------------------------------------------------------
  348.   def read_ini_file(label)
  349.     return unless FileTest.exist?(NOTE_FILE)
  350.     # 初始化标签
  351.     label = default_label(nil) if label.empty?
  352.     # 打开备注文件
  353.     File.open(NOTE_FILE, "r") do |f|
  354.       label_key = "[#{label}]\n"
  355.       found = false
  356.       # 循环每一行
  357.       f.each_line do |l|
  358.         # 注释的情况下,继续
  359.         next if l[0] == ?; or l[0] == ?#
  360.         # 标签不符的情况下,继续
  361.         next unless l == label_key or found
  362.         # 跳过下一行
  363.         (found = true; next) unless found
  364.         # 如果已到下一个标签就中断
  365.         break if l[0] == ?[
  366.         # 获得键值对
  367.         pair = l.split("=", 2)
  368.         next if pair.size < 2
  369.         key = pair[0].strip
  370.         value = pair[1].strip
  371.         # 值运行成功为表达式,失败默认为字符串
  372.         result = lambda{|v| eval(value) rescue value}
  373.         result = result.call($game_variables) unless value =~ /v\[|\$/
  374.         # 设置备注值
  375.         @note_set[key] = result
  376.       end
  377.     end
  378.   end
  379.   #--------------------------------------------------------------------------
  380.   # ● 获取超长标签的公共事件ID(内部使用)
  381.   #--------------------------------------------------------------------------
  382.   def note_event_id
  383.     class_name = self.class.to_s[5..-1]
  384.     eval(class_name.upcase + "_COMMON_EVENT_ID") rescue 0
  385.   end
  386.   #--------------------------------------------------------------------------
  387.   # ● 获取超长标签默认名称(内部使用)
  388.   #--------------------------------------------------------------------------
  389.   def default_label(id)
  390.     if self.is_a?(RPG::Event)
  391.       sprintf("%03d#%s%s", $game_map.map_id, self.name, id ? "_#{id}" : "")
  392.     else
  393.       self.name + (id ? "_#{id}" : "")
  394.     end
  395.   end
  396.   #--------------------------------------------------------------------------
  397.   # ● 解析备注字符串(该方法每对象通常只会执行一次,除非运行时整体重设备注)
  398.   #--------------------------------------------------------------------------
  399.   def analyze
  400.     @note_set = {}
  401.     # 如果备注为空则返回
  402.     return if @note.nil? or @note.empty?
  403.     # 如果备注为标签引用
  404.     if @note[1] == NOTE_LABEL_CHAR
  405.       @note = SEPARATOR + get_label(@note[2..-1], nil, NOTE_DATA_LF)
  406.     elsif @note[1] == NOTE_FILE_CHAR
  407.       read_ini_file(@note[2..-1])
  408.       return
  409.     end
  410.     # 解析备注字符串
  411.     param_regex = /^ *([A-Za-z0-9_]+)\b([+:=.\-]?(.*?))$/
  412.     # 转义分隔符
  413.     note_array = @note[1..-1].gsub(/\\#{DELIMITER}/, "\001").split(DELIMITER)
  414.     note_array.each do |x|
  415.       result = nil
  416.       if x[param_regex]
  417.         param_name = $1
  418.         param_value = $2
  419.         param_exp = $3.gsub(/\001/, DELIMITER)
  420.         # 开关型(+)
  421.         if param_value.strip.empty? or param_value[0] == ?+
  422.           result = true
  423.         # 开关型(-)
  424.         elsif param_value[0] == ?-
  425.           result = false
  426.         # 数值型
  427.         elsif param_value[0] == ?=
  428.           result = lambda{|v| eval(param_exp) rescue nil}
  429.           result = result.call($game_variables) unless param_exp =~ /v\[|\$/
  430.         # 字符型
  431.         elsif param_value[0] == ?:
  432.           result = param_exp
  433.         # 标签型
  434.         elsif param_value[0] == ?.
  435.           result = get_label(param_exp, param_name, NOTE_STRING_LF)
  436.         end
  437.         @note_set[param_name] = result
  438.       end
  439.     end
  440.   end
  441. end
  442.  
  443. #==============================================================================
  444. # ■ RPG 模块的植入
  445. #------------------------------------------------------------------------------
  446. #   以下植入14个数据库内容模块(含地图数据和事件数据)。
  447. #==============================================================================
  448. module RPG
  449.   [Actor, Class, Enemy, State, Animation, Tileset, MapInfo, Event].each do |c|
  450.     c.send :include, DataNoteCore
  451.     c.send :define_method, :name do
  452.       @name1 ||= (@name.sub(DataNoteCore::SEP_REGEX) {|s| ""}).strip
  453.     end
  454.     c.send :define_method, :name= do |value|
  455.       @name1 = value.strip
  456.       @name = @name1 + DataNoteCore::SEPARATOR + note
  457.     end
  458.     c.new.define_wild_methods unless c == RPG::Event
  459.   end
  460.   [Item, Skill, Weapon, Armor].each do |c|
  461.     c.send :include, DataNoteCore
  462.     c.send :define_method, :description do
  463.       @description1 ||= (@description.sub(DataNoteCore::SEP_REGEX) {|s|
  464.       ""}).strip
  465.     end
  466.     c.send :define_method, :description= do |value|
  467.       @description1 = value.strip
  468.       @description = @description1 + DataNoteCore::SEPARATOR + note
  469.     end
  470.     c.new.define_wild_methods
  471.   end
  472.   [Troop, CommonEvent].each do |c|
  473.     c.send :include, DataNoteCore
  474.   end
  475. end
  476.  
  477. #==============================================================================
  478. # ■ Game_Event
  479. #==============================================================================
  480. class Game_Event
  481.   include DataNoteCore
  482. end

脚本2:
https://rpg.blue/thread-488418-1-1.html

然后,选择一个变量,比如18号变量,将其名称改为
=$game_troop.enemies.size

最后,对这个状态,在名称中添加备注:#maxhp_rate=110+v[18]*10

这样一来,这个状态的最大HP增加率,就是基础110%,对面每多一个人,就多10%,对面满8个人,就是190%
如果要改其他的能力增加率,类似着改就行

点评

唔!是猫大的数据库通用接口!!!虽然有点牛刀杀鸡的亚子,不过是时候抄起牛刀了~~~  发表于 2022-11-28 19:56

评分

参与人数 2星屑 +50 +2 收起 理由
RyanBern + 50 + 1 认可答案
纯属小虫 + 1 塞糖

查看全部评分

SailCat (小猫子·要开心一点) 共上站 24 次,发表过 11 篇文章 上 次 在: [2006年01月28日11:41:18 星期六] 从 [162.105.120.91] 到本站一游。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-23 21:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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