查看: 2761|回复: 2

[原创发布] 【XAS】xas多技能脚本

[复制链接]
梦石
0
星屑
128
在线时间
12 小时
注册时间
2019-2-10
回帖
2
发表于 2020-1-31 02:48:14 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

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


        用了这脚本可能快捷菜单就没用了
  我想防御和冲刺可以放在一起做出一个专属技能的效果,并空出一个按钮,可用于存放三技能或二道具,我这里没有写,需要你自行去定义了。
  以下是核心脚本:
[pre lang="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位置[x,y]
   SECOND_HUD_POSITION = [205,365]
   #是否启用3技能槽HUD
   THIRD_SKILL_HUD = true
   #3技能HUD位置[x,y]
   THIRD_HUD_POSITION = [237,365]
  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?
      return false if $game_party.in_battle
      skill = @data[index]   
      if skill != nil and ( skill.note =~ /<Duration = (\d+)>/ or skill.note =~ /<存在时间 = (\d+)>/)
        if $djnxx==3
          @技能检测 = skill.id
          if can_skill_identical?
            msgbox("不能装备相同的技能")
            return true
          else
            @i = $game_party.battle_members[0].id
            @actor.skill_id3 = skill.id
            Sound.play_equip
            return true
           end
         end
        if $djnxx==2
          @技能检测 = skill.id
          if can_skill_identical?
            msgbox("不能装备相同的技能")
            return true   
          else
            i = $game_party.battle_members[0].id
             @actor.skill_id2 = skill.id
             Sound.play_equip
            return true  
           end
        end
        if $djnxx==1
          @技能检测 = skill.id
          if can_skill_identical?
            msgbox("不能装备相同的技能")
            return true   
          else
            @actor.skill_id = skill.id
            Sound.play_equip
         return true
           end
         end
          return false
       end
     end   
    def can_skill_identical?
      return false if ALLOW_SAME_SKILL
      if $djnxx==3
        return true if @技能检测 == @actor.skill_id or @技能检测 == @actor.skill_id2
    end
       if $djnxx==2
        return true if @技能检测 == @actor.skill_id or @技能检测 ==@actor.skill_id3
      end
       if $djnxx==1
        return true if @技能检测 ==@actor.skill_id2 or @技能检测 ==@actor.skill_id3
      end
      end
end
class Window_much_skill < Window_Command
     include XAS_BUTTON
  def initialize
    super(150, 100)
  end
  def window_width
    return 240
  end
  def window_height
    if CSKILL_ENABLE
      return 100
    else
      return 80
      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
def  update_2skill_button
    if Input.trigger?(BSKILL_BUTTON)
         type = 2
         return unless can_use_skill_command?
         return if execute_combo?(type)
         check_equipped_action(type)
         action_id = self.battler.skill_id2
         return if action_id == 0
         return if state_seal_command?(type)         
         self.shoot(action_id)
      end   
       if Input.trigger?(CSKILL_BUTTON)
         type = 2
         return unless can_use_skill_command?
         return if execute_combo?(type)
         check_equipped_action(type)
         action_id = self.battler.skill_id3
         return if action_id == 0
         return if state_seal_command?(type)         
         self.shoot(action_id)
      end   
   end
end
[/pre]



以下是HUD部分,这东西直接粘贴在原脚本HUD插件页上
   -> Tool HUD

,把原脚本给覆盖掉,试了好多方法,就是没法像上面那样定义







[pre lang="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位置[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]
      return if @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
     return if @shield == nil
     if @shield.note =~ /<Action ID = (\d+)>/
         action_id =  $1.to_i   
         skill = $data_skills[action_id]
         if skill != nil
            if skill.note =~ /<Item Cost = (\d+)>/
               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  
     return if @s_item == 0
     cost_split = @shield_number.to_s.split(//)
     for r in 0..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
     return if @weapon == nil
     if @weapon.note =~ /<Action ID = (\d+)>/
         action_id =  $1.to_i   
         skill = $data_skills[action_id]
         if skill != nil
            if skill.note =~ /<Item Cost = (\d+)>/
               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  
     return if @w_item == 0
     cost_split = @weapon_number.to_s.split(//)
     for r in 0..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 in 0..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 in 0..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 in 0..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 in 0..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
      return if @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
      return if @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?
      return true if @weapon_number != $game_party.item_number(@w_item)  
      return false
  end  

#--------------------------------------------------------------------------
# ● Can Refresh Shield Number
#--------------------------------------------------------------------------        
  def can_refreh_shield_number?
      return true if @shield_number != $game_party.item_number(@s_item)  
      return false
  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
            return true if @old_skill != @actor.skill_id
          end
         if ENABLE_ITEM_HUD
            return true if @old_item != @actor.item_id
         end
         if ENABLE_WEAPON_HUD
            return true if @old_weapon != @actor.equips[0]
         end
         if ENABLE_SHIELD_HUD
            return true if @old_shield != @actor.equips[1]
         end      
       end
        
      
      return false
  end  
   
#--------------------------------------------------------------------------
# ● Can Refresh Item Number
#--------------------------------------------------------------------------        
  def can_refresh_item_number?
      return true if @item_number != $game_party.item_number(@item)      
      return false
  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 in 0..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 = 1 if @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 = 1 if @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_update
  #--------------------------------------------------------------------------
  def gold_number_update  
      @gold_number_sprite.bitmap.clear
      @gold_number_text = @gold.abs.to_s.split(//)
      for r in 0..@gold_number_text.size - 1
          @gold_number_abs = @gold_number_text[r].to_i
          gold_src_rect = Rect.new(@number_cw * @gold_number_abs, @number_ch * 2, @number_cw, @number_ch)
          @gold_number_sprite.bitmap.blt(@number_cw  *  r, 0, @number_image, gold_src_rect)        
      end   
      @gold_refresh = false if @gold == $game_party.gold   
    end  
  #--------------------------------------------------------------------------
  # ● 自定义的刷新方法
  #--------------------------------------------------------------------------

  def wm_Refresh_method?
    if @bskill != nil
      if SECOND_SKILL_HUD
        return true if @old_second_skill != @actor.skill_id2
        end
      end
      if @cskill !=nil and THIRD_SKILL_HUD
        return true if @old_third_skill !=  @actor.skill_id3
        end
    end

end

#==============================================================================
# ■ Spriteset_Map
#==============================================================================
class Spriteset_Map
  
  #--------------------------------------------------------------------------
  # ● initialize  
  #--------------------------------------------------------------------------
  alias mog_tool_hud_initialize initialize
  def initialize  
      @toolhud = Tool_Hud.new
      mog_tool_hud_initialize
  end
  
  #--------------------------------------------------------------------------
  # ● Dispose
  #--------------------------------------------------------------------------
  alias mog_tool_hud_dispose dispose
  def dispose   
      @toolhud.dispose
      mog_tool_hud_dispose
  end
  
  #--------------------------------------------------------------------------
  # ● update   
  #--------------------------------------------------------------------------
  alias mog_tool_hud_update update
  def update   
      @toolhud.update
      mog_tool_hud_update
  end

  #--------------------------------------------------------------------------
  # ● Refresh Hud
  #--------------------------------------------------------------------------  
  alias mog_tool_hud_refresh_hud refresh_hud
  def refresh_hud
      mog_tool_hud_refresh_hud
      @toolhud.refresh
  end   
  
end   

$mog_rgss3_xas_tool_hud = true
[/pre]



Data.zip

318.69 KB, 下载次数: 63

评分

参与人数 2赞 +2 收起 理由
kunikai + 1 精品文章
百里_飞柳 + 1 精品文章

查看全部评分

梦石
0
星屑
2590
在线时间
452 小时
注册时间
2019-6-22
回帖
68
发表于 2020-1-31 17:15:16 | 显示全部楼层
本帖最后由 kunikai 于 2020-1-31 17:18 编辑


这可真是……
非常值得赞赏啊。

…….png
一介凡人。对大多数事情都有心无力的凡人。
回复

使用道具 举报

梦石
0
星屑
302
在线时间
126 小时
注册时间
2010-7-10
回帖
39
发表于 2026-4-12 19:50:10 | 显示全部楼层
这个怎么弄怎么下载了打不开脚本呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部