Balkan SA:MP

San Andreas Multiplayer - www.sa-mp.com => Tutorijali u vezi SA-MPa => Temu započeo: BeKaSRB poslato Januar 15, 2018, 18:50:14 POSLE PODNE

Naslov: Admin Duznost
Poruka od: BeKaSRB poslato Januar 15, 2018, 18:50:14 POSLE PODNE
Pozdrav danas cu da vam eventualno pokazem kako sam ja uradio admin duty sistem, da napomenem da sam i sam pocetnik, ali mora se od neceg i poceti jel da? Pa da pocnemo  :)

Prvo na vrhu skripte definisemo #include

[pawn]#include <a_samp>
#include <zcmd>[/pawn]

Sada ispod ovih inkludova definisemo neke boje
[pawn]#define ZELENA          "{6EF83C}"[/pawn]

Ispod ovih boja odvojimo jedan red na ENTER i definisemo AdminDuznost

[pawn]new AdminDuznostMAX_PLAYERS];[/pawn]

Sledece što radimo CTRL+F i kucamo OnPlayerConnect i radimo ovako

[pawn]public OnPlayerConnect(playerid)
{
    AdminDuznost[playerid] = 0; //Kad se igrac poveze na server proveravamo da li je na duznosti
    return 1;
}[/pawn]

Onda opet CTRL + F i trazimo OnPlayerDisconnect i pisemo ovaj kod

[pawn]public OnPlayerDisconnect(playerid, reason)
{
    AdminDuty[playerid] = 0; //Kada igrac izadje sa servera proveravamo da li je na duznosti, ako jeste onda mu se automatski gasi tj. vise nije na duznosti
    return 1;
}[/pawn]
     
Sledece CTRL + F i trazimo OnPlayerCommandText i kucamo ispod ovako

[pawn]public OnPlayerCommandText(playerid, cmdtext[])
{
   if (strcmp("/mycommand", cmdtext, true, 10) == 0)
   {
      // Do something here
      return 1;
   }
   return 0;
}
CMD:adminduznost(playerid) //Ovde pravimo komandu sta treba admin da ukuca da bi bio na duznosti ili da ne bude vise na duznosti
{
   if(IsPlayerAdmin(playerid)) //Samo ako je igrac admin preko RCONA ili vlasnik moze koristiti ovu komandu ili mozete promeniti ako vam je kao meni npr.  umesto if(IsPlayerAdmin(playerid)) stavljamo if(PlayerInfo[playerid][pAdmin] >=1 //Ovo daje adminu lvl 1 ili veci da koristi ovu komandu
   {
      if (AdminDuznost[playerid] == 0) //Proverava da li je Admin na duznosti
      {
         new string[128];//Definisemo string
         SetPlayerHealth(playerid,999999); //Postavljamo adminu neogranicen zivot tj. da ne moze niko da ga ubije dok je na duznosti ili slicno
         SetPlayerColor(playerid,-1); //Postavljamo adminu crvenu boju
         SetPlayerSkin(playerid,294); //Postavljamo Adminu skin na 294
         format(string,sizeof(string), ""ZELENA"((Admin %s je sada na duznosti, za pomoc kucajte /pitaj))!",GetPlayerNameEx(playerid)); //Ovde formatiramo string da salje igracima poruku
         SendClientMessageToAll(-1,string); //Saljemo poruku igracu (-1) To je bela boja ali, nema nikakve veze sto je tu bela jel smo u stringu stavili ""ZELENA" i skripta cita ZELENU boju
         SendClientMessage(playerid,-1, ""ZELENA"Sada ste na duznosti"); //Salje poruku adminu da je na duznosti
         AdminDuznost[playerid] = 1; //Stavlja igraca na admin duznost
      }
      else if (AdminDuznost[playerid] == 1) //Proverava da li je admin na duznosti
      {
         new string[128]; //Definisemo string
         SetPlayerHealth(playerid,100); //Ovde postavljamo Adminu Zivot na 100 tj. default
         format(string,sizeof(string),""ZELENA"((Admin %s vise nije na duznosti! ))",GetPlayerNameEx(playerid)); //Opet formatiramo string da salje poruku Igracima
         SendClientMessageToAll(-1,string); //Saljemo poruku igracu (-1) To je bela boja ali, nema nikakve veze sto je tu bela jel smo u stringu stavili ""ZELENA" i skripta cita ZELENU boju
         SendClientMessage(playerid, -1, ""ZELENA"Vise niste na duznosti!"); //Saljemo poruku igracu da nije vise na duznosti
         AdminDuznost[playerid] = 0; //Postavljamo adminu duznost na 0 tj, da vise nije na duznosti
      }
    }
   else
      SendClientMessage(playerid,-1, ""ZELENA"Samo Admini!"); //Ako neki igrac koji nije admin ukuca ovu komandu ispisuje mu poruku da nije admin tj. da nema admina ili admin level
   return 1;
}[/pawn]

To bi bilo to od mene nadam se da sam pocetnicima kao meni pomogao oko ovog sistema nije tesko kao sto izgleda, uzgred ako samo kopirate neciji kod i ne trudite se da ga razumete necete nikada nauciti sta koja funkcija radi tako da ako vec kopirate kodove pokusajte da ga razumete ako vam je bas tesko pitajte u PM rado cu pomoci koliko mogu. Naravno ko je bolji skripter moze mi pomoci ili objasniti na drugi nacin ovu funkciju ili je poboljsati. Ako sam nesto zaboravio pisite  :D

P.S Izvinjavam se zbog pravljenja duple teme dogodila se greska posto mi je prvi put da objavljujem nesto na forumu, nisam nesto smart :(
Naslov: Odg: Admin Duznost
Poruka od: xsar.p poslato Januar 15, 2018, 19:39:53 POSLE PODNE
Fino objasneno, samo si zaboravio "[" kod AdminDuznost, sve ostalo fino.
Naslov: Odg: Admin Duznost
Poruka od: Vuk7 poslato Januar 15, 2018, 19:42:46 POSLE PODNE
Dobar tutorial jedino si pod onplayerdisconnect stavio adminduty umjesto adminduznost
Naslov: Odg: Admin Duznost
Poruka od: yeet poslato Januar 15, 2018, 19:46:24 POSLE PODNE
Odlicno za pocetnika pohvale
Naslov: Odg: Admin Duznost
Poruka od: BeKaSRB poslato Januar 15, 2018, 19:50:44 POSLE PODNE
Citat: Vuk7 poslato Januar 15, 2018, 19:42:46 POSLE PODNE
Dobar tutorial jedino si pod onplayerdisconnect stavio adminduty umjesto adminduznost

Hvala Vuce i od tebe sam naucio neke fore :D
Naslov: Odg: Admin Duznost
Poruka od: BeKaSRB poslato Januar 15, 2018, 19:52:37 POSLE PODNE
Citat: Raptorâ,,¢ poslato Januar 15, 2018, 19:39:53 POSLE PODNE
Fino objasneno, samo si zaboravio "[" kod AdminDuznost, sve ostalo fino.

Hvala, zurio sam tokom pravljenja nzm ni sam zasto, ali hvala ti sto si uvideo gresku i na OnPlayerDisconnect sam zaboravio stavio sam AdminDuty valjda sam tako navikao  :D
Naslov: Odg: Admin Duznost
Poruka od: BeKaSRB poslato Januar 15, 2018, 19:53:11 POSLE PODNE
Citat: Lexy poslato Januar 15, 2018, 19:46:24 POSLE PODNE
Odlicno za pocetnika pohvale

Hvala puno :D
Naslov: Odg: Admin Duznost
Poruka od: Bašovski poslato Januar 15, 2018, 19:55:44 POSLE PODNE
Ne mozes ostaviti OnPlayerCommandText ako planiras koristiti ZCMD ili neki drugi procesor komandi. Mogao si umjesto obicne varijable staviti bool varijablu.
Naslov: Odg: Admin Duznost
Poruka od: BeKaSRB poslato Januar 15, 2018, 20:00:48 POSLE PODNE
Citat: Bašovski poslato Januar 15, 2018, 19:55:44 POSLE PODNE
Ne mozes ostaviti OnPlayerCommandText ako planiras koristiti ZCMD ili neki drugi procesor komandi. Mogao si umjesto obicne varijable staviti bool varijablu.

Da u pravu si hvala ti, ali OnPlayerCommandText sam stavio da bi igraci poput mene razumeli gde treba da stave, ne mora u opste u OnPlayerCommand moze i na kraju skripte :)
Naslov: Odg: Admin Duznost
Poruka od: ich. poslato Januar 15, 2018, 20:01:25 POSLE PODNE
Okej je
Naslov: Odg: Admin Duznost
Poruka od: BeKaSRB poslato Januar 15, 2018, 20:01:57 POSLE PODNE
Citat: andrijevic poslato Januar 15, 2018, 20:01:25 POSLE PODNE
Okej je

Hvala :D
Naslov: Odg: Admin Duznost
Poruka od: Vasic poslato Januar 15, 2018, 20:02:05 POSLE PODNE
Nemas definiciju GetPlayerNameEx :) inc. fin tut :)
Naslov: Odg: Admin Duznost
Poruka od: BeKaSRB poslato Januar 15, 2018, 20:03:54 POSLE PODNE
Citat: Vasićâ,,¢ poslato Januar 15, 2018, 20:02:05 POSLE PODNE
Nemas definiciju GetPlayerNameEx :) inc. fin tut :)

Ahhhh, daa sad sam i ja uvideo, hvala ti na opazanju moram dodati, inc hvala ti :D
Naslov: Odg: Admin Duznost
Poruka od: BeKaSRB poslato Januar 15, 2018, 20:06:48 POSLE PODNE
Zaboravio sam da dodam stock

stock mozete dodati na dno skripte

[pawn]stock GetPlayerNameEx(playerid) //Ovaj stock je napravljen da lakse uzima ime igraca
{
   new Name[MAX_PLAYER_NAME]; //definisemo name
   GetPlayerName(playerid, Name, MAX_PLAYER_NAME); //Uzimamo igracevo ime, ubacujemo definisano Name
   return Name; //Vraca Name
}[/pawn]
Naslov: Odg: Admin Duznost
Poruka od: Balsa. poslato Februar 14, 2018, 18:19:45 POSLE PODNE
Zaključavanje teme.
Razlog:
prošlo je mjesec dana od zadnjeg odgovora u temi