Neki si postavljaju pitanja kako napraviti organizaciju/mafiju za mod od 0.
Evo jedan veoma jednostavan tutorial o tome.
Pa da pocnemo:
Pri vrhu vase scripte ispod #include "a_samp"
potrebno je da dodate sledece includse koje mozete naci na ovom forumu ili na samo forumu:
#include "Zcmd"
#include "sscanf2"
#include "dini"
#include "foreach"Umjesto #include
Sledeci korak je pravljenje komande kako dati nekome lidera!
Koristicemo Zcmd.
CMD:makelider(playerid, params[])
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,Plava,"Niste ovlasteni!");
new ID,level;
if(sscanf(params, "dd", ID, level)) return SendClientMessage(playerid, Plava, "Koristenje: /makelider [broj org]");
new file;
format(file,sizeof(file),"GdjeVamSeSpremaAcc/%s.ini", ImeIgraca(ID));
dini_IntSet(file,"Lider",level);
SetPVarInt(ID,"Lider",level);
return true;
}Da pojasnimo malo.
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,Plava,"Niste ovlasteni!"); --ako igrac nije rcon ulogovan admin da mu ispisuje poruku.
if(sscanf(params, "dd", ID, level)) return SendClientMessage(playerid, Plava, "Koristenje: /makelider [broj org]"); -- ako ukucate /makelider,bez ID-a,ili bez broja org ispisace vam tu poruku(naravno ukoliko ste se rcon ulogovali)
format(file,sizeof(file),"GdjeVamSeSpremaAcc/%s.ini", ImeIgraca(ID)); -- ovde umjesto "GdjeVamSeSpremaAcc/%s.ini" unesite gdje se vama sprema acc,npr
"KorisnickiRacuni/%s.ini"
Kada ste nekome dali lidera,naravno da necete svakome ko hoce u tu orgaizaciju/mafiju davati lidera.
E pa onda idemo napraviti komandu da lider moze ozvati u organizaciju kog' hoce..
CMD:pozovi(playerid, params[])
{
if(GetPVarInt(playerid,"Lider") < 1) return SendClientMessage(playerid,Plava,"Niste ovlasteni!");
new ID,level;
if(sscanf(params, "dd", ID, level)) return SendClientMessage(playerid, Plava, "Koristenje: /pozovi [broj org]");
if(level != GetPVarInt(playerid,"Lider")) return SendClientMessage(playerid,Plava,"Ne mozete pozvati igraca u drugu org/mafiju.");
new file;
format(file,sizeof(file),"GdjeVamSeSpremaAcc/%s.ini", ImeIgraca(ID));
dini_IntSet(file,"Clan",level);
SetPVarInt(ID,"Clan",level);
return true;
}Objasnjenje pogledaj gore!
Pozvali ste nekog' u organizaciju/mafiju? Zelite ga izbaciti? Idemo napraviti komadnu!
CMD:izbaci(playerid, params[])
{
if(GetPVarInt(playerid,"Lider") >= 1)
{
new ID;
if(sscanf(params, "d", ID)) return SendClientMessage(playerid, Plava, "Koristenje: /izbaci ");
if(GetPVarInt(ID,"Clan") != GetPVarInt(playerid,"Lider")) return SendClientMessage(playerid,Plava,"Ne mozete izbaciti igraca iz druge org/mafije.");
new file;
format(file,sizeof(file),"GdjeVamSeSpremaAcc/%s.ini", ImeIgraca(ID));
dini_IntSet(file,"Clan",0);
SetPVarInt(ID,"Clan",0);
}
return true;
}
Takodje,objasnjenja za pojedine linije pogledajte gore!
Zelite napraviti chat za organizaciju/mafiju?
Nista lakse!
CMD:chat(playerid,params[])
{
new tekst ;
if (sscanf(params, "s", tekst)) SendClientMessage(playerid,Plava, "Koristenje: /chat ");
else{
if( GetPVarInt(playerid,"Lider") == 1) {
new string; format(string, sizeof(string), " Lider OrgJedan %s kaze: %s", ImeIgraca(playerid), params );
return PorukaOrgJedan(Plava,string);
}
else
{
if( GetPVarInt(playerid,"Clan") == 1 ) {
new string; format(string, sizeof(string), " Clan OrgJedan %s kaze: %s", ImeIgraca(playerid), params );
return PorukaOrgJedan(Plava,string);
}
else return SendClientMessage(playerid,Plava,"Niste clan OrgJedan!");
}
}
return true;
}
Pitate se sta je PorukaOrgJedan(Plava,string);
Potrebno je da napravimo kako ce slati poruku.
forward PorukaOrgJedan(Boja, const string[]);
public PorukaOrgJedan(Boja, const string[])
{
foreach(Player, i)
{
if (GetPVarInt(i,"Lider") == 1 || GetPVarInt(i,"Clan") == 1) SendClientMessage(i, Boja, string);
}
return true;
}
Samim pogledom u ovaj public sve bi vam trebalo biti jasno..
Pitate se kako napraviti vozila da samo jedna mafija/organizacija moze voziti?
Prvo pri vrhu vase scrite,gdje vam se nalaze ostali "new" dodajte new orgauto;
Zatim,ispod OnGameModeInit potrebno je stvoriti vozila za organizacije/mafije.
To bi izgledalo ovako:
orgauto=AddStaticVehicleEx(487,121,21312,2131,112,17,17,30); --- pogledajte wikipediu za AddStaticVehicleEx
orgauto=AddStaticVehicleEx(487,121,21312,2131,112,17,17,30); --- pogledajte wikipediu za AddStaticVehicleEx
orgauto=AddStaticVehicleEx(487,121,21312,2131,112,17,17,30); --- pogledajte wikipediu za AddStaticVehicleEx
Zatim kako bi se lakse snalazili u scripti i da nam bude preglednije napravimo
stock OrgJedan(vozilo)
{
if(vozilo == orgauto || vozilo == orgauto || vozilo == orgauto )
{
return 1;
}
return 0;
}Ukoliko zelite dodavati jos vozila kod lilije new orgauto; ,broj povecavate za jedan,znaci ako imate 6 vozila stavite broj 7,ali je potrebno da i kod stock OrgJedan(vozilo) dodate jos vozila..
Sada smo napravili vozila za mafije,ali zelimo da odbijemo ulaz igracima koji nisu clanovi te organizacije/mafije.
Ispod OnPlayerStateChange dodajte
new voziloID = GetPlayerVehicleID(playerid);
if(newstate == 2)
{
if(OrgJedan(voziloID))
{
if(GetPVarInt(playerid,"Lider") == 1 || GetPVarInt(playerid,"Clan") == 1)
{
return true;
}
else
{
RemovePlayerFromVehicle(playerid);
SendClientMessage(playerid,Plava,"Niste clan OrgJedan!");
}
}
}
Takodje vam je potrebno da dodate sledeci stock jer bi vam izbacivalo error
stock ImeIgraca(playerid)
{
new ime;
GetPlayerName(playerid, ime, sizeof(ime));
return ime;
}Ukoliko zelite napraviti da se igrac spawna u svojoj bazi ispod OnPlayerSpawn dodajte:
if(GetPVarInt(playerid,"Lider") == 1 || GetPVarInt(playerid,"Clan") )
{
SetPlayerPos(playerid, 123.2133,12312.2131,1231);
SetPlayerInterior(playerid, 0);
}
Potrebno je da definisete boju,ja sam koristio plavu pa ispod vasih ostalih #define-a dodajte #define Plava 0x375FFFFF
I zadnje sto trebate je da ispod OnPlayerConnect-a dodate
new file;
format(file, sizeof(file), "GdjeVamSeSpremaAcc/%s.ini", ImeIgraca(playerid));
SetPVarInt(playerid, "Lider", dini_Int(file, "Lider"));
SetPVarInt(playerid, "Clan", dini_Int(file, "Clan"));
Kao sto vidite koristio sam Zcmd,sscanf,dini,foreach itd,tako da bih se zahvalio onim akoji su to sve napravili!
Napomena: Gdje nisam pisao npr. "ovo stavite ispod OnPlayerSpawn" znaci da to stavljate izvan ostalih publica i sl..
NE GARANTUJEM da ce ovaj TUT 100% raditi,jer ja nisam isprobavao to.
Ako nekome nesta nije jasno neka pita,jer ja nisam objasnjavao sve u detalje!