給装备附加多个自动状态
那個啥?一個自動狀態根本就不夠用嘛!#==============================================================================# 附加多於一個自動狀態# 禾西#==============================================================================module RPGclass Weapon def auto_state_set auto_state_set = [] return [] if @description.split(/@s/).nil? a = @description.split(/@s/).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/) return description.nil? ? '' : description endendclass Armor def auto_state_set auto_state_set = [] return [] if @description.split(/@s/).nil? a = @description.split(/@s/).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/) return description.nil? ? '' : description endendend#==============================================================================# ■ 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 remove_state(old_armor.auto_state_set, 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, true) end endend #----------------------------------------------------------------------------# ● 召喚舊方法#----------------------------------------------------------------------------#--------------------------------------------------------------------------# ● 设置# actor_id : 角色 ID#--------------------------------------------------------------------------alias sidaf_setup setupdef 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)# 完了------------------------------------------------------------------------- $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)# 完了------------------------------------------------------------------------- update_auto_state($data_armors[@armor1_id], $data_armors) $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)# 完了------------------------------------------------------------------------- update_auto_state($data_armors[@armor2_id], $data_armors) $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)# 完了------------------------------------------------------------------------- update_auto_state($data_armors[@armor3_id], $data_armors) $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)# 完了------------------------------------------------------------------------- update_auto_state($data_armors[@armor4_id], $data_armors) $game_party.gain_armor(@armor4_id, 1) @armor4_id = id $game_party.lose_armor(id, 1) end endendend复制代码使用方法如下圖:http://rpg.blue/upload_program/files/4444_85478983.jpg
說明 + @s + 狀態ID1, 狀態ID2, 狀態ID3
設定方法武器防具通用
放假很無聊……外加近來沒有找到想寫的東西T T
[本贴由 风雪优游 于 2008-3-19 22:20:22 进行了编辑]
本帖来自P1论坛作者禾西,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=80420若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
页:
[1]