じ☆ve冰风 发表于 2026-4-12 19:31:28

【XAS】xas多技能脚本

如题,即时战斗系统xas的脚本插件,这是我第一次发布脚本,话会多些,我与xas也算挺有渊源的吧。
很早之前就一直想做一个ARPG,做之前也看了很多即时战斗的方法和脚本,但最终还是选择了XAS,入坑时就有很多和我一样同样在找xas的多技能脚本的人
我看这么久了依然没有看到有人发布xas的额外技能脚本,自己边学边写也写了挺久的,本来想整合一下再发出来,以前半生不熟还多bug,现在一看便重写了
一遍。
同时很感谢在这期间教我大佬,感谢你们!


      用了这脚本可能快捷菜单就没用了
我想防御和冲刺可以放在一起做出一个专属技能的效果,并空出一个按钮,可用于存放三技能或二道具,我这里没有写,需要你自行去定义了。
以下是核心脚本:
RUBY 代码
=begin
#===============================================================================
# ■ XAS 多技能脚本
#本脚本将原快捷菜单中的快捷菜单按钮用于新增2技能
#放置技能到 菜单》技能》选择技能
#作者:唯莫                                                   v:1.0.1;2020.1.31,02:48
#===============================================================================
=end
module XAS_BUTTON
#使2技能的按钮
BSKILL_BUTTON = Input::L
#是否启用3技能 :请自行定义
CSKILL_ENABLE = true
#使用3技能的按钮 :请自行定义
CSKILL_BUTTON = Input::L
#是否允许相同的技能
ALLOW_SAME_SKILL = false
end
module XAS_TOOL_HUD
   #是否启用2技能槽HUD
   SECOND_SKILL_HUD = true
   #2技能HUD位置
   SECOND_HUD_POSITION =
   #是否启用3技能槽HUD
   THIRD_SKILL_HUD = true
   #3技能HUD位置
   THIRD_HUD_POSITION =
end
#===============================================================================
# ■ XAS 部分
#===============================================================================
class Game_Actor < Game_Battler
attr_accessor :skill_id
attr_accessor :skill_id2
attr_accessor :skill_id3
alias dj_setup setup
def setup(actor_id)
      @skill_id = 0
      @skill_id2 = 0
      @skill_id3 = 0
   dj_setup(actor_id)
   end
end
class Window_SkillList < Window_Selectable
include XAS_BUTTON
def can_equip_skill_action?
      returnfalseif$game_party.in_battle
      skill = @data   
      if skill != niland( skill.note =~ // or skill.note =~ //)
      if$djnxx==3
          @技能检测 = skill.id
          if can_skill_identical?
            msgbox("不能装备相同的技能")
            returntrue
          else
            @i = $game_party.battle_members.id
            @actor.skill_id3 = skill.id
            Sound.play_equip
            returntrue
         end
         end
      if$djnxx==2
          @技能检测 = skill.id
          if can_skill_identical?
            msgbox("不能装备相同的技能")
            returntrue   
          else
            i = $game_party.battle_members.id
             @actor.skill_id2 = skill.id
             Sound.play_equip
            returntrue
         end
      end
      if$djnxx==1
          @技能检测 = skill.id
          if can_skill_identical?
            msgbox("不能装备相同的技能")
            returntrue   
          else
            @actor.skill_id = skill.id
            Sound.play_equip
         returntrue
         end
         end
          returnfalse
       end
   end   
    def can_skill_identical?
      returnfalseif ALLOW_SAME_SKILL
      if$djnxx==3
      returntrueif @技能检测 == @actor.skill_idor @技能检测 == @actor.skill_id2
    end
       if$djnxx==2
      returntrueif @技能检测 == @actor.skill_idor @技能检测 ==@actor.skill_id3
      end
       if$djnxx==1
      returntrueif @技能检测 ==@actor.skill_id2or @技能检测 ==@actor.skill_id3
      end
      end
end
class Window_much_skill < Window_Command
   include XAS_BUTTON
def initialize
    super(150, 100)
end
def window_width
    return240
end
def window_height
    if CSKILL_ENABLE
      return100
    else
      return80
      end
end
def make_command_list
add_command("放入一技能",   :qwe,   true)
add_command("放入二技能",   :qwer,   true)
add_command("放入三技能",   :qwert,   true)if CSKILL_ENABLE
end
end
class Scene_Sqtory < Scene_MenuBase
   include XAS_BUTTON
def start
    super
    @teleport_window = Window_much_skill.new
    @teleport_window.set_handler(:qwe, method(:scck))
    @teleport_window.set_handler(:qwer, method(:secondskill))
    @teleport_window.set_handler(:qwert, method(:thirdskill))if CSKILL_ENABLE
    @teleport_window.set_handler(:cancel, method(:return_scene))
    end

def scck #第一技能
$djnxx=1
SceneManager.call(Scene_Skill)
end
def secondskill
$djnxx=2
SceneManager.call(Scene_Skill)
end
def thirdskill
$djnxx=3
SceneManager.call(Scene_Skill)
end
end
class Scene_Menu < Scene_MenuBase
def on_personal_ok
    case@command_window.current_symbol
    when:skill
      SceneManager.call(Scene_Sqtory)
    when:equip
      SceneManager.call(Scene_Equip)
    when:status
      SceneManager.call(Scene_Status)
    end
end
end
class Game_Player < Game_Character
alias new_update_action_command update_action_command
def update_action_command
new_update_action_command
   update_2skill_button
end
defupdate_2skill_button
    if Input.trigger?(BSKILL_BUTTON)
         type = 2
         returnunless can_use_skill_command?
         returnif execute_combo?(type)
         check_equipped_action(type)
         action_id = self.battler.skill_id2
         returnif action_id == 0
         returnif state_seal_command?(type)         
         self.shoot(action_id)
      end   
       if Input.trigger?(CSKILL_BUTTON)
         type = 2
         returnunless can_use_skill_command?
         returnif execute_combo?(type)
         check_equipped_action(type)
         action_id = self.battler.skill_id3
         returnif action_id == 0
         returnif state_seal_command?(type)         
         self.shoot(action_id)
      end   
   end
end




以下是HUD部分,这东西直接粘贴在原脚本HUD插件页上   -> Tool HUD
,把原脚本给覆盖掉,试了好多方法,就是没法像上面那样定义







RUBY 代码
#==============================================================================
# ■ +++ MOG - XAS TOOL HUD (v1.0) +++
#==============================================================================
# By Moghunter
# http://www.atelier-rgss.com
#==============================================================================
# 以下是在XAS系统中使用的插件显示器脚本的设置。
#
#===============================================================================
module XAS_TOOL_HUD
   #是否启用2技能槽HUD
   SECOND_SKILL_HUD = true
   #2技能HUD位置
   SECOND_HUD_POSITION =
   #是否启用3技能槽HUD
   THIRD_SKILL_HUD = true
   #3技能HUD位置
   THIRD_HUD_POSITION =
   #是否启用技能HUD
   ENABLE_SKILL_HUD = true
   #是否启用道具HUD.
   ENABLE_ITEM_HUD = true
   #是否启用武器HUD.
   ENABLE_WEAPON_HUD = true
   #是否启用防具HUD.
   ENABLE_SHIELD_HUD = true
   #是否启用金钱HUD.
   ENABLE_GOLD_HUD = false
   #道具的位置
   ITEM_HUD =
   #技能的位置
   SKILL_HUD =
   #武器的位置
   WEAPON_HUD =
   #防具的位置
   SHIELD_HUD =
   #金钱窗口的位置
   GOLD_HUD =
   #金钱数字的位置
   GOLD_NUMBER =
   #位置布局
   LAYOUT =
   #道具图标
   ICON =
   #数字的位置.
   NUMBER =
   #数字间距.
   NUMBER_SPACE = 0
end

#==============================================================================
# ■ Tool Hud
#==============================================================================
class Tool_Hud
include XAS_TOOL_HUD

#--------------------------------------------------------------------------
# ● Initialize
#--------------------------------------------------------------------------
def initialize
      @actor = $game_party.members
      returnif@actor == nil
      @icon_image = Cache.system("Iconset")
      @number_image = Cache.system("XAS_Tool_Number")
      @number_cw = @number_image.width / 10
      @number_ch = @number_image.height / 3      
      @number_sc = @number_cw + NUMBER_SPACE
      create_skill if ENABLE_SKILL_HUD
      create_item if ENABLE_ITEM_HUD
      create_weapon if ENABLE_WEAPON_HUD
      create_shield if ENABLE_SHIELD_HUD
      create_gold if ENABLE_GOLD_HUD
      create_second_skill if SECOND_SKILL_HUD
      create_third_skill if THIRD_SKILL_HUD

end

#--------------------------------------------------------------------------
# ● Refresh
#--------------------------------------------------------------------------   
def refresh
   dispose
   initialize
end

#--------------------------------------------------------------------------
# ● Create Gold
#--------------------------------------------------------------------------   
def create_gold
   @gold = $game_party.gold
   @gold_old = @gold
   @gold_ref = @gold_old
   @gold_refresh = false         
   # Layout -------------------------------------------------------------------
   @gold_layout_sprite = Sprite.new
   @gold_layout_sprite.bitmap = Cache.system("XAS_Tool_Gold")
   @gold_layout_sprite.z = 151
   @gold_layout_sprite.x = GOLD_HUD
   @gold_layout_sprite.y = GOLD_HUD
   # Gold ---------------------------------------------------------------------
   @gold_number_sprite = Sprite.new
   @gold_number_sprite.bitmap = Bitmap.new(@number_image.width, @number_image.height / 3)
   @gold_number_sprite.z = 152
   @gold_number_sprite.x = GOLD_HUD + GOLD_NUMBER
   @gold_number_sprite.y = GOLD_HUD + GOLD_NUMBER
   gold_number_update   
end

#--------------------------------------------------------------------------
# ● Create Shield
#--------------------------------------------------------------------------   
def create_shield
      #LAYOUT ------------------------------------------------------------
      @shield_layout_sprite = Sprite.new
      @shield_layout_sprite.bitmap = Cache.system("XAS_Tool_Shield")
      @shield_layout_sprite.z = 150
      @shield_layout_sprite.x = SHIELD_HUD + LAYOUT
      @shield_layout_sprite.y = SHIELD_HUD + LAYOUT
      @shield = @actor.equips
      @old_shield = @shield
      if@shield != nil
         icon_index = @shield.icon_index
      else
         icon_index = 0
      end   
      @shield_icon_sprite = Sprite.new
      @shield_icon_sprite.bitmap = Bitmap.new(24,24)
      bitmap_shield_rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
      @shield_icon_sprite.bitmap.blt(0, 0, @icon_image, bitmap_shield_rect)
      @shield_icon_sprite.z = 151
      @shield_icon_sprite.x = SHIELD_HUD + ICON
      @shield_icon_sprite.y = SHIELD_HUD + ICON         
      #NUMBER ------------------------------------------------------------
      @shield_number_sprite = Sprite.new
      @shield_number_sprite.bitmap = Bitmap.new(@number_image.width, @number_image.height / 3)
      @shield_number_sprite.z = 152
      refresh_shield_number
end

#--------------------------------------------------------------------------
# ● Refresh Shield Number
#--------------------------------------------------------------------------   
def refresh_shield_number
   @shield_number = 0
   @s_item = 0
   @shield_number_sprite.bitmap.clear
   returnif@shield == nil
   if@shield.note =~ //
         action_id =$1.to_i   
         skill = $data_skills
         if skill != nil
            if skill.note =~ //
               item_id = $1.to_i
               if item_id != nil
                  @s_item = $data_items
                  @shield_number = $game_party.item_number(@s_item)            
               end
             end
         end   
   end
   returnif@s_item == 0
   cost_split = @shield_number.to_s.split(//)
   for r in0..cost_split.size - 1
         number_abs = cost_split.to_i
         src_rect = Rect.new(@number_cw * number_abs, 0, @number_cw, @number_ch)
         @shield_number_sprite.bitmap.blt(@number_sc*r, 0, @number_image, src_rect)      
   end         
   xf = ((cost_split.size * @number_sc) / 2)
   @shield_number_sprite.x = SHIELD_HUD + NUMBER - xf
   @shield_number_sprite.y = SHIELD_HUD + NUMBER
end   

#--------------------------------------------------------------------------
# ● Create Weapon
#--------------------------------------------------------------------------   
def create_weapon
      #LAYOUT ------------------------------------------------------------
      @weapon_layout_sprite = Sprite.new
      @weapon_layout_sprite.bitmap = Cache.system("XAS_Tool_Weapon")
      @weapon_layout_sprite.z = 150
      @weapon_layout_sprite.x = WEAPON_HUD + LAYOUT
      @weapon_layout_sprite.y = WEAPON_HUD + LAYOUT
      #ICON
      @weapon = @actor.equips
      @old_weapon = @weapon
      if@weapon != nil
         icon_index = @weapon.icon_index
      else
         icon_index = 0
      end   
      @weapon_icon_sprite = Sprite.new
      @weapon_icon_sprite.bitmap = Bitmap.new(24,24)
      bitmap_weapon_rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
      @weapon_icon_sprite.bitmap.blt(0, 0, @icon_image, bitmap_weapon_rect)
      @weapon_icon_sprite.z = 151
      @weapon_icon_sprite.x = WEAPON_HUD + ICON
      @weapon_icon_sprite.y = WEAPON_HUD + ICON         
      #NUMBER ------------------------------------------------------------
      @weapon_number_sprite = Sprite.new
      @weapon_number_sprite.bitmap = Bitmap.new(@number_image.width, @number_image.height / 3)
      @weapon_number_sprite.z = 152
      refresh_weapon_number
end

#--------------------------------------------------------------------------
# ● Refresh Weapon Number
#--------------------------------------------------------------------------   
def refresh_weapon_number
   @weapon_number = 0
   @w_item = 0
   @weapon_number_sprite.bitmap.clear
   returnif@weapon == nil
   if@weapon.note =~ //
         action_id =$1.to_i   
         skill = $data_skills
         if skill != nil
            if skill.note =~ //
               item_id = $1.to_i
               if item_id != nil
                  @w_item = $data_items
                  @weapon_number = $game_party.item_number(@w_item)            
               end
             end
         end   
   end
   returnif@w_item == 0
   cost_split = @weapon_number.to_s.split(//)
   for r in0..cost_split.size - 1
         number_abs = cost_split.to_i
         src_rect = Rect.new(@number_cw * number_abs, 0, @number_cw, @number_ch)
         @weapon_number_sprite.bitmap.blt(@number_sc*r, 0, @number_image, src_rect)      
   end         
   xf = ((cost_split.size * @number_sc) / 2)
   @weapon_number_sprite.x = WEAPON_HUD + NUMBER - xf
   @weapon_number_sprite.y = WEAPON_HUD + NUMBER
end

#--------------------------------------------------------------------------
# ● Create Skill
#--------------------------------------------------------------------------   
def create_skill
      #LAYOUT ------------------------------------------------------------
      @skill_layout_sprite = Sprite.new
      @skill_layout_sprite.bitmap = Cache.system("XAS_Tool_Skill")
      @skill_layout_sprite.z = 150
      @skill_layout_sprite.x = SKILL_HUD + LAYOUT
      @skill_layout_sprite.y = SKILL_HUD + LAYOUT
      #ICON ------------------------------------------------------------
      @old_skill = @actor.skill_id
      @skill = $data_skills[@actor.skill_id]
      if@skill != nil
         icon_index = @skill.icon_index
         @skill_mp_cost = @skill.mp_cost
      else
         icon_index = 0
         @skill_mp_cost = 0
      end
      @skill_icon_sprite = Sprite.new
      @skill_icon_sprite.bitmap = Bitmap.new(24,24)
      bitmap_skill_rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
      @skill_icon_sprite.bitmap.blt(0, 0, @icon_image, bitmap_skill_rect)
      @skill_icon_sprite.z = 151
      @skill_icon_sprite.x = SKILL_HUD + ICON
      @skill_icon_sprite.y = SKILL_HUD + ICON   
      #NUMBER ------------------------------------------------------------
      skill_number_bitmap = Bitmap.new(@number_image.width, @number_image.height / 3)
      @skill_number_sprite = Sprite.new
      @skill_number_sprite.bitmap = skill_number_bitmap
      cost_split = @skill_mp_cost.to_s.split(//)
      for r in0..cost_split.size - 1
          number_abs = cost_split.to_i
          src_rect = Rect.new(@number_cw * number_abs, @number_ch, @number_cw, @number_ch)
          skill_number_bitmap.blt(@number_sc*r, 0, @number_image, src_rect)      
      end         
      @skill_number_sprite.z = 152
      xf = ((cost_split.size * @number_sc) / 2)
      @skill_number_sprite.x = SKILL_HUD + NUMBER - xf
      @skill_number_sprite.y = SKILL_HUD + NUMBER         
end

#--------------------------------------------------------------------------
# ● Create Item
#--------------------------------------------------------------------------   
def create_item
      #LAYOUT ------------------------------------------------------------
      @item_layout_sprite = Sprite.new
      @item_layout_sprite.bitmap = Cache.system("XAS_Tool_Item")
      @item_layout_sprite.z = 150
      @item_layout_sprite.x = ITEM_HUD + LAYOUT
      @item_layout_sprite.y = ITEM_HUD + LAYOUT
      #ICON ------------------------------------------------------------
      @old_item = @actor.item_id
      @item = $data_items[@actor.item_id]
      if@item != nil
         icon_index = @item.icon_index
         @item_number = $game_party.item_number(@item)
      else
         icon_index = 0
         @item_number = 0
      end
      @item_icon_sprite = Sprite.new
      @item_icon_sprite.bitmap = Bitmap.new(24,24)
      bitmap_item_rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
      @item_icon_sprite.bitmap.blt(0, 0, @icon_image, bitmap_item_rect)
      @item_icon_sprite.z = 160
      @item_icon_sprite.x = ITEM_HUD + ICON
      @item_icon_sprite.y = ITEM_HUD + ICON      
      #NUMBER ------------------------------------------------------------
      item_number_bitmap = Bitmap.new(@number_image.width, @number_image.height / 3)
      @item_number_sprite = Sprite.new
      @item_number_sprite.bitmap = item_number_bitmap
      cost_split = @item_number.to_s.split(//)
      for r in0..cost_split.size - 1
          number_abs = cost_split.to_i
          src_rect = Rect.new(@number_cw * number_abs, 0, @number_cw, @number_ch)
          @item_number_sprite.bitmap.blt(@number_sc*r, 0, @number_image, src_rect)      
      end         
      @item_number_sprite.z = 152
      xf = ((cost_split.size * @number_sc) / 2)
      @item_number_sprite.x = ITEM_HUD + NUMBER - xf
      @item_number_sprite.y = ITEM_HUD + NUMBER   
end
   def create_second_skill
    #创建技能槽-----------------------------------------------------------------
    @second_skill = Sprite.new
    @second_skill.bitmap = Cache.system("XAS_Tool_Skill")
    @second_skill.x= SECOND_HUD_POSITION
    @second_skill.y= SECOND_HUD_POSITION
    #槽中图标-------------------------------------------------------------------
    @old_second_skill = @actor.skill_id2
    @bskill = $data_skills[@actor.skill_id2]
    if@bskill != nil
      icon_index = @bskill.icon_index
      @second_skill_number = @bskill.mp_cost
else
      icon_index = 0
       @second_skill_number = 0
    end
    @second_skill_icon = Sprite.new
    @second_skill_icon.bitmap = Bitmap.new(24,24)
    bitmap_bskill_rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
    @second_skill_icon.bitmap.blt(0, 0, @icon_image, bitmap_bskill_rect)
    @second_skill_icon.x = SECOND_HUD_POSITION+5
    @second_skill_icon.y = SECOND_HUD_POSITION+12
    #槽下数字-------------------------------------------------------------------
   skill_number_bitmap = Bitmap.new(@number_image.width, @number_image.height / 3)
      @second_skill_number_sprite = Sprite.new
      @second_skill_number_sprite.bitmap = skill_number_bitmap
      cost_split = @second_skill_number.to_s.split(//)
      for r in0..cost_split.size - 1
          number_abs = cost_split.to_i
          src_rect = Rect.new(@number_cw * number_abs, @number_ch, @number_cw, @number_ch)
         skill_number_bitmap.blt(@number_sc*r, 0, @number_image, src_rect)      
      end         
      xf = ((cost_split.size * @number_sc) / 2)
      @second_skill_number_sprite.x = SECOND_HUD_POSITION+12
      @second_skill_number_sprite.y = SECOND_HUD_POSITION+35
end
   def create_third_skill
    #创建技能槽-----------------------------------------------------------------
    @third_skill = Sprite.new
    @third_skill.bitmap = Cache.system("XAS_Tool_Skill")
    @third_skill.x= THIRD_HUD_POSITION
    @third_skill.y= THIRD_HUD_POSITION
    #槽中图标-------------------------------------------------------------------
    @old_third_skill = @actor.skill_id3
    @cskill = $data_skills[@actor.skill_id3]
    if@cskill != nil
      icon_index =@cskill.icon_index
      @third_skill_number = @cskill.mp_cost
else
      icon_index = 0
       @third_skill_number = 0
    end
    @third_skill_icon = Sprite.new
    @third_skill_icon.bitmap = Bitmap.new(24,24)
    bitmap_bskill_rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
    @third_skill_icon.bitmap.blt(0, 0, @icon_image, bitmap_bskill_rect)
    @third_skill_icon.x = THIRD_HUD_POSITION+5
    @third_skill_icon.y = THIRD_HUD_POSITION+12
    #槽下数字-------------------------------------------------------------------
   skill_number_bitmap = Bitmap.new(@number_image.width, @number_image.height / 3)
      @third_skill_number_sprite = Sprite.new
      @third_skill_number_sprite.bitmap = skill_number_bitmap
      cost_split = @second_skill_number.to_s.split(//)
      for r in0..cost_split.size - 1
          number_abs = cost_split.to_i
          src_rect = Rect.new(@number_cw * number_abs, @number_ch, @number_cw, @number_ch)
         skill_number_bitmap.blt(@number_sc*r, 0, @number_image, src_rect)      
      end         
      xf = ((cost_split.size * @number_sc) / 2)
      @third_skill_number_sprite.x = THIRD_HUD_POSITION+12
      @third_skill_number_sprite.y = THIRD_HUD_POSITION+35
end

#--------------------------------------------------------------------------
# ● Dispose
#--------------------------------------------------------------------------   
def dispose
      returnif@actor == nil
      dispose_skill if ENABLE_SKILL_HUD
      dispose_item if ENABLE_ITEM_HUD
      dispose_weapon if ENABLE_WEAPON_HUD
      dispose_shield if ENABLE_SHIELD_HUD
      dispose_gold if ENABLE_GOLD_HUD
      @icon_image.dispose
      @number_image.dispose   
      dispose_second_skill if SECOND_SKILL_HUD
      dispose_third_skill if THIRD_SKILL_HUD
    end
#--------------------------------------------------------------------------
# ● 处置二技能
#--------------------------------------------------------------------------      
def dispose_second_skill
    @second_skill.bitmap.dispose
    @second_skill.dispose
    @second_skill_icon.bitmap.dispose
    @second_skill_icon.dispose
    @second_skill_number_sprite.bitmap.dispose
    @second_skill_number_sprite.dispose
end
#--------------------------------------------------------------------------
# ● 处置3技能
#--------------------------------------------------------------------------      
def dispose_third_skill
    @third_skill.bitmap.dispose
    @third_skill.dispose
    @third_skill_icon.bitmap.dispose
    @third_skill_icon.dispose
    @third_skill_number_sprite.bitmap.dispose
    @third_skill_number_sprite.dispose
end

#--------------------------------------------------------------------------
# ● Dispose Skill
#--------------------------------------------------------------------------      
def dispose_skill
      @skill_layout_sprite.bitmap.dispose
      @skill_layout_sprite.dispose
      @skill_icon_sprite.bitmap.dispose
      @skill_icon_sprite.dispose
      @skill_number_sprite.bitmap.dispose
      @skill_number_sprite.dispose
end

#--------------------------------------------------------------------------
# ● Dispose Gold
#--------------------------------------------------------------------------      
def dispose_gold
      @gold_layout_sprite.bitmap.dispose
      @gold_layout_sprite.dispose
      @gold_number_sprite.bitmap.dispose
      @gold_number_sprite.dispose
end

#--------------------------------------------------------------------------
# ● Dispose Item
#--------------------------------------------------------------------------      
def dispose_item
      @item_layout_sprite.bitmap.dispose
      @item_layout_sprite.dispose      
      @item_icon_sprite.bitmap.dispose
      @item_icon_sprite.dispose      
      @item_number_sprite.bitmap.dispose
      @item_number_sprite.dispose   
end

#--------------------------------------------------------------------------
# ● Dispose Weapon
#--------------------------------------------------------------------------         
def dispose_weapon
      @weapon_layout_sprite.bitmap.dispose
      @weapon_layout_sprite.dispose
      @weapon_icon_sprite.bitmap.dispose
      @weapon_icon_sprite.dispose
      @weapon_number_sprite.bitmap.dispose
      @weapon_number_sprite.dispose   
end

#--------------------------------------------------------------------------
# ● Dispose shield
#--------------------------------------------------------------------------            
def dispose_shield
      @shield_layout_sprite.bitmap.dispose
      @shield_layout_sprite.dispose
      @shield_icon_sprite.bitmap.dispose
      @shield_icon_sprite.dispose
      @shield_number_sprite.bitmap.dispose
      @shield_number_sprite.dispose   
end

#--------------------------------------------------------------------------
# ● Update
#--------------------------------------------------------------------------   
def update
      returnif@actor == nil
      update_visible
      refresh if can_refresh_hud?
      refresh_item if ENABLE_ITEM_HUD and can_refresh_item_number?
      refresh_weapon_number if ENABLE_WEAPON_HUD and can_refreh_weapon_number?
      refresh_shield_number if ENABLE_SHIELD_HUD and can_refreh_shield_number?
      update_gold if ENABLE_GOLD_HUD
      refresh if wm_Refresh_method?
end

#--------------------------------------------------------------------------
# ● Update Gold
#--------------------------------------------------------------------------         
def update_gold
      gold_number_down if@gold > $game_party.gold
      gold_number_up if@gold < $game_party.gold   
      gold_number_update if@gold_refresh   
end

#--------------------------------------------------------------------------
# ● Can Refresh Weapon Number
#--------------------------------------------------------------------------      
def can_refreh_weapon_number?
      returntrueif@weapon_number != $game_party.item_number(@w_item)
      returnfalse
end

#--------------------------------------------------------------------------
# ● Can Refresh Shield Number
#--------------------------------------------------------------------------      
def can_refreh_shield_number?
      returntrueif@shield_number != $game_party.item_number(@s_item)
      returnfalse
end   

#--------------------------------------------------------------------------
# ● Update Visible
#--------------------------------------------------------------------------      
def update_visible
      vis = $game_system.enable_hud
      if ENABLE_SKILL_HUD
         @skill_layout_sprite.visible = vis
         @skill_icon_sprite.visible = vis
         @skill_number_sprite.visible = vis
      end
      if ENABLE_ITEM_HUD
         @item_layout_sprite.visible = vis
         @item_icon_sprite.visible = vis
         @item_number_sprite.visible = vis
      end
      if ENABLE_WEAPON_HUD         
         @weapon_layout_sprite.visible = vis
         @weapon_icon_sprite.visible = vis
         @weapon_number_sprite.visible = vis
      end
      if ENABLE_SHIELD_HUD
#~   vis = false unless $game_party.battle_members.class_id == 11
         @shield_layout_sprite.visible = vis
         @shield_icon_sprite.visible = vis
         @shield_number_sprite.visible = vis      
      end
      if ENABLE_GOLD_HUD   
         @gold_layout_sprite.visible = vis
         @gold_number_sprite.visible = vis         
       end
       if SECOND_SKILL_HUD
       @second_skill.visible = vis
       @second_skill_icon.visible = vis
       @second_skill_number_sprite.visible = vis
   end
      if THIRD_SKILL_HUD
       @third_skill.visible = vis
       @third_skill_icon.visible = vis
       @third_skill_number_sprite.visible = vis
         end
end

#--------------------------------------------------------------------------
# ● Can Refresh Hud
#--------------------------------------------------------------------------      
def can_refresh_hud?      
      if@actor != nil
         if ENABLE_SKILL_HUD
            returntrueif@old_skill != @actor.skill_id
          end
         if ENABLE_ITEM_HUD
            returntrueif@old_item != @actor.item_id
         end
         if ENABLE_WEAPON_HUD
            returntrueif@old_weapon != @actor.equips
         end
         if ENABLE_SHIELD_HUD
            returntrueif@old_shield != @actor.equips
         end      
       end


      returnfalse
end

#--------------------------------------------------------------------------
# ● Can Refresh Item Number
#--------------------------------------------------------------------------      
def can_refresh_item_number?
      returntrueif@item_number != $game_party.item_number(@item)      
      returnfalse
end

#--------------------------------------------------------------------------
# ● Create Item
#--------------------------------------------------------------------------   
def refresh_item
      @item_number = $game_party.item_number(@item)   
      #Item Number ------------------------------------------------------------
      @item_number_sprite.bitmap.clear
      cost_split = @item_number.to_s.split(//)
      for r in0..cost_split.size - 1
          number_abs = cost_split.to_i
          src_rect = Rect.new(@number_cw * number_abs, 0, @number_cw, @number_ch)
          @item_number_sprite.bitmap.blt(@number_sc*r, 0, @number_image, src_rect)      
      end         
      xf = ((cost_split.size * @number_sc) / 2)
      @item_number_sprite.x = ITEM_HUD + NUMBER - xf
end

#--------------------------------------------------------------------------
# ● gold_number_up
#--------------------------------------------------------------------------
def gold_number_up
      @gold_refresh = true
      @gold_ref = 20 * (@gold - @gold_old) / 100
      @gold_ref = 1if@gold_ref < 1
      @gold += @gold_ref   
      if@gold >= $game_party.gold
         @gold_old = $game_party.gold
         @gold = $game_party.gold
         @gold_ref = 0
      end
end   

#--------------------------------------------------------------------------
# ● gold_number_down
#--------------------------------------------------------------------------
def gold_number_down
      @gold_refresh = true
      @gold_ref = 10 * (@gold_old - @gold) / 100
      @gold_ref = 1if@gold_ref < 1
      @gold -= @gold_ref   
      if@gold
页: [1]
查看完整版本: 【XAS】xas多技能脚本