30.04.2014, 22:17
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?
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 код:
PHP код:
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. |
//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;
}
um timer assim por exemplo causaria lag nos players?
pawn Код:
|
Apenas complementando, vocк deve declarar as variбveis dos timers por jogadores (exemplo: timerAtualizarFS[playerid] = SetTimerEx..) assim vocк nгo terб problemas futuros.
|
creio que a fome poderia ser chamada de 1000 ms em 1000 ms assim como o outro, n iria causar problema.
|