Airdrop Problem.

Započeo pokerface
28. Okt. 2019.
629
pregleda
6
postova
Chuffy
4
Made Man
28. Okt. 2019.
Problem(error/warning): Glup sam da otkrijem gdje je problem. Naime, kada pritisnem tipku F objekt se ne uništava, a inaće objekt kad sleti kreira dva ista iz nekoga razloga.
Dio skripte:
public OnObjectMoved(objectid)
{
switch(GetObjectModel(objectid))
{
    case 1681:
    {
        // Avion, kreiraj ga i unisti.
        foreach(new i : SupplyDrops)
        {
            if(SupplyData == objectid)
            {
                DestroyObject(SupplyData);
                SupplyData = -1;
                break;
            }
        }
    }

case 2975:
{
        // ovo je kutija ili drop, provjeri dali je kreiraj i unisti.
        foreach(new i : SupplyDrops)
        {
            if(SupplyData == objectid)
            {
                new Float: x, Float: y, Float: z;

                GetObjectPos(objectid, x, y, z);
                SupplyData = CreateDynamicObject(2975, x, y, z-0.1, 0, 0, 0, -1, -1, -1, 210.0, 0.0);
               
                SupplyData = Create3DTextLabel("Supply Package\n(Press F to unpack)", -1, x, y, z+0.1, 40.0, 0, 0);

                DestroyObject(SupplyData); SupplyData = -1;
                SupplyData = SetTimerEx("RemoveDrop", DROP_LIFE * 60000, false, "i", i);

                if(IsPlayerConnected(SupplyData)) SendClientMessage(SupplyData, 0x3498DBFF, "SUPPLY DROP: {FFFFFF}Drop complete.");
                break;
            }
        }
        }
    }

    return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(newkeys & KEY_SECONDARY_ATTACK)
{
    foreach(new i : SupplyDrops)
{
      new obb = SupplyData;
  if(IsValidDynamicObject(obb))
{
new Float:oX, Float:oY, Float:oZ;
GetDynamicObjectPos(obb,oX, oY, oZ);
if(IsPlayerInRangeOfPoint(playerid, 5, oX, oY, oZ))
{
DestroyDynamicObject(SupplyData);
    SupplyData = -1;

Delete3DTextLabel(SupplyData);
KillTimer(SupplyData);

SupplyData = SupplyData = -1;
SupplyData = Text3D: -1;

SendClientMessage(playerid, 0xFF9900AA, "* You're equipped from package containing:  Desert Deagle (120 ammo), Shotgun (80 ammo).");
GivePlayerWeapon(playerid, 24, 120); GivePlayerWeapon(playerid, 25, 80);

new next;
Iter_SafeRemove(SupplyDrops, i, next);
break;
}
}
}
}
return 1;
}

Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): [ code ]vaš odgovor[ /code ]
Slika/video ingame problema(obavezno ako je ingame problem): link slike
Chuffy
4
Made Man
28. Okt. 2019.
I zaboravio sam da napomenem. U trenutku kada pritisnem tipku F jedan objekt od tih dva ista se uništi a onda ostale taj jedan isti.
Danisoni
5
Godfather
28. Okt. 2019.
1. Koristiš OnObjectMoved, dakle koristiš obične objekte (CreateObject, MoveObject), a dole na F provjeravaš dinamične.
2. Kreiraš novi objekat pod OnObjectMoved, i zato ti se kreiraju dva objekta, OnObjectMoved ne uništava objekat, samo poziva callback da je MoveObject završen, ako želiš nešto da učiniš sa njime.

Riješenja:
1. Ako koristiš dinamične objekte, callback je OnDynamicObjectMoved.
2. if(SupplyData == objectid) ti je provjera na kraju micanja, a kreiraš taj objekat, probaj provjeru zamjeniti is boxObj u paraObj jer taj i uništavaš.


Ovdje sam gledao samo da odgovorim na taj problem što imaš, nisam gledao suštinski kod i da li ćeš mimo toga imati koji problem u sistemu, ali se da riješiti kada se riješi i to sa objektima.
Chuffy
4
Made Man
28. Okt. 2019.
Hvala na odgovoru, pokušati ću sutra pa javim rezultate.
Chuffy
4
Made Man
29. Okt. 2019.
Slade wrote on October 28, 2019, 8:00 pm:
1. Koristiš OnObjectMoved, dakle koristiš obične objekte (CreateObject, MoveObject), a dole na F provjeravaš dinamične.
2. Kreiraš novi objekat pod OnObjectMoved, i zato ti se kreiraju dva objekta, OnObjectMoved ne uništava objekat, samo poziva callback da je MoveObject završen, ako želiš nešto da učiniš sa njime.

Riješenja:
1. Ako koristiš dinamične objekte, callback je OnDynamicObjectMoved.
2. if(SupplyData == objectid) ti je provjera na kraju micanja, a kreiraš taj objekat, probaj provjeru zamjeniti is boxObj u paraObj jer taj i uništavaš.


Ovdje sam gledao samo da odgovorim na taj problem što imaš, nisam gledao suštinski kod i da li ćeš mimo toga imati koji problem u sistemu, ali se da riješiti kada se riješi i to sa objektima.


@Slade

1. Prebaci sam sve na obično kreiranje objeckta pa na dinamično nakon toga, a rezultat je isti. Nema promjerna.
2.  Stavio sam u case 2975: kod ispod. Ali onda kada dođem blize objekta F tipka ne reagira, jer naravno objeckt kao da ne postoji a tamo je.
DestroyObject(SupplyData); SupplyData = -1;


3. Ovo što si rekao za if(SupplyData == objectid) sam isto probao i stavio "paraObj", međutim objekt padobrana ostane a kutija nestane.
Chuffy
4
Made Man
29. Okt. 2019.
Napokon sam skontao gdje je problem. Samo sam uklonio
SupplyData = CreateObject(2975, x, y, z-0.1, 0, 0, 0, 210.0);


Lock.

Morate biti prijavljeni da biste odgovorili na ovu temu.

Prijava

© 2026 SmartShark. All rights reserved.

Powered by Momentum|v2026.3.001 Alpha