Balkan SA:MP

San Andreas Multiplayer - www.sa-mp.com => Tutorijali u vezi SA-MPa => Temu započeo: sparrowww.aMx poslato Avgust 22, 2018, 22:21:36 POSLE PODNE

Naslov: Zlato
Poruka od: sparrowww.aMx poslato Avgust 22, 2018, 22:21:36 POSLE PODNE
Pozdrav samperi, eo dns da vam pomogenm i da vam predstavim sistem zlata
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
[/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 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[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 dodaceo

pZlato,
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 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[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 :)
Naslov: Odg: Zlato
Poruka od: Ƭ H Σ Ʋ 1 ∏ ∏ Ψ _ poslato Avgust 23, 2018, 04:24:19 PRE PODNE
Auuu ljudino,alal ti vera,ovo ako ne pomogne onda je stvarno noob :D
Naslov: Odg: Zlato
Poruka od: 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
Naslov: Odg: Zlato
Poruka od: sparrowww.aMx poslato Avgust 23, 2018, 15:28:52 POSLE PODNE
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
Naslov: Odg: Zlato
Poruka od: Timur Script poslato Septembar 05, 2018, 21:58:01 POSLE PODNE
SVAKA CASTT KRALJU <3333
Naslov: Odg: Zlato
Poruka od: sparrowww.aMx poslato Septembar 08, 2018, 14:28:58 POSLE PODNE
Citat: Timur Script poslato Septembar 05, 2018, 21:58:01 POSLE PODNE
SVAKA CASTT KRALJU <3333
Hvala <3
Naslov: Odg: Zlato
Poruka od: JohnWick7 poslato Oktobar 03, 2018, 05:08:58 PRE PODNE
Hvala za informacije.
Naslov: Odg: Zlato
Poruka od: // xunder poslato Oktobar 03, 2018, 14:26:58 POSLE PODNE
pola stvari potpuno nepotrebno, vjv prilagodjeno up modovima
Naslov: Odg: Zlato
Poruka od: Mr.GordoN poslato Oktobar 06, 2018, 15:56:53 POSLE PODNE
Fino  ;D
Naslov: Odg: Zlato
Poruka od: anderson87 poslato Oktobar 06, 2018, 16:02:44 POSLE PODNE
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
Naslov: Odg: Zlato
Poruka od: sparrowww.aMx poslato Oktobar 18, 2018, 20:51:20 POSLE PODNE
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 :)

Naslov: Odg: Zlato
Poruka od: // xunder poslato Oktobar 19, 2018, 12:10:21 POSLE PODNE
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...
Naslov: Odg: Zlato
Poruka od: Roby Mapper poslato Oktobar 20, 2018, 22:50:42 POSLE PODNE
Super tutorijal
Naslov: Odg: Zlato
Poruka od: sparrowww.aMx poslato Oktobar 24, 2018, 22:35:42 POSLE PODNE
Citat: Roby Maper poslato Oktobar 20, 2018, 22:50:42 POSLE PODNE
Super tutorijal
Zahvaljujem ;)
Naslov: Odg: Zlato
Poruka od: Šutke ツ poslato Oktobar 25, 2018, 20:40:28 POSLE PODNE
Svaka čast.Pohvale
Naslov: Odg: Zlato
Poruka od: mario133 poslato Decembar 27, 2018, 13:56:12 POSLE PODNE
Vec imam zlato sistem, ali ovo je VRH!
Naslov: Odg: Zlato
Poruka od: salqnovic poslato Decembar 27, 2018, 14:02:55 POSLE PODNE
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.
Naslov: Odg: Zlato
Poruka od: Agent 47 poslato Decembar 27, 2018, 14:29:37 POSLE PODNE
Dobar!
Naslov: Odg: Zlato
Poruka od: Purdinho poslato Decembar 27, 2018, 14:51:25 POSLE PODNE
Slazem se s Xunderom Buggerom :D
Ali oke je tutorial :P
Naslov: Odg: Zlato
Poruka od: omcho poslato Decembar 27, 2018, 23:23:20 POSLE PODNE
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 :)