Sistem ovisnosti[y_ini]

Započeo D4NCH1, Jun 26, 2022, 22:18:40 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

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

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


zaboravio sam dodati ali pocetak komande samo napisete
[pawn]YCMD:zapalicigaru(playerid, params[], help)
{[/pawn]

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.

• Website: www.vasic.dev
Web Development & Cyber Security

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



hajd i nije loše
BIGDOG ENTERTAINMENT