Dini Kayıt Sistemi Nasıl Yapılır?

GTA: San Andreas Multiplayer (SA:Mp) için Dini kayıt sistemi, sunucunuza giriş yapan oyuncuların bir hesap oluşturmasına ve verilerinin sunucunuzun dosyalarında depolanmasını sağlar. Oyuncuların bilgilerini kaydetmek için kullanılan Dini, MySQL veya Y_INI gibi sistemlere kıyasla daha yavaş çalışır. Örneğin kullanıcının skorunu çekmeniz gerekecek olursa Dini bunu MySQL'e göre daha uzun sürede gerçekleştirir ama bu elbette ki onu kullanılmayacak bir eklenti yapmıyor.

Dini son derece hafif bir eklentidir. Hafif olması, küçük sistemlerin çalışması için onu çok kullanışlı hâle getirir. Yakın zamanın en popüler oyun modlarından biri olan hırsız polisten örnek verelim. Günün en iyi polisi veya günün en çok soygun yapan hırsızı gibi ödül temelli bir sistem kodlamak için kayıt sistemine ihtiyacımız vardır. Kayıt sistemi olarak elbette MySQL kullanabiliriz ama günün sonunda ödül teslim edildikten sonra dosyaları silmek gibi bir imkânımız varken neden ağır bir eklenti olan MySQL'e başvuralım?

MySQL yerine Dini kullanırsak ne olur? Bu sistemde Dini kullanmanın ilk faydası, kayıt dosyalarının oyun modunun dosyalarında yer almasıdır. Bu, size boyut bakımından avantaj sağlar. İkinci faydası, dosyaları günün sonunda otomatik olarak silmemize olanak sağlamasıdır. Dosyalarla işimiz bitip ilgili oyuncuya ödülünü verdikten sonra tüm dosyaları silebilir ve sayacı başa sarabiliriz.

Dini bu açıdan bakılacak olursa küçük sistemler için son derece kullanışlı olabiliyor. Bu yapacaklarımızın tamamını MySQL'le de yapabiliriz ama bize sağladığı avantajlara sırt çevirmek büyük bir haksızlık olur.

Adım Adım Dini Kayıt Sistemi Yapımı

Bu yazının içeriği şu şekildedir:

Dini Kayıt Sistemi Yapma

1. Tanımlamalar

İlk olarak oyun modunuzun başında tanımlamamız gereken değerleri tanıtmamız gerekiyor. Kodların hemen yanındaki yorum kısmında kodların ne anlama geldiğini, neden veya ne amaçla kullanıldığını öğrenebilirsiniz.

#include <dini> // Pawno > Includes yolundaki dini eklentisini çağırıyoruz.

İhtiyacımız olan eklentileri çağırdıktan sonra oyuncuların bilgilerini tanımlayalım. Yukarıdaki kodları eklediğiniz oyun modunun başına şunları da eklemeniz gerekiyor:

enum oyuncudegiskenleri

{

    aLevel,

    para,

    skor,

}

new o_Bilgi[MAX_PLAYERS][oyuncudegiskenleri];

2. Giriş ve Çıkış

Oyuncu bilgilerini kaydettiğimizde sıra OnPlayerConnect ve OnPlayerDisconnect'e geldi. Bu bölümde yapacaklarımız, kayıt sistemimizin hem gövdesini oluşturacak hem de az önce attığımız temelleri sağlamlaştıracak. İlk olarak OnPlayerConnect'ten başlayalım.

new name[24];

GetPlayerName(playerid, name, 24);

if(dini_Exists("/kayit/%s.ini", name)) // Oyuncunun isminde bir dosyanın olup olmadığını kontrol ediyoruz.

{

ShowPlayerDialog(playerid, 111, DIALOG_STYLE_PASSWORD, "{00FF00}Giriş", "{FFFFFF}Hesabınızın olduğunu tespit ettik. Şifrenizi girin ki sizi oyuna ışınlayabilelim.", "Gir", "Çık");

}

else // Oyuncunun isminde bir dosyanın olmaması durumunda önüne kayıt diyaloğunu çıkaracağız.

{

ShowPlayerDialog(playerid, 112, DIALOG_STYLE_PASSWORD, "{FF0000}Kayıt", "{FFFFFF}Hesabınızın olmadığını tespit ettik. Şifrenizi girip hesabınızı oluşturun ki sizi oyuna ışınlayabilelim.", "Ol", "Vazgeç");

}

İkinci adımımız OnPlayerDisconnect'e gitmek olacak. OnPlayerDisconnect'te yapacaklarımız, oyuncunun bilgilerinin kayıt edilmesini sağlayacak.

new name[24];

GetPlayerName(playerid, name, 24);

if(dini_Exists("/kayit/%s.ini", name)) // Oyuncunun isminde bir dosyanın olup olmadığını kontrol ediyoruz.

{

dini_IntSet(str, "skor", GetPlayerScore(playerid)); // Oyuncunun skorunu yazdırdık.

dini_IntSet(str, "alevel", oBilgi[playerid][aLevel]); // Oyuncunun yönetici seviyesini

dini_IntSet(str, "para", GetPlayerMoney(playerid)); // Oyuncunun elindeki parasını yazdırdık.

}

3. Diyalog Oluşturma

Dini kayıt sistemi oluşturma dersinin sonuna gelmiş sayılırız. Bu adımda bitiriyoruz.

new name[24];

new dosyaa[50];

GetPlayerName(playerid, name, 24);

format(dosyaa, sizeof(dosyaa), "kayit/%s.ini", name);

if(dialogid == 112)

{

if(response)

{

dini_Create(dosyaa);

dini_Set(dosyaa, "alevel", 0); // Değeri varsayılan olarak sıfır yapıyoruz.

dini_Set(dosyaa, "skor", 0); // Başlangıç skoru 0 oldu.

dini_Set(dosyaa, "para", 10); // Başlangıç parası 10 dolar oldu.

dini_Set(dosyaa, "sifre", inputtext);

ShowPlayerDialog(playerid, 111, DIALOG_STYLE_PASSWORD, "{00FF00}Giriş", "{FFFFFF}Hesabınızı oluşturdunuz, şifrenizi girin de sizi oyunun ortasına atalım. (:", "Gir", "Çık");

}

else // İkinci seçeneğe tıkladığında önüne yine diyalog çıkaracağız.

{

ShowPlayerDialog(playerid, 112, DIALOG_STYLE_PASSWORD, "{FF0000}Kayıt", "{FFFFFF}Hesabınızın olmadığını tespit ettik. Şifrenizi girip hesabınızı oluşturun ki sizi oyuna ışınlayabilelim.", "Ol", "Vazgeç");

}

}

if(dialogid == 111)

{

if(response)

{

new sifrekontrol[128+6];

format(sifrekontrol, sizeof(sifrekontrol), "%s", dini_Get(dosyaa, "sifre");

if(!strcmp(inputtext, sifrekontrol, true))

{

new paraa, skorr;

paraa = dini_Get(dosyaa, "para"); // Parasını veriyoruz.

skorr = dini_Get(dosyaa, "skor"); // Skorunu veriyoruz.

GivePlayerMoney(playerid, paraa), SetPlayerScore(playerid, skorr); // Parasını ve skorunu veriyoruz.

oBilgi[playerid][aLevel] = dini_Get(dosyaa, "alevel"); // Oyuncunun alevel değişkenini son çıkışındaki değerle eşitliyoruz.

}

else

{

// Kick(playerid); // Kullanıcının yanlış şifre girdiğinde oyundan atılmasını isterseniz başındaki '//' işaretini kaldırın.

ShowPlayerDialog(playerid, 111, DIALOG_STYLE_PASSWORD, "{00FF00}Giriş", "{FFFFFF}Hesabınızın olduğunu tespit ettik. Şifrenizi girin ki sizi oyuna ışınlayabilelim.", "Gir", "Çık");

}

}

}

Bütün bu adımları doğru bir şekilde takip ettiyseniz kayıt sisteminiz oluşturulmuştur. Yeni bir değişken kaydetmek için "level" değişkeninin nasıl eklenip kayıt edildiğini ve kayıt edilen değişkenin oyuncuya nasıl aktarıldığını takip edebilirsiniz.

Yorum Gönder

0 Yorumlar