[Ajuda] Problema ainda persistindo...
#1

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(playeridparams[])
{
        new    
FloatX,
        
FloatY,
        
FloatZ;
        
GetPlayerPos(playeridXYZ);
        
SendClientMessage(playeridAMARELO"Бrvore de laranja plantada");
        
Proxycords[playerid][MineObject2] = CreateObject(728XYZ00050);
        
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(playeridPposA);
    
x+= (floatsin(-PposAdegrees));
    
+= (floatcos(-PposAdegrees));
    
    
GetObjectPos(Proxycords[playerid][MineObject2] , z);
    
CreatePLaranja(x,y,z);
    
DestroyObject(Proxycords[playerid][MineObject2]);
    return 
1;

PHP код:
stock CreatePLaranja(Float:x,Float:y,Float:z)
{
    for(new 
0sizeof(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(717xyz-1.0,0,0,0,50);
            return 
1;
        }
    }
    return 
0;

Reply
#2

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;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)