[TuT]Reg/Log Sistem(pojasnjeno)

Započeo Mister.Scripter, Jun 19, 2013, 21:52:33 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Dobar dan! danas cu se potruditi da vas naucim napraviti Reg/Log sistem!


Prvo dodajte vazane includove koji vam je vazan za spremanje a mi cemo koristit dini i dudb!
#include <dini>
#include <dudb>


Takodjer Na vrh skripte dodajte:
enum pInfo
{
    pAdminLevel,
    pCash,
    pScore,
}


Sto znaci enum i ostalo unutar njega pCash,pScore i pAdminLevel? to vam znaci da ce to sve spremati kada napravimo cijeli reg log sistem!
Pa nastavimo...Dodajte ispod toga varijablu

new PlayerInfo[MAX_PLAYERS][pInfo];

Kod mene vam to izgleda ovako
enum pInfo
{
    pAdminLevel,
    pCash,
    pScore,
}
new PlayerInfo[MAX_PLAYERS][pInfo];


Pa onda pod OnPlayerConnect dodajte:
    gPlayerLogged[playerid] = 0;
    new name[MAX_PLAYER_NAME], file[256];
    GetPlayerName(playerid, name, sizeof(name));
    format(file, sizeof(file), SERVER_USER_FILE, name);
    if (!dini_Exists(file))
    {
        ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "{F50247}Niste registrovani", "{22D8E6}Dobrodosli, niste registrovani. Molim registrujte se da bi mogli igrati", "Registruj", "Odustani");
    }
    if(fexist(file))
    {
        ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "{F50247}Vi ste registrovani", "{22D8E6}Dobrodosli, vi ste registrovani. Logirajte se", "Logiraj", "Odustani");
    }


gPlayerLogged[playerid] = 0; //On vam provjerava dali je igrac logovan ako je igrac logovan biti ce vam gPlayerLogged[playerid] = 1;

Zbog gPlayerLogged[playerid] = 0; morate napraviti novu varijablu na vrhu skripte!
new gPlayerLogged[MAX_PLAYERS];

Kada ste napravili novu varijablu dodajte pod OnPlayerDisconnect:
    new name[MAX_PLAYER_NAME], file[256];
    GetPlayerName(playerid, name, sizeof(name));
    format(file, sizeof(file), SERVER_USER_FILE, name);
    if(gPlayerLogged[playerid] == 1)
    {
        dini_IntSet(file, "Level", PlayerInfo[playerid][pScore]);
        dini_IntSet(file, "Novac", PlayerInfo[playerid][pCash]);
        dini_IntSet(file, "AdminLevel",PlayerInfo[playerid][pAdminLevel]);
    }
    gPlayerLogged[playerid] = 0;


Ista vam je tu stvar sto sam vam pricao znaci dudb vam je tu potreban jer se preko njega sprema! znaci vidite...if(gPlayerLogged[playerid] == 1),on provjerava dali je igrac ulogovan i onda u vasem scriptfilesu u korisnicima dok napravimo tu mapu ce spremati tamo igraceve stvari

Sada dodajte pod OnDialogResponse:
if (dialogid == 1)
    {
        new name[MAX_PLAYER_NAME], file[256], string[128];
        GetPlayerName(playerid, name, sizeof(name));
        format(file, sizeof(file), SERVER_USER_FILE, name);
        if(!response) return Kick(playerid);
        if (!strlen(inputtext)) return
        ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "{F50247}Niste registrovani", "{22D8E6}Dobrodosli, niste registrovani. Molim registrujte se da bi mogli igrati", "Registruj", "Odustani");
        dini_Create(file);
        dini_IntSet(file, "Lozinka", udb_hash(inputtext));
        dini_IntSet(file, "AdminLevel",PlayerInfo[playerid][pAdminLevel] = 0);
        dini_IntSet(file, "Novci",PlayerInfo[playerid][pCash] = 500);
        dini_IntSet(file, "Level",PlayerInfo[playerid][pScore] = 0);
        format(string, 128, "Registrirali ste se %s s sifrom %s, automatski ste logirani.", name, inputtext);
        SendClientMessage(playerid, COLOR_YELLOW, string);
        gPlayerLogged[playerid] = 1;
    }
if (dialogid == 2)
    {
        new name[MAX_PLAYER_NAME], file[256];
        GetPlayerName(playerid, name, sizeof(name));
        format(file, sizeof(file), SERVER_USER_FILE, name);
        if(!response) return Kick(playerid);
        if (!strlen(inputtext)) return ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "{F50247}Vi ste registrovani", "{22D8E6}Dobrodosli, vi ste registrovani. Logirajte se", "Logiraj", "Odustani");
        new tmp;
        tmp = dini_Int(file, "Lozinka");
        if(udb_hash(inputtext) != tmp) {
            SendClientMessage(playerid, COLOR_RED, "Pogresna lozinka.");
            ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "{F50247}Vi ste registrovani", "{22D8E6}Dobrodosli, vi ste registrovani. Logirajte se", "Logiraj", "Odustani");
        }
        else
        {
            gPlayerLogged[playerid] = 1;
            PlayerInfo[playerid][pAdminLevel] = dini_Int(file, "AdminLevel");
            SetPlayerScore(playerid, PlayerInfo[playerid][pScore]);
            GivePlayerMoney(playerid, dini_Int(file, "Novci")-GetPlayerMoney(playerid));
            SendClientMessage(playerid,COLOR_RED, "Logirani ste!!");
        }
    }


Tu vam je sve napravljeno vecinom da sprema novce i sve sto ste napravili u enumu!

Sada napravite novi define koji ce spremati vase igraceve podatke! i boje ako zelite da vam ostanu kakve jesu!

#define SERVER_USER_FILE "igraci/%s.ini"

#define COLOR_YELLOW 0xDABB3EAA
#define COLOR_RED 0xAA3333AA


Znaci SERVER_USER_FILE to vam je path spremanja kao neznam kako da se izrazim ali tako je nekako!

Morate napraviti novu mapu u vasem scriptfilesu "igraci",ali pazite da dobro napisete jer vam nece spremati podatke ako ne napisete tocno ime mape!

Pa eto nadam se da ce vam nesto od ovoga pomoci momci! ovo mi je prvi tutorial vise je neki Reg/log sistem!
Poslednja Izmena: Jun 20, 2013, 10:14:24 PRE PODNE od Mister.Scripter

Grozno.Pojasnio si 4 najlakse funkcije koje mozes zakljuciti zdravim mozgom...


[FS]Rent
[FS] Vremenska prognoza
[TuT] PayDay
[TuT]PayDay sistem[UPDATED]
Moja Biografija

Respect:Mr.Gagi,FlasH,Streetboy,David (Sabljak) A.k.A SABO(T)
ÄŒovjek nije stvoren za poraze, moze biti unisten, ali ne i pobjeÄ'en!

Kolko ja znam moze da se skripta i bez ovih funkcija... :D
RESPECT: Blaeks, Yui_Sang, Gagi, Kapetan Husein, Luksa, Slay, Denis_Lapi, Zoran(Dude)

Programski jezici koje koristim: C, C#, Visual Basic, HTML, CSS, PHP (tek ucim).


Fino je napsiao da ce sutra editati
Mislim dakle Boze
Na Zari sve i svasta

Citat: |LZ| Bugi poslato Jun 19, 2013, 23:27:06 POSLE PODNE
Kolko ja znam moze da se skripta i bez ovih funkcija... :D

Ali ako zelis napravit RP server obavezne su ove funkcije

Citat: [BS:RP]xyzcod2 poslato Jun 19, 2013, 23:16:56 POSLE PODNE
Grozno.Pojasnio si 4 najlakse funkcije koje mozes zakljuciti zdravim mozgom...

Pa dobro nije problem izbriso sam sve od funkcija i napravio Reg/Log sistem!
Poslednja Izmena: Jun 20, 2013, 10:46:30 PRE PODNE od Mister.Scripter

hahahaha ovo nemozze proci da se covjek ne nasmije ko jos ziv koristi dini? yini se koristi jer je brzi i efikasniji :D
Poslednja Izmena: Jun 20, 2013, 11:43:15 PRE PODNE od Master.amx

Citat: Master.amx poslato Jun 20, 2013, 11:41:57 PRE PODNE
hahahaha ovo nemozze proci da se covjek ne nasmije ko jos ziv koristi dini? yini se koristi jer je brzi i efikasniji :D

pa dobro ovo je za pocetnike kako nemogu ti objasnit!

pax95

Taj tvoj tutorial previse mi lici na ovaj ovde: http://forum.sa-mp.com/showthread.php?t=167937
I ima greska moze to mnogo bolje

EDIT:
Po meni ima mnogo slicnosti samo si neke sitne stvari izmenio ili nisi prekopirao
Poslednja Izmena: Jun 20, 2013, 13:28:51 POSLE PODNE od Mr.Gagi

Citat: Mr.Gagi poslato Jun 20, 2013, 13:24:00 POSLE PODNE
Taj tvoj tutorial previse mi lici na ovaj ovde: http://forum.sa-mp.com/showthread.php?t=167937
I ima greska moze to mnogo bolje

EDIT:
Po meni ima mnogo slicnosti samo si neke sitne stvari izmenio ili nisi prekopirao
kao sto gakaze,isti je tutorial,koristis iste varijable,iste provjere cak i iste RAZMAKE(mozda neko smatra da sam lud..xd) Prekopirano


[FS]Rent
[FS] Vremenska prognoza
[TuT] PayDay
[TuT]PayDay sistem[UPDATED]
Moja Biografija

Respect:Mr.Gagi,FlasH,Streetboy,David (Sabljak) A.k.A SABO(T)
ÄŒovjek nije stvoren za poraze, moze biti unisten, ali ne i pobjeÄ'en!

Žali bože da još uvijek se rade tutoriali sa dini w/r
Sve u svemu, pun greÅ¡aka joÅ¡ uz to Å¡to je raÄ'en sa dini-em
Kristijan Stipić

Citat: Slay_ poslato Jun 20, 2013, 13:43:21 POSLE PODNE
Žali bože da još uvijek se rade tutoriali sa dini w/r
Sve u svemu, pun greÅ¡aka joÅ¡ uz to Å¡to je raÄ'en sa dini-em

Slažem se, lock.