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
369
369
pregleda
10
10
postova
pre 3 meseca
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;
}
pre 3 meseca
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
pre 3 meseca
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 );
}
}
}
}
}
}
}
}
}
pre 2 meseca
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