Pozdrav samperi, eo dns da vam pomogenm i da vam predstavim sistem zlataMalo 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 sistemEh sad ce vam trebati
[/b]
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 callbackpublic 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[ID] = 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[ID] = 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[ID] = 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[ID] = 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[ID] = 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
[/b]
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 dodaceopZlato,
U citanja cemo ubaciti:
INI_Int("Zlato",PlayerInfo[playerid][pZlato]);
U cuvanja (pisanja) cemo ubaciti:
INI_WriteInt(File,"Zlato",PlayerInfo[playerid][pZlato]);
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[playerid][pNovacDzep] < 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[playerid][pZlato] += 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[256]; //definisemo novi string
format(string, sizeof(string),"~w~%d~r~ G",PlayerInfo[playerid][pZlato]); //tekst stringa
PlayerTextDrawSetString(playerid, Zlato[playerid], 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[playerid][pZlato] == 0) return SCM(playerid,-1,"BS:RP | "CRVENA"Nemate zlata!"); //ako mu je zlato na 0 ne moze nista da proda :)
{
PlayerInfo[playerid][pZlato] -= 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[256]; //novi string
format(string, sizeof(string),"~w~%d~r~ G",PlayerInfo[playerid][pZlato]); //tekst stringa
PlayerTextDrawSetString(playerid, Zlato[playerid], 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[playerid][pZlato] += 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[256];
format(string, sizeof(string),"~w~%d~r~ G",PlayerInfo[playerid][pZlato]);
PlayerTextDrawSetString(playerid, Zlato[playerid], 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[id][pNovacDzep] += iznos;
return 1;
}
stock g_NovacMinus(id, iznos)
{
if(iznos < 0 || iznos > 999999999) return 1;
GivePlayerMoney(id, -iznos);
PlayerInfo[id][pNovacDzep] -= iznos;
return 1;
}
Izrada TDovaUradio 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 dzepustock ZlatoTd(playerid)
{
Zlato[playerid] = CreatePlayerTextDraw(playerid,549.500000, 145.833328, "0");
//TextDrawCreate(494.000000, 145.833328, "ZLATO:");
PlayerTextDrawBackgroundColor(playerid,Zlato[playerid], 255);
PlayerTextDrawFont(playerid,Zlato[playerid], 1);
PlayerTextDrawLetterSize(playerid,Zlato[playerid], 0.371500, 1.915000);
PlayerTextDrawColor(playerid,Zlato[playerid], -1);
PlayerTextDrawSetOutline(playerid,Zlato[playerid], 0);
PlayerTextDrawAlignment(playerid,Zlato[playerid], 1);
PlayerTextDrawSetProportional(playerid,Zlato[playerid], 1);
PlayerTextDrawSetShadow(playerid,Zlato[playerid], 1);
//PlayerTextDrawUseBox(playerid,Zlato[playerid], 1);
//PlayerTextDrawBoxColor(playerid,Zlato[playerid], 1111638594);
new string[256];
format(string, sizeof(string),"~w~%d~r~ G",PlayerInfo[playerid][pZlato]);
PlayerTextDrawSetString(playerid, Zlato[playerid], string);
PlayerTextDrawShow(playerid, Zlato[playerid]);
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[MAX_PLAYERS];
Nadam se da sam vam pomogao da nešto dodate i naucite :)
Auuu ljudino,alal ti vera,ovo ako ne pomogne onda je stvarno noob :D
Ima 100 tutorijala za ovo al pohvale nije ni ovo lose ;D
Citat: #TheV1nny_ poslato Avgust 23, 2018, 04:24:19 PRE PODNE
Auuu ljudino,alal ti vera,ovo ako ne pomogne onda je stvarno noob :D
Hvala ljudino :)Citat: M u m i poslato Avgust 23, 2018, 10:29:29 PRE PODNE
Ima 100 tutorijala za ovo al pohvale nije ni ovo lose ;D
Hvala hvala nadam se da je neko nesto skontao i naucio
SVAKA CASTT KRALJU <3333
Hvala za informacije.
pola stvari potpuno nepotrebno, vjv prilagodjeno up modovima
Fino ;D
Citat: .кÑундер poslato Oktobar 03, 2018, 14:26:58 POSLE PODNE
pola stvari potpuno nepotrebno, vjv prilagodjeno up modovima
Sve ti govori g_novacplus i g_novacminus
@tema za pocetnike veoma fin tutorial
Citat: .кÑундер poslato Oktobar 03, 2018, 14:26:58 POSLE PODNE
pola stvari potpuno nepotrebno, vjv prilagodjeno up modovima
Baki prilagoÄ'eno je poÄetnicima da neÅ¡to shvate ili nauÄe :)
Citat: sparrowww.aMx poslato Oktobar 18, 2018, 20:51:20 POSLE PODNE
Baki prilagoÄ'eno je poÄetnicima da neÅ¡to shvate ili nauÄe :)
Nece naucit ako i dajes nepotreban kod kojim se moraju zamarati.
Za sta ti sluzi ovo:
new Text3D:ServerLabel[VAS BROJ +6];
Dalje, zasto mislis da svi koriste enum za cuvanje player varijabla
pZlato
Zasto nisi objasnio sta to znaci - da li je to obavezno da se tako pise i slicno
Zasto mislis da ce svi napraviti zlataru gdje je ti pravis
CreateDynamicPickup(1239, 1, 1263.1042, -571.6207, 1082.5360); //kupovina zlato
CreateDynamicPickup(1239, 1, 1256.3179, -571.6730, 1082.5360);//prodaja zlata
Zasto ucis pogresno pocetnike da postavljaju string size-ove (array size) na neke abnormalne cifre za text koji ne moze da sadrzi ni 50 karaktera?
new string[256];
format(string, sizeof(string),"~w~%d~r~ G",PlayerInfo[playerid][pZlato]);
PlayerTextDrawSetString(playerid, Zlato[playerid], string);
PlayerTextDrawShow(playerid, Zlato[playerid]);
Mislis li da svako koristi taj
#define KORISNICI "Korisnici/%s.ini"
?
Iz ovoga svega sam zakljucio da je ovo pisano samo za Up modove, sto postujem ali da lijepo navedes.
Tako je isto bilo prije par godina na za GF modove su pisali tutoriale kao da svi koriste isti mod...
Super tutorijal
Svaka Äast.Pohvale
Vec imam zlato sistem, ali ovo je VRH!
Citat: // xunder poslato Oktobar 03, 2018, 14:26:58 POSLE PODNE
pola stvari potpuno nepotrebno, vjv prilagodjeno up modovima
I uzeto je sa up moda ja msm, labeli su radjeni kao na up, gNovacPlus je sa UP sve je sliÄno up-u, izvinite ako grijeÅ¡im.
Pohvale za trud.
Dobar!
Slazem se s Xunderom Buggerom :D
Ali oke je tutorial :P
1. MySQL // yini je zastaro odavno
2. Pazi kako pravis stringove
[pawn]
new string[256];
format(string, sizeof(string),"~w~%d~r~ G",PlayerInfo[playerid][pZlato]);
PlayerTextDrawSetString(playerid, Zlato[playerid], string);
PlayerTextDrawShow(playerid, Zlato[playerid]);
[/pawn]
Ode moze da ti stane ne zlato od jednog igraca nego zlato od 20 igraca...
Svakako pohvale za trud :)