Portal SAMP
[Ajuda] Problemas com DestroyDynamicObject - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Problemas com DestroyDynamicObject (/showthread.php?tid=4462)



Problemas com DestroyDynamicObject - Notknown - 24/01/2024

Estou com um sistema que, quando eu entro no checkpoint, ele seta um objeto dentro do carro.
Mas aí, quando é para "descarregar" esse objeto utilizando o DestroyDynamicObject ele não funciona, o objeto permanece, porém, quando eu crio outro veículo com mesmo id, esse objeto some.
Código:
public OnPlayerEnterCheckpoint(playerid)
{
    new caixao = CreateDynamicObject(19339, 0.0, 0.0, 0.0, 0.0, 0.0, 96.0);
    new vehicleid = GetPlayerVehicleID(playerid);
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 442)
    {
        if(JobStatus[playerid] == 1)
        {
            if(IsPlayerInLosSantos(playerid))
            {
                JobStatus[playerid] = 2;
                AttachDynamicObjectToVehicle(caixao, vehicleid, 0.0000, -1.7299, 0.2700, 360.0000, 0.0000, 270.2000);
                   CheckPoinTS[0] = SetPlayerCheckpoint(playerid, 920.3161, -1103.0944, 24.2883, 5.0);
                  ShowLegendaForPlayer(playerid, "~w~Leve o Caixao ate o ~r~CEMITERIO", 5000);
            }
            else if (IsPlayerInSanFierro(playerid))
            {
                 JobStatus[playerid] = 2;
                   AttachDynamicObjectToVehicle(caixao, vehicleid, 0.0000, -1.7299, 0.2700, 360.0000, 0.0000, 270.2000);
                   CheckPoinTS[4] = SetPlayerCheckpoint(playerid, -2532.3445,-19.1102,16.4219, 5.0);
                  ShowLegendaForPlayer(playerid, "~w~Leve o Caixao ate o ~r~CEMITERIO", 5000);
              }
                 else if (IsPlayerInLasVenturas(playerid))
            {
                 JobStatus[playerid] = 2;
                 AttachDynamicObjectToVehicle(caixao, vehicleid, 0.0000, -1.7299, 0.2700, 360.0000, 0.0000, 270.2000);
                CheckPoinTS[5] = SetPlayerCheckpoint(playerid, 1544.0962,750.8088,10.8279, 5.0);
                ShowLegendaForPlayer(playerid, "~w~Leve o Caixao ate o ~r~'CREMATORIO'", 5000);
            }
        }
        else
        {
            new Rotas = random(sizeof(RandomLocateLS));
            new Rotas2 = random(sizeof(RandomLocateSF));
            new Rotas3 = random(sizeof(RandomLocateLV));
           
            if(IsPlayerInLosSantos(playerid))
            {
                JobStatus[playerid] = 1;
                DestroyDynamicObject(caixao);
                ATC_GivePlayerCash2(playerid, 12250);
                ATC_GivePlayerXp(playerid, 30);
                CheckPoinTS[0] = DisablePlayerCheckpoint(playerid);
                CheckPoinTS[1] = SetPlayerCheckpoint(playerid, RandomLocateLS[Rotas][0], RandomLocateLS[Rotas][1], RandomLocateLS[Rotas][2], 5.0);
            }
            else if (IsPlayerInSanFierro(playerid))
            {
                JobStatus[playerid] = 1;
                DestroyDynamicObject(caixao);
                ATC_GivePlayerCash2(playerid, 12550);
                ATC_GivePlayerXp(playerid, 35);
                CheckPoinTS[0] = DisablePlayerCheckpoint(playerid);
                CheckPoinTS[2] = SetPlayerCheckpoint(playerid, RandomLocateSF[Rotas2][0], RandomLocateSF[Rotas2][1], RandomLocateSF[Rotas2][2], 5.0);
            }
               else if (IsPlayerInLasVenturas(playerid))
            {
                   JobStatus[playerid] = 1;
                DestroyDynamicObject(caixao);
                ATC_GivePlayerCash2(playerid, 12750);
                ATC_GivePlayerXp(playerid, 40);
                CheckPoinTS[0] = DisablePlayerCheckpoint(playerid);
                CheckPoinTS[4] = SetPlayerCheckpoint(playerid, RandomLocateLV[Rotas3][0], RandomLocateLV[Rotas3][1], RandomLocateLV[Rotas3][2], 5.0);
            }
        }
    }
}



RE: Problemas com DestroyDynamicObject - xbruno1000x - 24/01/2024

A variável sendo criada dessa maneira não vai servir como índice para puxar o id do objeto e deletar.

Cria uma global por player e substitui em tudo
Código:
new caixao[MAX_PLAYERS];



RE: Problemas com DestroyDynamicObject - Notknown - 24/01/2024

(24/01/2024 22:27)xbruno1000x Escreveu: A variável sendo criada dessa maneira não vai servir como índice para puxar o id do objeto e deletar.

Cria uma global por player e substitui em tudo
Código:
new caixao[MAX_PLAYERS];

Eu fiz isso, porém ainda sim continua o mesmo bug, o objeto não está sendo destruído. Poderia me mandar um exemplo melhor,  por favor? Porque acho que estou fazendo algo de errado, eu já procurei se alguém já passou por esse mesmo problema e não encontrei nada


RE: Problemas com DestroyDynamicObject - Carlos Victor - 24/01/2024

Código PHP:
new caixao[MAX_VEHICLES];

public 
OnPlayerEnterCheckpoint(playerid)
{    
    new 
vehicleid GetPlayerVehicleID(playerid);

    if(
IsValidDynamicObject(caixao[vehicleid]))
        
DestroyDynamicObject(caixao[vehicleid]);

    new 
caixao[vehicleid] = CreateDynamicObject(193390.00.00.00.00.096.0);
    if(
GetVehicleModel(GetPlayerVehicleID(playerid)) == 442)
    {
        if(
JobStatus[playerid] == 1)
        {
            if(
IsPlayerInLosSantos(playerid))
            {
                
JobStatus[playerid] = 2;
                
AttachDynamicObjectToVehicle(caixao[vehicleid], vehicleid0.0000, -1.72990.2700360.00000.0000270.2000);
                   
CheckPoinTS[0] = SetPlayerCheckpoint(playerid920.3161, -1103.094424.28835.0);
                  
ShowLegendaForPlayer(playerid"~w~Leve o Caixao ate o ~r~CEMITERIO"5000);
            }
            else if (
IsPlayerInSanFierro(playerid))
            {
                 
JobStatus[playerid] = 2;
                   
AttachDynamicObjectToVehicle(caixao[vehicleid], vehicleid0.0000, -1.72990.2700360.00000.0000270.2000);
                   
CheckPoinTS[4] = SetPlayerCheckpoint(playerid, -2532.3445,-19.1102,16.42195.0);
                  
ShowLegendaForPlayer(playerid"~w~Leve o Caixao ate o ~r~CEMITERIO"5000);
              }
                 else if (
IsPlayerInLasVenturas(playerid))
            {
                 
JobStatus[playerid] = 2;
                 
AttachDynamicObjectToVehicle(caixao[vheicleid], vehicleid0.0000, -1.72990.2700360.00000.0000270.2000);
                
CheckPoinTS[5] = SetPlayerCheckpoint(playerid1544.0962,750.8088,10.82795.0);
                
ShowLegendaForPlayer(playerid"~w~Leve o Caixao ate o ~r~'CREMATORIO'"5000);
            }
        }
        else
        {
            new 
Rotas random(sizeof(RandomLocateLS));
            new 
Rotas2 random(sizeof(RandomLocateSF));
            new 
Rotas3 random(sizeof(RandomLocateLV));
           
            if(
IsPlayerInLosSantos(playerid))
            {
                
JobStatus[playerid] = 1;

                if(
IsValidDynamicObject(caixao[vehicleid]))
                    
DestroyDynamicObject(caixao[vehicleid]);

                
ATC_GivePlayerCash2(playerid12250);
                
ATC_GivePlayerXp(playerid30);
                
CheckPoinTS[0] = DisablePlayerCheckpoint(playerid);
                
CheckPoinTS[1] = SetPlayerCheckpoint(playeridRandomLocateLS[Rotas][0], RandomLocateLS[Rotas][1], RandomLocateLS[Rotas][2], 5.0);
            }
            else if (
IsPlayerInSanFierro(playerid))
            {
                
JobStatus[playerid] = 1;
                
                if(
IsValidDynamicObject(caixao[vehicleid]))
                    
DestroyDynamicObject(caixao[vehicleid]);

                
ATC_GivePlayerCash2(playerid12550);
                
ATC_GivePlayerXp(playerid35);
                
CheckPoinTS[0] = DisablePlayerCheckpoint(playerid);
                
CheckPoinTS[2] = SetPlayerCheckpoint(playeridRandomLocateSF[Rotas2][0], RandomLocateSF[Rotas2][1], RandomLocateSF[Rotas2][2], 5.0);
            }
               else if (
IsPlayerInLasVenturas(playerid))
            {
                   
JobStatus[playerid] = 1;
                
                if(
IsValidDynamicObject(caixao[vehicleid]))
                    
DestroyDynamicObject(caixao[vehicleid]);

                
ATC_GivePlayerCash2(playerid12750);
                
ATC_GivePlayerXp(playerid40);
                
CheckPoinTS[0] = DisablePlayerCheckpoint(playerid);
                
CheckPoinTS[4] = SetPlayerCheckpoint(playeridRandomLocateLV[Rotas3][0], RandomLocateLV[Rotas3][1], RandomLocateLV[Rotas3][2], 5.0);
            }
        }
    }

Tenta dessa forma.


RE: Problemas com DestroyDynamicObject - Notknown - 24/01/2024

(24/01/2024 23:34)Carlos Victor Escreveu:
Código PHP:
new caixao[MAX_VEHICLES];

public 
OnPlayerEnterCheckpoint(playerid)
{
    
    
new vehicleid GetPlayerVehicleID(playerid);

    if(IsValidDynamicObject(caixao[vehicleid]))
        DestroyDynamicObject(caixao[vehicleid]);

    new caixao[vehicleid] = CreateDynamicObject(193390.00.00.00.00.096.0);
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 442)
    {
        if(JobStatus[playerid] == 1)
        {
            if(IsPlayerInLosSantos(playerid))
            {
                JobStatus[playerid] = 2;
                AttachDynamicObjectToVehicle(caixao[vehicleid], vehicleid0.0000, -1.72990.2700360.00000.0000270.2000);
                   CheckPoinTS[0] = SetPlayerCheckpoint(playerid920.3161, -1103.094424.28835.0);
                  ShowLegendaForPlayer(playerid"~w~Leve o Caixao ate o ~r~CEMITERIO"5000);
            }
            else if (IsPlayerInSanFierro(playerid))
            {
                 JobStatus[playerid] = 2;
                   AttachDynamicObjectToVehicle(caixao[vehicleid], vehicleid0.0000, -1.72990.2700360.00000.0000270.2000);
                   CheckPoinTS[4] = SetPlayerCheckpoint(playerid, -2532.3445,-19.1102,16.42195.0);
                  ShowLegendaForPlayer(playerid"~w~Leve o Caixao ate o ~r~CEMITERIO"5000);
              }
                 else if (IsPlayerInLasVenturas(playerid))
            {
                 JobStatus[playerid] = 2;
                 AttachDynamicObjectToVehicle(caixao[vheicleid], vehicleid0.0000, -1.72990.2700360.00000.0000270.2000);
                CheckPoinTS[5] = SetPlayerCheckpoint(playerid1544.0962,750.8088,10.82795.0);
                ShowLegendaForPlayer(playerid"~w~Leve o Caixao ate o ~r~'CREMATORIO'"5000);
            }
        }
        else
        {
            new Rotas random(sizeof(RandomLocateLS));
            new Rotas2 random(sizeof(RandomLocateSF));
            new Rotas3 random(sizeof(RandomLocateLV));
           
            
if(IsPlayerInLosSantos(playerid))
            {
                JobStatus[playerid] = 1;

                if(IsValidDynamicObject(caixao[vehicleid]))
                    DestroyDynamicObject(caixao[vehicleid]);

                ATC_GivePlayerCash2(playerid12250);
                ATC_GivePlayerXp(playerid30);
                CheckPoinTS[0] = DisablePlayerCheckpoint(playerid);
                CheckPoinTS[1] = SetPlayerCheckpoint(playeridRandomLocateLS[Rotas][0], RandomLocateLS[Rotas][1], RandomLocateLS[Rotas][2], 5.0);
            }
            else if (IsPlayerInSanFierro(playerid))
            {
                JobStatus[playerid] = 1;
                
                
if(IsValidDynamicObject(caixao[vehicleid]))
                    DestroyDynamicObject(caixao[vehicleid]);

                ATC_GivePlayerCash2(playerid12550);
                ATC_GivePlayerXp(playerid35);
                CheckPoinTS[0] = DisablePlayerCheckpoint(playerid);
                CheckPoinTS[2] = SetPlayerCheckpoint(playeridRandomLocateSF[Rotas2][0], RandomLocateSF[Rotas2][1], RandomLocateSF[Rotas2][2], 5.0);
            }
               else if (IsPlayerInLasVenturas(playerid))
            {
                   JobStatus[playerid] = 1;
                
                
if(IsValidDynamicObject(caixao[vehicleid]))
                    DestroyDynamicObject(caixao[vehicleid]);

                ATC_GivePlayerCash2(playerid12750);
                ATC_GivePlayerXp(playerid40);
                CheckPoinTS[0] = DisablePlayerCheckpoint(playerid);
                CheckPoinTS[4] = SetPlayerCheckpoint(playeridRandomLocateLV[Rotas3][0], RandomLocateLV[Rotas3][1], RandomLocateLV[Rotas3][2], 5.0);
            }
        }
    }

Tenta dessa forma.

muito obrigado você me ajudou muito com essa, funcionou perfeitamente