[Ajuda] Deletar
#1

Bom estou fazendo umas adpataзхes em um FS que peguei da net, que vocк cria e pode mover objetos com o mouse, mas estou tendo dificuldades em criar um comando para deletar o objeto criado pelo cmd que cria o mesmo...
Код:
COMMAND:objeto(playerid, params[])
{
    new oid,myobject;
        if (!sscanf(params, "i",oid ))
        {
                new string[128];
                new Float:x, Float:y, Float:z;
        GetPlayerPos(playerid, x, y, z);
            myobject = CreateObject(oid, x+2, y+2, z+2, 0.0, 0.0, 90.0);
            format(string, sizeof(string), "| OBJETO | {FFFFFF}Objeto Criado com sucesso ID: %d || Coordanadas:(%d,%f,%f,%f,0.0,0.0,90.0)",myobject,oid,x,y,z);
            SendClientMessage(playerid, -1,string);
            objectmodel[myobject]=oid;
                objects++;
            return 1;
        }
        else
        {
            SendClientMessage(playerid, -1,"| OBJETO | Use: /Objeto [ID do Objeto]");
            SendClientMessage(playerid, -1,"| AVISO | O uso de ID incorreto pode acarretar em Crash.");
            return 1;
        }
}
Outra coisa quando crio 1 objeto ele diz que o objeto й o ID 53 ao invйs de ser ID 1 ai da o cmd e cria o segundo ai ele seria ID 2, mas ele comeзa no ID 53, se eu criar trкs ai vai ser ID 53 ID 54 ID 55, acho que deu pra entender.
Entгo queria um CMD para deletar o objeto criado, mas um cmd que possa deletar um por um pelo ID que ele representa.
Ex: /Deletar [ID do objeto criado]
Alguйm pode ajudar?
Reply
#2

dб-te o ID 53 no objeto criado porque o servidor jб lб tem objetos atй ao 52, por isso usar o myobject para o indice do array nao deve dar lб grande jeito. Se calhar era melhor substituires, mas tudo depende do FS, o melhor seria mesmo criares um novo array auxiliar para fazer isso.

objectmodel[myobject]=oid;
por
objectmodel[objects]=myobject;

e depois no eliminar usas a funзгo DestroyObject(objectmodel[id]);
Reply
#3

Mudei:
Quote:

objectmodel[myobject]=oid;
por
objectmodel[objects]=myobject;

E ainda tб aparecendo ID 53
-
Coloquei:
Quote:

COMMANDbjetodeletar(playerid, params[])
{
new oid;
DestroyObject(objectmodel[oid]);
SendClientMessage(playerid, -1,"| OBJETO | Objetos deletados com sucesso");
return 1;
}

Estб deletando apenas o 1° objeto criado pelo CMD, nгo funciona em: /ObjeroDeletar [ID do objeto criado]
Reply
#4

Whoo funcionou perfeitamente, poderia terminar de me ajudar via Mensagem privada, tem outros cmds que tem q adaptar.
Reply
#5

Alguйm poderia da um help, o comando do Whoo ali em cima estб funcionando certinho, mas com isso esses 3 cmd pararam de funcionar.
-
Aqui nгo estб funcionando a funзгo do EditObject
PHP код:
COMMAND:objetoeditar(playeridparams[])
{
    new 
oid;
        if (!
sscanf(params"i",oid ))
        {
            
EditObject(playeridoid);
            return 
1;
        }else{
SendClientMessage(playeridSTR,"| OBJETO | /ObjetoEditar [ID do Objeto criado]");SendClientMessage(playerid,STR,"| AVISO | Use: /ObjetoLista Para ver o ID dos Objetos criados!"); return 1;}
}
-
public 
OnPlayerEditObject(playeridplayerobjectobjectidresponseFloat:fXFloat:fYFloat:fZFloat:fRotXFloat:fRotYFloat:fRotZ)
{
    if(
response == EDIT_RESPONSE_FINAL)
        {
        
SetObjectPos(objectid,fX,fY,fZ);
        
SetObjectRot(objectid,fRotX,fRotY,fRotZ);
        
SendClientMessage(playeridSTR,"Object Saved");
        return 
1;
        }
        return 
1;
    } 
Esse nгo estб aparecendo o ID e as coordenadas certas dos objetos.
PHP код:
COMMAND:objetolista(playeridparams[])
{
        
SendClientMessage(playerid, -1,"~~~~~~~~~~~~ Lista de Objetos ~~~~~~~~~~~~ ");
    for(new 
1<=500i++)
    {
        new 
stringg[128];
        new 
Float:RotX,Float:RotY,Float:RotZ;
                
GetObjectRot(iRotXRotYRotZ);
                new 
Float:xoFloat:yoFloat:zo;
                
GetObjectPos(ixoyozo);
                if(
xo!=&& yo!=&& zo!=0)
                {
                
format(stringgsizeof(stringg), "| OBJETO | ID:%d - Coordenadas: (%d,%f,%f,%f,%f,%f,%f);",i,objectmodel[i],xo,yo,zo,RotX,RotY,RotZ);
                
SendClientMessage(playeridSTR,stringg);
                }
    }
    
SendClientMessage(playerid, -1,"~~~~~~~~~~~~ Lista de Objetos ~~~~~~~~~~~~");
    return 
1;

Quando dou /ObjetoIr [ID] ele tб teleportando para um lugar em LS na fazenda. outra, se eu colocar ID: 100 ele teleporta, teria q ter uma funзгo para detectar que o ID й invalido
PHP код:
COMMAND:objetoir(playeridparams[])
{
    new 
oid;
        if (!
sscanf(params"i",oid ))
        {
            new 
Float:xoFloat:yoFloat:zo;
                
GetObjectPos(oidxoyozo);
                
SetPlayerPos(playerid,xo+1,yo+1,zo+1);
                return 
1;
        }else{
SendClientMessage(playerid,STR,"| OBJETO | /ObjetoIR [ID do Objeto criado]"); return 1;}

Reply
#6

vocк tem que usar as variбveis que armazena os objetos .
PHP код:
new
    
object_created[100],
    
object_count
;
COMMAND:cobjeto(playeridparams[])
{
    new
        
object_id,
        
string[128],
        
Float:_Pos[3]
    ;
    if( 
sscanfparams"i"object_id ) )
    return 
SendClientMessage(playerid, -1,"| OBJETO | Use: /Objeto [ID do Objeto]"),
    
SendClientMessage(playerid, -1,"| AVISO | O uso de ID incorreto pode acarretar em Crash.");
    
GetPlayerPos(playerid_Pos[0], _Pos[1], _Pos[2]);
    
object_count++;
    
object_created[object_count] = CreateObject(object_id_Pos[0]+2_Pos[1]+2_Pos[2], 0.00.090.0);
    
format(stringsizeof(string), "| OBJETO | {FFFFFF}Objeto Criado com sucesso ID: %d || Coordanadas:(%d,%f,%f,%f,0.0,0.0,90.0)"object_countobject_id_Pos[0], _Pos[1], _Pos[2]);
    
SendClientMessage(playerid, -1,string);
    return 
1;
}
COMMAND:dellall(playeridparams[])
{
    if( 
object_count ) return SendClientMessage(playerid, -1,"| OBJETO | nгo existe objetos criados.");
    for(new 
oobject_counto++) DestroyObject(object_created[o]); SendClientMessage(playerid, -1,"| OBJETO | Objectos apagados.");
    
object_count 0;
    return 
1;
}
COMMAND:deletarobj(playeridparams[])
{
    new
        
object_id
    
;
    if(
sscanf(params"d"object_id))
    return 
SendClientMessage(playerid, -1,"| OBJETO | Use: /deletarobj [ID do Objeto]");
    if( 
object_id object_count || object_count 1)
    return 
SendClientMessage(playerid,-1,"| OBJETO | ID invalido ou nгo existe objetos criados");
    
DestroyObject(object_created[object_id]);
    
SendClientMessage(playerid, -1,"| OBJETO | Objetos deletados com sucesso");
    return 
1;
}
COMMAND:objetoeditar(playeridparams[])
{
    new 
object_id;
    if (
sscanf(params"i"object_id ))
    return 
SendClientMessage(playerid, -1,"| OBJETO | /ObjetoEditar [ID do Objeto criado]"),
    
SendClientMessage(playerid, -1,"| AVISO | Use: /ObjetoLista Para ver o ID dos Objetos criados!");
    if( 
object_id object_count || object_count 1)
    return 
SendClientMessage(playerid,-1,"| OBJETO | ID invalido ou nгo existe objetos criados");
    
EditObject(playeridobject_created[object_id]);
    return 
1;
}
COMMAND:objetolista(playeridparams[])
{
    new
        
stringg[128],
        
Float:_RotPos[3],
        
Float:_Pos[3],
        
object
    
;
    
    
SendClientMessage(playerid, -1,"~~~~~~~~~~~~ Lista de Objetos ~~~~~~~~~~~~ ");
    for(new 
object_counti++)
    {
        
GetObjectRotobject_created[i], _RotPos[0], _RotPos[1], _RotPos[2] );
        
GetObjectPosobject_created[i], _Pos[0], _Pos[1], _Pos[2] );
        if(
object_count 0)
        {
            
format(stringgsizeof(stringg), "| OBJETO | ID:%d - Coordenadas: ( %f, %f, %f, %f, %f, %f);",object_created[i], _Pos[0], _Pos[1], _Pos[2], _RotPos[0], _RotPos[1], _RotPos[2] );
            
SendClientMessage(playerid, -1stringg);
            
object++;
        }
    }
    if(
object 1) return SendClientMessage(playerid, -1,"Nгo existe objetos criados.");
    
SendClientMessage(playerid, -1,"~~~~~~~~~~~~ Lista de Objetos ~~~~~~~~~~~~");
    return 
1;
}
COMMAND:objetoir(playeridparams[])
{
    new
        
object_id,
        
Float:_Pos[3]
    ;
    if( 
sscanfparams"i"object_id  ) )
    return 
SendClientMessage(playerid,-1,"| OBJETO | /ObjetoIR [ID do Objeto criado]");
    if( 
object_id object_count || object_id 1)
    return 
SendClientMessage(playerid,-1,"| OBJETO | ID invalido ou nгo existe objetos criados");
    
GetObjectPosobject_created[object_id], _Pos[0], _Pos[1], _Pos[2] );
    
SetPlayerPosplayerid_Pos[0]+1_Pos[1]+1_Pos[2]+);
    return 
1;
}
public 
OnPlayerEditObject(playeridplayerobjectobjectidresponseFloat:fXFloat:fYFloat:fZFloat:fRotXFloat:fRotYFloat:fRotZ)
{
    if(
response == EDIT_RESPONSE_FINAL)
    {
        
SetObjectPosobjectidfXfYfZ);
        
SetObjectRotobjectidfRotXfRotYfRotZ );
        
SendClientMessageplayerid, -1,"Object Saved" );
        return 
1;
    }
    return 
1;

Reply
#7

Whoo, Em,
/ObjetoIR ele nгo estб teleportando no objeto ID:0, sу no 1/2/3 etc
E se eu coloco < 0 em:
PHP код:
if( object_id object_count || object_id 0
Ele teleporta para fazenda ao colocar id de um objeto que nгo foi criado ainda.
-
No /ObjetoLista
Ele estб mostrando a partir do ID 53, e com as coordenadas erradas.

Mexi mais nгo consegui arrumar
Reply
#8

Quote:
Originally Posted by Stroon
Посмотреть сообщение
Whoo, Em,
/ObjetoIR ele nгo estб teleportando no objeto ID:0, sу no 1/2/3 etc
E se eu coloco < 0 em:
PHP код:
if( object_id object_count || object_id 0
Ele teleporta para fazenda ao colocar id de um objeto que nгo foi criado ainda.
-
No /ObjetoLista
Ele estб mostrando a partir do ID 53, e com as coordenadas erradas.

Mexi mais nгo consegui arrumar
dei edit no cуdigo acima, os ids sao contados do 1 pra cima nгo й criado objeto no id 0.. id 0 й null
Reply
#9

- | - | -
Reply
#10

o cуdigo que fiz esta funcionando normal, acredito que seja conflito ou vocк esta adaptando errado.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)