Problem sa KEYS_NO

Lazar Milojevic Započeo statham.3
pre 2 meseca
214
pregleda
13
postova
Lazar Milojevic
Kingpin
pre 2 meseca
Naslov problema*:OnPlayerKeyStateChange
Opis problema*: Kada budem iza kamiona i pritisnem N nece da izvadi kutiju iz kamiona ni kad sam sa strane gde god oko kamiona nece da ocita ovaj deo
Pokušaj rešavanja*:/
Deo programskog koda*: https://pastebin.com/pUPVLs24
Debug informacije://
Fotografija problema u igri://
Korišćene biblioteke (includes)://
Dodatne informacije: Ako treba jos neki deo skripte poslacu
ivanboskic1
Underboss
pre 2 meseca
Ajde pošalji dio koda da vidim kako si stavio provjeru za KEY_NO?

Ja sam Ivo Dev, bager koji razgrće sve oko skripti – poznat i kao Zbager

Lazar Milojevic
Kingpin
pre 2 meseca
iv0x13 wrote on November 7, 2025, 6:08 pm:
Ajde pošalji dio koda da vidim kako si stavio provjeru za KEY_NO?


pa ovaj deo koda je pod OnPlayerKeyStateChange i gore malo iznad stoji ovo else if( PRESSED( KEY_NO ) ) {
ivanboskic1
Underboss
pre 2 meseca
Agent 47 wrote on November 7, 2025, 6:16 pm:
pa ovaj deo koda je pod OnPlayerKeyStateChange i gore malo iznad stoji ovo else if( PRESSED( KEY_NO ) ) {

Hajde pošalji
getPosBehindVehicle
funkciju, 99% sam siguran da je ona problem

Ja sam Ivo Dev, bager koji razgrće sve oko skripti – poznat i kao Zbager

Lazar Milojevic
Kingpin
pre 2 meseca
iv0x13 wrote on November 7, 2025, 6:36 pm:
Hajde pošalji
getPosBehindVehicle
funkciju, 99% sam siguran da je ona problem


getPosBehindVehicle(vehicleid, &Float:x, &Float:y, &Float:z, Float😮ffset = 1.5)
{
    if(vehicleid == INVALID_VEHICLE_ID) return;

    new Float:vehX, Float:vehY, Float:vehZ;
    new Float:angle;

    GetVehiclePos(vehicleid, vehX, vehY, vehZ);
    GetVehicleZAngle(vehicleid, angle);

    // Racunaj tacku iza vozila na osnovu ugla
x = vehX - (floatsin(-angle, degrees) * offset);
y = vehY - (floatcos(-angle, degrees) * offset);
    z = vehZ;
}
ivanboskic1
Underboss
pre 2 meseca
Hajde u onaj pastebin kod nađi onu liniju gdje piše getPosBehindVehicle itd... i ono u zagradama. I zamijeni sa ovim, probaj
getPosBehindVehicle(DeliverCar, vehPos, vehPos, vehPos, 4.0);

Ja sam Ivo Dev, bager koji razgrće sve oko skripti – poznat i kao Zbager

ivanboskic1
Underboss
pre 2 meseca
Jesi riješio?
Znam da radim DP, al dobro

Ja sam Ivo Dev, bager koji razgrće sve oko skripti – poznat i kao Zbager

Lazar Milojevic
Kingpin
pre 2 meseca
iv0x13 wrote on November 7, 2025, 8:31 pm:
Jesi riješio?
Znam da radim DP, al dobro


Nece..
Lazar Milojevic
Kingpin
pre 2 meseca
Sorry za bump dok npr za "Y" kad ubacujes kutije isti je princip koda i sve radi sad sam dodao da vadim kutije na levi klik i radi sve al bez ove funkcije sto prevara jel igrac iza vozila cim dodam nece da mi izvadi kutiju
else if( PlayerInfo[ playerid ][ xPosao ] == POSAO_DOSTAVLJACPROD ) {

            if( DeliverLevel[ playerid ] == 1 ) {

new Float:vehPos[ 3 ];
    getPosBehindVehicle( DeliverCar[ playerid ], vehPos[ 0 ], vehPos[ 1 ], vehPos[ 2 ], 0.0 );
    if( IsPlayerInRangeOfPoint( playerid, 5.0, vehPos[ 0 ], vehPos[ 1 ], vehPos[ 2 ] ) ) {

if( StateBox[ DeliverCar[ playerid ] ] < 5 ) {

if( IsPlayerInAnyVehicle( playerid ) ) return GRESKA( playerid, "Morate da izadjete iz vozila!");
if( StateBox[ DeliverCar[ playerid]  ] == 5 ) return GRESKA( playerid, "U kamionu ima maksimalan broj kutija!");
if( CarriesBox[ playerid ] == 0) return GRESKA( playerid, "Vi nemate kutiju u rukama, prvo je uzmite iz skladista!");
StateBox[ DeliverCar[ playerid ] ] ++;
CarriesBox[ playerid ] = 0;
RemovePlayerAttachedObject( playerid, OBJECT_SLOT_BADGE );
SendJobMessage( playerid, "Ubacili ste kutiju sa produktima u kamionu (%d/5).", StateBox[ DeliverCar[ playerid ] ]);
}

if( StateBox[ DeliverCar[ playerid ] ] == 5 ) {

    DeliverLevel[ playerid ] = 2;
    SendJobMessage( playerid, "Utovarili ste kutije sa produktima, sada ih odvezite do firmi oznacenih na mapi.");
    Info( playerid, "Kada stignete do firme, izadjite iz vozila i izvadite kutiju tipkom ' N '!");
    ClearAnimations( playerid );
new broj = random( 4 );
Traxx_SetPlayerCheckpoint( playerid, FirmaPoss[ broj ][ 0 ], FirmaPoss[ broj ][ 1 ], FirmaPoss[ broj ][ 2 ], 4.0 );
TrenutnaFirma[ playerid ] = broj;
KucaIdeaPrva[ playerid ] = broj;
CheckpointStatus[ playerid ] = 5;

StaroVreme[ playerid ] = gettime();
    NovoVreme[ playerid ] = 40;
}
}
else return GRESKA( playerid, "Ne nalazite se iza kamiona!");
        return 1;
    }
    else if( DeliverLevel[ playerid ] == 2 ) {

        if( IsPlayerInAnyVehicle( playerid ) ) return GRESKA( playerid, "Morate da izadjete iz vozila!");
if( StateBox[ DeliverCar[ playerid]  ] == 5 ) return GRESKA( playerid, "U kamionu ima maksimalan broj kutija!");
if( CarriesBox[ playerid ] == 0) return GRESKA( playerid, "Vi nemate kutiju u rukama!");
StateBox[ DeliverCar[ playerid ] ] ++;
CarriesBox[ playerid ] = 0;
RemovePlayerAttachedObject( playerid, OBJECT_SLOT_BADGE );
SendJobMessage( playerid, "Ubacili ste kutiju sa produktima u kamionu (%d/5).", StateBox[ DeliverCar[ playerid ] ]);

    }
        }


if(PlayerInfo == POSAO_DOSTAVLJACPROD)
{
    if(DeliverLevel == 2)
    {
            if(CarriesBox == 1)
            {
                return SCM(playerid, -1, "Vec drzite kutiju u rukama, ostavite je u trafiku!");
            }

            // Provera da li u kamionu ima kutija
            if(StateBox[DeliverCar] <= 0)
            {
                return SCM(playerid, -1, "U kamionu nema vise kutija!");
            }

            // Uzima kutiju
            StateBox[DeliverCar]--;
            CarriesBox = 1;
            SendJobMessage(playerid, "Izvadili ste kutiju iz kamiona, kutija u kamionu: %d/5.", StateBox[DeliverCar]);
            SetPlayerSpecialAction(playerid, SPECIAL_ACTION_CARRY);
            SetPlayerAttachedObject(playerid, OBJECT_SLOT_BADGE, 1221, 1, 0.494823, 0.720993, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0);
        }
    }
Jethro G.
Shot Caller
pre 2 meseca
getPosBehindVehicle( DeliverCar[ playerid ], vehPos[ 0 ], vehPos[ 1 ], vehPos[ 2 ], 0.0 );

Ovdje ti je zadnji parametar (offset) 0.0, sto znaci da ce u funkciji rezultat biti samo pozicija vozila i normalno je da ce provjera proci jer provjerava opcenito poziciju vozila.

Znaci kad stavis veci offset (npr. 4.0) onda ti ne radi?
Lazar Milojevic
Kingpin
pre 2 meseca
JohnnY. wrote on November 8, 2025, 12:52 pm:
getPosBehindVehicle( DeliverCar[ playerid ], vehPos[ 0 ], vehPos[ 1 ], vehPos[ 2 ], 0.0 );

Ovdje ti je zadnji parametar (offset) 0.0, sto znaci da ce u funkciji rezultat biti samo pozicija vozila i normalno je da ce provjera proci jer provjerava opcenito poziciju vozila.

Znaci kad stavis veci offset (npr. 4.0) onda ti ne radi?


Ne radi brate najbolje da napravim na komandu da se uzima i ostavlja i cao..
marko077
Underboss
pre 2 meseca
Ajde ovako, daj nam printf od vehPos[ 0 ], vehPos[ 1 ], vehPos[ 2 ] i daj nam printf od od ovog
new playerPos[ 3 ] ;
GetPlayerPos( playerid, playerPos[ 0 ], playerPos[ 1 ], playerPos);

i printf od getPosBehindVehicle
Daya
Enforcer
pre 2 meseca
Pokusaj ovo:

bool:IsPlayerBehindVehicle(playerid, vehicleid, Float:offset, Float:CPRadius)
{
    new Float:px, Float:py, Float:pz;
    new Float:vx, Float:vy, Float:vz;
    new Float:rotZ;

    GetPlayerPos(playerid, px, py, pz);

    GetVehiclePos(vehicleid, vx, vy, vz);
    GetVehicleZAngle(vehicleid, rotZ);

    new Float:forwardX = floatsin(-rotZ, degrees);
    new Float:forwardY = floatcos(-rotZ, degrees);

    new Float:behindX = vx - forwardX * offset;
    new Float:behindY = vy - forwardY * offset;
    new Float:behindZ = vz;

    if(IsPlayerInRangeOfPoint(playerid, CPRadius, behindX, behindY, behindZ)) return true;
else return false;
}


offset = koliko iza vozila ide (veći broj za kamione, manji za aute)
CPRadius = velicina kruga u kojem igrac mora biti (veci za kamione (zadnja vrata kamiona su šira nego kod auta))

Morate biti prijavljeni da biste odgovorili na ovu temu.

Prijava