Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: TONY x poslato Februar 14, 2018, 22:04:14 POSLE PODNE

Naslov: Jail
Poruka od: TONY x poslato Februar 14, 2018, 22:04:14 POSLE PODNE
Detaljan opis problema:Pa radim "Jail" komandu prvi put i sada problemi su ogromni;Vreme bude uvek 77 nepusta ga posle tog vremena skoro uvek kaze da komanda nepostoji(misli da je pogrean id ,znam jer kada je bil oto rekao je pogresan id a nije bio i ) i kada se loginuje ne stavi ga u jail.Pored popravke ako neko moze da mi uopste sredi komandu ili bar objasni greske za koje verujem da ima mnogo kaze kako da resim
Dio skripte:
[pawn]CMD:jail(playerid,params[])
{
   if(PlayerData[playerid][Ulogovan] < 1) return SCM(playerid, CRVENA,"Morate biti ulogovani da bi ste koristili ovu komandu");
    if(PlayerData[playerid][Aduty] < 1) return SCM(playerid, CRVENA,"Morate biti na "plava"duznosti "crvena"kako bi koristili ovu komandu");
   if(PlayerData[playerid][Administrator] >= 1 || PlayerData[playerid][Asistent] >= 2)
   {
      new targetid,vreme,razlog,txt[256];
      if(sscanf(params,"uds[256]", targetid,vreme,razlog)) return SCM(playerid, NARANDZASTA,"INFO:/jail [ID] [vreme(minute)] [razlog]");
      //if(PlayerData[targetid][Administrator] >= PlayerData[playerid][Administrator]) return SCM(playerid, CRVENA,"Odabrani korisnik je isti ili veci administratorski level od vas");
      //if(PlayerData[targetid][Asistent] >= PlayerData[playerid][Asistent]) return SCM(playerid, CRVENA,"Odabrani igarc je isti ili veci asistent level od vas");
      //if(PlayerData[targetid][Administrator] >= 1 && PlayerData[playerid][Asistent] >= 1) return SCM(playerid, CRVENA,"Asistent nemoze jailati administratora");
      GetPlayerName(playerid,Nam, MAX_PLAYER_NAME);
      GetPlayerName(targetid,pName, MAX_PLAYER_NAME);
      format(txt,sizeof(txt),""crvena"JAIL || A | AS %s je jailao igraca %s,razlog: %s",Nam,pName,razlog);
      SCMTA(-1,txt);
        SetPlayerPos(playerid, 2543.462646,-1308.379882,1026.728393);
      SetPlayerInterior(playerid, 2);
      SetPlayerVirtualWorld(playerid, 1);
      format(txt,sizeof(txt),"~y~Jailan ~r~%d",vreme);
      GameTextForPlayer(playerid,txt,3000,3);
      SetTimerEx("JailGotov", vreme*60000, false, "i", playerid);
   }
   return 1;
}[/pawn]
[pawn]forward JailGotov(playerid);
public JailGotov(playerid)
{
    SetPlayerPos(playerid, 2351.3213,-36.1563,26.4844);
    SetPlayerInterior(playerid, -1);
    SetPlayerVirtualWorld(playerid, 0);
    SCM(playerid, NARANDZASTA,"Pusteni ste iz robije,pokusajte biti bolji gradjanin");
    if(PlayerData[playerid][Asistent] >= 1 || PlayerData[playerid][Administrator] >= 1)
    {
        new str[64];
        GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
        format(str,sizeof(str),"Igrac %s je pusten na slobodu(iz jaila)!",pName);
        SCM(playerid, ZUTA,str);
    }
   return 1;
}[/pawn]
[pawn]                 if(PlayerData[playerid][JailVreme] >= 1) //OVO JE U POSLE LOGINA
               {
                   new str[48];
                   SetTimerEx("JailGotov", PlayerData[playerid][JailVreme]*60000, false, "i", playerid);
                   SetPlayerPos(playerid, 2543.462646,-1308.379882,1026.728393);
                  SetPlayerInterior(playerid, 2);
                  SetPlayerVirtualWorld(playerid, 1);
                  format(str,sizeof(str),"~y~Jailan jos ~r~%d",PlayerData[playerid][JailVreme]);
                  GameTextForPlayer(playerid,str,3000,3);
               }[/pawn]
Neke slike/video za lakse dobivanje pomoci(neobavezno):
Naslov: Odg: Jail
Poruka od: TONY x poslato Februar 15, 2018, 10:53:35 PRE PODNE
Bump
Naslov: Odg: Jail
Poruka od: Agent 47 poslato Februar 15, 2018, 11:21:34 PRE PODNE
Nzm kako mogu da ti pomognem uzmes i up moda i gledas to je najjlakse :D
Naslov: Odg: Jail
Poruka od: .бутиган poslato Februar 15, 2018, 13:10:57 POSLE PODNE
Ova provera se nikada ne desava zato sto nikada ne postavis vrednost za JailVreme.
[pawn] if(PlayerData[playerid][JailVreme] >= 1) [/pawn]
U komandu postavi recimo [pawn] PlayerData[playerid][JailVreme] = 1; [/pawn] Jer koristis tajmer koji traje koliko mu traje jail vreme, i onda kada mu istekne vreme samo postavis to na 0.

Mada ovakav vid tajmera za zatvor je veoma los, jer ako ti skripta nije optimizovana moze da pukne/istekne pre vremena zato sto je ovo sannp i retardiran je. Najbolje bi bilo da uradis komandu jail ovako tj. da dodas ove stvari u komandu.

[pawn]
PlayerData[playerid][JailVreme]  = vreme*60;
ZatvorOdbrojavanje[playerid] = SetTimerEx("OduzmiVremeZatvora", 1000, true, "d", playerid);
[/pawn]

ionda u funkciju za oduzimanje vremena dodas nesto ovako

[pawn]
forward public OduzmiVremeZatvora(playerid);
public OduzmiVremeZatvora(playerid)
{
PlayerData[playerid][JailVreme]--;
if(PlayerData[playerid][JailVreme] < 0)
{
//stagod
}
return 1;
}
[/pawn]

Izbegavaj globalne tajmere za ovakve stvari, smece su globalni tajmeri.

Napisao sam sve i svasta, manje vise nepovezano je sve tako da ono ako ti nije nesto jasno, pojasnicu ti malo bolje.
Naslov: Odg: Jail
Poruka od: TONY x poslato Februar 15, 2018, 14:36:52 POSLE PODNE
Citat: .буÑ,иган poslato Februar 15, 2018, 13:10:57 POSLE PODNE
Ova provera se nikada ne desava zato sto nikada ne postavis vrednost za JailVreme.
[pawn] if(PlayerData[playerid][JailVreme] >= 1) [/pawn]
U komandu postavi recimo [pawn] PlayerData[playerid][JailVreme] = 1; [/pawn] Jer koristis tajmer koji traje koliko mu traje jail vreme, i onda kada mu istekne vreme samo postavis to na 0.

Mada ovakav vid tajmera za zatvor je veoma los, jer ako ti skripta nije optimizovana moze da pukne/istekne pre vremena zato sto je ovo sannp i retardiran je. Najbolje bi bilo da uradis komandu jail ovako tj. da dodas ove stvari u komandu.

[pawn]
PlayerData[playerid][JailVreme]  = vreme*60;
ZatvorOdbrojavanje[playerid] = SetTimerEx("OduzmiVremeZatvora", 1000, true, "d", playerid);
[/pawn]

ionda u funkciju za oduzimanje vremena dodas nesto ovako

[pawn]
forward public OduzmiVremeZatvora(playerid);
public OduzmiVremeZatvora(playerid)
{
PlayerData[playerid][JailVreme]--;
if(PlayerData[playerid][JailVreme] < 0)
{
//stagod
}
return 1;
}
[/pawn]

Izbegavaj globalne tajmere za ovakve stvari, smece su globalni tajmeri.

Napisao sam sve i svasta, manje vise nepovezano je sve tako da ono ako ti nije nesto jasno, pojasnicu ti malo bolje.

Razumeo sam sta si hteo i pomoglo mi je,ali pokusao sam da izmenim malo i da koristim UP sistem i tako radi sa globalnim ali ugl hvala
Naslov: Odg: Jail
Poruka od: Łuk@ poslato Februar 15, 2018, 15:03:02 POSLE PODNE
Citat: .буÑ,иган poslato Februar 15, 2018, 13:10:57 POSLE PODNE
Ova provera se nikada ne desava zato sto nikada ne postavis vrednost za JailVreme.
[pawn] if(PlayerData[playerid][JailVreme] >= 1) [/pawn]
U komandu postavi recimo [pawn] PlayerData[playerid][JailVreme] = 1; [/pawn] Jer koristis tajmer koji traje koliko mu traje jail vreme, i onda kada mu istekne vreme samo postavis to na 0.

Mada ovakav vid tajmera za zatvor je veoma los, jer ako ti skripta nije optimizovana moze da pukne/istekne pre vremena zato sto je ovo sannp i retardiran je. Najbolje bi bilo da uradis komandu jail ovako tj. da dodas ove stvari u komandu.

[pawn]
PlayerData[playerid][JailVreme]  = vreme*60;
ZatvorOdbrojavanje[playerid] = SetTimerEx("OduzmiVremeZatvora", 1000, true, "d", playerid);
[/pawn]

ionda u funkciju za oduzimanje vremena dodas nesto ovako

[pawn]
forward public OduzmiVremeZatvora(playerid);
public OduzmiVremeZatvora(playerid)
{
PlayerData[playerid][JailVreme]--;
if(PlayerData[playerid][JailVreme] < 0)
{
//stagod
}
return 1;
}
[/pawn]

Izbegavaj globalne tajmere za ovakve stvari, smece su globalni tajmeri.

Napisao sam sve i svasta, manje vise nepovezano je sve tako da ono ako ti nije nesto jasno, pojasnicu ti malo bolje.
i naravno da unisti tajmer nakon sto izadje

lock ovdje