じ☆ve冰风 发表于 2024-4-19 15:47:33

給装备附加多个自动状态

那個啥?一個自動狀態根本就不夠用嘛!#==============================================================================# 附加多於一個自動狀態# 禾西#==============================================================================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]
查看完整版本: 給装备附加多个自动状态