设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2066|回复: 2
打印 上一主题 下一主题

[已经过期] XAS的Party Hud发生disposed sprite

[复制链接]

Lv4.逐梦者

梦石
5
星屑
1828
在线时间
339 小时
注册时间
2014-4-1
帖子
270
跳转到指定楼层
1
发表于 2019-7-6 20:06:40 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

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

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

x
事件是那么设置的 之后就发生了这样子
附脚本:
RUBY 代码复制
  1. #==============================================================================
  2. # ■ +++ MOG - XAS PARTY HUD VX (v1.0) +++
  3. #==============================================================================
  4. # By Moghunter
  5. # [url]http://www.atelier-rgss.com[/url]
  6. #==============================================================================
  7. # 队友系统的设置
  8. #===============================================================================
  9. module MOG_PARTY_HUD
  10.   #Hud的位置.
  11.   HUD_POS = [250-10,400-340]
  12.   #LAYOUT的位置.
  13.   LAYOUT_POS = [200, 5]
  14.   #脸图的位置
  15.   FACE_POS = [202, 5+2]
  16.   # HP的位置
  17.   HP_POS = [235, 17]
  18.   #等级的位置
  19.   LEVEL_POS = [255 , 5]
  20.   # 0 - 从 右边到左边.
  21.   # 1 - 从 左边到右边.
  22.   # 2 - 从 上边到下边..
  23.   # 3 - 从 下边到上边..
  24.   LAYOUT_ARRANGE_TYPE = 3  
  25. # Z坐标,也就是画面高度.
  26.   HUD_PRIORITY_Z = 151
  27. end  
  28.  
  29. #===============================================================================
  30. # ■ Party Hud
  31. #===============================================================================
  32. class Party_Hud
  33. include MOG_PARTY_HUD
  34. #--------------------------------------------------------------------------
  35. # ● Initialize
  36. #--------------------------------------------------------------------------  
  37.   def initialize
  38.       @actor = $game_party.members[0]        
  39.       @members_size = $game_party.members.size      
  40.       return if $game_party.members.size <= 1
  41.       @ey = $game_party.members.size
  42.       @leader_id = $game_party.members[0].id
  43.       create_layout
  44.       create_face
  45.       create_hp
  46.       create_level
  47.   end
  48.  
  49. #--------------------------------------------------------------------------
  50. # ● Refresh
  51. #--------------------------------------------------------------------------   
  52.   def restart_hud
  53.       dispose
  54.       initialize
  55.   end
  56.  
  57. #--------------------------------------------------------------------------
  58. # ● create_layout
  59. #--------------------------------------------------------------------------   
  60.   def create_layout      
  61.       @layout_image = Cache.system("XAS_Party_Hud")
  62.       @spc = 10
  63.       case LAYOUT_ARRANGE_TYPE
  64.          when 0
  65.            @x_range = @layout_image.width + @spc
  66.            @y_range = 0
  67.            @w = (@layout_image.width * $game_party.members.size)
  68.            @h = @layout_image.height
  69.            @x_start = 0
  70.            @y_start = 0
  71.          when 1
  72.            @x_range = @layout_image.width + @spc
  73.            @y_range = 0         
  74.            @w = (@layout_image.width * $game_party.members.size)
  75.            @h = @layout_image.height
  76.            @x_start = @w - (@layout_image.width - (@spc * $game_party.members.size))
  77.            @y_start = 0           
  78.          when 2
  79.            @x_range = 0
  80.            @y_range = @layout_image.height + @spc     
  81.            @w = @layout_image.width
  82.            @h = (@layout_image.height * $game_party.members.size)
  83.            @x_start = 0
  84.            @y_start = 0
  85.          else  
  86.            @x_range = 0
  87.            @y_range = @layout_image.height + @spc     
  88.            @w = @layout_image.width
  89.            @h = (@layout_image.height * $game_party.members.size)
  90.            @x_start = 0
  91.            @y_start = @h - (@layout_image.height - (@spc * $game_party.members.size))                 
  92.       end
  93.       @layout_sprite = Sprite.new
  94.       @layout_sprite.bitmap = Bitmap.new(@w,@h)   
  95.       @layout_sprite.z =  HUD_PRIORITY_Z
  96.       refresh_layout
  97.       @layout_sprite.x = LAYOUT_POS[0] + HUD_POS[0] - @x_start
  98.       @layout_sprite.y = LAYOUT_POS[1] + HUD_POS[1] - @y_start
  99.   end
  100.  
  101. #--------------------------------------------------------------------------
  102. # ● Refresh Layout
  103. #--------------------------------------------------------------------------      
  104.   def refresh_layout
  105.       @layout_sprite.bitmap.clear
  106.       for i in 0...$game_party.members.size - 1
  107.          @layout_src_rect = Rect.new(0, 0, @layout_image.width , @layout_image.height)
  108.          @layout_sprite.bitmap.blt(@x_range * i,@y_range * i, @layout_image, @layout_src_rect)
  109.       end   
  110.   end  
  111.  
  112. #--------------------------------------------------------------------------
  113. # ● create_level
  114. #--------------------------------------------------------------------------   
  115. def create_level      
  116.       @level_image = Cache.system("XAS_Party_Number")
  117.       @level_sprite = Sprite.new
  118.       @level_sprite.bitmap = Bitmap.new(@w,@h)
  119.       @level_sprite.z = 3 + HUD_PRIORITY_Z   
  120.       @level_sprite.x = LEVEL_POS[0] + HUD_POS[0] - @x_start
  121.       @level_sprite.y = LEVEL_POS[1] + HUD_POS[1] - @y_start
  122.       @level_cw = @level_image.width / 10
  123.       @level_ch = @level_image.height  
  124.       refresh_level
  125.   end  
  126.  
  127. #--------------------------------------------------------------------------
  128. # ● refresh_level
  129. #--------------------------------------------------------------------------         
  130. def refresh_level
  131.       @level_sprite.bitmap.clear
  132.       index = 0
  133.       for i in $game_party.members  
  134.          next if i.id == @leader_id
  135.          level_text = i.level.to_s.split(//)
  136.          nx = @x_range * index
  137.          ny = @y_range * index
  138.          for r in 0..level_text.size - 1
  139.              level_abs = level_text[r].to_i
  140.              level_src_rect = Rect.new(@level_cw * level_abs, 0, @level_cw, @level_ch)
  141.              @level_sprite.bitmap.blt((@level_cw  *  r) + nx, ny , @level_image, level_src_rect)        
  142.          end
  143.          index += 1  
  144.       end   
  145. end  
  146.  
  147. #--------------------------------------------------------------------------
  148. # ● create_hp
  149. #--------------------------------------------------------------------------        
  150.   def create_hp
  151.       for i in $game_party.members
  152.           next if i.id == @leader_id
  153.           @old_hp = i.hp
  154.           @old_maxhp = i.mhp
  155.       end      
  156.       @hp_image = Cache.system("XAS_Party_Hp")
  157.       @hp_sprite = Sprite.new
  158.       @hp_sprite.bitmap = Bitmap.new(@w,@h)
  159.       refresh_hp
  160.       @hp_sprite.z = 2 + HUD_PRIORITY_Z   
  161.       @hp_sprite.x = HP_POS[0] + HUD_POS[0] - @x_start
  162.       @hp_sprite.y = HP_POS[1] + HUD_POS[1] - @y_start
  163.   end
  164.  
  165. #--------------------------------------------------------------------------
  166. # ● refresh_hp
  167. #--------------------------------------------------------------------------        
  168.   def refresh_hp
  169.       return if $game_party.members.size <= 1
  170.       @hp_sprite.bitmap.clear
  171.       index = 0
  172.       for i in $game_party.members  
  173.          next if i.id == @leader_id
  174.          hp_size = @hp_image.width * i.hp / i.mhp  
  175.          hp_src_rect = Rect.new(0, 0, hp_size , @hp_image.height)         
  176.          @hp_sprite.bitmap.blt(@x_range * index,@y_range * index, @hp_image, hp_src_rect)
  177.          index += 1
  178.        end   
  179.   end   
  180.  
  181. #--------------------------------------------------------------------------
  182. # ● create_face
  183. #--------------------------------------------------------------------------      
  184.   def create_face
  185.       @face_sprite = Sprite.new
  186.       @face_sprite.bitmap = Bitmap.new(@w,@h)   
  187.       @face_sprite.z = 1 + HUD_PRIORITY_Z   
  188.       @face_sprite.x = FACE_POS[0] + HUD_POS[0] - @x_start
  189.       @face_sprite.y = FACE_POS[1] + HUD_POS[1] - @y_start
  190.       refresh_face
  191.   end  
  192.  
  193. #--------------------------------------------------------------------------
  194. # ● refresh_face
  195. #--------------------------------------------------------------------------        
  196.   def refresh_face
  197.       @face_sprite.bitmap.clear
  198.       index = 0
  199.       for i in $game_party.members  
  200.          next if i.id == @leader_id
  201.          if @face_image != nil
  202.             @face_image.dispose
  203.          end  
  204.          file_name = "XAS_MFace" + i.id.to_s
  205.          unless RPG_FileTest.system_exist?(file_name)
  206.                 file_name = ""
  207.          end           
  208.          @face_image = Cache.system(file_name)  
  209.          if i.hp > 0
  210.             face_src_rect = Rect.new(0, 0, 24 , 24)
  211.          else
  212.             face_src_rect = Rect.new(24, 0, 24 , 24)
  213.          end  
  214.          @face_sprite.bitmap.blt(@x_range * index,@y_range * index, @face_image, face_src_rect)
  215.          index += 1
  216.          @face_image.dispose
  217.        end   
  218.   end
  219.  
  220. #--------------------------------------------------------------------------
  221. # ● Dispose
  222. #--------------------------------------------------------------------------   
  223.   def dispose  
  224.       return if @layout_sprite == nil
  225.       @layout_image.dispose
  226.       @layout_sprite.bitmap.dispose
  227.       @layout_sprite.dispose
  228.       @face_image.dispose
  229.       @face_sprite.bitmap.dispose
  230.       @face_sprite.dispose
  231.       @hp_image.dispose
  232.       @hp_sprite.bitmap.dispose
  233.       @hp_sprite.dispose
  234.       @level_image.dispose
  235.       @level_sprite.bitmap.dispose
  236.       @level_sprite.dispose   
  237.   end
  238.  
  239. #--------------------------------------------------------------------------
  240. # ● update
  241. #--------------------------------------------------------------------------      
  242.   def update
  243.       return if @layout_sprite == nil
  244.       update_visible
  245.       refresh_hud if can_refresh_hud?
  246.   end   
  247.  
  248. #--------------------------------------------------------------------------
  249. # ● Can Refresh Hud
  250. #--------------------------------------------------------------------------         
  251.   def can_refresh_hud?
  252.       for i in $game_party.members
  253.           next if i.id == @leader_id
  254.           return true if @old_hp != i.hp
  255.           return true if @old_maxhp != i.mhp
  256.       end  
  257.       return false
  258.   end
  259.  
  260. #--------------------------------------------------------------------------
  261. # ● Update Visible
  262. #--------------------------------------------------------------------------        
  263.   def update_visible
  264.       vis = $game_system.enable_hud
  265.       @layout_sprite.visible = vis
  266.       @face_sprite.visible = vis
  267.       @hp_sprite.visible = vis
  268.       @level_sprite.visible = vis
  269.   end
  270.  
  271. #--------------------------------------------------------------------------
  272. # ● Refresh_Hud
  273. #--------------------------------------------------------------------------      
  274.   def refresh_hud
  275.       return if @layout_sprite == nil
  276.       @leader_id = $game_party.members[0].id
  277.       refresh_hp
  278.       refresh_level
  279.       refresh_face
  280.   end   
  281.  
  282. end
  283.  
  284. #==============================================================================
  285. # ■ Spriteset_Map
  286. #==============================================================================
  287. class Spriteset_Map
  288.  
  289.   #--------------------------------------------------------------------------
  290.   # ● initialize  
  291.   #--------------------------------------------------------------------------
  292.   alias xas_party_hud_initialize initialize
  293.   def initialize  
  294.       @party_hud = Party_Hud.new
  295.       xas_party_hud_initialize
  296.   end
  297.  
  298.   #--------------------------------------------------------------------------
  299.   # ● Dispose
  300.   #--------------------------------------------------------------------------
  301.   alias xas_party_hud_dispose dispose
  302.   def dispose   
  303.       @party_hud.dispose
  304.       xas_party_hud_dispose
  305.   end
  306.  
  307.   #--------------------------------------------------------------------------
  308.   # ● update   
  309.   #--------------------------------------------------------------------------
  310.   alias xas_party_hud_update update
  311.   def update   
  312.       @party_hud.update
  313.       xas_party_hud_update
  314.   end
  315.  
  316.   #--------------------------------------------------------------------------
  317.   # ● Refresh Hud
  318.   #--------------------------------------------------------------------------  
  319.   alias xas_party_hud_refresh_hud refresh_hud
  320.   def refresh_hud
  321.       xas_party_hud_refresh_hud
  322.       @party_hud.restart_hud
  323.   end   
  324.  
  325. end
  326.  
  327. $mog_rgss2_xas_party_hud = true
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-16 19:07

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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