SetTimer -
SeV_ - 19.05.2013
Pessoal.
Qual o Mais Recomendado. - Leg Para o Servidor:
SetTimer - Atualizado Globalmente.
ou
SetTimerEx - Atualizado por Player.
Em Meu Servidor eu Uso:
CallBack OnGamemodeInit:
SetTimer("AtualizarTodos", 990, 1);//Timer de Atualizacao Global para Todos Do Servidor. Atualiza Score,Level etcc..
Em Textdraw..
Seria Mais Recomendado Criar um Timer Repetitivo para Cada Player?

vlw
#2 Duvida. Tem Como Melhorar Isto:
PHP код:
public VisibilityUpdate()////Creditos a Devastator - UGW
{
new dist;
new Float:x, Float:x1, Float:y, Float:y1, Float:tmp;
for(new i = 0; i <= MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
GetPlayerPos(i, x, y, tmp);
for(new j = 0; j <= MAX_PLAYERS; j++)
{
if(IsPlayerConnected(j) && j != i && Player[i][PlayerGPS] != j)
{
GetPlayerPos(j, x1, y1, tmp);
dist = floatround(floatsqroot(floatpower(floatabs(floatsub(x,x1)),2)+floatpower(floatabs(floatsub(y,y1)),2)));
if(Player[i][PlayingWar] == true)
{
SetPlayerMarkerForPlayer(i, j, ((GetPlayerColor(j) & 0xFFFFFF00) | 0x00000011));
}
else if(GetPlayerVirtualWorld(j) == GetPlayerVirtualWorld(i) && GetPlayerVirtualWorld(i) == 24)
{
SetPlayerMarkerForPlayer(i, j, ((GetPlayerColor(j) & 0xFFFFFF00) | 0x000000FF));
}
else if(dist <= 300)
{
if( (PlayerGang[i] != INVALID_GANG && PlayerGang[j] != INVALID_GANG && PlayerGang[i] == PlayerGang[j]) ||
(PlayerGang[i] == T_LEI && Player[i][GangLevel] > 3 && IsPlayerInRadarVehicle(i)) ||
(VillageData[VILL_PALOMINO][Owner] == PlayerGang[i] && PlayerGang[i] != INVALID_GANG && IsPlayerInAnyVehicle(i)) )
{
// if(GetVehicleModel(GetPlayerVehicleID(i)) != 520) // nгo aplicavel a hydra
SetPlayerMarkerForPlayer(i, j, ((GetPlayerColor(j) & 0xFFFFFF00) | 0x000000EE));
}
else if(Player[i][AdvancedRadar] == true && GetPlayerVehicleID(j) != 0)
{
SetPlayerMarkerForPlayer(i, j, ((GetPlayerColor(j) & 0xFFFFFF00) | 0x000000EE));
}
else
{
SetPlayerMarkerForPlayer(i, j, ((GetPlayerColor(j) & 0xFFFFFF00) | 0x00000001));
}
}
else if(dist <= 400) SetPlayerMarkerForPlayer(i, j, ((GetPlayerColor(j) & 0xFFFFFF00) | 0x000000AA));
else if(dist <= 500) SetPlayerMarkerForPlayer(i, j, ((GetPlayerColor(j) & 0xFFFFFF00) | 0x00000099));
else if(dist <= 600) SetPlayerMarkerForPlayer(i, j, ((GetPlayerColor(j) & 0xFFFFFF00) | 0x00000088));
else if(dist <= 700) SetPlayerMarkerForPlayer(i, j, ((GetPlayerColor(j) & 0xFFFFFF00) | 0x00000077));
else if(dist <= 800) SetPlayerMarkerForPlayer(i, j, ((GetPlayerColor(j) & 0xFFFFFF00) | 0x00000066));
else if(dist <= 900) SetPlayerMarkerForPlayer(i, j, ((GetPlayerColor(j) & 0xFFFFFF00) | 0x00000055));
else if(dist <= 1000) SetPlayerMarkerForPlayer(i, j, ((GetPlayerColor(j) & 0xFFFFFF00) | 0x00000044));
else if(dist <= 1200) SetPlayerMarkerForPlayer(i, j, ((GetPlayerColor(j) & 0xFFFFFF00) | 0x00000033));
else if(dist <= 1400) SetPlayerMarkerForPlayer(i, j, ((GetPlayerColor(j) & 0xFFFFFF00) | 0x00000022));
else if(dist <= 1600) SetPlayerMarkerForPlayer(i, j, ((GetPlayerColor(j) & 0xFFFFFF00) | 0x00000011));
else if(dist <= 2000) SetPlayerMarkerForPlayer(i, j, ((GetPlayerColor(j) & 0xFFFFFF00) | 0x00000011));
else SetPlayerMarkerForPlayer(i, j, ((GetPlayerColor(j) & 0xFFFFFF00) | 0x00000011));
if(GetPlayerInterior(i) != GetPlayerInterior(j)) SetPlayerMarkerForPlayer(i, j, (GetPlayerColor(j) & 0xFFFFFF00));
}
}
}
}
}
- Isto Aumenta Leg Correto? й atualizado por Timer. a Cada Segundo ele Faz Loop. +Leg?
Re: SetTimer -
.FuneraL. - 19.05.2013
Isso irб variar diretamente ao sistema que vocк irб fazer, se for publics sem playerid, й utilizado SetTimer, e se for com playerid, й utilizado SetTimerEx, o que dб lag realmente й muito settimer desnecessбrio.
Re: SetTimer -
SeV_ - 19.05.2013
vlw..
Mais Ainda Estou Com Duvidas. Da Mto Crash.
Re: SetTimer -
zSuYaNw - 19.05.2013
Quote:
Originally Posted by _SysTeM_OFF
vlw..
Mais Ainda Estou Com Duvidas. Da Mto Crash.
|
Acho que o amigo acima deu a explicaзгo errada..
Porque dentro do loop й utilizadas muitas funзхes e cбlculos em um curto perнodo de tempo(sim algumas demoram para ser executadas de acordo com o ping/ms do player). Ainda mais quando й usado SetTimer com tempo curto que pode acarretar a crashs inesperados.
Esses crashs acontecem quando o looping nгo consegue executar as funзхes dentro do escopo a tempo de o timer chamar a funзгo novamente..
O Correto й retirar esta callback ou calcular o tempo de demora hб ser executada e criar um SetTimer Baseado nisto..
Re: SetTimer -
SeV_ - 19.05.2013
Entгo Garfield voce me recomenda usar um SetTimerEx Para o PLayer ??
Ignore o Sistema de Radar Ali. Ja Retirei esta Hipotese.