Confira o Videos Épicos #45!
5 Respostas   231 Visualizações
0 Membros e 1 Visitante estão vendo este tópico.
module ABS_Config Default_Animation = 1 Opacity_Burn = 10 Enemy_Recover = 60 Attack_Key = :Y Player_Recover = 40endclass Game_Map attr_accessor :enemies attr_accessor :damage_sprites alias abs_setup setup def setup(map_id) @enemies.nil? ? @enemies = [] : @enemies.clear abs_setup(map_id) endendclass ABS_Enemy include ABS_Config attr_accessor :hp attr_accessor :attack attr_accessor :defense attr_reader :name attr_reader :animation def initialize(id) enemy = Game_Enemy.new(0,id) @name = enemy.name note = enemy.enemy.note if note.include?("Animation=") aid = note.sub("Animation=","") @animation = aid.to_i else @animation = Default_Animation end @hp = enemy.mhp @attack = enemy.atk @defense = enemy.def endendclass Game_Event < Game_Character attr_reader :enemy alias abs_setup_page_settings setup_page_settings alias abs_initialize initialize alias abs_update update alias abs_start start def initialize(map_id, event) @enemy = nil @recover = 0 abs_initialize(map_id, event) end def setup_page_settings abs_setup_page_settings check_enemy end def check_enemy unless @enemy.nil? @enemy = nil $game_map.enemies.delete(self) if $game_map.enemies.include?(self) end return if @list.nil? for command in @list next unless command.code == 108 or command.code == 408 if command.parameters[0].include?("cmd:enemy=") id = command.parameters[0].sub("cmd:enemy=","") @enemy = ABS_Enemy.new(id.to_i) @trigger = 2 $game_map.enemies.push(self) print "#{@enemy.name} criado!\n" end end end def damage_enemy(value) jump(0,0) value -= @enemy.defense value = 0 if value < 0 $game_map.damage_sprites.push(Damage_Sprite.new(self,value)) @enemy.hp -= value if @enemy.hp <= 0 $game_map.enemies.delete(self) RPG::SE.new("Collapse1", 80).play end end def update if enemy != nil @recover -= 1 if @recover > 0 update_kill if @enemy.hp <= 0 end abs_update end def update_kill if @opacity > 0 @opacity -= ABS_Config::Opacity_Burn else @character_name = "" @opacity = 255 @priority_type = 0 @trigger = 0 @enemy = nil end end def start @enemy.nil? ? abs_start : attack end def attack return if @enemy.hp <= 0 or @recover > 0 @recover = ABS_Config::Enemy_Recover $game_player.animation_id = @enemy.animation $game_player.damage_hero(@enemy.attack) endendclass Game_Player < Game_Character alias abs_initialize initialize alias abs_update update def initialize @recover = 0 @kill_player = false abs_initialize end def update @recover -= 1 if @recover > 0 update_attack if @recover > 0 and Input.trigger?(ABS_Config::Attack_Key) update_kill if @kill_player abs_update end def update_attack return if @kill_player for enemy in $game_map.enemies ax = @x - enemy.x ay = @y - enemy.y case @direction when 2 attack_enemy(enemy) if ax == 0 and ay == -1 when 4 attack_enemy(enemy) if ay == 0 and ax == 1 when 6 attack_enemy(enemy) if ay == 0 and ax == -1 when 8 attack_enemy(enemy) if ax == 0 and ay == 1 end end end def attack_enemy(event) hero = $game_party.members[0] event.damage_enemy(hero.atk) event.animation_id = hero.weapons[0].animation_id @recover = ABS_Config::Player_Recover end def damage_hero(value) return if @kill_player jump(0,0) hero = $game_party.members[0] value -= hero.def value = 0 if value < 0 $game_map.damage_sprites.push(Damage_Sprite.new(self,value)) if value > hero.hp hero.hp = 1 @kill_player = true RPG::SE.new("Collapse1",80).play else hero.hp -= value end end def update_kill if @opacity > 0 @opacity -= ABS_Config::Opacity_Burn else SceneManager.goto(Scene_Gameover) end endendclass Spriteset_Map alias abs_initialize initialize alias abs_update update alias abs_dispose dispose def initialize $game_map.damage_sprites = [] abs initialize end def update abs_update trash = [] for sprite in $game_map.damage_sprites sprite.update trash.push(sprite) if sprite.disposed? end for item in trash $game_map.damage_sprites.delete(item) end trash.clear end def dispose abs_dispose for sprite in $game_map.damage_sprites sprite.bitmap.dispose sprite.dispose end $game_map.damage_sprites.clear endendclass Damage_Sprite < Sprite def initialize(target,value) super(nil) @target = target self.bitmap = Bitmap.new(100,20) self.bitmap.draw_text(0,0,100,20,value,1) self.ox = 50 self.x = target.screen_x self.y = target.screen_y - 40 self.z = 999 @timer = 20 end def update self.x = target.screen_x self.y = target.screen_y - 40 if @timer > 0 @timer -= 1 self.zoom_x += 0.01 self.zoom_y += 0.01 else self.opacity > 0 ? self.opacity -= 15 : dispose end end def dispose self.bitmap.dispose super endend
Movi o tópico para área certa (Suporte).Esse erro aconteceu comigo algumas vezes e a causa geralmente era a mesma. Pode ter script repetido ou trechos do código repetido, da uma olhada ai pra ver se é isso.
Quando da erro geralmente quando tu abre a tela de script e ele vai estar na linha do erro. Outra opção é criar um novo Projeto e ir copiando script por script e ir testando a cada script novo pra saber qual deles está dando erro.
Na minha experiência com esse erro, ele ocorre quando você chama uma terceira cena (Scene) sem disposar/destruir uma primeira. Tipo, você está na cena de título e chama a cena do mapa, até aí ok afinal é até o que o comando novo jogo faz. Porém, ao chamar o menu você estará chamando a cena de menu e nesse momento a cena de título já têm de estar disposada/destruída.Creio que isso é uma ferramenta de segurança para que não sejam chamadas cenas demais, pois assim elas ficariam se acumulando, tomando RAM e processamento da máquina, até por fim travar ou crashar. Não tenho certeza, mas acho que isso já aconteceu comigo com loops também, quando chamei muitos um dentro do outro.Geralmente eu identifico onde ele está rapidamente em meus códigos, comumente por eu esquecer de colocar algo, agora para um leigo encontrar a causa... não sei como aconselhar senão a reconstrução do código, claro, testando constantemente, para que na hora de encontrá-lo, saiba onde está e possa avaliar o que está causando-o.