O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

Lune Ultimate Anti-Lag

Iniciado por Raizen, 22/02/2013 às 14:43

22/02/2013 às 14:43 Última edição: 22/02/2013 às 17:54 por Raizen
Lune Ultimate Anti-Lag

Compativel com: RMVXAce
Compatibilidade :bom
Facilidade de uso: fácil
Lag gerado: nulo
[box class=titlebg]
Condições de Uso
[/box]
  Pode ser modificado, e divulgado, mas mantenha os créditos a mim obrigado.

[box class=titlebg]
Para que serve o script
[/box]

  Esse é o último script em relação a lag que faço, e é o mais eficiente, e diferente de todos os anti-lags que já tiveram experiência sobre. NÃO utilize outro anti-lag junto com esse, pode aumentar o lag do que diminuir.
Ele é diferente dos outros scripts de anti-lag, não tem bugs, e conta com várias funções trabalhando juntos para reduzir o lag.

Propriedades:
  • Não tem o bug clássico dos anti-lags de quando relocar um evento o gráfico ficar travado na tela.
  • Contém um sistema inteligente de FPS, que considerá a velocidade do jogador, e não do maker, logo ele se adapta a computadores mais rápidos e mais lerdos.
  • Código limpo
  • Ignora os eventos não comentados, basta utilizar o comentário :update: para sempre atualizarem.
  • Possibilita mudar o script para desempenho ou qualidade, dependendo da preferência do maker.
  • Aumenta a prioridade do RPG Maker em relação a outros programas ativos.

    Se mesmo assim enfrentar problemas com lag, terá que rever todos scripts/sistemas que está usando u_u, ele não faz milagres ^^.

    [box class=titlebg]
    Script.
    [/box]

    #=======================================================
    #         Lune Ultimate Anti-Lag
    # Autor: Raizen
    # Compativel com: RMVXAce
    # Comunidade: [url=http://www.centrorpg.com]www.centrorpg.com[/url]
    # O script permite um pulo de frames na atualização de gráficos, 
    # muito útil para jogos que tem uma programação pesada, e 
    # atualização de gráficos, funcionando com um anti-lag.
    # Detalhe: anti-lags são compátiveis com esse script.
    #========================================================
    
    #Para atualizar um programa constantemente, coloque um comentário
    #no primeiro comando daquele evento escrito :update:
    
    module Anti_conf
    #==============================================================================
    # ** Configurações
    #------------------------------------------------------------------------------
    #  Configure o que for necessário para um maior desempenho.
    #==============================================================================
    # Escolha como o Frame_Skip irá agir.
    # <=====Qualidade============================Desempenho=====>
    # 1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 20
    # Padrão = 10
    Fr = 10
    
    # Configure a taxa de FPS (padrão = 60)
    Fps = 60
    
    # Quantidade de frames que o analizador de FPS irá levar, 
    # Quanto menor o número mais rápido o script funcionará, porém
    # será menos preciso.
    Time = 60
    
    end
    =begin
    
    
    
    
    Funções desse Anti-Lag
    
    * Bug comum de posição de evento corrigido
    * Frame Skip inteligente
    * atualiza apenas o que é necessário
    * ajuda inclusive outros scripts visuais a reduzir o lag
    * Ele muda o seu comportamento de acordo com as necessidades de cada jogador
    * Aumenta a prioridade do RPG Maker diante de outros programas
    =end
    
    #=================================================================#
    #====================  Alias methods =============================#
    # command_203          => Game_Interpreter
    # start                => Scene_Map
    # update               => Scene_Map
    # perform_transfer     => Scene_Map
    #=================================================================#
    #====================  Rewrite methods ===========================#
    # update_events        => Game_Map
    # update_one_event     => Spriteset_Map
    #=================================================================#
    #========================  New methods ===========================#
    # need_to_update?      => Game_Event
    # near_the_screen?     => Sprite_Character
    # call_position_event  => Scene_Map
    # skip_calculate       => Scene_Map
    # update_one_event     => Spriteset_Map
    #=================================================================#
    #=================================================================#
    
    #==============================================================================
    #============================  Início do Script!  =============================
    #==============================================================================
    #==============================================================================
    # ** Scene_Map
    #------------------------------------------------------------------------------
    #  Esta classe executa o processamento da tela de mapa.
    #==============================================================================
    
    class Scene_Map < Scene_Base
    alias lune_skip_start start
    alias lune_skip_update update
    alias lune_perform perform_transfer
      #--------------------------------------------------------------------------
      # * Inicialização do processo
      #--------------------------------------------------------------------------
      def start
        Graphics.frame_rate = Anti_conf::Fps
        @update_skip = false
        @count_up = 0
        lune_skip_start
      end
      #--------------------------------------------------------------------------
      # * Execução da transferência
      #--------------------------------------------------------------------------
      def perform_transfer
        $get_new_ids = Array.new
        Graphics.frame_rate = Anti_conf::Fps
        lune_perform
        @count_up = 0
        @update_skip = false
      end
      #--------------------------------------------------------------------------
      # * Atualização da tela
      #--------------------------------------------------------------------------
      def update
        @update_skip ? lune_skip_update : skip_calculate
      end
      #--------------------------------------------------------------------------
      # * Atualização de um personagem especifico
      #--------------------------------------------------------------------------
      def call_position_event(id)
        @spriteset.update_one_event(id)
      end
      #--------------------------------------------------------------------------
      # * Calcula o tempo necessário para rodar o update do Scene_Map
      #--------------------------------------------------------------------------  
      def skip_calculate
        @count_up += 1
        return unless @count_up >= Anti_conf::Time
        auto_skip = Time.now
        lune_skip_update
        old_skip = Time.now
        get_skip = old_skip - auto_skip
        Graphics.frame_rate -= (get_skip * Graphics.frame_rate * 2 * Anti_conf::Fr - 1).to_i
        @update_skip = true
      end
    end
    
    
    #==============================================================================
    # ** Scene_Base
    #------------------------------------------------------------------------------
    #  Esta é a superclasse de todas as cenas do jogo.
    #==============================================================================
    class Scene_Base
    alias skipper_main main
      #--------------------------------------------------------------------------
      # * Processamento principal
      #--------------------------------------------------------------------------
      def main
        @fr_cont = 0
        skipper_main
      end
      #--------------------------------------------------------------------------
      # * Execução da transição
      #--------------------------------------------------------------------------
      def perform_transition
        Graphics.transition(transition_speed * Graphics.frame_rate / 60)
      end
      #--------------------------------------------------------------------------
      # * Atualização da tela (básico)
      #--------------------------------------------------------------------------
      def update_basic
        if @fr_cont >= 60
          Graphics.update       
          @fr_cont -= 60
        end
        @fr_cont += Graphics.frame_rate
        update_all_windows
        Input.update
      end
    end
    
    #==============================================================================
    # ** Aumento da prioridade do rpg maker
    #------------------------------------------------------------------------------
    Lune_high = Win32API.new("kernel32", "SetPriorityClass", "pi", "i")
    Lune_high.call(-1, 0x90)
    #==============================================================================
    
    #==============================================================================
    # ** Game_Event
    #------------------------------------------------------------------------------
    #  Esta classe gerencia os eventos. Ela controla funções incluindo a mudança
    # de páginas de event por condições determinadas, e processos paralelos.
    # Esta classe é usada internamente pela classe Game_Map. 
    #==============================================================================
    
    class Game_Event < Game_Character
      #--------------------------------------------------------------------------
      # * necessário atualizar?
      #--------------------------------------------------------------------------
      def need_to_update?
        ax = $game_map.adjust_x(@real_x) - 8
        ay = $game_map.adjust_y(@real_y) - 6
        ax.between?(-9, 9) && ay.between?(-7, 7) || @list[0].parameters.include?(':update:')
      end
    end
    
    #==============================================================================
    # ** Sprite_Character
    #------------------------------------------------------------------------------
    #  Este sprite é usado para mostrar personagens. Ele observa uma instância
    # da classe Game_Character e automaticamente muda as condições do sprite.
    #==============================================================================
    
    class Sprite_Character < Sprite_Base
      #--------------------------------------------------------------------------
      # * Evento próximo a tela?
      #--------------------------------------------------------------------------
      def near_the_screen?
        ax = $game_map.adjust_x(@character.x) - 8
        ay = $game_map.adjust_y(@character.y) - 6
        ax.between?(-11, 11) && ay.between?(-8, 8)
      end
    end
    #==============================================================================
    # ** Game_Event
    #------------------------------------------------------------------------------
    #  Esta classe gerencia os eventos. Ela controla funções incluindo a mudança
    # de páginas de event por condições determinadas, e processos paralelos.
    # Esta classe é usada internamente pela classe Game_Map. 
    #==============================================================================
    
    class Game_Event < Game_Character
    alias lune_ant_initialize initialize
      #--------------------------------------------------------------------------
      # * Inicialização do objeto
      #     event : RPG::Event
      #--------------------------------------------------------------------------
      def initialize(*args, &block)
        lune_ant_initialize(*args, &block)
        $get_new_ids.push(@event.id)
      end
    end
    
    #==============================================================================
    # ** Game_Interpreter
    #------------------------------------------------------------------------------
    #  Um interpretador para executar os comandos de evento. Esta classe é usada
    # internamente pelas classes Game_Map, Game_Troop e Game_Event.
    #==============================================================================
    
    class Game_Interpreter
    alias lune_lag_command_203 command_203
      #--------------------------------------------------------------------------
      # Definir posição do evento
      #--------------------------------------------------------------------------
      def command_203
        lune_lag_command_203
        SceneManager.scene.call_position_event($get_new_ids.index(@event_id))
      end
    end
    #==============================================================================
    # ** Game_Map
    #------------------------------------------------------------------------------
    #  Esta classe gerencia o mapa. Inclui funções de rolagem e definição de 
    # passagens. A instância desta classe é referenciada por $game_map.
    #==============================================================================
    
    class Game_Map
      #--------------------------------------------------------------------------
      # * Atualização dos comandos dos eventos
      #--------------------------------------------------------------------------
      def update_events
        @events.each_value {|event| event.update if event.need_to_update?}
        @common_events.each {|event| event.update}
      end
    end
    
    
    $get_new_ids = Array.new
    #==============================================================================
    # ** Spriteset_Map
    #------------------------------------------------------------------------------
    #  Esta classe reune os sprites da tela de mapa e tilesets. Esta classe é
    # usada internamente pela classe Scene_Map. 
    #==============================================================================
    class Spriteset_Map
      #--------------------------------------------------------------------------
      # * Atualização dos personagens
      #--------------------------------------------------------------------------
      def update_characters
        refresh_characters if @map_id != $game_map.map_id
        @character_sprites.each {|sprite| sprite.update if sprite.near_the_screen? }
      end
      #--------------------------------------------------------------------------
      # * Atualização de algum personagem remoto
      #--------------------------------------------------------------------------
      def update_one_event(id)
        @character_sprites[id].update
      end
    end
    


    [box class=titlebg]
    Imagens
    [/box]

    Não perceptível por imagens

    [box class=titlebg]
    Download
    [/box]

    Não necessário

    [box class=titlebg]
    Créditos e Avisos
    [/box]

    Raizen

Citação de: Raizen online 22/02/2013 às 14:43
[...] não tem bugs, [...]

Ui... que segurança hein...  :seei:



Enfim, cara, acho que agora sim vou conseguir utilizar um anti-lag,
depois de décadas lutando para encontrar um que me servisse.
E pelo que li, você deu um jeitinho naquele probleminha lá que eu
tive né... ? De as minhas árvores se "prenderem" na tela...  :rick9:
Depois quero saber como chegou à essa façanha...

E bacana que conseguiu juntar ambas as formas de reduzir o lag,
dessa forma não se limita só à quantidade de eventos. Isso
impressiona bem.

No mais, nada mais do que mais um elogio, mano. Excelente trabalho
novamente e... mais um script dos seus que surrupio. Assim que
possível vou tentar implementá-lo la no meu projeto, vamos ver se
a coisa é boa mesmo...
  :ok:

Citação de: King Gerar online 26/02/2013 às 08:01
Citação de: Raizen online 22/02/2013 às 14:43
[...] não tem bugs, [...]

Ui... que segurança hein...  :seei:
90% dos scripts meus bugam hsuHASU, por isso tenho que passar segurança u__u.
Eu não sei esse bug hsuAHSU, porque não sei como ele acontece, aah... wait na verdade eu sei kk, tenho que colocar uma parte no script para configurar os limites  :será: , esse atual vai acontecer a mesma coisa.

23/03/2014 às 16:06 #3 Última edição: 23/03/2014 às 16:09 por katumblo
raizen tu é um GENIO ._. uns eventos meus bugavam por apenas lag, quando coloquei esse scrip voltaram a funcionar perfeitamente *U*

Só uma coisa raizen ...

Quando coloco uma variável para calcular a posição X e outra para calcular a posição Y do personagem
e +2 para calcular a posição X e Y de um tal evento e coloco uma condição caso os 2 estejam no mesmo lugar, ocorrer alguma coisa ( do tipo mensagem ) não tá mais funcionando isso .-.

Tipo, sem o script da pra fazer isso, agora quando eu coloco não funciona isso :C
teria como arrumar? pf isso tirou bastante lag do meu projeto

Deixa deu uma simples lida no script e vi qual foi meu erro kkkkkk ... Para quem esta com o mesmo erro, e no mesmo caso, é só por um evento-comentário  com o seguinte texto :  :update: 
Tava bem explicito no tópico, mas do jeito que está no tópico não da para entender muito bem para os leigos no assunto \:
Tudo vai dar certo (y(8.

Raizen, esse script tem uma incompatibilidade com o script de iluminação do khas :/. Eu tentei resolver a incompatibilidade mas não consegui. Você poderia dar uma olhada? Eu queria muito usar ele no meu projeto, pois gostei bastante, achei ele bem completo.

@katumblo: kk xD, qualquer coisa só chamar manolo.

Citação de: Klarth online 30/03/2014 às 00:59
Raizen, esse script tem uma incompatibilidade com o script de iluminação do khas :/. Eu tentei resolver a incompatibilidade mas não consegui. Você poderia dar uma olhada? Eu queria muito usar ele no meu projeto, pois gostei bastante, achei ele bem completo.

Aqui velho :D, mas cara vê se isso realmente melhora, porque aqui parece lagar mais quando usado junto com o script do Khas, já que o dele é bem pesado.

#=======================================================
#         Lune Ultimate Anti-Lag
# Autor: Raizen
# Compativel com: RMVXAce
# Comunidade: [url=http://www.centrorpg.com]www.centrorpg.com[/url]
# O script permite um pulo de frames na atualização de gráficos, 
# muito útil para jogos que tem uma programação pesada, e 
# atualização de gráficos, funcionando com um anti-lag.
# Detalhe: anti-lags são compátiveis com esse script.
#========================================================

#Para atualizar um programa constantemente, coloque um comentário
#no primeiro comando daquele evento escrito :update:

module Anti_conf
#==============================================================================
# ** Configurações
#------------------------------------------------------------------------------
#  Configure o que for necessário para um maior desempenho.
#==============================================================================
# Escolha como o Frame_Skip irá agir.
# <=====Qualidade============================Desempenho=====>
# 1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 20
# Padrão = 10
Fr = 10

# Configure a taxa de FPS (padrão = 60)
Fps = 60

# Quantidade de frames que o analizador de FPS irá levar, 
# Quanto menor o número mais rápido o script funcionará, porém
# será menos preciso.
Time = 60

end
=begin




Funções desse Anti-Lag

* Bug comum de posição de evento corrigido
* Frame Skip inteligente
* atualiza apenas o que é necessário
* ajuda inclusive outros scripts visuais a reduzir o lag
* Ele muda o seu comportamento de acordo com as necessidades de cada jogador
* Aumenta a prioridade do RPG Maker diante de outros programas
=end

#=================================================================#
#====================  Alias methods =============================#
# command_203          => Game_Interpreter
# start                => Scene_Map
# update               => Scene_Map
# perform_transfer     => Scene_Map
#=================================================================#
#====================  Rewrite methods ===========================#
# update_events        => Game_Map
# update_one_event     => Spriteset_Map
#=================================================================#
#========================  New methods ===========================#
# need_to_update?      => Game_Event
# near_the_screen?     => Sprite_Character
# call_position_event  => Scene_Map
# skip_calculate       => Scene_Map
# update_one_event     => Spriteset_Map
#=================================================================#
#=================================================================#

#==============================================================================
#============================  Início do Script!  =============================
#==============================================================================
#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
#  Esta classe executa o processamento da tela de mapa.
#==============================================================================

class Scene_Map < Scene_Base
alias lune_skip_start start
alias lune_skip_update update
alias lune_perform perform_transfer
  #--------------------------------------------------------------------------
  # * Inicialização do processo
  #--------------------------------------------------------------------------
  def start
    Graphics.frame_rate = Anti_conf::Fps
    @update_skip = false
    @count_up = 0
    lune_skip_start
  end
  #--------------------------------------------------------------------------
  # * Execução da transferência
  #--------------------------------------------------------------------------
  def perform_transfer
    $get_new_ids = Array.new
    Graphics.frame_rate = Anti_conf::Fps
    lune_perform
    @count_up = 0
    @update_skip = false
  end
  #--------------------------------------------------------------------------
  # * Atualização da tela
  #--------------------------------------------------------------------------
  def update
    @update_skip ? lune_skip_update : skip_calculate
  end
  #--------------------------------------------------------------------------
  # * Atualização de um personagem especifico
  #--------------------------------------------------------------------------
  def call_position_event(id)
    @spriteset.update_one_event(id)
  end
  #--------------------------------------------------------------------------
  # * Calcula o tempo necessário para rodar o update do Scene_Map
  #--------------------------------------------------------------------------  
  def skip_calculate
    @count_up += 1
    return unless @count_up >= Anti_conf::Time
    auto_skip = Time.now
    lune_skip_update
    old_skip = Time.now
    get_skip = old_skip - auto_skip
    Graphics.frame_rate -= (get_skip * Graphics.frame_rate * 2 * Anti_conf::Fr - 1).to_i
    @update_skip = true
  end
end


#==============================================================================
# ** Scene_Base
#------------------------------------------------------------------------------
#  Esta é a superclasse de todas as cenas do jogo.
#==============================================================================
class Scene_Base
alias skipper_main main
  #--------------------------------------------------------------------------
  # * Processamento principal
  #--------------------------------------------------------------------------
  def main
    @fr_cont = 0
    skipper_main
  end
  #--------------------------------------------------------------------------
  # * Execução da transição
  #--------------------------------------------------------------------------
  def perform_transition
    Graphics.transition(transition_speed * Graphics.frame_rate / 60)
  end
  #--------------------------------------------------------------------------
  # * Atualização da tela (básico)
  #--------------------------------------------------------------------------
  def update_basic
    if @fr_cont >= 60
      Graphics.update       
      @fr_cont -= 60
    end
    @fr_cont += Graphics.frame_rate
    update_all_windows
    Input.update
  end
end

#==============================================================================
# ** Aumento da prioridade do rpg maker
#------------------------------------------------------------------------------
Lune_high = Win32API.new("kernel32", "SetPriorityClass", "pi", "i")
Lune_high.call(-1, 0x90)
#==============================================================================

#==============================================================================
# ** Game_Event
#------------------------------------------------------------------------------
#  Esta classe gerencia os eventos. Ela controla funções incluindo a mudança
# de páginas de event por condições determinadas, e processos paralelos.
# Esta classe é usada internamente pela classe Game_Map. 
#==============================================================================

class Game_Event < Game_Character
  #--------------------------------------------------------------------------
  # * necessário atualizar?
  #--------------------------------------------------------------------------
  def need_to_update?
    ax = $game_map.adjust_x(@real_x) - 8
    ay = $game_map.adjust_y(@real_y) - 6
    return false unless @list
    ax.between?(-9, 9) && ay.between?(-7, 7) || @list[0].parameters.include?(':update:')
  end
end

#==============================================================================
# ** Sprite_Character
#------------------------------------------------------------------------------
#  Este sprite é usado para mostrar personagens. Ele observa uma instância
# da classe Game_Character e automaticamente muda as condições do sprite.
#==============================================================================

class Sprite_Character < Sprite_Base
  #--------------------------------------------------------------------------
  # * Evento próximo a tela?
  #--------------------------------------------------------------------------
  def near_the_screen?
    ax = $game_map.adjust_x(@character.x) - 8
    ay = $game_map.adjust_y(@character.y) - 6
    ax.between?(-11, 11) && ay.between?(-8, 8)
  end
end
#==============================================================================
# ** Game_Event
#------------------------------------------------------------------------------
#  Esta classe gerencia os eventos. Ela controla funções incluindo a mudança
# de páginas de event por condições determinadas, e processos paralelos.
# Esta classe é usada internamente pela classe Game_Map. 
#==============================================================================

class Game_Event < Game_Character
alias lune_ant_initialize initialize
  #--------------------------------------------------------------------------
  # * Inicialização do objeto
  #     event : RPG::Event
  #--------------------------------------------------------------------------
  def initialize(*args, &block)
    lune_ant_initialize(*args, &block)
    $get_new_ids.push(@event.id)
  end
end

#==============================================================================
# ** Game_Interpreter
#------------------------------------------------------------------------------
#  Um interpretador para executar os comandos de evento. Esta classe é usada
# internamente pelas classes Game_Map, Game_Troop e Game_Event.
#==============================================================================

class Game_Interpreter
alias lune_lag_command_203 command_203
  #--------------------------------------------------------------------------
  # Definir posição do evento
  #--------------------------------------------------------------------------
  def command_203
    lune_lag_command_203
    SceneManager.scene.call_position_event($get_new_ids.index(@event_id))
  end
end
#==============================================================================
# ** Game_Map
#------------------------------------------------------------------------------
#  Esta classe gerencia o mapa. Inclui funções de rolagem e definição de 
# passagens. A instância desta classe é referenciada por $game_map.
#==============================================================================

class Game_Map
  #--------------------------------------------------------------------------
  # * Atualização dos comandos dos eventos
  #--------------------------------------------------------------------------
  def update_events
    @events.each_value {|event| event.update if event.need_to_update?}
    @common_events.each {|event| event.update}
  end
end


$get_new_ids = Array.new
#==============================================================================
# ** Spriteset_Map
#------------------------------------------------------------------------------
#  Esta classe reune os sprites da tela de mapa e tilesets. Esta classe é
# usada internamente pela classe Scene_Map. 
#==============================================================================
class Spriteset_Map
  #--------------------------------------------------------------------------
  # * Atualização dos personagens
  #--------------------------------------------------------------------------
  def update_characters
    refresh_characters if @map_id != $game_map.map_id
    @character_sprites.each {|sprite| sprite.update if sprite.near_the_screen? }
  end
  #--------------------------------------------------------------------------
  # * Atualização de algum personagem remoto
  #--------------------------------------------------------------------------
  def update_one_event(id)
    @character_sprites[id].update
  end
end

Opa valeu mesmo raizen :D
Pelos testes aqui aumentou uns 4-5fps, ta rodando a 95-97 fps com umas 7 luzes no mapa.

Ajuda aqui? ;-;
Eu coloquei o Script compatível com o Khas, mas quando fui fazer o PlayTest, deu esse erro:
line 155: NoMethodError ocurred.
undefined method `>='for nil:nilClass
Tem como consertar isso?  :T.T:
I was punching some trees yesterday.
:lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol:

Coloca o Anti-lag abaixo do script do khas x)

Belo script Raizen, mesmo que ainda não percebi diferenças no meu projeto! :=p:

De qualquer forma, só passei pra falar que esse script da incompatibilidade com seu próprio script de reflexos! (Como também o de reflexo da incompatibilidade com o de adicionar mais frames no char! lol, eu estava colocando todos pra testar e deu isso! x3)

Bug
[close]

De certa forma, eu acabei de pegar um punhado de script seu pra usar... :*-*:
E gostaria de te pedir um pequeno favor, se puder aceitar, enviarei uma PM com o assunto! x3

No mais, espero ter ajudado com isso e espero respostas! x3


Vish, tentou mudar a ordem dos scripts?

coloca o anti-lag abaixo do de reflex, ou ao contrário.
Agora não posso testar isso :/

Pode mandar a MP eu vejo o que posso fazer.

Citação de: Raizen online 17/04/2014 às 16:49
Vish, tentou mudar a ordem dos scripts?

coloca o anti-lag abaixo do de reflex, ou ao contrário.
Agora não posso testar isso :/

Pode mandar a MP eu vejo o que posso fazer.

Sim sim, eu mudei a posição e ainda sim não funcionou! x-X
Mas nada pra se preocupar, não usarei o sistema de reflexo, vim mais mesmo dar avisar! x3

Oks, estarei mandando! :³

Diminuiu bastante o lag. Mas começou a dar um problemas para iniciar os processos paralelos que usei. Alguém mais teve esse problema?
For all to be accomplished, for me to feel less lonely, all that remained to hope was that on the day of my execution there should be a huge crowd of spectators and that they should greet me with howls of execration.

Spoiler
[close]

Citação de: Zugzwang online 18/04/2014 às 12:36
Diminuiu bastante o lag. Mas começou a dar um problemas para iniciar os processos paralelos que usei. Alguém mais teve esse problema?

Coloque o comando " :update: " como comentário no inicio de seus eventos, eu já tive esse problema, em um comentário meu ali em cima explicou isso o/ kkkk
Bom, acho que é esse seu problema mesmo  :3'
Tudo vai dar certo (y(8.

Cara seu scrpt salvou meu projeto XD valewww por disponibilizar  :wow: