Problem sa KEYS_NO
214
214
pregleda
13
13
postova
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
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
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
pre 2 meseca
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;
}
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
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
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);
}
}
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?
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?
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?
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..
pre 2 meseca
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