Malo cu vam pojasniti
Kreiranje komandi za ovaj sistem u ZCMD
Objasniti svaki parametar
Pojasniti i napraviti sistem pljackanja banke
Kreirati Labele i Pickup-ove za sistem
Eh sad ce vam trebati
ZCMD Include
Y_Ini
Ubacivanje mape u mod
-Ono od cega moramo krenuti je mapa. Na brzaka sam napravio neku mapu vi slobodno mozete menjati prema svojoj volji. Click me
-Sve sto doradite na mapi ubacujete u callback
public OnGameModeInit()
Kreiranje pickupova i labela
-Da bi olaksali igracima snalazenje u zlatari moramo staviti labele i pickupove. Ja sam svoje prilagodio mojoj mapi.
-Ovde su labeli za: Kupovinu zlata, Prodaju zlata, Pljacku zlatare i 'cenovnik'
Prvo cemo ubaciti pickupove. Ovde su vec gotovi pickupovi te ako koristite onu gore mapu, sve koordinate su postavljene.
CreateDynamicPickup(1239, 1, 1263.1042, -571.6207, 1082.5360); //kupovina zlato
CreateDynamicPickup(1239, 1, 1256.3179, -571.6730, 1082.5360);//prodaja zlata-Sada cemo ubaciti labele.
NAPOMENA!!!Pre nego sto ubacite labele morate potraziti u scripti
new Text3D:ServerLabel[VAS BROJ +6];i broj labela (ako koristite one moje povecati za 6. Svaki id (broj labela) nakon sto dodate povecajte za jedan od prethodnog!!!
Labeli:
ServerLabel = CreateDynamic3DTextLabel(""ZUTA"[ Zlatara ]\n"BELA"Da kupite zlato (/kupizlato)", 0x9EC73DAA, 1263.1042, -571.6207, 1082.5360, 30, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 30.0);
ServerLabel = CreateDynamic3DTextLabel(""ZUTA"[ Zlatara ]\n"BELA"Da prodate zlato (/pzlato)", 0x9EC73DAA, 1256.3179, -571.6730, 1082.5360, 30, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 30.0);
ServerLabel = CreateDynamic3DTextLabel(""ZUTA"[ Zlatara ]\n"BELA"Da udjete u zlataru stisnite 'F'", 0x9EC73DAA, 1535.4050, -1582.4832, 13.6729, 30, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 30.0);
ServerLabel = CreateDynamic3DTextLabel(""ZUTA"[ Cenovnik ]\n"ZUTA"Kupovna cena: 30.000$\n"ZUTA"Prodajna cena: 15.000$", 0x9EC73DAA, 1258.9843, -571.7369, 1085.2804, 30, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 30.0);
ServerLabel = CreateDynamic3DTextLabel(""ZUTA"[ Pljacka ]\n"ZUTA"Da opljackas zlataru (/pljackajzlataru)", 0x9EC73DAA, 1267.2211, -582.6213, 1082.4845, 30, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 30.0);Definicije boja se mozda nece slagati definicijama vaseg moda te ce te to morati da zamenite
Ubacivanje novih varijabli
Tamo gde su definisani Korisnicki racuni i stockovi za citanje i pisanje u igracev user.ini file doadecete sledece varijable.
U #define KORISNICI "Korisnici/%s.ini" ili kako je vec eefnisano kod vas dodaceo
pZlato,U citanja cemo ubaciti:
INI_Int("Zlato",PlayerInfo);U cuvanja (pisanja) cemo ubaciti:
INI_WriteInt(File,"Zlato",PlayerInfo);Izrada Komandi
Komande za ovu scriptu izradiemo u ZCMD. Za svaku komandu koju postavim detaljno cu pojasniti svaki parametar.
Komanda /kupizlato
CMD:kupizlato(playerid, params[],help)
{
//#pragma unused help
//#pragma unused params
if(!IsPlayerInRangeOfPoint(playerid, 5.0, 1263.1042, -571.6207, 1082.5360)) return SendClientMessage(playerid,-1,"Bauer | "CRVENA"Niste na mestu kupovine zlata!");//ukoliko nije igrac na odredjenoj poziciji izbacuje mu obavestenje
if(PlayerInfo < 30000) return SCM(playerid,-1,"BS:RP | "CRVENA"Nemate dovoljno novca (30.000$)!");//ukoliko u dzepu ima manje od 30k ne moze kupiti 1g zlata
{
PlayerInfo += 1; //daje igracu 1g zlata
g_NovacMinus(playerid, 30000); //skida igracu sa dzepa 30k
SCM(playerid,-1,""ZUTA"INFO | "SIVA"Kupili ste 1g zlata za 30000$!"); //salje igracu obavestenje
SavePlayer(playerid); //cuva nove informacije
new string; //definisemo novi string
format(string, sizeof(string),"~w~%d~r~ G",PlayerInfo); //tekst stringa
PlayerTextDrawSetString(playerid, Zlato, string); //koristimo string ZA update TD-a kasnije cu postaviti ovaj TD
}
return 1;
}NAPOMENA!!!U daljem tekstu postavicu definicju za gNovacMinus, Gore upotrebljen Textdraw. Varijable pZlato i stock SavePLayer mozete prialgoditi svom modu kao sve ostalo.
Komanda prodajzlato (Za prodaju zlata)
CMD:pzlato(playerid, params[],help)
{
//#pragma unused help
//#pragma unused params
if(!IsPlayerInRangeOfPoint(playerid, 5.0, 1256.3179, -571.6730, 1082.5360)) return SendClientMessage(playerid,-1,"Bauer | "CRVENA"Niste na mestu prodaje zlata!"); //ukoliko nije na mestu prodaje ne moze da izvrsi akciju i salje mu se obavestenje
if(PlayerInfo == 0) return SCM(playerid,-1,"BS:RP | "CRVENA"Nemate zlata!"); //ako mu je zlato na 0 ne moze nista da proda :)
{
PlayerInfo -= 1; //ako proda skida mu se 1g
g_NovacPlus(playerid, 15000); //dobija 15k
SCM(playerid,-1,""ZUTA"INFO | "SIVA"Prodali ste 1g zlata za 15000$!"); //salje se obavestenje o prodaji
SavePlayer(playerid); //cuvaju se nove igraceve informacije
new string; //novi string
format(string, sizeof(string),"~w~%d~r~ G",PlayerInfo); //tekst stringa
PlayerTextDrawSetString(playerid, Zlato, string); //sredjujemo TD sa novim stringom
}
return 1;
}U nastavku teksta dobicete stock g_NovacPlus kao i sve sto treba da bi ova CMD radila. Opet ponavljam prilagodite svom modu!!! 🙂
Komanda /pljackajzlataru
CMD:pljackajzlataru(playerid, params[],help)
{
//#pragma unused help
//#pragma unused params
if(!IsPlayerInRangeOfPoint(playerid, 5.0, 1267.2211, -582.6213, 1082.4845)) return SendClientMessage(playerid,-1,"BS:RP | "CRVENA"Niste na mestu plajcke zlatare!");
if(GetPlayerWeapon(playerid) >= 24 && GetPlayerWeapon(playerid) <= 40) return SCM(playerid,-1, ""CRVENA"[BS:RP] "BELA"Morate imati oruzije tokom pljacke!"); //ako igrac nema oruzije ne moze da izvrsi pljacku i salje mu se objasnjenje
{
PlayerInfo += 6; //dobija 6g zlata
g_NovacPlus(playerid, 7000); //dobija 7k novca
SCM(playerid,-1,""ZUTA"INFO | "SIVA"Opljackali ste zlataru (dobili ste 6g i 7k novca)!"); //salje mu se objasnjenj o zavrsetku pljacke
PostaviWanted(playerid, "Pljacka zlatare", "Seksi radnica"); //postavlja mu se wanted level :)
SavePlayer(playerid); //cuva nove igraceve informacije
new string;
format(string, sizeof(string),"~w~%d~r~ G",PlayerInfo);
PlayerTextDrawSetString(playerid, Zlato, string);
}
return 1;
}g_NovacMinus i g_NovacPlus definicije
stock g_NovacPlus(id, iznos)
{
if(iznos < 0 || iznos > 99999999) return 1;
GivePlayerMoney(id, iznos);
PlayerInfo += iznos;
return 1;
}stock g_NovacMinus(id, iznos)
{
if(iznos < 0 || iznos > 999999999) return 1;
GivePlayerMoney(id, -iznos);
PlayerInfo -= iznos;
return 1;
}Izrada TDova
Uradio sam jednostavan TD koji u jednoj liniji pokazuje kolicinu zlata koju trenutno imate.
ZlatoTd(playerid) Upotreba gore obajsnjena:
Definicija ZlatoTd:
Ona predstalja drugi TD koji je broj grama koje imate u dzepu
stock ZlatoTd(playerid)
{
Zlato = CreatePlayerTextDraw(playerid,549.500000, 145.833328, "0");
//TextDrawCreate(494.000000, 145.833328, "ZLATO:");
PlayerTextDrawBackgroundColor(playerid,Zlato, 255);
PlayerTextDrawFont(playerid,Zlato, 1);
PlayerTextDrawLetterSize(playerid,Zlato, 0.371500, 1.915000);
PlayerTextDrawColor(playerid,Zlato, -1);
PlayerTextDrawSetOutline(playerid,Zlato, 0);
PlayerTextDrawAlignment(playerid,Zlato, 1);
PlayerTextDrawSetProportional(playerid,Zlato, 1);
PlayerTextDrawSetShadow(playerid,Zlato, 1);
//PlayerTextDrawUseBox(playerid,Zlato, 1);
//PlayerTextDrawBoxColor(playerid,Zlato, 1111638594);
new string;
format(string, sizeof(string),"~w~%d~r~ G",PlayerInfo);
PlayerTextDrawSetString(playerid, Zlato, string);
PlayerTextDrawShow(playerid, Zlato);
return 1;
}I da bi TD funkcionisao pod callback
public OnPlayerSpawn(playerid)Dodacemo sledecu Liniju:
ZlatoTd(playerid);Za textdraw sa tekstom 'Zlato:' napravio sam sledeci TD:
Textdraw9 = TextDrawCreate(494.000000, 145.833328, "ZLATO:");
TextDrawLetterSize(Textdraw9, 0.371500, 1.915000);
TextDrawAlignment(Textdraw9, 1);
TextDrawColor(Textdraw9, -16776961);
TextDrawSetShadow(Textdraw9, 11);
TextDrawSetOutline(Textdraw9, 0);
TextDrawBackgroundColor(Textdraw9, 51);
TextDrawFont(Textdraw9, 2);
TextDrawSetProportional(Textdraw9, 1);Pod callback OnPlayerSpawn dodajte:
TextDrawShowForPlayer(playerid, Textdraw9);
Ne zaboravite ovo da postavite na pocetak !
new Text:Textdraw9;
new PlayerText:Zlato;Nadam se da sam vam pomogao da neÅ¡to dodate i naucite 🙂

