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
Problem sa KEYS_NO
272
pregleda
13
postova
7. Nov. 2025.
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 ) ) {
Underboss
🔥64
Aktivan Član
69 / 250 XP
📘Učenik(15)
❤️
👍
👥
642
Postovi:
30
Teme:
Pridružio se:Sep. 2023
🔥64dana
7. Nov. 2025.
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 problemJa sam Ivo Dev, bager koji razgrće sve oko skripti – poznat i kao Zbager
7. Nov. 2025.
iv0x13 wrote on November 7, 2025, 6:36 pm:
Hajde pošalji
getPosBehindVehicle funkciju, 99% sam siguran da je ona problemgetPosBehindVehicle(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;
}
Underboss
🔥64
Aktivan Član
69 / 250 XP
📘Učenik(15)
❤️
👍
👥
642
Postovi:
30
Teme:
Pridružio se:Sep. 2023
🔥64dana
7. Nov. 2025.
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
7. Nov. 2025.
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
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);
}
}
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);
}
}
8. Nov. 2025.
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?
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?
8. Nov. 2025.
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?
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..
8. Nov. 2025.
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
new playerPos[ 3 ] ;
GetPlayerPos( playerid, playerPos[ 0 ], playerPos[ 1 ], playerPos);
i printf od getPosBehindVehicle
9. Nov. 2025.
Pokusaj ovo:
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))
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
