Problema ainda persistindo... -
SkullFire - 12.06.2014
Bom, eu tinha atй abandonado um script que eu estava tentando desenvolver por causa de um problema em um comando.Jб fiz alguns tуpicos sobre o assunto aqui e alguns me responderam, mas acabou que nгo cheguei a nenhuma conclusгo.Atй que tentei fazer o comando por cima de um FS de minas que nem sei de quem й ...Falando do problema, й o seguinte, o problema й que quando eu digito o comando /arvore1 e espero o timer, planta e "cresce" de boa . Agora se eu digitar o comando /arvore1 consecutivamente antes do timer, apenas a ultima arvore cresce. As outras que eu digitei primeiro, fica apenas o objeto criado antes do timer .
Cуdigo:
PHP код:
#define MAX_AL 1000
PHP код:
enum PLaranja
{
Proxymine,
Float:MineX,
Float:MineY,
Float:MineZ,
MineObject,
MineObject2[32]
}
PHP код:
new Proxycords[MAX_AL][PLaranja];
PHP код:
CMD:arvore1(playerid, params[])
{
new Float: X,
Float: Y,
Float: Z;
GetPlayerPos(playerid, X, Y, Z);
SendClientMessage(playerid, AMARELO, "Бrvore de laranja plantada");
Proxycords[playerid][MineObject2] = CreateObject(728, X, Y, Z, 0, 0, 0, 50);
SetTimerEx("PLARANJA", 5000,false,"i",playerid);
return 1;
}
PHP код:
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));
GetObjectPos(Proxycords[playerid][MineObject2] , x , y , z);
CreatePLaranja(x,y,z);
DestroyObject(Proxycords[playerid][MineObject2]);
return 1;
}
PHP код:
stock CreatePLaranja(Float:x,Float:y,Float:z)
{
for(new i = 0; i < sizeof(Proxycords); i++)
{
if(Proxycords[i][Proxymine] == 0)
{
Proxycords[i][Proxymine]=1;
Proxycords[i][MineX]=x;
Proxycords[i][MineY]=y;
Proxycords[i][MineZ]=z;
Proxycords[i][MineObject] = CreateObject(717, x, y, z-1.0,0,0,0,50);
return 1;
}
}
return 0;
}
Re: Problema ainda persistindo... -
Stronda xD - 12.06.2014
Isso acontece porque vocк usa apenas 1 variбvel(
Proxycords[playerid][MineObject2]), quando uma arvore й criado ela й redefinida ou seja, as outras criados anteriormente que nгo cresceram sгo "
apagadas" de sua variбvel e apenas a ultima continua ativa, minha sugestгo seria limitar o nъmero de бrvores, ex 10:
pawn Код:
#define ArvoreID 10
enum PLaranja
{
ArvoreCriada,
Proxymine,
Float:MineX,
Float:MineY,
Float:MineZ,
MineObject,
MineObject2[32]
}
new Proxycords[MAX_AL][ArvoreID][PLaranja];
CMD:arvore1(playerid, params[])
{
new Float: X,
Float: Y,
Float: Z,
disponivel; disponivel = 0;
GetPlayerPos(playerid, X, Y, Z);
for(new i = 0; i < ArvoreID; i++)
{
if(Proxycords[playerid][i][ArvoreCriada] == 0 && disponivel == 0)
{
disponivel = 1;
Proxycords[playerid][i][ArvoreCriada] = 1;
Proxycords[playerid][i][MineObject2] = CreateObject(728, X, Y, Z, 0, 0, 0, 50);
}
}
if(disponivel == 1)
{
SendClientMessage(playerid, AMARELO, "Бrvore de laranja plantada");
}
SetTimerEx("PLARANJA", 5000,false,"i",playerid);
return 1;
}
forward PLARANJA(playerid);
public PLARANJA(playerid)
{
for(new i = 0; i < ArvoreID; i++)
{
new Float:x,Float:y,Float:z,Float:PposA;
GetPlayerFacingAngle(playerid, PposA);
x+= (3 * floatsin(-PposA, degrees));
y += (3 * floatcos(-PposA, degrees));
GetObjectPos(Proxycords[playerid][i][MineObject2] , x , y , z);
CreatePLaranja(x,y,z);
DestroyObject(Proxycords[playerid][i][MineObject2]);
return 1;
}
}
stock CreatePLaranja(Float:x,Float:y,Float:z)
{
for(new i = 0; i < sizeof(Proxycords); i++)
{
for(new is = 0; is < ArvoreID; is++)
{
if(Proxycords[i][is][Proxymine] == 0)
{
Proxycords[i][is][Proxymine] =1;
Proxycords[i][is][MineX] = x;
Proxycords[i][is][MineY] = y;
Proxycords[i][is][MineZ] = z;
Proxycords[i][is][MineObject] = CreateObject(717, x, y, z-1.0,0,0,0,50);
return 1;
}
}
}
return 0;
}
Ou limitar para apenas 1 бrvore
pawn Код:
enum PLaranja
{
ArvoreCriada,
Proxymine,
Float:MineX,
Float:MineY,
Float:MineZ,
MineObject,
MineObject2[32]
}
new Proxycords[MAX_AL][PLaranja];
CMD:arvore1(playerid, params[])
{
new Float: X,
Float: Y,
Float: Z;
GetPlayerPos(playerid, X, Y, Z);
if(Proxycords[playerid][ArvoreCriada] == 0)
{
Proxycords[playerid][ArvoreCriada] = 1;
Proxycords[playerid][MineObject2] = CreateObject(728, X, Y, Z, 0, 0, 0, 50);
SendClientMessage(playerid, AMARELO, "Бrvore de laranja plantada");
SetTimerEx("PLARANJA", 5000,false,"i",playerid);
}
else
{
SendClientMessage(playerid, AMARELO, "Vocк jб plantou uma бrvore");
}
return 1;
}
forward PLARANJA(playerid);
public PLARANJA(playerid)
{
if(Proxycords[playerid][ArvoreCriada] == 1)
{
new Float:x,Float:y,Float:z,Float:PposA;
GetPlayerFacingAngle(playerid, PposA);
x+= (3 * floatsin(-PposA, degrees));
y += (3 * floatcos(-PposA, degrees));
GetObjectPos(Proxycords[playerid][MineObject2] , x , y , z);
CreatePLaranja(x,y,z);
DestroyObject(Proxycords[playerid][MineObject2]);
return 1;
}
}
stock CreatePLaranja(Float:x,Float:y,Float:z)
{
for(new i = 0; i < sizeof(Proxycords); i++)
{
if(Proxycords[i][Proxymine] == 0 && Proxycords[i][ArvoreCriada] == 1)
{
Proxycords[i][Proxymine] =1;
Proxycords[i][MineX] = x;
Proxycords[i][MineY] = y;
Proxycords[i][MineZ] = z;
Proxycords[i][MineObject] = CreateObject(717, x, y, z-1.0,0,0,0,50);
return 1;
}
}
return 0;
}