Pozdrav svima na forumu, htio bi demonstrirati kako da napravite jednostavni sistem a ujedno i moj prvi sistem ovisnosti koji mozete doraditi koliko hocete i uraditi milion sitnih dodataka da poboljsate isti. OVO JE SAMO SKELETON SISTEMA I NIJE ZAVRSEN SKROZ
Za pocetak sistem radimo u modulu tj. fajlu odvojenom od glavne skripte
Prva stvar koju morate uraditi je kreirati .pwn fajl gdje hocete i includovati ga u glavnoj skripti npr.
[pawn]#include "[modules]/[igrac]/ovisnost.pwn"[/pawn]
Drugi korak je includovati potrebne includove u svoj pwn fajl , mi cemo koristiti
a_samp - glavni include da bi samp skripta uopste radila
y_ini - sluzi za cuvanje stavki u fajl igraca
y_hooks - sluzi da bi mogli iz fajla u kojem se informacije igraca cuvaju hookovati(povuci ) potrebne stavke
y_commands - koristimo za YCMD tj . komande koje pisemo u skripti
[pawn]#include <a_samp>
#include <ysilib\YSI_Storage\y_ini>
#include <ysilib\YSI_Coding\y_hooks>
#include <ysilib\YSI_Visual\y_commands>[/pawn]
Ispod includova potrebno je dodati staticne stavke koje se dodaju igracu u cuvanj
[pawn]static
iOvisnost[MAX_PLAYERS],
iCigareKoristenje[MAX_PLAYERS];[/pawn]
Da bi mogli upisati ove informacije u igracev fajl potrebno je hookovati account te napraviti ove stavke da bi se mogle upisati u fajl, Account_Load je potrebno napraviti u login sistemu ako koristite module, ako radite u jednom fajlu samo INI dodate gdje registracija igraca
[pawn]hook Account_Load(const playerid, const string: name[], const string: value[]);
hook Account_Load(const playerid, const string: name[], const string: value[])
{
INI_Int("iOvisnost", iOvisnost[playerid]);
INI_Int("CigareKoristenje", iCigareKoristenje[playerid]);
return Y_HOOKS_CONTINUE_RETURN_1;
}[/pawn]
Nakon sto smo povukli account pocinjemo pisati komandu, za pocetak provjeravamo broj koliko je igrac cigara zapalio te u slucaju da je to manje od 10 (moze te staviti koliko hocete) igracu se dodaje animacije pusenja, koristene cigare se dodaju na kraju komande jer svakim koristenjem komande jedna cigara ce se dodati
[pawn]if(iCigareKoristenje[playerid] < 10)
{
SendClientMessage(playerid, col_white, "Jos niste postali ovisni"); //SCM je samo za debug, col_white definisite po zelji ili koristite svoje boje
ApplyAnimation(playerid, "GANGS", "smkcig_prtl", 4.1, 1, 1, 1, 1, 1, 1);
} [/pawn]
Listu animacija mozete pogledati na linku https://open.mp/docs/scripting/resources/animations (https://open.mp/docs/scripting/resources/animations)
Dodajemo novu provjeru koja provjerava da li je igrac koristio vise od zadanog broja cigara u nasem slucaju 10, te mu dodajemo ovisnost, provjeru heltha i da svakim paljenjem naredne cigare skida odredjen HP
[pawn]else if(iCigareKoristenje[playerid] > 10)
{
SendClientMessage(playerid, col_white, "Postali ste ovisnik od cigara"); //debug, boje gore objasnjene
iOvisnost[playerid] = 1; // dodaje ovisnost
new Float:phealth; // kreiramo float phealth koji cemo kasnije dobiti koristenjem funkcije GetPlayerHealth
GetPlayerHealth(playerid, phealth); // dobijamo igracev health
SetPlayerHealth(playerid, phealth -= 10.0); //postavljamo da dobijeni health izgubi 10 HP i tako dok igrac ne umre, sve mozete modifikovati i odrediti koliko hp ce gubiti
}[/pawn]
Na samom kraju dodajemo jednostavno dodavanje koristenih cigareta te cuvamo sve informacije dobivene gore
[pawn]iCigareKoristenje[playerid] += 1;
new INI:File = INI_Open(Korisnici(playerid));
INI_SetTag( File, "data" );
INI_WriteInt(File, "CigareKoristenje", iCigareKoristenje[playerid]);
INI_WriteInt(File, "Ovisnost", iOvisnost[playerid]);
INI_Close( File );
return Y_HOOKS_CONTINUE_RETURN_1;
}[/pawn]
Na kraju udjete u glavnu skriptu i kompajlujete, ako ste uradili sve ispravno uspjesno ce vam se kompajlovati i moci ce te koristit i editovati ovo
Ja vam ne planiram rjesavati errore jer nemam vremena
Ovo mi je prvi tutorial te se nadam da vam se svidja, volio bi cuti konstruktivne kritike i savjete te neku ocjenu, "sistem" nije toliko koristan al moze posluziti za neki roleplay server
CitatPrva stvar koju morate uraditi je kreirati .pwn fajl gdje hocete i includovati ga u glavnoj skripti npr.
Nema potrebe raditi modularno kada vec pises tutorijal (kao ni y_hooks).
CitatIspod includova potrebno je dodati staticne stavke koje se dodaju igracu u cuvanj
Stavke? To su promenljive (varijable).
Promenljiva
iOvisnost bi trebala biti boolean, jer joj je vrednost 0 ili 1. (true, false).
Ovaj tutorijal moze daleko bolji da bude, ima gresaka u kodu, i komentarisanje linija je lose. Samo nastavi da ucis.
Koristi levo poravnanje teksta kada pises kod da bi bilo pregledno. Ove svetle nijanse zute boje promeniti da se vidi lepo.
Citat: Vasic poslato Jun 26, 2022, 23:29:56 POSLE PODNE
Nema potrebe raditi modularno kada vec pises tutorijal (kao ni y_hooks).
Stavke? To su promenljive (varijable).
Promenljiva iOvisnost bi trebala biti boolean, jer joj je vrednost 0 ili 1. (true, false).
Ovaj tutorijal moze daleko bolji da bude, ima gresaka u kodu, i komentarisanje linija je lose. Samo nastavi da ucis.
Koristi levo poravnanje teksta kada pises kod da bi bilo pregledno. Ove svetle nijanse zute boje promeniti da se vidi lepo.
Radio sam nesta na montrey modu pa sam u modulima radio jer mi je preglednije
iOvisnost bi trebala imati 3 nivoa zato sam ostavio onako jer sam htio doraditi jos par ovisnosti
Znam da ima gresaka u kodu ono prvi put da radim nesta tkd hvala <3