🤔 Para Refletir :
"Nunca desista se tiver uma ideia em mente, se tiver inicie-a."
- Samuel Augusto

Evento se mover fora da tela (ACE)

Kauzz

Cidadão
Membro
Membro
Juntou-se
17 de Outubro de 2016
Postagens
140
Bravecoins
1
Garera, ceis já repararam que os eventos param de rodar/se mover quando estão fora da visão do personagem (Isso no comando do próprio evento de movimento personalizado), e só retornam a se mover quando a tela volta a pegar eles? (Ou isso é um bug exclusivo do eu Rmaker?)
Sabem se tem alguma correção pra isso? (Digam que sim, por favor).
Preciso fazer o tráfego de uma cidade, que tem as dimensões maiores que a janela padrão, mas esse freeze nos eventos tá me chateando. :(
 
Testei  com um sprite qualquer a uma distancia de 100 de largura e ele veio normalmente até mim,não sei se o seu está bugado ou a distancia está muito elevada, talvez depende até do numero de eventos que vão se mover e acontece isso para evitar um lag / sobrecarga de dados .
 
Tirano_ comentou:
Testei  com um sprite qualquer a uma distancia de 100 de largura e ele veio normalmente até mim,não sei se o seu está bugado ou a distancia está muito elevada, talvez depende até do numero de eventos que vão se mover e acontece isso para evitar um lag / sobrecarga de dados .

Han, tenta colocar em movimento personalizado e bota pra ele se mover até chegar no personagem. Eu tentei aqui e não deu não (Mesmo em um projeto em branco haha)
 
Pelo que notei ao ler os códigos, os movimentos definidos pela página funcionam num certo alcance da tela, a função
Código:
def near_the_screen?
do Game Event é responsável por isso.
No 
Código:
 def update_self_movement
Mais precisamente na linha 92 haverá este código:
Código:
if near_the_screen? && @stop_count > stop_count_threshold
Basta mudar ele para isso:
Código:
if @stop_count > stop_count_threshold
Entretanto há um possível problema em usar isto, está função serve para reduzir lag, imagina um mapa gigante com todos os eventos ativos em movimento, o lag gerado seria absurdo dependendo do tamanho do mapa, não recomendo fazer isto, mas fique a teu critério.
Caso a quantidade de eventos que precisam disso seja menor, eu fiz esse código rápido para ignorar o near_the_screen? usando comentários de evento.
https://pastebin.com/nQbcqfM6
 
Hmmmm, os mapas são uns 40x40 mais ou menos, mas deve ter tráfego de apenas uns 5 eventos, pq eu reutilizo eles em outros locais. Eu vou fazer uns testes assim que possível aqui. :)
 
Nunca prestei atenção a isso, mas eventos que usem o "mover evento" se movem normalmente fora da tela então poderia tentar adicionar o evento pré-definido e dentro dele adicionar mov. aleatório.

Edit: Testei aqui e o evento se move normalmente (RMXP) mesmo usando o mov aleatório. O seu problema seria o evento não seguir o herói? Pois se for ele só segue se tiver perto e quando se aproxima ele para e faz movimentos aleatórios.
 
HermesPasser comentou:
Nunca prestei atenção a isso, mas eventos que usem o "mover evento" se movem normalmente fora da tela então poderia tentar adicionar o evento pré-definido e dentro dele adicionar mov. aleatório.

Edit: Testei aqui e o evento se move normalmente (RMXP) mesmo usando o mov aleatório. O seu problema seria o evento não seguir o herói? Pois se for ele só segue se tiver perto e quando se aproxima ele para e faz movimentos aleatórios.

Então, sim, com o "Mover evento" ele realmente sai da tela e executa tudo mesmo fora da visão, o problema é se eu definir no próprio movimento do evento (Na página das condições do evento, onde você seta o "Layer" dele; abaixo, junto ou acima do herói, e na ativação; ao tocar herói, pressionar botão e etc). Estou pensando em deixar eles paralelos e usar o mover evento mesmo. Não sei...
 
[member=879]Kauzz[/member] isso não faz sentido, aqui o Mover evento funciona perfeitamente fora da tela. Você se assegurou que o evento é realmente chamado (estamos falando do mover evento na aba 2 dos eventos, certo)?

Alguém que tenha o ACE faça o teste por favor.
 
Dei uma testada no Mover Evento (aba 2) usando o VX (não tenho o Ace) e funcionou perfeitamente.

Crie um novo projeto e teste novamente e se persistir então envie o projeto (o novo) e uma screen shot da versão do maker (help/about) para que possamos testar.

Segue a gravação do teste que fiz:

[youtube]https://youtu.be/Ms6MKcieag0[/youtube]
 
Vê se o código abaixo o ajuda em algo.

Código:
class Game_Event < Game_Character
  def update_self_movement
    if force_move_update || (near_the_screen? && @stop_count > stop_count_threshold)
      p force_move_update
      case @move_type
      when 1;  move_type_random
      when 2;  move_type_toward_player
      when 3;  move_type_custom
      end
    end
  end
  
  def force_move_update
    if @event.name =~ /\W*(UPDT)/
      return true
    end
  end
end

Cole-o em um novo script e adicione "UPDT", sem as aspas, após o nome do evento em questão.

A intenção deste código é restringir a permissão de movimento mesmo quando muito distante do jogador a eventos específicos, evitando que essa permissividade atinja todos eventos do mapa e acarrete em lag, como o LeonMM bem lembrou. Vale lembrar que, caso esteja usando algum script de Anti-lag, pode haver conflito, vez que este código faz o contrário de uma função que um desses scripts podem trazer (restringir movimento de eventos muito distantes do jogador).
 
[member=45]King Gerar[/member] teu codigo ai faz basicamente a mesma coisa que o codigo que eu fiz. Ta no link da minha primeira msg
E sim tem esse lance de possiveis incompatibilidades com antilags.
Outra coisa. Acho que teu código ignora o
Código:
@stop_count
Que serve para uma especie de controle. Ate onde eu me lembro.
[member=1330]HermesPasser[/member] e o mover evento da configuração de evento. Nao o da aba 2.
 
É, ajudaram. xD
Vou usar o do Leon, ai eu consigo movimentar só alguns eventos pra fora da tela, já que não são todos que precisam (Só os veiculos que são mais importantes mesmo) Obrigado a todos. :)
 
Voltar
Topo Inferior