#==============================================================================
# 此脚本来自 [url]www.66rpg.com[/url]
#------------------------------------------------------------------------------
# 功能:[RMVA]增加装备栏数量
# 版本:v1.1 2012-02-20
# 使用说明:
# 1.在下面设置需要增加的数量以及增加部位的名字
# 2.在数据库-护甲-备注 里写入 @etype[位置编号]
# 默认系统一共有5个装备位置.占用了0~4号
# 所以扩展出来的装备栏位置编号是从 5 开始.比如 @etype[5] @etype[6]
# 3.在扩展位置上给角色设置初始装备的方法
# 在 数据库-角色-备注 里写入 @add_equips[装备1ID,装备2ID.....]
# 每个ID中间由半角的 , 分开 比如 @add_equips[61] @add_equips[61,63]
# 4.设置 固定装备 的初始值
# 在 数据库-角色-备注 里写入 @fix_equips[装备位置编号,装备位置编号......]
# 每个编号间由半角的 , 分开 比如 @fix_equips[5] @fix_equips[5,6]
# 5.设置 禁用装备 的初始值
# 在 数据库-角色-备注 里写入 @seal_equips[装备位置编号,装备位置编号......]
# 每个编号间由半角的 , 分开 比如 @seal_equips[5] @seal_equips[5,6]
# 6.游戏运行时可以使用:
# $game_actors[角色ID].fix_equips 来获取该角色被固定装备位置的数组
# $game_actors[角色ID].seal_equips 来获取该角色被禁用装备位置的数组
# 然后可以使用数组类的 delete 和 push 方法来删除/增加 etype_id
# 来达到解除与启用 固定、禁用的效果
# 比如 $game_actors[1].fix_equips.delete(5) 解除1号角色5号位置的固定
# $game_actors[2].seal_equips.push(6) 2号角色禁用6号装备位置
# 注意事项:
# 1.上面说的设置初始装备、固定装备、禁用装备都是只针对新扩展部位的
# 默认的前5个装备位置的固定、禁用、设置初始.还请使用RMVA默认方式设置
# 2.状态画面的描绘装备部分.在默认分辨率下.只能描绘6个装备.
# 我小改了一下.但还是觉得不怎么好看.建议你自己重新描绘那一块...
#==============================================================================
module HzhjEquip
# 设置要增加的装备部位数量
ETYPE_ADD_NUM = 4
# 设置要增加的装备部位的名字
ETYPE_ADD_NAME = ["腰带", "鞋子","披风","荣誉",]
end
def Vocab.etype(etype_id)
etypes = $data_system.terms.etypes + HzhjEquip::ETYPE_ADD_NAME
etypes[etype_id]
end
class RPG::Actor < RPG::BaseItem
def add_equips
if /@add_equips\[(.+?)\]/ =~ @note
result = $1.split(/,/).collect{|str|str.to_i}
result << 0 while result.size < HzhjEquip::ETYPE_ADD_NUM
else
result = Array.new(HzhjEquip::ETYPE_ADD_NUM){0}
end
result
end
def fix_equips
if /@fix_equips\[(.+?)\]/ =~ @note
result = $1.split(/,/).collect{|str|str.to_i}
else
result = []
end
result
end
def seal_equips
if /@seal_equips\[(.+?)\]/ =~ @note
result = $1.split(/,/).collect{|str|str.to_i}
else
result = []
end
result
end
end
class RPG::Armor < RPG::EquipItem
def etype_id
if /@etype\[(.+?)\]/ =~ @note
return $1.to_i
else
return @etype_id
end
end
end
class Game_Actor < Game_Battler
attr_accessor :fix_equips
attr_accessor :seal_equips
alias hzhj_old_init_equips_game_actor init_equips
def init_equips(equips)
@fix_equips = actor.fix_equips
@seal_equips = actor.seal_equips
hzhj_equips = equips.clone
add_equips = actor.add_equips
HzhjEquip::ETYPE_ADD_NUM.times{hzhj_equips << add_equips.shift}
hzhj_old_init_equips_game_actor(hzhj_equips)
end
alias hzhj_old_equip_slots_game_actor equip_slots
def equip_slots
result = hzhj_old_equip_slots_game_actor
HzhjEquip::ETYPE_ADD_NUM.times{result << result.size}
result
end
def equip_type_fixed?(etype_id)
if etype_id > 4
return @fix_equips.include?(etype_id)
else
return super
end
end
def equip_type_sealed?(etype_id)
if etype_id > 4
return @seal_equips.include?(etype_id)
else
return super
end
end
end
class Window_EquipSlot < Window_Selectable
def actor=(actor)
return if @actor == actor
@actor = actor
create_contents
refresh
end
end
class Window_Status < Window_Selectable
def draw_equipments(x, y)
x = 224 if @actor.equips.size > 6
@actor.equips.each_with_index do |item, i|
dx = x + 146 * (i / 6)
dy = y + line_height * (i % 6)
draw_item_name(item, dx, dy, true, 122)
end
end
end