Posao ribar bug

Lazar Milojevic Započeo statham.3
pre 3 meseca
369
pregleda
10
postova
Lazar Milojevic
Kingpin
pre 3 meseca
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
Cile
Made Man
pre 3 meseca
daj nam komandu /pecaj
Lazar Milojevic
Kingpin
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;
}
surreal
Shot Caller
pre 3 meseca
Koristiš li neki dio koda za N tipku u OnPlayerKeyStateChange ? 😐
Lazar Milojevic
Kingpin
pre 3 meseca
surreal wrote on October 14, 2025, 5:13 pm:
Koristiš li neki dio koda za N tipku u OnPlayerKeyStateChange ? 😐


ovde ti je deo iz onplayerkeystatechange
ivanboskic1
Underboss
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

Lazar Milojevic
Kingpin
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 );
}
    }
}
}
}
}
        }
    }
  }
Lazar Milojevic
Kingpin
pre 3 meseca
*bump
Lazar Milojevic
Kingpin
pre 3 meseca
pomoc..
Gagule
Made Man
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