Project1

标题: 网站查到的这个脚本使用后什么也没发生,没效果 [打印本页]

作者: yang1zhi    时间: 2014-10-16 00:56
标题: 网站查到的这个脚本使用后什么也没发生,没效果
我在66RPG网搜索到这个套装脚本。我按说明弄好后没有加成。
不是脚本冲突,放到干净的工程里也没效果。
  1. #==============================================================================
  2. # ■ Set_Armor 套装插件脚本 by SailCat
  3. #------------------------------------------------------------------------------
  4. #  说明:支持数据库直接设定套装效果的轻量化插件式脚本。
  5. #  由于本脚本基本上没有改动系统内容,故冲突可能性很低,除了和其他套装脚本冲突
  6. # 以外,基本没有冲突。
  7. #   使用方法:插入Main之前即可使用
  8. #   数据库设定规则:
  9. #   1.状态:将状态命名为“[套装名称]件数”的形式(如[密斯利尔]2),可以将该状态
  10. #     定义为装备“密斯利尔”套2件时所附加的状态。
  11. #     套装的加成奖励通过调节状态的参数来实现,注意定量最好设为0。
  12. #     件数最小为1,最大不能超过5,否则是无效的。
  13. #     有多个同名状态的话,则满足条件时都会附加,可借此突破状态的200%加成上限。
  14. #   2.武器/防具:只需将武器/防具的名称开头部分设定为与套装名称相同即可。
  15. #     如“密斯利尔”套装,只要将武器命名为“密斯利尔剑”、“密斯利尔的刃”,甚至
  16. #     “密斯利尔的乱七八糟”都可以使得该武器成为套装组件,不需要通过脚本设定。
  17. #   3.同一位置上如果存在多个可能的武器/防具,都属于套装组件,之间是互相替换的关
  18. #     系,如[密斯利尔剑]和[密斯利尔枪]。
  19. #   4.如确有必要,可以在脚本中104行之后手工定义套装、组件和状态,概不赘述。
  20. #==============================================================================
  21.   
  22. #==============================================================================
  23. # ■ RPG::State
  24. #------------------------------------------------------------------------------
  25. #  对状态数据库的重新解释。
  26. #==============================================================================
  27.   
  28. module RPG
  29.   class State
  30.     # 是否为套装用状态(首字母为左方括号)
  31.     def is_set_state?
  32.       return name[0, 1] == "["  
  33.     end
  34.     # 套装名称
  35.     def set_name
  36.       if not is_set_state?
  37.         return ""
  38.       elsif name[/^[.*]/] == nil
  39.         return ""
  40.       else
  41.         set = name[/^[.*]/]
  42.         return set[1, set.length - 2]
  43.       end
  44.     end
  45.     # 触发状态的件数
  46.     def set_count
  47.       if set_name == ""
  48.         return 0
  49.       else
  50.         return name.gsub(/^[.*]/, "").to_i
  51.       end
  52.     end
  53.   end
  54. end
  55.   
  56. #==============================================================================
  57. # ■ Game_Party
  58. #------------------------------------------------------------------------------
  59. #  处理同伴的类。包含金钱以及物品的信息。本类的实例
  60. # 请参考 $game_party。
  61. #==============================================================================
  62.   
  63. class Game_Party
  64.   #--------------------------------------------------------------------------
  65.   # ● 追加实例变量
  66.   #--------------------------------------------------------------------------
  67.   attr_accessor :data_set_states           # 套装状态清单 Hash
  68.   attr_accessor :data_set_items            # 套装组件清单 Hash
  69.   #--------------------------------------------------------------------------
  70.   # ● 初始化套装数据
  71.   #--------------------------------------------------------------------------
  72.   def init_data_sets
  73.     @data_set_states = {}
  74.     @data_set_items = {}
  75.     # 扫描所有状态,取得套装状态清单
  76.     for state in $data_states[1...$data_states.size]
  77.       if state.is_set_state?
  78.         unless @data_set_states.include?(state.set_name)
  79.           @data_set_states[state.set_name] = {}
  80.         end
  81.         unless @data_set_states[state.set_name].include?(state.set_count)
  82.           @data_set_states[state.set_name][state.set_count] = []
  83.         end
  84.         @data_set_states[state.set_name][state.set_count].push(state.id)
  85.         @data_set_items[state.set_name] = []
  86.       end
  87.     end
  88.     # 检索所有武器,将符合套装名称的武器加入组件清单
  89.     for weapon in $data_weapons[1...$data_weapons.size]
  90.       for state_name in @data_set_states.keys
  91.         if weapon.name[0, state_name.length] == state_name
  92.           @data_set_items[state_name].push(-weapon.id)
  93.         end
  94.       end
  95.     end
  96.     # 检索所有防具,将符合套装名称的防具加入组件清单
  97.     for armor in $data_armors[1...$data_weapons.size]
  98.       for state_name in @data_set_states.keys
  99.         if armor.name[0, state_name.length] == state_name
  100.           @data_set_items[state_name].push(armor.id)
  101.         end
  102.       end
  103.     end
  104.   end
  105. end
  106.   
  107. #==============================================================================
  108. # ■ Game_Actor
  109. #------------------------------------------------------------------------------
  110. #  处理角色的类。本类在 Game_Actors 类 ($game_actors)
  111. # 的内部使用、Game_Party 类请参考 ($game_party) 。
  112. #==============================================================================
  113.   
  114. class Game_Actor < Game_Battler
  115.   alias sailcat_equip equip
  116.   alias sailcat_setup setup
  117.   #--------------------------------------------------------------------------
  118.   # ● 追加实例变量
  119.   #--------------------------------------------------------------------------
  120.   attr_accessor  :active_sets              # 当前已上身的套装
  121.   #--------------------------------------------------------------------------
  122.   # ● 设置
  123.   #     actor_id : 角色 ID
  124.   #--------------------------------------------------------------------------
  125.   def setup(actor_id)
  126.     sailcat_setup(actor_id)
  127.     # 清除上身套装列表
  128.     @active_sets = []
  129.     # 更新套装状态
  130.     update_set_state
  131.   end
  132.   #--------------------------------------------------------------------------
  133.   # ● 变更装备
  134.   #     equip_type : 装备类型
  135.   #     id    : 武器 or 防具 ID  (0 为解除装备)
  136.   #--------------------------------------------------------------------------
  137.   def equip(equip_type, id)
  138.     sailcat_equip(equip_type, id)
  139.     # 更新套装状态
  140.     update_set_state
  141.   end
  142.   #--------------------------------------------------------------------------
  143.   # ● 更新套装状态
  144.   #--------------------------------------------------------------------------
  145.   def update_set_state
  146.     # 如果数据没有初始化就初始化
  147.     $game_party.init_data_sets if $game_party.data_set_states == nil
  148.     # 获得当前装备
  149.     my_armor_ids = [-@weapon_id, @armor1_id, @armor2_id, @armor3_id, @armor4_id]
  150.     # 循环所有套装
  151.     for set_name in $game_party.data_set_items.keys
  152.       # 获得套装中装备的上身件数
  153.       item_count = (my_armor_ids & $game_party.data_set_items[set_name]).size
  154.       # 需要解除的状态列表
  155.       remove_set = [1, 2, 3, 4, 5]
  156.       # 如果件数至少为1件
  157.       if item_count > 0
  158.         # 更新上身套装列表
  159.         @active_sets.push(set_name) unless @active_sets.include?(set_name)
  160.         # 附加对应的套装状态
  161.         add_set_states(set_name, item_count)
  162.         # 删除当前件数
  163.         remove_set.delete(item_count)
  164.       # 如果件数为0件,且之前上身的套装列表中包含当前套装
  165.       elsif @active_sets.include?(set_name)
  166.         # 取消当前套装
  167.         @active_sets.delete(set_name)
  168.       # 和当前套装无关的情况下
  169.       else
  170.         # 什么也不做
  171.         remove_set.clear
  172.       end
  173.       # 解除件数不相符合的的套装状态
  174.       for i in remove_set
  175.         remove_set_states(set_name, i)
  176.       end
  177.     end
  178.   end
  179.   #--------------------------------------------------------------------------
  180.   # ● 附加套装状态
  181.   #     set_name : 套装名称
  182.   #     count    : 件数
  183.   #--------------------------------------------------------------------------
  184.   def add_set_states(set_name, count)
  185.     # 循环所有状态,逐一附加
  186.     unless $game_party.data_set_states[set_name][count] == nil
  187.       for state_id in $game_party.data_set_states[set_name][count]
  188.         add_state(state_id, true)
  189.       end
  190.     end
  191.   end
  192.   #--------------------------------------------------------------------------
  193.   # ● 解除套装状态
  194.   #     set_name : 套装名称
  195.   #     count    : 件数
  196.   #--------------------------------------------------------------------------
  197.   def remove_set_states(set_name, count)
  198.     # 循环所有状态,逐一解除
  199.     unless $game_party.data_set_states[set_name][count] == nil
  200.       for state_id in $game_party.data_set_states[set_name][count]
  201.         remove_state(state_id, true)
  202.       end
  203.     end
  204.   end
  205. end
复制代码





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1