FiveGame SA:MP GameMod, Tutoriale
http://fivegame.amforum.net/t153-preturi-admin-hel
Grand Theft Auto Multiplayer


Ţin să te anunţ că http://fivegame.amforum.net este în căutare de moderatori pentru diferite categorii ale forumului, acestea sunt Ajutor Scripting, Gamemode-uri , Filterscript-uri, Designer

Că să fiţi moderator trebuie să intepliniti următoarele cerinţe:

Să aveţi minim 15 ani. Să aveţi experienţă în PAWN sau C++. Să vorbiţi corect şi să scrieţi corect. Să respectaţi pe ceilalţi din jur. Să aveţi minim 1-2 ore dedicate forumului pe zi.

FiveGame SA:MP Daca aveti orice fel de intrebari nu ezitati sa ne contactati. O zi buna, Echipa FiveGame.AmForum.Net
93.119.26.230:7777

de inceput 14kk+ level 3 + 6rp /getgift on

SYSTEME NOII,EVENTE new NOII COMENZI /JOINMISSION NEW /AREPAIR /ASKINS /ARED /ABLUE /AMOV /AVERDE /gnod /gms SI MULTE ALTELE COMENZI

va asteptam cu drag.
nu itati si de formul nostru fivegame.amforum.net
93.119.26.230:7777
http://rpg-fivegame.esy.es
FiveGame RPG

FiveGame RPG

Grand Theft Auto Multiplayer


Ţin să te anunţ că http://rpg-fivegame.esy.es este în căutare de moderatori pentru diferite categorii ale forumului, acestea sunt Ajutor Scripting, Gamemode-uri , Filterscript-uri, Designer

Că să fiţi moderator trebuie să intepliniti următoarele cerinţe:

Să aveţi minim 15 ani. Să aveţi experienţă în PAWN sau C++. Să vorbiţi corect şi să scrieţi corect. Să respectaţi pe ceilalţi din jur. Să aveţi minim 1-2 ore dedicate forumului pe zi.

Noiembrie 2017
LunMarMierJoiVinSamDum
  12345
6789101112
13141516171819
20212223242526
27282930   

Calendar

Flux RSS

Yahoo! 
MSN 
AOL 
Netvibes 
Bloglines 
Navigare
 Portal
 Index
 Membri
 Profil
 FAQ
 Cautare
Cine este conectat?
In total sunt 10 utilizatori conectati: 0 Inregistrati, 0 Invizibil si 10 Vizitatori :: 1 Motor de cautare

Nici unul

Vizualizeaza toata lista

Parteneri


forum new Fivegame RPG
http://rpg-fivegame.esy.es




Fan http://mobiclub.hi2.ro


Salut, vreau sa va anunț ca în

    Nu exista anunturi disponibile


    Distribuiţi
    Vezi subiectul anteriorIn josVezi subiectul urmator
    Shower
    Fundator
    Fundator
    Mesaje : 218
    Data de inscriere : 11/10/2015
    Varsta : 24

    Tutorial Register/Login MYSQL R39

    la data de 4/6/2016, 07:56
    Reputaţie mesaje: 100% (1 voturi)
    Salutare, azi am sa va prezint cum sa faceti un tutorial register/login mysql R39.
    Mai intai o sa va trebuiasca pluginul si includeul mysql care ip puteti gas[Trebuie sa fiti inscris si conectat pentru a vedea acest link]
    Mai intai o sa punem la inceputul GM-ului include-ul mysql.

     
    [ltr][Trebuie sa fiti inscris si conectat pentru a vedea acest link] [/ltr]
     
    Acum o sa definim datele de conectare
    [ltr][Trebuie sa fiti inscris si conectat pentru a vedea acest link] mysql_host "localhost" // aici punem ip hostului. Daca folosim in PC GM lasam localhost
    [Trebuie sa fiti inscris si conectat pentru a vedea acest link] mysql_db "bazadate"// aici punem numele bazei de date.
    [Trebuie sa fiti inscris si conectat pentru a vedea acest link] mysql_user "root"// aici punem numele userului de la host. Daca folositi PC lasati root.
    [Trebuie sa fiti inscris si conectat pentru a vedea acest link] mysql_pass ""//Aici puneti parola de la host(de la phpmyadmin al hostului). In caz de folositi PC lasati asa.[/ltr]

     
    Vom crea 2 Enum-uri. Unul cu dialogurile de register/login si altul cu datele pe care le va avea playerul

    [ltr]enum
    {
        DIALOG_LOGIN, // dialogul de login
        DIALOG_REGISTER// dialogul de register
    };

    enum pInfo //numele enumului este pInfo. in el vom pune datele playerului gen Admin/Level/ Money/Experianta si altele.
    {
        pParola,//cu pParola vom lua parola din baza de date a playerului
        pID// cu pID vom lua ID-ul din baza de date a playerului
    };

    new P_Data[MAX_PLAYERS][pInfo];// Aceasta variabila este array. cu ea vom verifica 2 lucruri. id playerului si datele lui gen P_Data[playerid][pID] == 1;

    [/ltr]

     
    Vom crea acum un new care ne va ajuta sa conectam datele de conectarea cu baza de date

    [ltr]new handle; // handle(mâner) este cea de care ne vom folosi sa facem lagatura intre baza de date si server [/ltr]
    Acum vom crea legatura intre baza de date si server.
     

    [ltr]forward MySQLConnect();// se creaza un nou callback cu forward
    public MySQLConnect()// se face callback-ul
    {
        handle = mysql_connect(mysql_host, mysql_user, mysql_db, mysql_pass);// definim handle(manerul) ca fiind conectarea mysql la host, baza de date, parola si user-ul
        if(mysql_errno() != 0)// in caz ca aceasta va fi diferita de 0(0 inseamna ca e conectat, 1 inseamna ca nu e conectat , fiind un vector)
        {
            printf("Conexiunea la baza de date %s a esuat ---> Server Inchis ~~~", mysql_db);// va trimite un mesaj in consola
            SendRconCommand("exit");// se inchide serverul
        }
        else// altfel daca este 0(daca se face legatura)
        {
            printf("Conexiunea la baza de date '%s' cu user-ul '%s' a reusit!!!", mysql_db, mysql_user);// ne va da acest mesaj in consola
        }
        return 1;
    }[/ltr]

     
    Callback-ul MySQLConnect se va pune la OnGameModeInit pentru a fi finalizata conectarea la baza de date.

    [ltr]public OnGameModeInit()
    {
        MySQLConnect();
        return 1;
    }[/ltr]

    Se va crea un stock simplu cu care vom selecta numele playerului
     
    [ltr]stock GetName(playerid)
    {
    new Name[MAX_PLAYER_NAME];

    GetPlayerName(playerid, Name, sizeof(Name));
    return Name;
    }[/ltr]

     
    Acum vom se va crea un nou callback , la care vom apela cand playerul se conecteaza. El va arata daca are cont sau nu.
     

    [ltr]forward OnPlayerLogin(playerid);// se creaza callbac-ul
    public OnPlayerLogin(playerid)//Se creaza publicul
    {
        new rows, fields;// definim rows(randurile)si fields(domeniile)
        cache_get_data(rows, fields);//cache_get_data interogheaza date din baza de date. acele date sunt rows si fields
        if(rows)// atunci cand playerul se inregistreaza i se va crea niste randuri. Daca i se gasesc atunci cand se va conecta ii va da:
        {
            ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Logheaza-te!", "Te rog sa-ti introduci parola contuului mai jos!", "Logare", "Exit");// dialogul register
        }
        else// daca nu i se gasesc randuri, adica daca contul nu exista, atunci i se va da urmatorul dialog
        {
            ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Inregistrare", "Trebuie sa iti creezi un cont ca sa joci pe server. nTasteaza mai jos o parola, pentru a te inregistra!", "Inregistreaza", "Exit");// dialogul register
        }
        return 1;
    }
    [/ltr]

     
    Acum ca am creat dialogul care ne ajuta sa verificam daca playerul are cont sau nu , mergem la OnPlayerConnect si punem urmatoarele:
     

    [ltr]public OnPlayerConnect(playerid)
    {
        new query[100];// definim query(interogare)
        mysql_format(handle, query, sizeof(query), "SELECT * FROM conturi WHERE Nume = '%s'", GetName(playerid));// mysql format face interogarile/setarile/obtiunile/updateurile la baza de date
        //handle reprezinta conectarea la mysql, query si sizeof(queri) reprezinta interogarea
        //"SELECT * FROM conturi WHERE Nume = '%s'"- Selecteaza de la tabelul cu conturi, unde numele este %s(de exemplu eu am numele Widualk pe sa-mp. Mi se va extrage numele si
        mysql_tquery(handle, query, "OnPlayerLogin", "i", playerid);// se va interoga OnPlayerLogin. Adica mai pe scurt , cand se conecteaza se va verifica daca are cont sau nu acel player.
        return 1;
    }[/ltr]

     
    Acum ca am terminat cu callback-urile de la conectare, vom crea dialogurile.
     

    [ltr]public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
        new query[128], ip[25];// se creaza interogarea si ip.
        switch(dialogid)// se va folosi switch pentru a selecta dialogul
        {
            case [Trebuie sa fiti inscris si conectat pentru a vedea acest link] daca se va selecta dialogul register
            {
                if(!response)
                        return Kick(playerid);// daca se va apasa pe butonul Exit ii va da kick
                if(response)// daca se apasa pe Butonul inregistrare se vor face urmatoarele verificari
                {
                    if(!strlen(inputtext))// daca nu e scris nimic la parola
                            return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Parola incorecta!", "Introdu-ti o parola pentru a te inregistra pe server! n", "Inregistreaza", "Exit");// ii va da din nou dialogul register cu mesajul specific

                    GetPlayerIp(playerid, ip, sizeof(ip));// definim ip-ul de mai sus
                    mysql_format(handle, query, sizeof(query), "INSERT INTO conturi (Nume, Parola, IP) VALUES ('%s', '%e', '%s')", GetName(playerid), inputtext, ip);// se insereaza in tabelul cu conturi numele playerului, parola pe care a scris-o si ip pe care il are
                    mysql_query(handle, query);// se va trimite setarile si se va interoga callback-ul OnRegistration
                    SpawnPlayer(playerid); // ii da spawn
                }
                return 1;
            }
            case [Trebuie sa fiti inscris si conectat pentru a vedea acest link] daca se va selecta dialogul de login
            {
                if(!response) return Kick(playerid);// si se va apasa pe butonul exit ii va da kick
                if(response)//daca se apasa pe butonul LOGARE se va face urmatoarele verificari
                {
                    if(!strlen(inputtext))// daca nu a scris nimic la parola
                            return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Parola incorecta!", "Te rog sa iti introduci parola corecta, pentru a te loga pe server.", "Logare", "Exit");// ii va da dialogul cu login cu mesajul specific
                    // daca se va trece peste aceasta verificare se vor face urmatoarele:
                    mysql_format(handle, query, sizeof(query), "SELECT * FROM `conturi` WHERE `Nume`='%e' AND `Parola` = '%e'", GetName(playerid),inputtext);// va fi selectata parola de la tabelul cu conturi
    mysql_tquery(handle, query, "OnLogin", "i", playerid);// se va face apel la baza si se va interoga CallBackUl OnLogin (Tquery = take query sau ia interogare in romana)
                }
                return 1;
            }
        }
        return 1;
    }[/ltr]

     
    Acum , ca am facut dialogurile , vom crea calback-urile care se interogheaza la dialogurile de mai sus.
    Vom crea callback-ul pentrul dialogul de register.

     
    Acum , vom crea callback-ul la care apeleaza dialogul de login
     

    [ltr]forward OnLogin(playerid);// definim callback ul
    public OnLogin(playerid)// facem publicul
    {
        new rows, fields,temporar[200];// definim randurile si domeniile, iar temporar se va folosi la extragerea stringurilor
        cache_get_data(rows, fields);// facem interogarea lor
        if(rows)// daca playerul are randuri(adica daca are cont creat, odata cu contul se creeaza randurile)
        {
            //deci daca are randuri
            cache_get_field_content(0, "Parola",temporar), format(P_Data[playerid][pParola], 25, temporar);// i se vaextrage parola si i se verifica daca coincide cu numele. Se foloseste new-ul temporar pentru extragerea parolei, ea retinandu-se temporar(pana cand se deconecteaza jucatorul)
            P_Data[playerid][pID] = cache_get_field_content_int(0, "ID");// i se vaextrage ip-ul
            //un exemplu ar fi , daca are Admin , va fi ceva de genu P_Data[playerid][pAdmin] = cache_get_field_content_int(0,"Admin)"; i se va extrage din baza de date levelul de admin si i se va returna pe server, mai precis, cand se conecteaza are levelul de admin , care i-a fost setat de owner
            SpawnPlayer(playerid);// si se va da spawn
        }
        else// altfel , daca parola este gresita
        {
            ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Parola incorecta!", "Te rog sa iti introduci parola corecta, pentru a te loga pe server.", "Logare", "Exit");// ii va da dialogul cu mesajul specific.
        }
        return 1;
    }[/ltr]

    Iar la final punem la OnGameModeExit();
    [ltr]public OnGameModeExit()
    {
        mysql_close( handle ) ;// deconectam serverul de la baza de date, daca se inchide
        return 1;
    }[/ltr]

    Acum , o sa recapitulam.
    Playerul are nevoie de ID, Nume, Parola si IP, deci 4 coloane in tabel.
    Tabelul se numeste "conturi", deoarece interogarea se face acolo "mysql_format(handle, query, sizeof(query), "SELECT * FROM conturi"-conturi este tabelul unde vor aparea ID ,Nume, Parola, IP
    Baza de date se numeste "bazadate" din: [Trebuie sa fiti inscris si conectat pentru a vedea acest link] mysql_db "bazadate"
     
    O sa va arat acum cum se creaza tabelul.
    Pasul 1. Definim baza de date cu numele "basedate":

    Pasul 2: Se selecteaza noua baza:


    Pasul 3: Se creaza tabelul cu cele 4 coloane:
    [Trebuie sa fiti inscris si conectat pentru a vedea acest link]
    Pasul 4: Se definesc coloanele , cu fiecare setare
    [Trebuie sa fiti inscris si conectat pentru a vedea acest link]
    La tip    INT = intenger= numar de cifre.
                 Varchar = string = sir de caractere(litere)
    la Lungimea / setare se selecteaza cat spatiu se acorda, adica cate caractere incap maxim in acel tabel
     la id va fi maxim 9999999999(sun 10 cifre consecutive de "9", adica acel numar va fi maximul de playeri care pot avea cont)
     la nume, se va putea salva doar numele care contine doar 25 de caractere(adica daca numele depaseste 25 litere, doar primele 25 se vor salva)
    la interclasare la Varchar , mereu sa puneti latin1_sweadich_ci, de ce, asta nu pot spune nici eu , dar , stiu ca asa trebuie
    La ID tot timpul sa bifati casuta "A_I(auto Increment)" care va genera singur id-ul, altfel nu va merge tabelul conturi
     
    Asa ar trebui sa va arata , atunci cand va inregistrati:

     
    Atentie tutorial creat 100% de Widualk. Nerespectarea creditelor va duce la sanctiuni!

    FiveGame RPG

    FiveGame RPG

    avatar
    Andu
    Administratori
    Administratori
    Mesaje : 448
    Data de inscriere : 02/10/2015
    Varsta : 24
    Localizare : Neamt
    http://fivegame.amforum.net

    Re: Tutorial Register/Login MYSQL R39

    la data de 4/6/2016, 08:08
     Felicitari pentru munca depusadaca este creeat de tine! +1

    FiveGame RPG

    FiveGame RPG


    IP: [Trebuie sa fiti inscris si conectat pentru a vedea acest link]
     
    [Trebuie sa fiti inscris si conectat pentru a vedea acest link]t

    [Trebuie sa fiti inscris si conectat pentru a vedea acest link]
    Vizitator
    Vizitator

    Re: Tutorial Register/Login MYSQL R39

    la data de 18/6/2016, 17:16
    Multumesc. Aprecez efortul
    Shower
    Fundator
    Fundator
    Mesaje : 218
    Data de inscriere : 11/10/2015
    Varsta : 24

    Re: Tutorial Register/Login MYSQL R39

    la data de 25/6/2016, 23:46
    mltumesc !

    FiveGame RPG

    FiveGame RPG

    Continut sponsorizat

    Re: Tutorial Register/Login MYSQL R39

    Vezi subiectul anteriorSusVezi subiectul urmator
    Permisiunile acestui forum:
    Nu puteti raspunde la subiectele acestui forum