Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: Sinner.man poslato Maj 04, 2020, 23:47:09 POSLE PODNE

Naslov: Sitni edit u komandi
Poruka od: Sinner.man poslato Maj 04, 2020, 23:47:09 POSLE PODNE
Problem(error/warning): napravio sam ovo za kradju goriva, ali kada ukucam komandu odma se seta gorivo u inventory a ne poslije 5000 sekundi kao sto je napisano, i sacekam ne unfreezuje mi lika. Isto kada ukucam komandu animacija bomber traje samo sekundu, kako mogu to popraviti
Dio skripte: [pawn]CMD:kradigorivo( playerid, params[] ) {

      if( PlayerInfo[ playerid ][ xWanted ] > 0 ) return GRESKA( playerid, "Ne mozes kupovati kad imas Wanted Level." );
      if( PlayerInfo[ playerid ][ xClan ] < 1) return GRESKA( playerid, "Nisi clan nijedne organizacije.");
      if( KradjaGoriva[ playerid ] != 0 ) return GRESKA( playerid, "U toku je branje sacekajte 15 sekundi do sljedeceg branja!");
      if( GetFactionType( playerid ) == ORG_TIP_PD  ) {
      GRESKA( playerid, "Ti si u MUP organizaciji ne mozes ovo da radis!");
      return 1;
     }
        if( !IsPlayerInRangeOfPoint( playerid, 3.0, 1940.0424,-1774.7954,13.4302 ) &&
         !IsPlayerInRangeOfPoint( playerid, 3.0,  1004.9145,-935.5276,42.1796) &&
         !IsPlayerInRangeOfPoint( playerid, 3.0, 1004.9145,-935.5276,42.1796 ) ) return GRESKA( playerid, "Morate biti Pumpe da bi ste krali gorivo !");

        GameTextForPlayer( playerid, "~w~Kradete gorivo, sacekajte malo...", 5000, 1);
       TogglePlayerControllable( playerid, false );
       ApplyAnimation( playerid, "BOMBER", "BOM_Plant_Loop",4.0,0,0,0,0,0,1 );
       SetTimer( "kradjagoriva", 5000, 0 );
       Inventory_Add( playerid, "Kantica", 1650 );
      SCM( playerid, ZUTA, "Ukrali ste kanticu goriva i stavili ste je u torbu - /torba\nCuvar vas je primjetio i prijavio policiji" );
        GRELLA_SetPlayerWantedLevel( playerid, 3 );
      PlayerInfo[ playerid ][ xWanted ] += 3;

    return true;
}[/pawn]
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): [ code ][ /code ]
Slika/video ingame problema(obavezno ako je ingame problem): PS V0ID znam da sam smrarao  :D jebi ga samo trebam se malo ukljuciti
Naslov: Odg: Sitni edit u komandi
Poruka od: Sploxs poslato Maj 05, 2020, 01:32:45 PRE PODNE
Primjer kako tajmeri rade.

[pawn]

CMD:glupost( ... )
{
    print("za 5s ce se isprintat sve sto je u tajmeru");
    SetTimer("tajmer", 5000, 0); /* ovdje pozivas funkciju koja ce se odraditi za 5000ms, a to je 5s*/
    return true;
}

forward tajmer();
public tajmer()
{
    print("ovo je to sve u tajmeru");
    return true;
}
[/pawn]

[pawn]

Inventory_Add( playerid, "Kantica", 1650 );
SCM( playerid, ZUTA, "Ukrali ste kanticu goriva i stavili ste je u torbu - /torba\nCuvar vas je primjetio i prijavio policiji" );

/* ovo treba da ti ide u taj tajmer, a ne u samu komandu */
[/pawn]

Ne znam jel si me skapirao uglavnom
Naslov: Odg: Sitni edit u komandi
Poruka od: V01D poslato Maj 05, 2020, 01:33:09 PRE PODNE
[pawn]SetTimer( "kradjagoriva", 5000, 0 );
       Inventory_Add( playerid, "Kantica", 1650 );
      SCM( playerid, ZUTA, "Ukrali ste kanticu goriva i stavili ste je u torbu - /torba\nCuvar vas je primjetio i prijavio policiji" );
        GRELLA_SetPlayerWantedLevel( playerid, 3 );
      PlayerInfo[ playerid ][ xWanted ] += 3;[/pawn]

Logika..

Pokrenuo si timer, zatim odmah nakon pokretanja si stavio da dobija gorivo..

Napravis poseban public i forward za timer:

[pawn]forward kradjagoriva(playerid);
public kradjagoriva(playerid)
{
   Inventory_Add( playerid, "Kantica", 1650 );
   SCM( playerid, ZUTA, "Ukrali ste kanticu goriva i stavili ste je u torbu - /torba\nCuvar vas je primjetio i prijavio policiji" );
   GRELLA_SetPlayerWantedLevel( playerid, 3 );
   PlayerInfo[ playerid ][ xWanted ] += 3;
   return 1;
}[/pawn]

Naslov: Odg: Sitni edit u komandi
Poruka od: Sinner.man poslato Maj 05, 2020, 14:34:03 POSLE PODNE
treba mi za global tajmer, ako jedan opljacka ostali ne mogu pljackati, kao banka npr
Naslov: Odg: Sitni edit u komandi
Poruka od: Sinner.man poslato Maj 05, 2020, 18:16:35 POSLE PODNE
ping pong
Naslov: Odg: Sitni edit u komandi
Poruka od: Shadow. poslato Maj 05, 2020, 19:47:45 POSLE PODNE
[pawn]
new bool:IsGasBeingRobbed, GasRobCooldown;

CMD:kradigorivo( playerid, params[] ) {
     new sad = gettime( );
      if( PlayerInfo[ playerid ][ xWanted ] > 0 ) return GRESKA( playerid, "Ne mozes kupovati kad imas Wanted Level." );
      if( PlayerInfo[ playerid ][ xClan ] < 1) return GRESKA( playerid, "Nisi clan nijedne organizacije.");
      if( KradjaGoriva[ playerid ] != 0 ) return GRESKA( playerid, "U toku je branje sacekajte 15 sekundi do sljedeceg branja!");
      if( GetFactionType( playerid ) == ORG_TIP_PD  ) {
      GRESKA( playerid, "Ti si u MUP organizaciji ne mozes ovo da radis!");
      return 1;
     }
     if( IsGasBeingRobbed ) return SendClientMessage( playerid, -1, "Ovu benzinsku trenutno netko roba");
     if( sad < GasRobCooldown+60*30 ) return SendClientMessage( playerid, -1, "Mozes rob benzinsku svakih 30 minuta");
        if( !IsPlayerInRangeOfPoint( playerid, 3.0, 1940.0424,-1774.7954,13.4302 ) &&
         !IsPlayerInRangeOfPoint( playerid, 3.0,  1004.9145,-935.5276,42.1796) &&
         !IsPlayerInRangeOfPoint( playerid, 3.0, 1004.9145,-935.5276,42.1796 ) ) return GRESKA( playerid, "Morate biti Pumpe da bi ste krali gorivo !");
        IsGasBeingRobbed = true;
        GameTextForPlayer( playerid, "~w~Kradete gorivo, sacekajte malo...", 5000, 1);
       TogglePlayerControllable( playerid, false );
       ApplyAnimation( playerid, "BOMBER", "BOM_Plant_Loop",4.0,0,0,0,0,0,1 );
       SetTimer( "kradjagoriva", 5000, 0 );

    return true;
}

forward kradjagoriva(playerid);
public kradjagoriva(playerid)
{
   IsGasBeingRobbed = false;
   GasRobCooldown = gettime( );
   Inventory_Add( playerid, "Kantica", 1650 );
   SCM( playerid, ZUTA, "Ukrali ste kanticu goriva i stavili ste je u torbu - /torba\nCuvar vas je primjetio i prijavio policiji" );
   GRELLA_SetPlayerWantedLevel( playerid, 3 );
   PlayerInfo[ playerid ][ xWanted ] += 3;
   return 1;
}[/pawn]
Probaj nabrzinu sam napravio.
Naslov: Odg: Sitni edit u komandi
Poruka od: Sinner.man poslato Maj 05, 2020, 22:42:58 POSLE PODNE
Citat: ShadowMortar poslato Maj 05, 2020, 19:47:45 POSLE PODNE
[pawn]
new bool:IsGasBeingRobbed, GasRobCooldown;

CMD:kradigorivo( playerid, params[] ) {
     new sad = gettime( );
      if( PlayerInfo[ playerid ][ xWanted ] > 0 ) return GRESKA( playerid, "Ne mozes kupovati kad imas Wanted Level." );
      if( PlayerInfo[ playerid ][ xClan ] < 1) return GRESKA( playerid, "Nisi clan nijedne organizacije.");
      if( KradjaGoriva[ playerid ] != 0 ) return GRESKA( playerid, "U toku je branje sacekajte 15 sekundi do sljedeceg branja!");
      if( GetFactionType( playerid ) == ORG_TIP_PD  ) {
      GRESKA( playerid, "Ti si u MUP organizaciji ne mozes ovo da radis!");
      return 1;
     }
     if( IsGasBeingRobbed ) return SendClientMessage( playerid, -1, "Ovu benzinsku trenutno netko roba");
     if( sad < GasRobCooldown+60*30 ) return SendClientMessage( playerid, -1, "Mozes rob benzinsku svakih 30 minuta");
        if( !IsPlayerInRangeOfPoint( playerid, 3.0, 1940.0424,-1774.7954,13.4302 ) &&
         !IsPlayerInRangeOfPoint( playerid, 3.0,  1004.9145,-935.5276,42.1796) &&
         !IsPlayerInRangeOfPoint( playerid, 3.0, 1004.9145,-935.5276,42.1796 ) ) return GRESKA( playerid, "Morate biti Pumpe da bi ste krali gorivo !");
        IsGasBeingRobbed = true;
        GameTextForPlayer( playerid, "~w~Kradete gorivo, sacekajte malo...", 5000, 1);
       TogglePlayerControllable( playerid, false );
       ApplyAnimation( playerid, "BOMBER", "BOM_Plant_Loop",4.0,0,0,0,0,0,1 );
       SetTimer( "kradjagoriva", 5000, 0 );

    return true;
}

forward kradjagoriva(playerid);
public kradjagoriva(playerid)
{
   IsGasBeingRobbed = false;
   GasRobCooldown = gettime( );
   Inventory_Add( playerid, "Kantica", 1650 );
   SCM( playerid, ZUTA, "Ukrali ste kanticu goriva i stavili ste je u torbu - /torba\nCuvar vas je primjetio i prijavio policiji" );
   GRELLA_SetPlayerWantedLevel( playerid, 3 );
   PlayerInfo[ playerid ][ xWanted ] += 3;
   return 1;
}[/pawn]
Probaj nabrzinu sam napravio.

sve pici kako treba, samo ne unfrezuje lika i jebana animacija traje 2,3 sekunde, da li to za anim trebam promjenut ili nzm
Naslov: Odg: Sitni edit u komandi
Poruka od: Vuzimir poslato Maj 05, 2020, 22:48:16 POSLE PODNE
Probaj ovako: [pawn]ApplyAnimation( playerid, "BOMBER", "BOM_Plant_Loop",4.1,0,0,0,0,5000,1 );[/pawn]

ako ne bude radilo dodaj samo pod public kradjagoriva ovo:

[pawn]ClearAnimations(playerid);
TogglePlayerControllable(playerid, true);[/pawn]