GTAMulti - GTA Türkiye

San Andreas Multiplayer => PAWN Kodlama => Anlatımlar => Konuyu başlatan: Jawié - 17 Eylül 2017, 09:42:27

Başlık: Dini - Kayıt Sistemi Yapımı
Gönderen: Jawié - 17 Eylül 2017, 09:42:27
Dini Kayıt Yapımı


Bu konu yardım taleplerindeki bir arkadaşa anlatmak amacıyla açılmıştır. Dini kayıt sisteminin eskilerde kaldığı doğrudur. Fakat küçük sistemler yapıyorsanız dini sizin için ideal olur. Dini oldukça hafif yer kaplıyor. Tek avantajsız yanı mySQL gibi performans sağlamaması ve biraz yavaş çalışması. Kullanacak arkadaşlara kolay gelsin.

#include <dini>

Yukarıdaki kodu modun başına ekle. Bu dini eklentisini moduna gömüyor.

new pAdminLevel[MAX_PLAYERS], Float:oPos[MAX_PLAYERS][3];

Yukarıdaki kod veriyi çekiyoruz ya. Ondan sonra onu yerleştirip veriyi kullanmak için yaptığımız işlem. Değişkene koyuyoruz yani. Mesela if(pAdminLevel[playerid] < 1) şeklinde bir şart bağlıyoruz. Onu da modun başına koy.

Oyuncu oyuna girdiğinde karşısına çıkacak olan diyalog ekranını yapıyoruz. Onun için OnPlayerConnect callbackine uğrayıp bir kahve içelim.

new name[24];
GetPlayerName(playerid, name, 24);
if(!dini_Exists("/kayitlar/%s.ini", name)) // Farkındaysan başında ! var. Bu demek oluyor ki isminde bir dosya yoksa. Yani kayıt olmamışsa.
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Kayıt Ol", "Lütfen şifreni gir.", "Tamam", "");
}else{ // Eğer kayıt varsa
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_PASSWORD, "Giriş Yap", "Lütfen şifreni gir.", "Tamam", "");
}


Bu daha görsel yönüydü. Şimdi işlevsel kısmına geçiyoruz. Yani OnDialogResponse kısmına. Kahve istemem ama ben bu sefer. İki saniye de bir kahve içiyoruz. Baydı artık. Uyku namına bir şey kalmadı.

new name[24], str[90];
GetPlayerName(playerid, name, 24);
format(str, sizeof(str), "/kayitlar/%s.ini", name);

if(dialogid == 1)
{
if(!response) Kick(playerid); // Oyuncu esc vs. basarsa kickledik.
if(response)
{
dini_Create(str);
dini_Set(str, "sifre", inputtext); // Şifresini inputtext, kutucuğa girilen şifreyi yazdık.
dini_Set(str, "level", 0); // Admin levelini düzenledik
dini_Set(str, "skor", 0); // skorunu kaydettik
dini_Set(str, "para",0); // parasını kaydettik
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_PASSWORD, "Giriş Yap", "Lütfen şifreni gir.", "Tamam", "");
}
}
if(dialogid == 2)
{
if(response)
{
new sifre[256]; // Şifre artık kaç hane girilebilirse rastgele yazdım boyutunu
format(sifre, sizeof(sifre), "%s", dini_Get(str, "sifre");
if(strcmp(inputtext, sifre) == 0) // Şifre ile inputtext uyuşuyorsa
{
new skor, para;
pAdminLevel[playerid] = dini_Int(str, "level"); // levelını değişkene yazdırdık
skor = dini_Int(str, "skor");
para = dini_Int(str, "para");
dini_Float(str, "posX", oPos[playerid][0]);
dini_Float(str, "posY", oPos[playerid][1]);
dini_Float(str, "posZ", oPos[playerid][2]);
GivePlayerMoney(playerid, para); SetPlayerScore(playerid, skor);
SendClientMessage(playerid, 0xFF0000FF, "Başarıyla giriş yaptınız."); // giriş yaptığını söylemek için mesaj yazdırdık
}
else // şifre yanlışsa
{
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_PASSWORD, "Giriş Yap", "Yanlış şifre girdin. Lütfen doğrusunu gir.", "Tamam", "");
}
}
}


Ben anlatımlarımı daha çok // kullanarak yaptığım için kod haricinde pek yazmıyorum. Kodları incelerseniz her şeyde neyi neden, niçin yaptığımı yazdım.  :kahkaha:

Şimdi işin son kısmı olan kayıt ettirmeye geldi sıra. Oyuncu oyundan çıktığında kayıt etmesi için OnPlayerDisconnect callbackine uğruyoruz. Yalnız daha demin OnDialogResponse callbackinde hiçbir şey vermediler. Çok ayıp ettiler. Yüzlerine söylemedim ama gerçekten olmaz böyle bir şey.

new name[24], str[30], name[24]; GetPlayerName(playerid, name, 24);
format(str, sizeof(str), "/kayitlar/%s.ini", name);

if(dini_Exists(str)) // eğer oyuncu kayıt olmuşsa
{
dini_IntSet(str, "level", pAdminLevel[playerid]);
dini_IntSet(str, "para", GetPlayerMoney(playerid));
dini_IntSet(str, "skor", GetPlayerScore(playerid));
dini_FloatSet(str, "posX", oPos[playerid][0]);
dini_FloatSet(str, "posY", oPos[playerid][1]);
dini_FloatSet(str, "posZ", oPos[playerid][2]);
}


Şimdi de yardım taleplerindeki arkadaşın istediği konum kaydetme şeysinin son durağı OnPlayerSpawn'a geçiyoruz.

SetPlayerPos(playerid, oPos[playerid][0], oPos[playerid][1], oPos[playerid][2]); // Değişkene yazdırdığımız posları burada oyunucunun posu olarak ayarladık.
Başlık: Ynt: Dini - Kayıt Sistemi Yapımı
Gönderen: Dyternal - 17 Eylül 2017, 09:46:50
Adam MySQL öğrenirdi niye yordun kendini :D. Ellerine sağlık.

Edit:

[center][size=14pt][color=#00B7FF][font=trebuchet ms]Dini Kayıt Sistemi Yapımı[/font][/color][/size][/center]
Başlık: Ynt: Dini - Kayıt Sistemi Yapımı
Gönderen: Lé Spîke - 17 Eylül 2017, 11:19:13
Güzel anlatım ekliyorum.
Başlık: Ynt: Dini - Kayıt Sistemi Yapımı
Gönderen: pag - 20 Eylül 2017, 15:00:25
Eline sağlık,güzel anlatmışsında dini kullanan kaldımı ki?
Başlık: Ynt: Dini - Kayıt Sistemi Yapımı
Gönderen: Zoxy - 20 Eylül 2017, 21:03:18
Bilmeyen arkadaşlar için güzel konu olmuş. Ellerine sağlık
Başlık: Ynt: Dini - Kayıt Sistemi Yapımı
Gönderen: pag - 20 Eylül 2017, 22:04:17
Alıntı yapılan: Jawié - 20 Eylül 2017, 20:37:42

Alıntı yapılan: FeelsBadMan - 20 Eylül 2017, 15:00:25

Eline sağlık,güzel anlatmışsında dini kullanan kaldımı ki?


Anlatımı sana yapmadığıma ve konumu okumadığına göre sıkıntı yok.  :kahkaha: Burası "ulan iki bilmiş yorum atayım da havalı görüneyim" yeri değil. İki sokak ötesine git.

Benim öyle bir niyetim yok sadece kişisel düşüncemi dile getirdim.
Başlık: Ynt: Dini - Kayıt Sistemi Yapımı
Gönderen: Dyternal - 20 Eylül 2017, 22:38:44
Alıntı yapılan: FeelsBadMan - 20 Eylül 2017, 22:04:17

Alıntı yapılan: Jawié - 20 Eylül 2017, 20:37:42

Alıntı yapılan: FeelsBadMan - 20 Eylül 2017, 15:00:25

Eline sağlık,güzel anlatmışsında dini kullanan kaldımı ki?


Anlatımı sana yapmadığıma ve konumu okumadığına göre sıkıntı yok.  :kahkaha: Burası "ulan iki bilmiş yorum atayım da havalı görüneyim" yeri değil. İki sokak ötesine git.

Benim öyle bir niyetim yok sadece kişisel düşüncemi dile getirdim.


Jawie doğru söylüyor konuyu okumamissin

Alıntı yapılan: Jawié - 17 Eylül 2017, 09:42:27

Dini Kayıt Yapımı


Bu konu yardım taleplerindeki bir arkadaşa anlatmak amacıyla açılmıştır. Dini kayıt sisteminin eskilerde kaldığı doğrudur. Fakat küçük sistemler yapıyorsanız dini sizin için ideal olur. Dini oldukça hafif yer kaplıyor. Tek avantajsız yanı mySQL gibi performans sağlamaması ve biraz yavaş çalışması. Kullanacak arkadaşlara kolay gelsin.


Adam belirtmiş gayet açık açık
Başlık: Ynt: Dini - Kayıt Sistemi Yapımı
Gönderen: Jizzy - 13 Ocak 2018, 10:16:25
Alıntı yapılan: Zoxy - 20 Eylül 2017, 21:03:18

Bilmeyen arkadaşlar için güzel konu olmuş. Ellerine sağlık
Başlık: Ynt: Dini - Kayıt Sistemi Yapımı
Gönderen: FelleR - 27 Haziran 2019, 01:34:32
Yararlı.
Başlık: Ynt: Dini - Kayıt Sistemi Yapımı
Gönderen: Under Armour - 17 Kasım 2019, 20:28:19
Bunu tekrar canlandırmak istiyorum.
* Hata veya eksik cod olabilir mi ? Çünkü dediklenirinizi uyguladım ama hata sonucu aldım.

(Eski bir sürümde kendi çapımızda bir içerik yapıyoruz ve kayıt sistemi olarak bunu kullanmak istedik Hatadan hiç birşey yapamadık hatta anlayamadık siz bir kontrol eder misiniz hata veya ekisiği tamamlayarak güncelleyiniz.)
Başlık: Ynt: Dini - Kayıt Sistemi Yapımı
Gönderen: Myalis - 01 Aralık 2019, 20:26:12
ellerine sağlık, teşekkürler
Başlık: Ynt: Dini - Kayıt Sistemi Yapımı
Gönderen: kelly - 07 Nisan 2020, 20:13:44
Paylaşım için teşekkürler.
Başlık: Ynt: Dini - Kayıt Sistemi Yapımı
Gönderen: E.xKoMaNDo - 08 Nisan 2020, 16:27:26
yaw nasl yapacam biri bana görsel yada video atabilirmi lürfenn     
Alıntı yapılan: Jawié - 17 Eylül 2017, 09:42:27
Dini Kayıt Yapımı

Bu konu yardım taleplerindeki bir arkadaşa anlatmak amacıyla açılmıştır. Dini kayıt sisteminin eskilerde kaldığı doğrudur. Fakat küçük sistemler yapıyorsanız dini sizin için ideal olur. Dini oldukça hafif yer kaplıyor. Tek avantajsız yanı mySQL gibi performans sağlamaması ve biraz yavaş çalışması. Kullanacak arkadaşlara kolay gelsin.

#include <dini>
Yukarıdaki kodu modun başına ekle. Bu dini eklentisini moduna gömüyor.

new pAdminLevel[MAX_PLAYERS], Float:oPos[MAX_PLAYERS][3];
Yukarıdaki kod veriyi çekiyoruz ya. Ondan sonra onu yerleştirip veriyi kullanmak için yaptığımız işlem. Değişkene koyuyoruz yani. Mesela if(pAdminLevel[playerid] < 1) şeklinde bir şart bağlıyoruz. Onu da modun başına koy.

Oyuncu oyuna girdiğinde karşısına çıkacak olan diyalog ekranını yapıyoruz. Onun için OnPlayerConnect callbackine uğrayıp bir kahve içelim.

new name[24];
GetPlayerName(playerid, name, 24);
if(!dini_Exists("/kayitlar/%s.ini", name)) // Farkındaysan başında ! var. Bu demek oluyor ki isminde bir dosya yoksa. Yani kayıt olmamışsa.
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Kayıt Ol", "Lütfen şifreni gir.", "Tamam", "");
}else{ // Eğer kayıt varsa
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_PASSWORD, "Giriş Yap", "Lütfen şifreni gir.", "Tamam", "");
}

Bu daha görsel yönüydü. Şimdi işlevsel kısmına geçiyoruz. Yani OnDialogResponse kısmına. Kahve istemem ama ben bu sefer. İki saniye de bir kahve içiyoruz. Baydı artık. Uyku namına bir şey kalmadı.

new name[24], str[90];
GetPlayerName(playerid, name, 24);
format(str, sizeof(str), "/kayitlar/%s.ini", name);

if(dialogid == 1)
{
if(!response) Kick(playerid); // Oyuncu esc vs. basarsa kickledik.
if(response)
{
dini_Create(str);
dini_Set(str, "sifre", inputtext); // Şifresini inputtext, kutucuğa girilen şifreyi yazdık.
dini_Set(str, "level", 0); // Admin levelini düzenledik
dini_Set(str, "skor", 0); // skorunu kaydettik
dini_Set(str, "para",0); // parasını kaydettik
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_PASSWORD, "Giriş Yap", "Lütfen şifreni gir.", "Tamam", "");
}
}
if(dialogid == 2)
{
if(response)
{
new sifre[256]; // Şifre artık kaç hane girilebilirse rastgele yazdım boyutunu
format(sifre, sizeof(sifre), "%s", dini_Get(str, "sifre");
if(strcmp(inputtext, sifre) == 0) // Şifre ile inputtext uyuşuyorsa
{
new skor, para;
pAdminLevel[playerid] = dini_Int(str, "level"); // levelını değişkene yazdırdık
skor = dini_Int(str, "skor");
para = dini_Int(str, "para");
dini_Float(str, "posX", oPos[playerid][0]);
dini_Float(str, "posY", oPos[playerid][1]);
dini_Float(str, "posZ", oPos[playerid][2]);
GivePlayerMoney(playerid, para); SetPlayerScore(playerid, skor);
SendClientMessage(playerid, 0xFF0000FF, "Başarıyla giriş yaptınız."); // giriş yaptığını söylemek için mesaj yazdırdık
}
else // şifre yanlışsa
{
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_PASSWORD, "Giriş Yap", "Yanlış şifre girdin. Lütfen doğrusunu gir.", "Tamam", "");
}
}
}

Ben anlatımlarımı daha çok // kullanarak yaptığım için kod haricinde pek yazmıyorum. Kodları incelerseniz her şeyde neyi neden, niçin yaptığımı yazdım.  :kahkaha:

Şimdi işin son kısmı olan kayıt ettirmeye geldi sıra. Oyuncu oyundan çıktığında kayıt etmesi için OnPlayerDisconnect callbackine uğruyoruz. Yalnız daha demin OnDialogResponse callbackinde hiçbir şey vermediler. Çok ayıp ettiler. Yüzlerine söylemedim ama gerçekten olmaz böyle bir şey.

new name[24], str[30], name[24]; GetPlayerName(playerid, name, 24);
format(str, sizeof(str), "/kayitlar/%s.ini", name);

if(dini_Exists(str)) // eğer oyuncu kayıt olmuşsa
{
dini_IntSet(str, "level", pAdminLevel[playerid]);
dini_IntSet(str, "para", GetPlayerMoney(playerid));
dini_IntSet(str, "skor", GetPlayerScore(playerid));
dini_FloatSet(str, "posX", oPos[playerid][0]);
dini_FloatSet(str, "posY", oPos[playerid][1]);
dini_FloatSet(str, "posZ", oPos[playerid][2]);
}

Şimdi de yardım taleplerindeki arkadaşın istediği konum kaydetme şeysinin son durağı OnPlayerSpawn'a geçiyoruz.

SetPlayerPos(playerid, oPos[playerid][0], oPos[playerid][1], oPos[playerid][2]); // Değişkene yazdırdığımız posları burada oyunucunun posu olarak ayarladık.
Başlık: Ynt: Dini - Kayıt Sistemi Yapımı
Gönderen: Bojnâ - 01 Mayıs 2020, 16:32:04
Yeni arkadaşlar için yararlı anlatım olmuş.
Başlık: Ynt: Dini - Kayıt Sistemi Yapımı
Gönderen: Under Armour - 02 Mayıs 2020, 04:38:47
Dini kayıt sisteminde Şifre farklı gösteriliyor oyuncu bana mesaj atsa abi sifremi unuttum nasıl öğrenir ve yaptığı kayıttaki şifreyi nsl gorebilirim?
Başlık: Ynt: Dini - Kayıt Sistemi Yapımı
Gönderen: Rain - 17 Mayıs 2021, 01:42:42
Sistemi yaptigimda calismiyor bir hata olabilirmi yoksa benmi yanlis yapiyorum?
Başlık: Ynt: Dini - Kayıt Sistemi Yapımı
Gönderen: Impeccable - 08 Eylül 2021, 22:22:33
Teşekkürler.
Başlık: Ynt: Dini - Kayıt Sistemi Yapımı
Gönderen: Gladiator - 18 Eylül 2021, 10:35:28
Anlatım için teşekkürler.
Başlık: Ynt: Dini - Kayıt Sistemi Yapımı
Gönderen: Rabelizm - 30 Haziran 2022, 08:43:49
Çok Güzel Olmuş :r*: