GTAMulti.com - Türkiye'nin Türkçe GTA Sitesi

MySQL R41-4 ile Kayıt/Giriş Sistemi Oluşturma #2021

Başlatan TAKTAK26, 14 Şubat 2021, 01:58:57

« önceki - sonraki »

0 Üye ve 2 Ziyaretçi konuyu incelemekte.

TAKTAK26

    Merhabalar arkadaşlar öncelik olarak, bu konuda sizlere kendi yapmış olduğum ve 2021 yılında güncel versiyonu ile r41-4 mysql sürümüyle kayıt/giriş sistemi nasıl oluşturursunuz basit bir şekilde onu göstereceğim şimdiden anladıysanız ne mutlu bana.  :kro:

    MySQL R41-4 Direkt Link

    Github

    Öncelik olarak kayıt/giriş sistemine geçmeden önce MySQL R41-4 indirme linki attığım yerden include klasörüne ".inc" kısmına atın ve plugins klasörünede mysql.dll veya mysql.so uzantılı dosyasını atınız işletim sisteminiz neyse benim ki windows olduğu için windows üzerinden gideceğiz maalesef. Ek olarak; Aşağı kısımdan resim ile çizerek gösterdim bakabilirsiniz. :pc:



    Şimdi kayıt/giriş sistemine geçelim. :serefe:

    Öncelik olarak mysql kütüphanesini yani includesini modumuza tanımlamamız gerek tabi.

    PAWN Kodu: Seç
    #include <a_mysql>


    Tamam işte bu kadar, şimdi ilk satır kodunu yazdın haydi başlayalım. :D

    Şaka bir yana, ehm tabi mysql için host, user, pass, db ayarlarımızı yapmamız gerekli aşağıdaki gibi.

    PAWN Kodu: Seç
    #define    MYSQL_HOST      "localhost" // host girişiniz local olabilir ya da aldığınız bir firmadaki ip kısmına göre olabilir.
    #define    MYSQL_USER      "root" // user girişi
    #define    MYSQL_PASS      "" // şifre kısmı
    #define    MYSQL_DB        "dbtyronsql" // burası db kısmıdır kendinize göre ayarlayınız.



    Haydi bastır be, senden olacak olacak. :D



    Ama tabi, dur daha bitmedi hemen sevinme istersen. :melek:



    Bunları yaptıktan sonra mysql değişkenimizi oluşturalım aşağıdaki gibi. Siz de kendinize göre ayarlayabilirsiniz. Ama TyroN ismini benim için silmezsen sevinirim tabi. :)



    PAWN Kodu: Seç
    new MySQL:TyronSQL;

    Dialogları enum şeklinde tanıtırsak daha iyi olur.

    PAWN Kodu: Seç
    enum {

    dialogRegister,
    dialogLogin,
    dialogWarningPass
    };

    Şimdi öncelik olarak bir de oyuncu değişkenlerimizi tanıtalım aşağıdaki gibi.

    PAWN Kodu: Seç
    enum PlayerData {

    pID,
    pName[MAX_PLAYER_NAME],
    pPass[65],
    pSkor,
    pPara,
    pSkin,
    Float:pPos[3]
    };

    new pData[MAX_PLAYERS][PlayerData];

    OnGameModeInit publicine giderek boş bir yerine tanıtalım.

    PAWN Kodu: Seç
    print("MySQL Baglantisi kuruluyor...");
    TyronSQL = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_DB);
    if(mysql_errno(TyronSQL) == 0)
    {
      print("MySQL Baglantisi Kuruldu!");
    }
    else
    {
      print("MySQL Baglantisi Kurulamadi!");
    }

    OnPlayerConnect publicine giderek boş bir yerine tanıtalım.

    PAWN Kodu: Seç
    new Query[512];
    GetPlayerName(playerid, pData[playerid][pName], MAX_PLAYER_NAME);
    mysql_format(TyronSQL, Query, sizeof(Query), "SELECT * FROM `oyuncuveri` WHERE `isim` = '%s' LIMIT 1", pData[playerid][pName]);
    mysql_tquery(TyronSQL, Query, "CachePlayerData", "d", playerid);

    OnPlayerDisconnect publicine giderek boş bir yerine tanıtalım.

    PAWN Kodu: Seç
    new Query[512];
    SetPlayerScore(playerid, pData[playerid][pSkor]);
    GivePlayerMoney(playerid, pData[playerid][pPara]);
    SetPlayerSkin(playerid, pData[playerid][pSkin]);
    GetPlayerPos(playerid, pData[playerid][pPos]
    pData[playerid][pPos][1], pData[playerid][pPos][2]);[/li][/list]
    mysql_format(TyronSQL, Query, sizeof(Query), "UPDATE `oyuncuveri` SET `skor` = '%d', `para` = '%d', `skin` = '%d', `xpos` = '%f', `ypos` = '%f', `zpos` = '%d' WHERE `isim` = '%s'", pData[playerid][pSkor], pData[playerid][pPara], pData[playerid][pSkin], pData[playerid][pPos]
    pData[playerid][pPos][1], pData[playerid][pPos][2], pData[playerid][pName]);
    mysql_query(TyronSQL, Query);

    OnDialogResponse publicinin boş bir yerine.

    PAWN Kodu: Seç
    switch(dialogid)
    {
        case dialogRegister:
        {
            SendClientMessage(playerid, -1, "Başarıyla kayıt oldunuz, iyi oyunlar dileriz!");
    new Query[512];
    GetPlayerName(playerid, pData[playerid][pName], MAX_PLAYER_NAME);
    mysql_format(TyronSQL, Query, sizeof(Query), "INSERT INTO `oyuncuveri` (`isim`, `sifre`) VALUES ('%s', '%s')", pData[playerid][pName], inputtext);
    mysql_query(TyronSQL, Query);
    return true;
        }
        case dialogLogin:
        {
            if(strcmp(inputtext, pData[playerid][pPass]) == 0)
            {
                SendClientMessage(playerid, -1, "Başarıyla giriş yaptınız, otomatik spawn oldunuz.");
    SetPlayerScore(playerid, pData[playerid][pSkor]);
    GivePlayerMoney(playerid, pData[playerid][pPara]);
    SetPlayerSkin(playerid, pData[playerid][pSkin]);
    GetPlayerPos(playerid, pData[playerid][pPos]
    pData[playerid][pPos][1], pData[playerid][pPos][2]);[/li][/list]

                cache_get_value_name_int(0, "playerid", pData[playerid][pID]);
                cache_get_value_name_int(0, "skor", pData[playerid][pSkor]);
    cache_get_value_name_int(0, "para", pData[playerid][pPara]);
    cache_get_value_name_int(0, "skin", pData[playerid][pSkin]);
    cache_get_value_name_float(0, "xpos", pData[playerid][pPos]
    );
    cache_get_value_name_float(0, "ypos", pData[playerid][pPos][1]);
    cache_get_value_name_float(0, "zpos", pData[playerid][pPos][2]);
    SpawnPlayer(playerid);
    }
            else
            {
    ShowPlayerDialog(playerid, dialogWarningPass, DIALOG_STYLE_MSGBOX, "Hatalı Giriş", "Hatalı giriş yaptığınız için sunucudan atıldınız.", "Tamam", "");
    Kick(playerid);
            }
        }
    }

    Son olarak kayıt ve giriş hakkında callbackimizi tanıtalım.

    PAWN Kodu: Seç
    forward CachePlayerData(playerid);
    public CachePlayerData(playerid)
    {
    if(cache_num_rows() > 0)
    {
    ShowPlayerDialog(playerid, dialogLogin, DIALOG_STYLE_PASSWORD, "Giriş Yap", "Aşağıdaki kutucuğa şifrenizi girerek giriş yapabilirsiniz:", "Giris", "");
    }
    else
    {
        ShowPlayerDialog(playerid, dialogRegister, DIALOG_STYLE_PASSWORD, "Kayıt", "Aşağıdaki kutucuğa güçlü bir şifre oluşturarak kayıt olabilirsiniz:", "Kayıt", "Iptal");
    }
    return true;
    }

    Şimdi PhpMyAdmin kısmından veritabanı ve tablo oluşturmak kaldı. Ben size direk aşağıda resimlerle gösterdim kendinize göre uyarlayabilirsiniz.





    Son olarak oyuna girip test edelim.

    Sonuç;



    Benden bu kadar, iyi forumlar.  :kro:
    Son düzenlenme: 18 Kasım 2021, 22:15:20 TAKTAK26
    Kanalize!

    Glorfin


    TAKTAK26

    Kanalize!

    Goddew

    Dostum, bütün tabloları "Unique" yapmışsın eğer böyle olursa aynı kordinatta çıkmış bi adamın kordinatını kaydetmeyecek veya aynı SKORA sahip birisinin skorunu kaydetmeyecek çünkü olduğu için "Unique" kelimesi "Eşsiz, eşi benzeri olmayan." anlamlarında kullanılır yani bi tane SKOR = 10 varsa başka SKOR=10 olamıyor yani.


    TAKTAK26

    Alıntı yapılan: Goddew - 17 Şubat 2021, 18:47:50
    Dostum, bütün tabloları "Unique" yapmışsın eğer böyle olursa aynı kordinatta çıkmış bi adamın kordinatını kaydetmeyecek veya aynı SKORA sahip birisinin skorunu kaydetmeyecek çünkü olduğu için "Unique" kelimesi "Eşsiz, eşi benzeri olmayan." anlamlarında kullanılır yani bi tane SKOR = 10 varsa başka SKOR=10 olamıyor yani.

    Bu sisteme göre o işlevi kendime göre yapmıştım, zaten konu içerisinde de diyorum kendinize göre uyarlayabilirsiniz diye iyi forumlar.

    Kanalize!

    Rain

    still alive

    Impeccable


    Gladiator


    TAKTAK26

    Kanalize!

    Animex