[TuT] Register & Log In system u dialogu


Započeo tRonic.pWn, Januar 11, 2013, 23:53:11 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Tutorial: Register & Login system
Dali je tutorial preuzet sa drugog foruma ili ste ga vi napravili: napravio

Tutorial

Prvi korak | Definiranje

Definirajte server fajl (Gdje ce vam se spremati) - Ovako
#define SERVER_USER_FILE "igraci/%s.ini"


Pod definiranje includova dodajte:
#include <dini>  
#include <dudb>


U slucaju da dobijete warning samo ispod zalijepite ovo:
#pragma unused ret_memcpy


Idemo na iduci korak | Pamcenje

Gdje stavljate enume dodajte:
enum pInfo  
{  
    pAdminLevel,  
    pCash,  
    pScore,  
}  
new PlayerInfo[MAX_PLAYERS][pInfo];


Kada ste to uradili ispod
new PlayerInfo[MAX_PLAYERS][pInfo]
Dodajte
new gPlayerLogged[MAX_PLAYERS];


Treći korak | Dodavanje dialoga

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, "Registracija", "Dobrodosli, vi ne posjedujete account\nMolimo upisite vasu sifru za daljnu proceduru.", "Regisracija", "Izlaz");  
    }  
    if(fexist(file))  
    {  
        ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Log In", "Dobrodosli, lijepo vas je ponovo vidjeti.\nVi posjedujete account molimo prijavite se.", "Login", "Izlaz");  
    }  
   return 1;  
}


Cetvrti korak | Spremanje

Kao sto sam rekao spremanje je u dini... pod
OnPlayerDisconnect
Stavite sledeće:


new file[256], name[24];
    	GetPlayerName(playerid, name, 24);
		format(file,sizeof(file),"igraci/%s.ini",name);
		if(dini_Exists(file))
		{
dini_Int(file, "AdminLevel",PlayerInfo[playerid][pAdminLevel]);  
dini_Int(file, "Novci",PlayerInfo[playerid][pCash]);  
dini_Int(file, "Level",PlayerInfo[playerid][pScore]);
dini_Close(file);


Kada ste uradili , prelazimo na najlakse | OnDialogResponse

Pod
OnDialogResponse
Dodajete:

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])  
{  
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, "Registracija", "Dobrodosli, vi ne posjedujete account\nMolimo upisite vasu sifru za daljnu proceduru.", "Registracija", "Izlaz");  
        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, "Postovani %s registrovali ste se sa sifrom %s, automatski ste logirani.", name, inputtext);  
        SendClientMessage(playerid, -1, string);  
        gPlayerLogged[playerid] = 1;  
    }  
   if (dialogid == 2)  
    {  
        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, 2, DIALOG_STYLE_INPUT, "Log In", "Dobrodosli, lijepo vas je ponovo vidjeti.\nVi posjedujete account molimo prijavite se.", "Login", "Leave");  
        new tmp;  
        tmp = dini_Int(file, "Lozinka");  
        if(udb_hash(inputtext) != tmp) {  
            SendClientMessage(playerid, COLOR_RED, "Pogresna lozinka.");  
            ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Login", "Pogresna lozinka.UpiÅ¡ite tačnu lozinku da bi nastavili dalje.", "Login", "Izadji");  
        }  
        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,-1, "Logirani ste!!");  
        }  
    }  
   return 1;  
}


Pozdrav tRonic.pwn
Poslednja Izmena: Januar 12, 2013, 00:05:05 PRE PODNE od tRonic.pWn
Y United Europe - RolePlay 50% Finish....





Blaeks

*

Madmen

nemoj da koristis dini, mnogo je spor,  jedan od najsporijih sistem spremanja u datoteke

napravicu i u y_ini .. i btw zasto nisi moderator  ???
Y United Europe - RolePlay 50% Finish....





koristi y_ini jako je brzi od dinia sve u svemu koristan tut pohvale
Pravim RP,DM,TDM,STUNT, Freeroam modove od 0 za pare, nacini placanja : Paypal ili banka

Blaeks

*

Madmen

Citat: tRonic.pWn poslato Januar 11, 2013, 23:56:29 POSLE PODNE
napravicu i u y_ini .. i btw zasto nisi moderator  ???
ja sam moderator samo u jednom PDFu xd

Citat: Blaeks poslato Januar 11, 2013, 23:58:12 POSLE PODNE
Citat: tRonic.pWn poslato Januar 11, 2013, 23:56:29 POSLE PODNE
napravicu i u y_ini .. i btw zasto nisi moderator  ???
ja sam moderator samo u jednom PDFu xd

Aha aha :D napravicu ja i u y_ini :D napravicu jos par nekih xd :D <3
Y United Europe - RolePlay 50% Finish....





Lock. Dini je prestar i ne isplati se koristiti.
Btw. uopće ti ni si radio ovaj register login jer svaka fs register login s dini ima oavj system. ;)