[Duvida] SetTimer's podem lagar o servidor? -
hard_dalzot - 30.04.2014
Galera eu tenho uma dъvida, tenho uns timer's de 100 milisegundos e gostaria de saber se eles lagam o server ou nгo?
Re: [Duvida] SetTimer's podem lagar o servidor? -
Caio_Freeze - 30.04.2014
depende... usa mais de uma funзгo em cada timer que vocк for usar 1000 milisegundos.
Abraзos.
Re: [Duvida] SetTimer's podem lagar o servidor? -
ProKillerpa - 30.04.2014
Sim, principalme strings inъteis ou exageradas.
Quote:
Originally Posted by Falcon.
A questгo nгo й muitos timers, e sim o que vai ser executado no final do mesmo.
suponhamos: SetTimer("MyCallback", a cada 100 milisegundos);
Cуdigo A:
PHP код:
MyCallback()
{
FunзгoMarte();
FunзгoTerra(people);
FunзгoDebug(imprimir);
FunзгoMensagem(Hello world);
FunзгoAntiCheater(modificaзхes);
return 0x01;
}
Cуdigo B:
PHP код:
MyCallback()
{
FunзгoDebug(imprimir);
FunзгoAntiCheater(modificaзхes);
return 0x01;
}
Suponhamos existir 12 timers como o do exemplo chamando as funзхes, logo o exemplo A iria levar mais tempo para ser executada, causando uma "espera" maior por parte do servidor para processar o resto das coisas como, chat, renderizaзгo de objetos, etc...
Eu jб utilizei cerca de 16 timers por parte do servidor mais um para cada player em um servidor RPG com cerca de 30 players e nгo causou lag algum. Lembrando que vale contar tambйm os outros requisitos como citei no outro post.
|
Re: [Duvida] SetTimer's podem lagar o servidor? -
hard_dalzot - 30.04.2014
um timer assim por exemplo causaria lag nos players?
pawn Код:
//onplayerspawn
timerAtualizarFS = SetTimerEx("AtualizarFomeSede", 100, true, "i", playerid);
timerDiminuirFS = SetTimerEx("DiminuirFomeSede", 120000, true, "i", playerid);
timerAtualizarBH = SetTimerEx("AtualizarNecessidades", 100, true, "i", playerid);
timerDiminuirBH = SetTimerEx("DiminuirBanheiroHigiene", 240000, true, "i", playerid);
//onplayerdeath
KillTimer(timerAtualizarFS);
KillTimer(timerDiminuirFS);
KillTimer(timerAtualizarBH);
KillTimer(timerDiminuirBH);
//o que eles irгo executar
forward AtualizarFomeSede(playerid);
public AtualizarFomeSede(playerid)
{
if(fsBarFome[playerid] != INVALID_BAR_ID)
{
SetProgressBarValue(fsBarFome[playerid], InfoJogador[playerid][iFome]);
UpdateProgressBar(fsBarFome[playerid], playerid);
if(InfoJogador[playerid][iFome] < 70 && InfoJogador[playerid][iFome] > 20)
{
SetProgressBarColor(fsBarFome[playerid], 0xFFC801C8);
}
if(InfoJogador[playerid][iFome] < 20)
{
SetProgressBarColor(fsBarFome[playerid], vermelho);
}
else if(InfoJogador[playerid][iFome] > 70)
{
SetProgressBarColor(fsBarFome[playerid], groove);
}
}
if(fsBarSede[playerid] != INVALID_BAR_ID)
{
SetProgressBarValue(fsBarSede[playerid], InfoJogador[playerid][iSede]);
UpdateProgressBar(fsBarSede[playerid], playerid);
if(InfoJogador[playerid][iSede] < 70 && InfoJogador[playerid][iSede] > 20)
{
SetProgressBarColor(fsBarSede[playerid], 0xFFC801C8);
}
if(InfoJogador[playerid][iSede] < 20)
{
SetProgressBarColor(fsBarSede[playerid], vermelho);
}
else if(InfoJogador[playerid][iSede] > 70)
{
SetProgressBarColor(fsBarSede[playerid], groove);
}
}
new Float:Vida;
GetPlayerHealth(playerid, Vida);
if(devecomer[playerid] == 5)
{
devecomer[playerid] = 0;
if(InfoJogador[playerid][iFome] <= 0)
{
SetPlayerHealth(playerid, Vida-1);
}
if(InfoJogador[playerid][iSede] <= 0)
{
SetPlayerHealth(playerid, Vida-1);
}
}
else if(devecomer[playerid] < 5)
{
devecomer[playerid]++;
}
return 1;
}
forward DiminuirFomeSede(playerid);
public DiminuirFomeSede(playerid)
{
if(InfoJogador[playerid][iSede] > 0)
{
InfoJogador[playerid][iSede]--;
}
if(InfoJogador[playerid][iFome] > 0)
{
InfoJogador[playerid][iFome]--;
}
if(InfoJogador[playerid][iFome] < 20)
{
MP(playerid, grad3, "Vб comer algo, vocк estб faminto!");
}
else if(InfoJogador[playerid][iFome] < 60 && InfoJogador[playerid][iFome] > 20)
{
MP(playerid, grad3, "Vocк estб ficando com fome, melhor procurar algo para comer! Ou vocк comeзarб perder vida!");
}
if(InfoJogador[playerid][iSede] < 20)
{
MP(playerid, grad3, "Vб beber algo, vocк estб com muita sede!");
}
else if(InfoJogador[playerid][iSede] < 60 && InfoJogador[playerid][iSede] > 20)
{
MP(playerid, grad3, "Vocк estб ficando com sede, melhor procurar algo para beber! Ou vocк comeзarб perder vida!");
}
return 1;
}
forward AtualizarNecessidades(playerid);
public AtualizarNecessidades(playerid)
{
if(fsBarBanheiro[playerid] != INVALID_BAR_ID)
{
SetProgressBarValue(fsBarBanheiro[playerid], InfoJogador[playerid][iBanheiro]);
UpdateProgressBar(fsBarBanheiro[playerid], playerid);
if(InfoJogador[playerid][iBanheiro] < 70 && InfoJogador[playerid][iBanheiro] > 20)
{
SetProgressBarColor(fsBarBanheiro[playerid], 0xFFC801C8);
}
if(InfoJogador[playerid][iBanheiro] < 20)
{
SetProgressBarColor(fsBarBanheiro[playerid], vermelho);
}
else if(InfoJogador[playerid][iBanheiro] > 70)
{
SetProgressBarColor(fsBarBanheiro[playerid], groove);
}
}
if(fsBarHigiene[playerid] != INVALID_BAR_ID)
{
SetProgressBarValue(fsBarHigiene[playerid], InfoJogador[playerid][iHigiene]);
UpdateProgressBar(fsBarHigiene[playerid], playerid);
if(InfoJogador[playerid][iHigiene] < 70 && InfoJogador[playerid][iHigiene] > 20)
{
SetProgressBarColor(fsBarHigiene[playerid], 0xFFC801C8);
}
if(InfoJogador[playerid][iHigiene] < 20)
{
SetProgressBarColor(fsBarHigiene[playerid], vermelho);
}
else if(InfoJogador[playerid][iHigiene] > 70)
{
SetProgressBarColor(fsBarHigiene[playerid], groove);
}
}
return 1;
}
Re: [Duvida] SetTimer's podem lagar o servidor? -
PT - 01.05.2014
creio que a fome poderia ser chamada de 1000 ms em 1000 ms assim como o outro, n iria causar problema.
Re: [Duvida] SetTimer's podem lagar o servidor? -
DrTHE - 01.05.2014
Quote:
Originally Posted by hard_dalzot
um timer assim por exemplo causaria lag nos players?
pawn Код:
//onplayerspawn timerAtualizarFS = SetTimerEx("AtualizarFomeSede", 100, true, "i", playerid); timerDiminuirFS = SetTimerEx("DiminuirFomeSede", 120000, true, "i", playerid); timerAtualizarBH = SetTimerEx("AtualizarNecessidades", 100, true, "i", playerid); timerDiminuirBH = SetTimerEx("DiminuirBanheiroHigiene", 240000, true, "i", playerid); //onplayerdeath KillTimer(timerAtualizarFS); KillTimer(timerDiminuirFS); KillTimer(timerAtualizarBH); KillTimer(timerDiminuirBH); //o que eles irгo executar forward AtualizarFomeSede(playerid); public AtualizarFomeSede(playerid) { if(fsBarFome[playerid] != INVALID_BAR_ID) { SetProgressBarValue(fsBarFome[playerid], InfoJogador[playerid][iFome]); UpdateProgressBar(fsBarFome[playerid], playerid); if(InfoJogador[playerid][iFome] < 70 && InfoJogador[playerid][iFome] > 20) { SetProgressBarColor(fsBarFome[playerid], 0xFFC801C8); } if(InfoJogador[playerid][iFome] < 20) { SetProgressBarColor(fsBarFome[playerid], vermelho); } else if(InfoJogador[playerid][iFome] > 70) { SetProgressBarColor(fsBarFome[playerid], groove); } } if(fsBarSede[playerid] != INVALID_BAR_ID) { SetProgressBarValue(fsBarSede[playerid], InfoJogador[playerid][iSede]); UpdateProgressBar(fsBarSede[playerid], playerid); if(InfoJogador[playerid][iSede] < 70 && InfoJogador[playerid][iSede] > 20) { SetProgressBarColor(fsBarSede[playerid], 0xFFC801C8); } if(InfoJogador[playerid][iSede] < 20) { SetProgressBarColor(fsBarSede[playerid], vermelho); } else if(InfoJogador[playerid][iSede] > 70) { SetProgressBarColor(fsBarSede[playerid], groove); } } new Float:Vida; GetPlayerHealth(playerid, Vida); if(devecomer[playerid] == 5) { devecomer[playerid] = 0; if(InfoJogador[playerid][iFome] <= 0) { SetPlayerHealth(playerid, Vida-1); } if(InfoJogador[playerid][iSede] <= 0) { SetPlayerHealth(playerid, Vida-1); } } else if(devecomer[playerid] < 5) { devecomer[playerid]++; } return 1; }
forward DiminuirFomeSede(playerid); public DiminuirFomeSede(playerid) { if(InfoJogador[playerid][iSede] > 0) { InfoJogador[playerid][iSede]--; } if(InfoJogador[playerid][iFome] > 0) { InfoJogador[playerid][iFome]--; } if(InfoJogador[playerid][iFome] < 20) { MP(playerid, grad3, "Vб comer algo, vocк estб faminto!"); } else if(InfoJogador[playerid][iFome] < 60 && InfoJogador[playerid][iFome] > 20) { MP(playerid, grad3, "Vocк estб ficando com fome, melhor procurar algo para comer! Ou vocк comeзarб perder vida!"); } if(InfoJogador[playerid][iSede] < 20) { MP(playerid, grad3, "Vб beber algo, vocк estб com muita sede!"); } else if(InfoJogador[playerid][iSede] < 60 && InfoJogador[playerid][iSede] > 20) { MP(playerid, grad3, "Vocк estб ficando com sede, melhor procurar algo para beber! Ou vocк comeзarб perder vida!"); } return 1; }
forward AtualizarNecessidades(playerid); public AtualizarNecessidades(playerid) { if(fsBarBanheiro[playerid] != INVALID_BAR_ID) { SetProgressBarValue(fsBarBanheiro[playerid], InfoJogador[playerid][iBanheiro]); UpdateProgressBar(fsBarBanheiro[playerid], playerid); if(InfoJogador[playerid][iBanheiro] < 70 && InfoJogador[playerid][iBanheiro] > 20) { SetProgressBarColor(fsBarBanheiro[playerid], 0xFFC801C8); } if(InfoJogador[playerid][iBanheiro] < 20) { SetProgressBarColor(fsBarBanheiro[playerid], vermelho); } else if(InfoJogador[playerid][iBanheiro] > 70) { SetProgressBarColor(fsBarBanheiro[playerid], groove); } } if(fsBarHigiene[playerid] != INVALID_BAR_ID) { SetProgressBarValue(fsBarHigiene[playerid], InfoJogador[playerid][iHigiene]); UpdateProgressBar(fsBarHigiene[playerid], playerid); if(InfoJogador[playerid][iHigiene] < 70 && InfoJogador[playerid][iHigiene] > 20) { SetProgressBarColor(fsBarHigiene[playerid], 0xFFC801C8); } if(InfoJogador[playerid][iHigiene] < 20) { SetProgressBarColor(fsBarHigiene[playerid], vermelho); } else if(InfoJogador[playerid][iHigiene] > 70) { SetProgressBarColor(fsBarHigiene[playerid], groove); } } return 1; }
|
Apenas complementando, vocк deve declarar as variбveis dos timers por jogadores (exemplo: timerAtualizarFS[playerid] = SetTimerEx..) assim vocк nгo terб problemas futuros.
Re: [Duvida] SetTimer's podem lagar o servidor? -
hard_dalzot - 01.05.2014
Quote:
Originally Posted by DrTHE
Apenas complementando, vocк deve declarar as variбveis dos timers por jogadores (exemplo: timerAtualizarFS[playerid] = SetTimerEx..) assim vocк nгo terб problemas futuros.
|
boa kkkk eu tinha esquecido desse detalhe *--*
Quote:
Originally Posted by PT
creio que a fome poderia ser chamada de 1000 ms em 1000 ms assim como o outro, n iria causar problema.
|
tava assim eu resolvi atualizar mais rбpido, mas entгo vou deixar em 1000ms
obrigado pelas dicas ai galera