17.05.2015, 20:16
(
Последний раз редактировалось n0minal; 17.05.2015 в 20:19.
Причина: confundi scores com xp
)
Vou te ensinar como fazer, primeiro de tudo vocк vк o que quer:
1-Timer com loop pra dar score a cada 10 minutos.
2-Saber calcular o tempo do timer.
3-Dar ou nгo o score.
Primeiro de tudo vocк precisa comeзar o temporizador (timer). A melhor forma de comeзar um timer global й na public OnGameModeInit.
Entгo precisamos saber o tempo do timer, pra isso usaremos matemбtica bбsica:
1 segundo = 1000 milisegundos
1 minuto = 60 segundos (60 segundos = 1000 * 60)
10 minutos = 10(minutos) * 60(segundos) * 1000(milisegundos)
Porйm, vocк quer q jogadores inativos nгo recebam, entгo vocк precisa criar seu prуprio sistema de detecзгo AFK, geralmente dб pra fazer com macros como esta:
1-Timer com loop pra dar score a cada 10 minutos.
2-Saber calcular o tempo do timer.
3-Dar ou nгo o score.
Primeiro de tudo vocк precisa comeзar o temporizador (timer). A melhor forma de comeзar um timer global й na public OnGameModeInit.
Entгo precisamos saber o tempo do timer, pra isso usaremos matemбtica bбsica:
1 segundo = 1000 milisegundos
1 minuto = 60 segundos (60 segundos = 1000 * 60)
10 minutos = 10(minutos) * 60(segundos) * 1000(milisegundos)
Код:
public OnGameModeInit() { SetTimer("DoarXP", 10 * 60 * 1000, true); } forward DoarXP(); public DoarXP() { /*EXEMPLO: for(new player; player < GetPlayerPoolSize(); player++) { if(!IsPlayerConnected(player) || IsPlayerAfk(player)) continue;//ignora ids desconectados e afk e pula pro proximo id //caso a condicional acima nгo seja atendida, o script continua daqui... SetPlayerScore(player, GetPlayerScore(player) + 2); //2 scores foram acrescidos na variбvel SendClientMessage(player, -1, "Vocк recebeu 2 scores por estar online"); } */ }
Код:
new PlayerTick[MAX_PLAYERS]; #define IsPlayerAfk(%0) (PlayerTick[%0]+1000 < GetTickCount()) public OnPlayerUpdate(playerid) { PlayerTick[playerid]=GetTickCount(); }