GTAMulti - GTA Türkiye

San Andreas Multiplayer => PAWN Kodlama => Anlatımlar => Konuyu başlatan: TAKTAK26 - 14 Şubat 2021, 01:58:57

Başlık: MySQL R41-4 ile Kayıt/Giriş Sistemi Oluşturma #2021
Gönderen: TAKTAK26 - 14 Şubat 2021, 01:58:57
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 (https://github.com/pBlueG/SA-MP-MySQL/releases)

Ö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:

(https://i.hizliresim.com/gdnMXX.png)

Ş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>
(https://i.hizliresim.com/OPGrKp.png)

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.

(https://i.hizliresim.com/H3RQ9M.png)

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

(https://s2.gifyu.com/images/aykutab3.gif)

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

(https://s2.gifyu.com/images/aykutab2.gif)

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. :)

(https://s2.gifyu.com/images/halilab.gif)

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.

(https://i.hizliresim.com/NIWEkz.png)

(https://i.hizliresim.com/WjgzTY.png)

Son olarak oyuna girip test edelim.

Sonuç;

(https://i.hizliresim.com/inALwr.png)

Benden bu kadar, iyi forumlar.  :kro:
Başlık: Ynt: MySQL R41-4 ile Kayıt/Giriş Sistemi Oluşturma #2021
Gönderen: Glorfin - 16 Şubat 2021, 21:47:04
bu bir anlatım mı
Başlık: Ynt: MySQL R41-4 ile Kayıt/Giriş Sistemi Oluşturma #2021
Gönderen: TAKTAK26 - 17 Şubat 2021, 13:32:32
Alıntı yapılan: Glorfin - 16 Şubat 2021, 21:47:04
bu bir anlatım mı

Değişik fikirleri destekliyorum başarılar. :D
Başlık: Ynt: MySQL R41-4 ile Kayıt/Giriş Sistemi Oluşturma #2021
Gönderen: 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.
Başlık: Ynt: MySQL R41-4 ile Kayıt/Giriş Sistemi Oluşturma #2021
Gönderen: TAKTAK26 - 17 Şubat 2021, 19:00:40
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.
Başlık: Ynt: MySQL R41-4 ile Kayıt/Giriş Sistemi Oluşturma #2021
Gönderen: Rain - 21 Mayıs 2021, 00:53:41
Calismadi neden olabilir?
Başlık: Ynt: MySQL R41-4 ile Kayıt/Giriş Sistemi Oluşturma #2021
Gönderen: Impeccable - 08 Eylül 2021, 22:21:16
Teşekkürler.
Başlık: Ynt: MySQL R41-4 ile Kayıt/Giriş Sistemi Oluşturma #2021
Gönderen: Gladiator - 11 Eylül 2021, 10:12:06
Teşekkürler.
Başlık: Ynt: MySQL R41-4 ile Kayıt/Giriş Sistemi Oluşturma #2021
Gönderen: TAKTAK26 - 12 Kasım 2021, 05:14:40
Alıntı yapılan: Rain - 21 Mayıs 2021, 00:53:41
Calismadi neden olabilir?

Özelden yazınız.
Başlık: Ynt: MySQL R41-4 ile Kayıt/Giriş Sistemi Oluşturma #2021
Gönderen: Animex - 10 Aralık 2021, 19:26:25
Teşekkürler güzel paylaşım