赞 | 204 |
VIP | 13 |
好人卡 | 7 |
积分 | 122 |
经验 | 52899 |
最后登录 | 2021-6-29 |
在线时间 | 4435 小时 |
Lv4.逐梦者
- 梦石
- 0
- 星屑
- 12157
- 在线时间
- 4435 小时
- 注册时间
- 2014-4-11
- 帖子
- 5955
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
我在66RPG网搜索到这个套装脚本。我按说明弄好后没有加成。
不是脚本冲突,放到干净的工程里也没效果。- #==============================================================================
- # ■ Set_Armor 套装插件脚本 by SailCat
- #------------------------------------------------------------------------------
- # 说明:支持数据库直接设定套装效果的轻量化插件式脚本。
- # 由于本脚本基本上没有改动系统内容,故冲突可能性很低,除了和其他套装脚本冲突
- # 以外,基本没有冲突。
- # 使用方法:插入Main之前即可使用
- # 数据库设定规则:
- # 1.状态:将状态命名为“[套装名称]件数”的形式(如[密斯利尔]2),可以将该状态
- # 定义为装备“密斯利尔”套2件时所附加的状态。
- # 套装的加成奖励通过调节状态的参数来实现,注意定量最好设为0。
- # 件数最小为1,最大不能超过5,否则是无效的。
- # 有多个同名状态的话,则满足条件时都会附加,可借此突破状态的200%加成上限。
- # 2.武器/防具:只需将武器/防具的名称开头部分设定为与套装名称相同即可。
- # 如“密斯利尔”套装,只要将武器命名为“密斯利尔剑”、“密斯利尔的刃”,甚至
- # “密斯利尔的乱七八糟”都可以使得该武器成为套装组件,不需要通过脚本设定。
- # 3.同一位置上如果存在多个可能的武器/防具,都属于套装组件,之间是互相替换的关
- # 系,如[密斯利尔剑]和[密斯利尔枪]。
- # 4.如确有必要,可以在脚本中104行之后手工定义套装、组件和状态,概不赘述。
- #==============================================================================
-
- #==============================================================================
- # ■ RPG::State
- #------------------------------------------------------------------------------
- # 对状态数据库的重新解释。
- #==============================================================================
-
- module RPG
- class State
- # 是否为套装用状态(首字母为左方括号)
- def is_set_state?
- return name[0, 1] == "["
- end
- # 套装名称
- def set_name
- if not is_set_state?
- return ""
- elsif name[/^[.*]/] == nil
- return ""
- else
- set = name[/^[.*]/]
- return set[1, set.length - 2]
- end
- end
- # 触发状态的件数
- def set_count
- if set_name == ""
- return 0
- else
- return name.gsub(/^[.*]/, "").to_i
- end
- end
- end
- end
-
- #==============================================================================
- # ■ Game_Party
- #------------------------------------------------------------------------------
- # 处理同伴的类。包含金钱以及物品的信息。本类的实例
- # 请参考 $game_party。
- #==============================================================================
-
- class Game_Party
- #--------------------------------------------------------------------------
- # ● 追加实例变量
- #--------------------------------------------------------------------------
- attr_accessor :data_set_states # 套装状态清单 Hash
- attr_accessor :data_set_items # 套装组件清单 Hash
- #--------------------------------------------------------------------------
- # ● 初始化套装数据
- #--------------------------------------------------------------------------
- def init_data_sets
- @data_set_states = {}
- @data_set_items = {}
- # 扫描所有状态,取得套装状态清单
- for state in $data_states[1...$data_states.size]
- if state.is_set_state?
- unless @data_set_states.include?(state.set_name)
- @data_set_states[state.set_name] = {}
- end
- unless @data_set_states[state.set_name].include?(state.set_count)
- @data_set_states[state.set_name][state.set_count] = []
- end
- @data_set_states[state.set_name][state.set_count].push(state.id)
- @data_set_items[state.set_name] = []
- end
- end
- # 检索所有武器,将符合套装名称的武器加入组件清单
- for weapon in $data_weapons[1...$data_weapons.size]
- for state_name in @data_set_states.keys
- if weapon.name[0, state_name.length] == state_name
- @data_set_items[state_name].push(-weapon.id)
- end
- end
- end
- # 检索所有防具,将符合套装名称的防具加入组件清单
- for armor in $data_armors[1...$data_weapons.size]
- for state_name in @data_set_states.keys
- if armor.name[0, state_name.length] == state_name
- @data_set_items[state_name].push(armor.id)
- end
- end
- end
- end
- end
-
- #==============================================================================
- # ■ Game_Actor
- #------------------------------------------------------------------------------
- # 处理角色的类。本类在 Game_Actors 类 ($game_actors)
- # 的内部使用、Game_Party 类请参考 ($game_party) 。
- #==============================================================================
-
- class Game_Actor < Game_Battler
- alias sailcat_equip equip
- alias sailcat_setup setup
- #--------------------------------------------------------------------------
- # ● 追加实例变量
- #--------------------------------------------------------------------------
- attr_accessor :active_sets # 当前已上身的套装
- #--------------------------------------------------------------------------
- # ● 设置
- # actor_id : 角色 ID
- #--------------------------------------------------------------------------
- def setup(actor_id)
- sailcat_setup(actor_id)
- # 清除上身套装列表
- @active_sets = []
- # 更新套装状态
- update_set_state
- end
- #--------------------------------------------------------------------------
- # ● 变更装备
- # equip_type : 装备类型
- # id : 武器 or 防具 ID (0 为解除装备)
- #--------------------------------------------------------------------------
- def equip(equip_type, id)
- sailcat_equip(equip_type, id)
- # 更新套装状态
- update_set_state
- end
- #--------------------------------------------------------------------------
- # ● 更新套装状态
- #--------------------------------------------------------------------------
- def update_set_state
- # 如果数据没有初始化就初始化
- $game_party.init_data_sets if $game_party.data_set_states == nil
- # 获得当前装备
- my_armor_ids = [-@weapon_id, @armor1_id, @armor2_id, @armor3_id, @armor4_id]
- # 循环所有套装
- for set_name in $game_party.data_set_items.keys
- # 获得套装中装备的上身件数
- item_count = (my_armor_ids & $game_party.data_set_items[set_name]).size
- # 需要解除的状态列表
- remove_set = [1, 2, 3, 4, 5]
- # 如果件数至少为1件
- if item_count > 0
- # 更新上身套装列表
- @active_sets.push(set_name) unless @active_sets.include?(set_name)
- # 附加对应的套装状态
- add_set_states(set_name, item_count)
- # 删除当前件数
- remove_set.delete(item_count)
- # 如果件数为0件,且之前上身的套装列表中包含当前套装
- elsif @active_sets.include?(set_name)
- # 取消当前套装
- @active_sets.delete(set_name)
- # 和当前套装无关的情况下
- else
- # 什么也不做
- remove_set.clear
- end
- # 解除件数不相符合的的套装状态
- for i in remove_set
- remove_set_states(set_name, i)
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● 附加套装状态
- # set_name : 套装名称
- # count : 件数
- #--------------------------------------------------------------------------
- def add_set_states(set_name, count)
- # 循环所有状态,逐一附加
- unless $game_party.data_set_states[set_name][count] == nil
- for state_id in $game_party.data_set_states[set_name][count]
- add_state(state_id, true)
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● 解除套装状态
- # set_name : 套装名称
- # count : 件数
- #--------------------------------------------------------------------------
- def remove_set_states(set_name, count)
- # 循环所有状态,逐一解除
- unless $game_party.data_set_states[set_name][count] == nil
- for state_id in $game_party.data_set_states[set_name][count]
- remove_state(state_id, true)
- end
- end
- end
- end
复制代码 |
|