[Ajuda] public OnPlayerUpdate
#1

Fala galera, entгo, foi mal o abandono de novo, mas jб voltei.
Quero saber de vocкs, a public OnPlayerUpdate й chamada frequentemente? Mais ou menos quando ela й chamada?
Causaria algum 'lag' eu colocar loop's nela para todos os players para eu poder atualizar apenas 1 dado em todos?
E respondendo essas perguntas, surgirгo outras, entгo deixo o tуpico em aberto. Qualquer duvida vou postando abaixo.

Obrigado.
Abraзos.
Reply
#2

Como o wilton havia me dito uma vez, OnPlayerUpdate й chamada frequentemente e causa lag em determinadas situaзхes na qual ela й chamada.
Reply
#3

Depende da quantidade de dados enviados e recebidos pelo player, se nгo me engano a cada 40ms
Reply
#4

Em questгo de tempo, quantos minutos/segundos?
Reply
#5

Vai depender do fps do player, vocк mesmo pode testar com muito fps ae, eu aqui com 20 fps cheguei a 21 chamadas por segundo.
http://prntscr.com/br3tg0
PHP код:
new tempo;
new 
time;
new 
calls;
public 
OnPlayerUpdate(playerid)
{
    
time gettime();
    if(
tempo != time)
    {
        
printf("Callback called %d times, at %d time."callstempo);
        
tempo time;
        
calls 1;
        return 
true;
    }
    ++
calls;
    return 
true;

Reply
#6

Geralmente ela й chamada sempre que o player atualiza-se. Se vocк for trabalhar com atualizaзгo de dados que precisam ser atualizados sempre, recomendo usar timers de 1s para algum dado rбpido ou de 1min para dados mais lentos.

O OnPlayerUpdate vai influenciar muito quando vocк tiver uma mйdia de 100+ e a mбquina estiver consumindo muito devido a essas atualizaзхes constantes. Vocк colocando as mesmas funзхes em timers com intervalos maiores, como 1s ou 2s, ajudarб a diminuir o consumo e a necessidade dele ser chamado vбrias vezes no mesmo segundo.
Reply
#7

Mano, й sу vocк colocar "printf("Passado na public OnPlayerUpdate");" no fim da public OnPlayerUpdate. Eu me lembro que a ultima vez que eu testei, floodou o CMD. E cada vez que eu andava, chamava mais rбpido ainda.

Acho melhor vocк usar uma contagem de 1 seg para ser chamado com "loop".

Exemplo:
pawn Код:
public OnGameModeInit()
{
    SetTimer("Atualizar", 1000, true);
    return true;
}

forward Atualizar();
public Atualizar()
{
    for(new i = 0; i <MAX_PLAYERS; ++i)
    {
        //Funзгo
    }
}
No caso, irб atualizar 1 em 1 segundos para todos os players.

Mas se for o caso, e se vocк souber oque realmente estб fazendo, utilize a public OnPlayerUpdate.
Reply
#8

Com as informaзхes que vocк passou eu usaria settimer.

Nunca gostei de usar essa Callback. Atй porque uma atualizaзгo a cada 1s ja й o suficiente no meu ponto de vista.
Reply
#9

Quote:
Originally Posted by willttoonn
Посмотреть сообщение
Geralmente ela й chamada sempre que o player atualiza-se. Se vocк for trabalhar com atualizaзгo de dados que precisam ser atualizados sempre, recomendo usar timers de 1s para algum dado rбpido ou de 1min para dados mais lentos.

O OnPlayerUpdate vai influenciar muito quando vocк tiver uma mйdia de 100+ e a mбquina estiver consumindo muito devido a essas atualizaзхes constantes. Vocк colocando as mesmas funзхes em timers com intervalos maiores, como 1s ou 2s, ajudarб a diminuir o consumo e a necessidade dele ser chamado vбrias vezes no mesmo segundo.
Exatamente, e й por isto que nгo recomendo usar OnPlayerUpdate (a nгo ser que vocк saiba oque vocк estб fazendo).
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)