Naslov problema*: Posao ribara bug
Opis problema*: Kada dodjem na cp i ukucam /pecaj posle nekog vremena izbacitekst preko ekrana kao pritisni tipku N da upecas ribu ja pritisnem vise puta i pokusavao sam da drzim ali ne reaguje nista
Pokušaj rešavanja*:
Deo programskog koda*: https://pastebin.com/ezWBp7WK
Debug informacije://
Fotografija problema u igri: https://imgur.com/a/EUJ4bzS
Korišćene biblioteke (includes):
Dodatne informacije: Ako treba jos neki deo skripte poslacu ali ovaj deo kao da ne postoji kad se radi posao
Posao ribar bug
423
pregleda
10
postova
14. Okt. 2025.
Quote from October 13, 2025, 5:22 pm:
daj nam komandu /pecaj
CMD:pecaj( playerid, params[] ) {
new id = fishermanInfo[ playerid ][ Fisherman ];
if( IsPlayerInAnyVehicle( playerid ) ) return GRESKA( playerid, "Ne mozete pecati dok vozite!" );
if( PlayerInfo[ playerid ][ xPosao ] != POSAO_RIBAR ) return GRESKA( playerid, "Niste zaposleni kao ribar!" );
//if( fishermanInfo[ playerid ][ StartedFishing ] == false ) return GRESKA( playerid, "Niste zapoceli pecanje." );
if( !IsPlayerInRangeOfPoint( playerid, 25.0, RibarPosition[ id ][ 0 ], RibarPosition[ id ][ 1 ], RibarPosition[ id ][ 2 ] ) ) return GRESKA( playerid, "Niste na mestu za pecanje" );
if( fishermanInfo[ playerid ][ Fishing ] == true ) return GRESKA( playerid, "Vec pecate ribu!" );
if( UzeoOpremu[ playerid ] == false ) return GRESKA( playerid, "Nemate opremu za pecanje!" );
if( fishermanInfo[ playerid ][ FishKG ] == 50 ) return GRESKA( playerid, "Vec ste upecali 50kg ribe, morate prvo to ostaviti.!");
fishermanInfo[ playerid ][ Fishing ] = true;
fishermanInfo[ playerid ][ TriesFish ] = 0;
SetPlayerAttachedObject( playerid, OBJECT_SLOT_RHAND, 18632, 6, 0.079376, 0.037070,0.007706,181.482910,0.000000,0.000000,1.000000,1.000000,1.000000);
ApplyAnimation( playerid, "SWORD", "sword_IDLE",50.0,0,1,1,1,1);
fishermanInfo[ playerid ][ fsTimer ] = SetTimerEx("PecaRibu", 15000, false, "i", playerid);
SendJobMessage( playerid, "Poceli ste pecati, budite strpljivi kako bi nesto upecali! Ako zelite prestati pecati, upisite "col_job"/zavrsipecanje!" );
SendJobMessage( playerid, "Kada upecate ribu koristite "col_job"'N'"col_white" da je izvucete." );
format( globalstring, sizeof( globalstring ), "~w~Riba: ~r~%d/50kg", fishermanInfo[ playerid ][ FishKG ] );
PlayerTextDrawSetString( playerid, FishermangTD[ playerid ], globalstring );
ChangeFisherManCoordinates( playerid, 0.0000 );
ShowFishingTD( playerid, true );
return 1;
}Underboss
🔥62
Aktivan Član
62 / 250 XP
📘Učenik(15)
❤️
👍
👥
641
Postovi:
30
Teme:
Pridružio se:Sep. 2023
🔥62dana
14. Okt. 2025.
Agent 47 wrote on October 14, 2025, 7:27 pm:
ovde ti je deo iz onplayerkeystatechange
Provjeri da li ispred
if( PlayerInfo[ playerid ][ xPosao ] == POSAO_RIBAR ) imaš if (newkeys & KEY_NO)Ja sam Ivo Dev, bager koji razgrće sve oko skripti – poznat i kao Zbager
15. Okt. 2025.
iv0x13 wrote on October 14, 2025, 7:57 pm:
Provjeri da li ispred
if( PlayerInfo[ playerid ][ xPosao ] == POSAO_RIBAR ) imaš if (newkeys & KEY_NO)Dodao sam nije bilo ali ovo za posao ribara ima gore iznad ovo tvoje al dodao sam ja ovo i ne radi
else if( PRESSED( KEY_NO ) )
{
if( PlayerInfo[ playerid ][ xPosao ] == POSAO_RIBAR ) {
if( fishermanInfo[ playerid ][ Fishing ] ) {
if( fishermanInfo[ playerid ][ FishKG ] != 50 ) {
if( fishermanInfo[ playerid ][ TriesFish ] > 0 ) {
fishermanInfo[ playerid ][ TriesFish ]++;
ApplyAnimation( playerid, "SWORD", "sword_block", 50.0, 0, 1, 0, 1, 1);
switch( fishermanInfo[ playerid ][ TriesFish ] ) {
case 2: ChangeFisherManCoordinates(playerid, 10.0000);
case 3: ChangeFisherManCoordinates(playerid, 20.0000);
case 4: ChangeFisherManCoordinates(playerid, 30.0000);
case 5: ChangeFisherManCoordinates(playerid, 40.0000);
case 6: ChangeFisherManCoordinates(playerid, 50.0000);
case 7: ChangeFisherManCoordinates(playerid, 60.0000);
case 8: ChangeFisherManCoordinates(playerid, 70.0000);
case 9: ChangeFisherManCoordinates(playerid, 80.0000);
case 10: ChangeFisherManCoordinates(playerid, 90.0000);
case 11: {
ChangeFisherManCoordinates(playerid, 100.0000);
}
}
ShowFishingTD( playerid, true );
if( fishermanInfo[ playerid ][ TriesFish ] == 11 ) {
new randomizacija = randomEx( 1, 10 );
if( randomizacija <= 5 ) {
fishermanInfo[ playerid ][ Fishing ] = false;
SendJobMessage( playerid, "Riba vam je pobjegla. Pokusajte ponovo." );
ChangeFisherManCoordinates( playerid, 0.0000 );
RemovePlayerAttachedObject( playerid, OBJECT_SLOT_RHAND );
ShowFishingTD( playerid, true );
ApplyAnimation( playerid, "CARRY", "crry_prtial", 4.0, 0, 0, 0, 0, 0);
fishermanInfo[ playerid ][ TriesFish ] = 0;
}
else if( randomizacija >= 6 ) {
fishermanInfo[ playerid ][ Fishing ] = false;
new fishkgsrand = randomEx( 1, 4 );
SendJobMessage( playerid, "Upecali ste ribu tesku: "col_job"%d"col_white" kilograma.", fishkgsrand );
fishermanInfo[ playerid][ FishKG] += fishkgsrand;
if( fishermanInfo[ playerid ][ FishKG ] > 50 ) { fishermanInfo[ playerid ][ FishKG ] = 50; }
format( globalstring, sizeof( globalstring ), "~w~Riba: ~r~%d/50kg", fishermanInfo[ playerid ][ FishKG ] );
PlayerTextDrawSetString( playerid, FishermangTD[ playerid ], globalstring );
ChangeFisherManCoordinates( playerid, 0.0000);
ShowFishingTD( playerid, true );
RemovePlayerAttachedObject( playerid, OBJECT_SLOT_RHAND );
ApplyAnimation(playerid, "CARRY", "crry_prtial", 4.0, 0, 0, 0, 0, 0);
fishermanInfo[ playerid ][ TriesFish ] = 0;
if( fishermanInfo[ playerid ][ FishKG ] == 50 ) {
SendJobMessage( playerid, "Idite isporucite ribu na lokaciju oznacenu na mapi.");
CheckpointStatus[ playerid ] = 38;
SetPlayerCheckpoint( playerid, 1627.7919, 570.8737, -0.4513, 5.0 );
}
}
}
}
}
}
}
}
}16. Nov. 2025.
Agent 47 wrote on October 18, 2025, 8:09 am:
pomoc..
Pozdrav, ovo je klasican problem i gotovo sigurno se svodi na to kako funkcionise tajmer i varijabla TriesFish.
Ovo ti je kriticna provera unutar PRESSED( KEY_NO ) bloka
if( fishermanInfo[ playerid ][ TriesFish ] > 0 ) {
// ... ovde se izvrsava izvlacenje ribe
}Ako ti pritiskom na 'N' ništa ne reaguje, to znaci da je gotovo sigurno uslov TriesFish > 0 neispunjen.
Komanda /pecaj pokrece tajmer koji bi trebalo da signalizira da je riba zagrizla.
// Pokrece tajmer na 15 sekundi
fishermanInfo[ playerid ][ fsTimer ] = SetTimerEx("PecaRibu", 15000, false, "i", playerid);Glavni problem je u funkciji PecaRibu koju nisi prilozio.
Ta funkcija nakon sto istekne 15 sekundi, mora da postavi varijablu TriesFish na 1 (ili bilo koju vrednost vecu od nule) i da ti tek onda posalje poruku da pritisnes 'N'.
Debagiraj kod!
// ...
if( fishermanInfo[ playerid ][ Fishing ] ) {
if( fishermanInfo[ playerid ][ FishKG ] != 50 ) {
if( fishermanInfo[ playerid ][ TriesFish ] > 0 ) {
// DODAJ OVU LINIJU ZA TESTIRANJE
SendClientMessage( playerid, 0xFF0000FF, "DEBUG: N taster pritisnut! TriesFish je > 0." );
fishermanInfo[ playerid ][ TriesFish ]++;
// ... ostatak koda Ako nakon sto ti se pojavi poruka "pritisni 'N'" pritisnes taster, a ne dobijes crvenu DEBUG poruku, to ukazuje na problem sa samom funkcionalnoscu PRESSED( KEY_NO ) makroa...
Prilozi nam funkciju tu PecaRibu!
Morate biti prijavljeni da biste odgovorili na ovu temu.
Prijava
