Help with a disposed bitmap error.

Discussion in 'RGSSx Script Support' started by kerbonklin, Aug 30, 2013.

Thread Status:
Not open for further replies.
    Tags:
  1. kerbonklin

    kerbonklin Hiatus King Veteran

    Messages:
    1,728
    Likes Received:
    281
    First Language:
    English
    Primarily Uses:
    RMMV
    So I updated to the newer version of MOG Combo Count of 8/12 and apparently it's giving me a disposed bitmap error upon entering battle. The error happens (upon entering the battle scene) but if I don't open my menu then it doesn't give me the error.

    [​IMG]

    Anyone may know a reason as to why this occurs? I wish I kept the older version cause that might have worked. When adding the newer version I noticed there were small changes to probably help performance.

    Mog Combo Count (Anything random in this was for my own custom reasons, like the add/remove states)

    #==============================================================================# +++ MOG - Combo Count (v1.5) +++#==============================================================================# By Moghunter # http://www.atelier-rgss.com/#==============================================================================# Apresenta a quantidade de acertos no alvo e o dano maximo.#==============================================================================# É necessário ter os arquivos imagens na pasta Graphics/Systems.# Combo_Damage.png # Combo_Hud.png# Combo_Number.png#==============================================================================#==============================================================================# ● Histórico (Version History)#==============================================================================# v 1.5 - Melhoria na codificação.# - Melhoria na performance.#==============================================================================module MOG_COMBO_COUNT #Ativar tempo para fazer combo. TIME_COUNT = true # Tempo para fazer um combo. (60 = 1s) COMBO_TIME = 240 # Cancelar a contagem de Combo caso o inimigo acertar o herói. ENEMY_CANCEL_COMBO = true # Posição geral das imagens. X Y COMBO_POSITION = [60,90] # Posição do número de HITS. X Y HIT_POSITION = [55,20] # Posição do número de dano. X Y TOTAL_POSITION = [130,-20] # Prioridade da HUD HUD_Z = 1end#===============================================================================# ■ Game_Temp#===============================================================================class Game_Temp attr_accessor :combo_hit attr_accessor :max_damage attr_accessor :combo_time attr_accessor :cache_combo_hit #-------------------------------------------------------------------------- # ● initialize #-------------------------------------------------------------------------- alias mog_combo_display_initialize initialize def initialize @combo_hit = 0 @max_damage = 0 @combo_time = 0 mog_combo_display_initialize cache_cbhit end #-------------------------------------------------------------------------- # ● Cache Cbhit #-------------------------------------------------------------------------- def cache_cbhit @cache_combo_hit = [] @cache_combo_hit.push(Cache.system("Combo_HUD")) @cache_combo_hit.push(Cache.system("Combo_damage")) @cache_combo_hit.push(Cache.system("Combo_Number")) end end #===============================================================================# ■ Game_Battler#===============================================================================class Game_Battler #-------------------------------------------------------------------------- # ● Item Apply #-------------------------------------------------------------------------- alias mog_combo_display_item_apply item_apply def item_apply(user, item) mog_combo_display_item_apply(user, item) unless @result.hit? $game_temp.combo_time = 0 $game_party.battle_members.each { |a| a.remove_state(108) } end end #-------------------------------------------------------------------------- # ● execute_damage #-------------------------------------------------------------------------- alias mog_combo_display_execute_damage execute_damage def execute_damage(user) mog_combo_display_execute_damage(user) if @result.hp_damage > 0 if user.is_a?(Game_Actor) $game_temp.combo_hit += 1 $game_temp.max_damage += @result.hp_damage $game_temp.combo_time = MOG_COMBO_COUNT::COMBO_TIME $game_party.battle_members.each { |a| a.add_state(108) } else $game_temp.combo_time = 0 if MOG_COMBO_COUNT::ENEMY_CANCEL_COMBO == true $game_party.battle_members.each { |a| a.remove_state(108) } end end endend#===============================================================================# Spriteset Battle#===============================================================================class Spriteset_Battle #-------------------------------------------------------------------------- # ● Initialize #-------------------------------------------------------------------------- alias mog_combo_initialize initialize def initialize create_cb_sprite mog_combo_initialize end #-------------------------------------------------------------------------- # ● create_cb_sprite #-------------------------------------------------------------------------- def create_cb_sprite @combo_sprite = Combo_Sprite_Hud.new end #-------------------------------------------------------------------------- # ● Dispose #-------------------------------------------------------------------------- alias mog_combo_dispose dispose def dispose mog_combo_dispose @combo_sprite.dispose end #-------------------------------------------------------------------------- # ● update #-------------------------------------------------------------------------- alias mog_combo_update update def update mog_combo_update update_combo_hit end #-------------------------------------------------------------------------- # ● Update Combo Hit #-------------------------------------------------------------------------- def update_combo_hit @combo_sprite.update if (animation? or effect?) @combo_sprite.combo_wait = true else @combo_sprite.combo_wait = false end end end #===============================================================================# ■ Combo_Sprite_Hud#===============================================================================class Combo_Sprite_Hud attr_accessor :combo_wait include MOG_COMBO_COUNT #--------------------------------------------------------------------------# ● Initialize#-------------------------------------------------------------------------- def initialize dispose @combo_wait = false $game_temp.combo_time = 0 $game_temp.combo_hit = 0 $game_temp.max_damage = 0 @combo_hit_old = 0 @animation_speed = 0 @pos_x = COMBO_POSITION[0] @pos_x_fix = 0 @pos_y = COMBO_POSITION[1] create_combo_sprite create_total_damage_sprite create_hud_sprite end #--------------------------------------------------------------------------# ● create_hud_sprite #--------------------------------------------------------------------------def create_hud_sprite @hud = Sprite.new @hud.bitmap = $game_temp.cache_combo_hit[0] @hud.z = HUD_Z @hud.x = COMBO_POSITION[0] @hud.y = COMBO_POSITION[1] @hud.opacity = 250 @hud.visible = falseend #--------------------------------------------------------------------------# ● create_total_damage_sprite#--------------------------------------------------------------------------def create_total_damage_sprite @total_image = $game_temp.cache_combo_hit[1] @total = Sprite.new @total.bitmap = Bitmap.new(@combo_image.width,@combo_image.height) @total_im_cw = @total_image.width / 10 @total_im_ch = @total_image.height @total.z = HUD_Z + 1 @total_orig_x = COMBO_POSITION[0] + TOTAL_POSITION[0] @total_orig_y = COMBO_POSITION[1] + TOTAL_POSITION[1] @total.x = @total_orig_x @total.y = @total_orig_y @total.zoom_x = 1.00 @total.zoom_y = 1.00 @total.opacity = 250 @total.visible = falseend #--------------------------------------------------------------------------# ● create_combo_number #-------------------------------------------------------------------------- def create_combo_sprite @combo_image = $game_temp.cache_combo_hit[2] @combo = Sprite.new @combo.bitmap = Bitmap.new(@combo_image.width,@combo_image.height) @combo_im_cw = @combo_image.width / 10 @combo_im_ch = @combo_image.height @combo.ox = @combo_im_cw / 2 @combo.oy = @combo_im_ch / 2 @combo.z = HUD_Z + 2 @combo_orig_x = @combo.ox + COMBO_POSITION[0] + HIT_POSITION[0] @combo_orig_y = @combo.oy + COMBO_POSITION[1] + HIT_POSITION[1] @combo.zoom_x = 1.00 @combo.zoom_y = 1.00 @combo.opacity = 250 @combo.visible = falseend #--------------------------------------------------------------------------# ● Dispose#-------------------------------------------------------------------------- def dispose return if @hud == nil $game_party.battle_members.each { |a| a.remove_state(108) } @hud.dispose @hud = nil @combo.bitmap.dispose @combo.dispose @total.bitmap.dispose @total.dispose end#--------------------------------------------------------------------------# ● Refresh#-------------------------------------------------------------------------- def refresh @combo_hit_old = $game_temp.combo_hit @combo.bitmap.clear @total.bitmap.clear @combo_number_text = $game_temp.combo_hit.abs.to_s.split(//) for r in 0..@combo_number_text.size - 1 @combo_number_abs = @combo_number_text[r].to_i @combo_src_rect = Rect.new(@combo_im_cw * @combo_number_abs, 0, @combo_im_cw, @combo_im_ch) @combo.bitmap.blt(@combo_im_cw * r, 0, @combo_image, @combo_src_rect) end @total_number_text = $game_temp.max_damage.abs.to_s.split(//) for r in 0..@total_number_text.size - 1 @total_number_abs = @total_number_text[r].to_i @total_src_rect = Rect.new(@total_im_cw * @total_number_abs, 0, @total_im_cw, @total_im_ch) @total.bitmap.blt(@total_im_cw * r, 20, @total_image, @total_src_rect) end #Combo Position @pos_x_fix = (@combo_im_cw / 2 * @combo_number_text.size) @combo.x = @combo_orig_x - @pos_x_fix @combo.y = @combo_orig_y @combo.zoom_x = 2 @combo.zoom_y = 2 @combo.opacity = 70 @combo.visible = true #Total Position @total.x = @total_orig_x + 20 @total.y = @total_orig_y @total.opacity = 100 @total.visible = true #Hud Position @hud.x = COMBO_POSITION[0] @hud.y = COMBO_POSITION[1] @hud.opacity = 255 @hud.visible = true end #--------------------------------------------------------------------------# ● Slide Update#-------------------------------------------------------------------------- def slide_update return if !@combo.visible if $game_temp.combo_time > 0 and @combo_wait == false if $mog_rgss3_active_chain_commands != nil and $game_temp.chain_actions[3] else $game_temp.combo_time -= 1 if TIME_COUNT == true end end if $game_temp.combo_time > 0 and $game_temp.combo_hit > 0 #Total Damage if @total.x > @total_orig_x @total.x -= 1 @total.opacity += 8 else @total.x = @total_orig_x @total.opacity = 255 end #Combo if @combo.zoom_x > 1.00 @combo.zoom_x -= 0.05 @combo.zoom_y -= 0.05 @combo.opacity += 8 else @combo.zoom_x = 1 @combo.zoom_y = 1 @combo.opacity = 255 @combo.x = @combo_orig_x - @pos_x_fix @combo.y = @combo_orig_y end elsif $game_temp.combo_time == 0 and @combo.visible $game_party.battle_members.each { |a| a.remove_state(108) } @combo.x -= 5 @combo.opacity -= 10 @total.x -= 3 @total.opacity -= 10 @hud.x += 5 @hud.opacity -= 10 $game_temp.combo_hit = 0 @combo_hit_old = $game_temp.combo_hit $game_temp.max_damage = 0 if @combo.opacity <= 0 @combo.visible = false @total.visible = false @hud.visible = false end end end#--------------------------------------------------------------------------# ● Cancel#-------------------------------------------------------------------------- def cancel $game_temp.combo_hit = 0 $game_temp.max_damage = 0 $game_temp.combo_time = 0 @combo_hit_old = $game_temp.combo_hit $game_party.battle_members.each { |a| a.remove_state(108) } end #--------------------------------------------------------------------------# ● Clear#-------------------------------------------------------------------------- def clear $game_temp.combo_time = 0 $game_party.battle_members.each { |a| a.remove_state(108) } end #--------------------------------------------------------------------------# ● Update#-------------------------------------------------------------------------- def update return if @hud == nil refresh if $game_temp.combo_hit != @combo_hit_old slide_update end end#==============================================================================# ■ Spriteset Battle#==============================================================================class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # ● Dispose #-------------------------------------------------------------------------- alias mog_combo_count_pre_terminate pre_terminate def pre_terminate $game_temp.combo_time = 0 $game_party.battle_members.each { |a| a.remove_state(108) } mog_combo_count_pre_terminate end end $mog_rgss3_combo_count = true
    Edit: I think it may be something else causing the error that's conflicting. Maybe something dealing with Yanfly JP? I noticed it happens as long as I enter my menu once, which I have it display my JP in a custom manner. But that's just a simple basic_actor_info alias.

    Edit 2: I managed to find the previous versions of MOG Combo Count and MOG Enemy HP Bars and MOG Boss HP Bars (which were also affected by disposed bitmap) and replaced them with the new updated ones, and the issue does not occur. Something tells me the newer versions of these two scripts are bugged.
     
    Last edited by a moderator: Aug 30, 2013
    #1
  2. Shaz

    Shaz Veteran Veteran

    Messages:
    37,354
    Likes Received:
    11,146
    Location:
    Australia
    First Language:
    English
    Primarily Uses:
    RMMV
    So is this resolved? Will the older version meet your needs, or do you need the latest one fixed?
     
    #2
  3. kerbonklin

    kerbonklin Hiatus King Veteran

    Messages:
    1,728
    Likes Received:
    281
    First Language:
    English
    Primarily Uses:
    RMMV
    Well I don't really see any feature-differences between the old and newer versions, so I guess it's fine. I don't think i'd need any possible slight performance enhancement for my project. I think someone in the future might run into trouble with this though.

    This can be closed.
     
    #3
  4. Shaz

    Shaz Veteran Veteran

    Messages:
    37,354
    Likes Received:
    11,146
    Location:
    Australia
    First Language:
    English
    Primarily Uses:
    RMMV
    This thread is being closed, due to being solved. If for some reason you would like this thread re-opened, please report this post and leave a message why. Thank you.
     
    #4
Thread Status:
Not open for further replies.

Share This Page