Project1
标题:
給装备附加多个自动状态
[打印本页]
作者:
禾西
时间:
2008-3-9 16:10
标题:
給装备附加多个自动状态
本帖最后由 后知后觉 于 2009-12-29 16:37 编辑
那個啥?一個自動狀態根本就不夠用嘛!
#==============================================================================
# 附加多於一個自動狀態
# 禾西
#==============================================================================
module RPG
class Weapon
def auto_state_set
auto_state_set = []
return [] if @description.split(/@s/)[1].nil?
a = @description.split(/@s/)[1].split(/,/)
a.each {|i| auto_state_set.push(i.to_i)}
return auto_state_set.nil? ? [] : auto_state_set
end
def description
description = @description.split(/@s/)[0]
return description.nil? ? '' : description
end
end
class Armor
def auto_state_set
auto_state_set = []
return [] if @description.split(/@s/)[1].nil?
a = @description.split(/@s/)[1].split(/,/)
a.each {|i| auto_state_set.push(i.to_i)}
return auto_state_set.nil? ? [] : auto_state_set
end
def description
description = @description.split(/@s/)[0]
return description.nil? ? '' : description
end
end
end
#==============================================================================
# ■ Game_Actor
#------------------------------------------------------------------------------
# 处理角色的类。本类在 Game_Actors 类 ($game_actors)
# 的内部使用、Game_Party 类请参考 ($game_party) 。
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------#
# ● 更新自动状态組(新方法) #
# old_armor : 卸下防具 #
# new_armor : 装备防具 #
#--------------------------------------------------------------------------#
def update_auto_state_set(old_armor, new_armor)
# 强制解除卸下防具的自动状态
if old_armor != nil and old_armor.auto_state_set.empty? != true
for i in 0...old_armor.auto_state_set.size
if @states.include? old_armor.auto_state_set[i]
remove_state(old_armor.auto_state_set[i], true)
end
end
end
# 强制附加装备防具的自动状态
if new_armor != nil and new_armor.auto_state_set.empty? != true
for i in 0...new_armor.auto_state_set.size
add_state(new_armor.auto_state_set[i], true)
end
end
end
#----------------------------------------------------------------------------
# ● 召喚舊方法
#----------------------------------------------------------------------------
#--------------------------------------------------------------------------
# ● 设置
# actor_id : 角色 ID
#--------------------------------------------------------------------------
alias sidaf_setup setup
def setup(actor_id)
sidaf_setup(actor_id)
#---------------------刷新自动状态組---------------------#
update_auto_state_set(nil, $data_weapons[@weapon_id])
update_auto_state_set(nil, $data_armors[@armor1_id])
update_auto_state_set(nil, $data_armors[@armor2_id])
update_auto_state_set(nil, $data_armors[@armor3_id])
update_auto_state_set(nil, $data_armors[@armor4_id])
#--------------------------------------------------------#
end
#--------------------------------------------------------------------------
# ● 变更装备
# equip_type : 装备类型
# id : 武器 or 防具 ID (0 为解除装备)
#--------------------------------------------------------------------------
def equip(equip_type, id)
case equip_type
when 0 # 武器
if id == 0 or $game_party.weapon_number(id) > 0
# 刷新自動狀態組---------------------------------------------------------
update_auto_state_set($data_weapons[@weapon_id], $data_weapons[id])
# 完了-------------------------------------------------------------------------
$game_party.gain_weapon(@weapon_id, 1)
@weapon_id = id
$game_party.lose_weapon(id, 1)
end
when 1 # 盾
if id == 0 or $game_party.armor_number(id) > 0
# 刷新自動狀態組---------------------------------------------------------
update_auto_state_set($data_armors[@armor1_id], $data_armors[id])
# 完了-------------------------------------------------------------------------
update_auto_state($data_armors[@armor1_id], $data_armors[id])
$game_party.gain_armor(@armor1_id, 1)
@armor1_id = id
$game_party.lose_armor(id, 1)
end
when 2 # 头
if id == 0 or $game_party.armor_number(id) > 0
# 刷新自動狀態組---------------------------------------------------------
update_auto_state_set($data_armors[@armor2_id], $data_armors[id])
# 完了-------------------------------------------------------------------------
update_auto_state($data_armors[@armor2_id], $data_armors[id])
$game_party.gain_armor(@armor2_id, 1)
@armor2_id = id
$game_party.lose_armor(id, 1)
end
when 3 # 身体
if id == 0 or $game_party.armor_number(id) > 0
# 刷新自動狀態組---------------------------------------------------------
update_auto_state_set($data_armors[@armor3_id], $data_armors[id])
# 完了-------------------------------------------------------------------------
update_auto_state($data_armors[@armor3_id], $data_armors[id])
$game_party.gain_armor(@armor3_id, 1)
@armor3_id = id
$game_party.lose_armor(id, 1)
end
when 4 # 装饰品
if id == 0 or $game_party.armor_number(id) > 0
# 刷新自動狀態組---------------------------------------------------------
update_auto_state_set($data_armors[@armor4_id], $data_armors[id])
# 完了-------------------------------------------------------------------------
update_auto_state($data_armors[@armor4_id], $data_armors[id])
$game_party.gain_armor(@armor4_id, 1)
@armor4_id = id
$game_party.lose_armor(id, 1)
end
end
end
end
复制代码
使用方法如下圖:
說明 + @s + 狀態ID1, 狀態ID2, 狀態ID3
設定方法武器防具通用
放假很無聊……外加近來沒有找到想寫的東西T T
[本贴由 风雪优游 于 2008-3-19 22:20:22 进行了编辑]
作者:
英俊de狗
时间:
2008-3-9 18:22
提示:
作者被禁止或删除 内容自动屏蔽
作者:
magickey
时间:
2008-3-10 08:52
提示:
作者被禁止或删除 内容自动屏蔽
作者:
火鸡三毛老大
时间:
2008-3-14 04:26
不错.....不过有BUG吗?
作者:
风雪优游
时间:
2008-3-20 06:18
发布完毕,VIP+2
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1