扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 109|回复: 0

[转载发布] 【XAS】xas多技能脚本

[复制链接]
累计送礼:
0 个
累计收礼:
1 个
  • TA的每日心情
    开心
    前天 02:22
  • 签到天数: 193 天

    连续签到: 1 天

    [LV.7]常住居民III

    2604

    主题

    789

    回帖

    2万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    7
    卡币
    17608
    OK点
    16
    推广点
    0
    同能卷
    50
    积分
    21031

    灌水之王

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


            用了这脚本可能快捷菜单就没用了
      我想防御和冲刺可以放在一起做出一个专属技能的效果,并空出一个按钮,可用于存放三技能或二道具,我这里没有写,需要你自行去定义了。
      以下是核心脚本:
    RUBY 代码
    1. =begin
    2. #===============================================================================
    3. # ■ XAS 多技能脚本
    4. #本脚本将原快捷菜单中的快捷菜单按钮用于新增2技能
    5. #放置技能到 菜单》技能》选择技能
    6. #作者:唯莫                                                   v:1.0.1;2020.1.31,02:48
    7. #===============================================================================
    8. =end
    9. module XAS_BUTTON
    10. #使2技能的按钮
    11.   BSKILL_BUTTON = Input::L
    12. #是否启用3技能 :请自行定义
    13.   CSKILL_ENABLE = true
    14. #使用3技能的按钮 :请自行定义
    15.   CSKILL_BUTTON = Input::L
    16. #是否允许相同的技能
    17.   ALLOW_SAME_SKILL = false
    18. end
    19. module XAS_TOOL_HUD
    20.    #是否启用2技能槽HUD
    21.    SECOND_SKILL_HUD = true
    22.    #2技能HUD位置[x,y]
    23.    SECOND_HUD_POSITION = [205,365]
    24.    #是否启用3技能槽HUD
    25.    THIRD_SKILL_HUD = true
    26.    #3技能HUD位置[x,y]
    27.    THIRD_HUD_POSITION = [237,365]
    28.   end
    29. #===============================================================================
    30. # ■ XAS 部分
    31. #===============================================================================
    32. class Game_Actor < Game_Battler
    33.   attr_accessor :skill_id
    34.   attr_accessor :skill_id2
    35.   attr_accessor :skill_id3
    36.   alias dj_setup setup
    37. def setup(actor_id)
    38.       @skill_id = 0
    39.       @skill_id2 = 0
    40.       @skill_id3 = 0
    41.    dj_setup(actor_id)
    42.    end
    43.   end
    44. class Window_SkillList < Window_Selectable
    45.   include XAS_BUTTON
    46.   def can_equip_skill_action?
    47.       returnfalseif$game_party.in_battle
    48.       skill = @data[index]   
    49.       if skill != niland( skill.note =~ // or skill.note =~ //)
    50.         if$djnxx==3
    51.           @技能检测 = skill.id
    52.           if can_skill_identical?
    53.             msgbox("不能装备相同的技能")
    54.             returntrue
    55.           else
    56.             @i = $game_party.battle_members[0].id
    57.             @actor.skill_id3 = skill.id
    58.             Sound.play_equip
    59.             returntrue
    60.            end
    61.          end
    62.         if$djnxx==2
    63.           @技能检测 = skill.id
    64.           if can_skill_identical?
    65.             msgbox("不能装备相同的技能")
    66.             returntrue   
    67.           else
    68.             i = $game_party.battle_members[0].id
    69.              @actor.skill_id2 = skill.id
    70.              Sound.play_equip
    71.             returntrue  
    72.            end
    73.         end
    74.         if$djnxx==1
    75.           @技能检测 = skill.id
    76.           if can_skill_identical?
    77.             msgbox("不能装备相同的技能")
    78.             returntrue   
    79.           else
    80.             @actor.skill_id = skill.id
    81.             Sound.play_equip
    82.          returntrue
    83.            end
    84.          end
    85.           returnfalse
    86.        end
    87.      end   
    88.     def can_skill_identical?
    89.       returnfalseif ALLOW_SAME_SKILL
    90.       if$djnxx==3
    91.         returntrueif @技能检测 == @actor.skill_idor @技能检测 == @actor.skill_id2
    92.     end
    93.        if$djnxx==2
    94.         returntrueif @技能检测 == @actor.skill_idor @技能检测 ==@actor.skill_id3
    95.       end
    96.        if$djnxx==1
    97.         returntrueif @技能检测 ==@actor.skill_id2or @技能检测 ==@actor.skill_id3
    98.       end
    99.       end
    100. end
    101. class Window_much_skill < Window_Command
    102.      include XAS_BUTTON
    103.   def initialize
    104.     super(150, 100)
    105.   end
    106.   def window_width
    107.     return240
    108.   end
    109.   def window_height
    110.     if CSKILL_ENABLE
    111.       return100
    112.     else
    113.       return80
    114.       end
    115.   end
    116. def make_command_list
    117.   add_command("放入一技能",   :qwe,   true)
    118.   add_command("放入二技能",   :qwer,   true)
    119.   add_command("放入三技能",   :qwert,   true)if CSKILL_ENABLE
    120. end
    121. end
    122. class Scene_Sqtory < Scene_MenuBase
    123.    include XAS_BUTTON
    124.   def start
    125.     super
    126.     @teleport_window = Window_much_skill.new
    127.     @teleport_window.set_handler(:qwe, method(:scck))
    128.     @teleport_window.set_handler(:qwer, method(:secondskill))
    129.     @teleport_window.set_handler(:qwert, method(:thirdskill))if CSKILL_ENABLE
    130.     @teleport_window.set_handler(:cancel, method(:return_scene))
    131.     end
    132. def scck #第一技能
    133. $djnxx=1
    134. SceneManager.call(Scene_Skill)
    135. end
    136. def secondskill
    137.   $djnxx=2
    138. SceneManager.call(Scene_Skill)
    139. end
    140. def thirdskill
    141.   $djnxx=3
    142. SceneManager.call(Scene_Skill)
    143. end
    144. end
    145. class Scene_Menu < Scene_MenuBase
    146.   def on_personal_ok
    147.     case@command_window.current_symbol
    148.     when:skill
    149.       SceneManager.call(Scene_Sqtory)
    150.     when:equip
    151.       SceneManager.call(Scene_Equip)
    152.     when:status
    153.       SceneManager.call(Scene_Status)
    154.     end
    155.   end
    156. end
    157. class Game_Player < Game_Character
    158. alias new_update_action_command update_action_command
    159.   def update_action_command
    160.   new_update_action_command
    161.    update_2skill_button
    162.   end
    163. def  update_2skill_button
    164.     if Input.trigger?(BSKILL_BUTTON)
    165.          type = 2
    166.          returnunless can_use_skill_command?
    167.          returnif execute_combo?(type)
    168.          check_equipped_action(type)
    169.          action_id = self.battler.skill_id2
    170.          returnif action_id == 0
    171.          returnif state_seal_command?(type)         
    172.          self.shoot(action_id)
    173.       end   
    174.        if Input.trigger?(CSKILL_BUTTON)
    175.          type = 2
    176.          returnunless can_use_skill_command?
    177.          returnif execute_combo?(type)
    178.          check_equipped_action(type)
    179.          action_id = self.battler.skill_id3
    180.          returnif action_id == 0
    181.          returnif state_seal_command?(type)         
    182.          self.shoot(action_id)
    183.       end   
    184.    end
    185. end
    复制代码




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







    RUBY 代码
    [code]#==============================================================================
    # ■ +++ 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位置[x,y]
       SECOND_HUD_POSITION = [205,365]
       #是否启用3技能槽HUD
       THIRD_SKILL_HUD = true
       #3技能HUD位置[x,y]
       THIRD_HUD_POSITION = [237,365]
       #是否启用技能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 = [427,365]
       #技能的位置
       SKILL_HUD = [218,365]
       #武器的位置
       WEAPON_HUD = [324,365]
       #防具的位置
       SHIELD_HUD = [352,365]
       #金钱窗口的位置
       GOLD_HUD = [430,395]
       #金钱数字的位置
       GOLD_NUMBER = [40,1]
       #位置布局
       LAYOUT = [50,0]
       #道具图标
       ICON = [55, 12]
       #数字的位置.
       NUMBER = [68, 35]
       #数字间距.
       NUMBER_SPACE = 0
    end

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

    #--------------------------------------------------------------------------
    # ● Initialize
    #--------------------------------------------------------------------------  
      def initialize
          @actor = $game_party.members[0]
          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[0]
         @gold_layout_sprite.y = GOLD_HUD[1]
         # 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[0] + GOLD_NUMBER[0]
         @gold_number_sprite.y = GOLD_HUD[1] + GOLD_NUMBER[1]
         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[0] + LAYOUT[0]
          @shield_layout_sprite.y = SHIELD_HUD[1] + LAYOUT[1]
          @shield = @actor.equips[1]
          @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[0] + ICON[0]
          @shield_icon_sprite.y = SHIELD_HUD[1] + ICON[1]           
          #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[action_id]
             if skill != nil
                if skill.note =~ //
                   item_id = $1.to_i
                   if item_id != nil
                      @s_item = $data_items[item_id]
                      @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[r].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[0] + NUMBER[0] - xf
         @shield_number_sprite.y = SHIELD_HUD[1] + NUMBER[1]  
    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[0] + LAYOUT[0]
          @weapon_layout_sprite.y = WEAPON_HUD[1] + LAYOUT[1]
          #ICON
          @weapon = @actor.equips[0]
          @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[0] + ICON[0]
          @weapon_icon_sprite.y = WEAPON_HUD[1] + ICON[1]           
          #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[action_id]
             if skill != nil
                if skill.note =~ //
                   item_id = $1.to_i
                   if item_id != nil
                      @w_item = $data_items[item_id]
                      @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[r].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[0] + NUMBER[0] - xf
         @weapon_number_sprite.y = WEAPON_HUD[1] + NUMBER[1]  
    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[0] + LAYOUT[0]
          @skill_layout_sprite.y = SKILL_HUD[1] + LAYOUT[1]
          #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[0] + ICON[0]
          @skill_icon_sprite.y = SKILL_HUD[1] + ICON[1]   
          #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[r].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[0] + NUMBER[0] - xf
          @skill_number_sprite.y = SKILL_HUD[1] + NUMBER[1]         
      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[0] + LAYOUT[0]
          @item_layout_sprite.y = ITEM_HUD[1] + LAYOUT[1]
          #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[0] + ICON[0]
          @item_icon_sprite.y = ITEM_HUD[1] + ICON[1]      
          #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[r].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[0] + NUMBER[0] - xf
          @item_number_sprite.y = ITEM_HUD[1] + NUMBER[1]   
      end
       def create_second_skill
        #创建技能槽-----------------------------------------------------------------
        @second_skill = Sprite.new
        @second_skill.bitmap = Cache.system("XAS_Tool_Skill")
        @second_skill.x= SECOND_HUD_POSITION[0]
        @second_skill.y= SECOND_HUD_POSITION[1]
        #槽中图标-------------------------------------------------------------------
        @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[0]+5
        @second_skill_icon.y = SECOND_HUD_POSITION[1]+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[r].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[0]+12
          @second_skill_number_sprite.y = SECOND_HUD_POSITION[1]+35
    end
       def create_third_skill
        #创建技能槽-----------------------------------------------------------------
        @third_skill = Sprite.new
        @third_skill.bitmap = Cache.system("XAS_Tool_Skill")
        @third_skill.x= THIRD_HUD_POSITION[0]
        @third_skill.y= THIRD_HUD_POSITION[1]
        #槽中图标-------------------------------------------------------------------
        @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[0]+5
        @third_skill_icon.y = THIRD_HUD_POSITION[1]+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[r].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[0]+12
          @third_skill_number_sprite.y = THIRD_HUD_POSITION[1]+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[0].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[0]
             end
             if ENABLE_SHIELD_HUD
                returntrueif@old_shield != @actor.equips[1]
             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[r].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[0] + NUMBER[0] - 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
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2026-4-23 07:42 , Processed in 0.069271 second(s), 53 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表