03.07.2017, 14:59
(
Последний раз редактировалось renatog; 03.07.2017 в 16:49.
)
Sу usar GetTickCount ou gettime. Se vocк quiser, por exemplo, que a aзгo de bater seja executada apenas de um em um segundo, vocк pode fazer isso (fiz uma alteraзгo pra otimizar):
PHP код:
new lastTreeHit[MAX_PLAYERS] = {0, 0, 0, ...}; //variбvel pra controlar o tempo da ъltima vez que ele bateu na бrvore
Arvore_OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(PRESSED(KEY_FIRE)) //Como hб uma grande quantidade de telcas que chamam esta callback, vocк deve checar se o jogador apertou a tecla que vocк quer logo no inнcio para nгo desperdiзar processamento
{
if ((GetTickCount() - lastTreeHit[playerid]) > 1000) //Checa se jб passou 1 segundo
{
for(new i = 0; i < MAX_ARVORES; i++)
{
if(IsPlayerInRangeOfPoint(playerid, 1.0, Arvores[i][0], Arvores[i][1], Arvores[i][2]))
{
if(ArvoreVida[i] != 0)
{
lastTreeHit[playerid] = GetTickCount(); //Salva o tempo atual
Bateu[i]++;
ArvoreVida[i] -= 5;
PlayerPlaySound(playerid,1190,0.0,0.0,0.0);
if(Bateu[i] == 20 || ArvoreVida[i] <= 0)
{
MatarArvore(i);
Bateu[i] = 0;
pInfo[playerid][pMadeira] += 5;
GameTextForPlayer(playerid,"~w~+5 Madeiras",2500, 3);
SendClientMessage(playerid, -1, "Veja quantas madeiras / metais vocк tem use /metais");
}
} else {
SendClientMessage(playerid, 0xA3A3A3FF, "essa arvore jб foi cortada!!");
}
}
}
}
}
return 1;
}

