CMD:arvore1(playerid, params[])
{
if(PlayerDados[playerid][SLaranja] >= 1)
{
new Float: X,
Float: Y,
Float: Z;
GetPlayerPos(playerid, X, Y, Z);
SendClientMessage(playerid, AMARELO, "Бrvore de laranja plantada");
PPequeno = CreateObject(728, X, Y, Z, 0, 0, 0, 50);
SetTimer("PLARANJA", 5000, false);
}
return 1;
}
Se a funзгo PLARANJA usa a variбvel global PPequeno para manipular um objeto pelo ID que a variбvel armazena, saiba que deve ser esse o motivo do problema.
Ao executar o comando duas vezes seguidas, a variбvel PPequeno armazenaria no final o ID do objeto do segundo comando, fazendo com que o timer do primeiro atuasse no objeto do segundo e com que o objeto do primeiro nгo fosse afetado ![]() Uma soluзгo para isso seria criar uma array que armazenasse os IDs dos objetos e um timer exclusivo para cada objeto a ser manipulado. Para que nгo tivesse que fazer uma funзгo para cada timer, uma referкncia a cada objeto poderia ser passada a uma funзгo ъnica, sendo que seria um sistema com SetTimerEx. Espero ter ajudado ![]() |
new PlantandoLaranja[MAX_PLAYERS];
CMD:arvore1(playerid, params[]) { if(PlayerDados[playerid][SLaranja] >= 1) { if(PlantandoLaranja[playerid] >= 1) return SendClientMessage(playerid, -1, "Vocк jб estб plantando um pй de laranja."); new Float: X, Float: Y, Float: Z; GetPlayerPos(playerid, X, Y, Z); SendClientMessage(playerid, AMARELO, "Бrvore de laranja plantada"); PPequeno = CreateObject(728, X, Y, Z, 0, 0, 0, 50); PlantandoLaranja[playerid] = 1; SetTimer("PLARANJA", 5000, false); } return 1; }
PlantandoLaranja[playerid] = 0;
Topo do GM:
Код:
new PlantandoLaranja[MAX_PLAYERS]; Код:
CMD:arvore1(playerid, params[]) { if(PlayerDados[playerid][SLaranja] >= 1) { if(PlantandoLaranja[playerid] >= 1) return SendClientMessage(playerid, -1, "Vocк jб estб plantando um pй de laranja."); new Float: X, Float: Y, Float: Z; GetPlayerPos(playerid, X, Y, Z); SendClientMessage(playerid, AMARELO, "Бrvore de laranja plantada"); PPequeno = CreateObject(728, X, Y, Z, 0, 0, 0, 50); PlantandoLaranja[playerid] = 1; SetTimer("PLARANJA", 5000, false); } return 1; } Код:
PlantandoLaranja[playerid] = 0; |
Eu acho que vocк deveria usar uma variбvel para impedir o uso do comando antes do Timer
|
SetTimerEx("PLARANJA", 5000, false, "i", playerid);
Como o RJJ falou, use SetTimerEx filho. Ele estб GLOBAL, ou seja, se um player digitar ele, servirб para todos.
Topo PHP код:
pawn Код:
|
forward PLARANJA(playerid);
public PLARANJA(playerid)
{
new Float:x,Float:y,Float:z,Float:PposA;
GetPlayerFacingAngle(playerid, PposA);
x+= (3 * floatsin(-PposA, degrees));
y += (3 * floatcos(-PposA, degrees));
CreatePLaranja(x,y,z);
DestroyObject(PPequeno);
return 1;
}
stock CreatePLaranja(Float:x,Float:y,Float:z)
{
for(new i = 0; i < sizeof(Proxycords); i++)
{
if(Proxycords[i][Proxyarvore] == 0)
{
GetObjectPos(PPequeno, x , y , z);
Proxycords[i][Proxyarvore]=1;
Proxycords[i][ArvX]=x;
Proxycords[i][ArvY]=y;
Proxycords[i][ArvZ]=z;
Proxycords[i][ArvObject] = CreateObject(717, x, y, z-1.0,0,0,0,50);
return 1;
}
}
return 0;
}