Süreli VIP Sistemi Yapma

Süreli VIP Sistemi Yapma

Süreli VIP sistemi, oyuncuların açısından bir haksızlıksa sunucu sahiplerinin açısından da minik bir vampirin kan tutkusudur. Oyun modlarına bu tür sistemin eklenmesinin ne kadar doğru olduğu ile ilgili yorum yapmak istemiyorum çünkü sunucu sahiplerine de oyunculara da eşit olarak hak veriyorum.
Size küçük bir örnek vermek istiyorum. Blogumu veya SA:MP Destek ismi altında oluşturduğum ilk internet sitemi ilk kez görmüyorsanız internet sitesine hiçbir zaman ücret vermediğimi biliyorsunuzdur. Blogger'da oluşturduğum bu internet sitesinin ne barındırma hizmetine ne de alan adına ücret veriyorum.

İnternet sitemi oluşturmak için ücretsiz servisleri değil de ücretli servisleri tercih etsem benim giderlerim olacaktı. Web hosting ve domain fiyatları o kadar yüksek değil ama küçük de olsa para çıkacaktı ve internet sitesinde reklam yayımlamadığım, tanıtım yazıları yayımlamadığım ve para kazanmak için diğer yöntemleri kullanmadığım için gelirim olmayacaktı.

Uzun sözün kısası, cebinizden çıkacak paranın yerini dolduramazsanız gelir seviyeniz yeterince iyi değildir. Bazı zamanlar olur, gelir seviyesini iyileştirmek için bu tür yöntemlere başvurmak mecburiyetinde olmak kaçınılmaz olabilir.

Süreli VIP Sistemi Nasıl Yapılır?


GTA: San Andreas Multiplayer'da oluşturduğunuz oyun sunucusuna süreli VIP sistemi eklemek istiyorsanız ilk olarak siz değerli okurlarımıza özel olarak serdiğimiz kırmızı halının üzerinden geçmeli ve sistemin nasıl yapıldığını kavramanıza yardımcı olacak küçük adımlarımızı takip etmelisiniz.

1. Malzemeleri İndirin

Bu sistemi oluşturmak için ihtiyacımız olan zcmd, sscanf ve kayıt sisteminden başkası değildir. Kayıt sistemini hazırlamak için MySQL R41-4 sürümüne ihtiyacımız var, söz konusu MySQL sürümünü indirdikten sonra dosyaları belirtilen bölümlere bırakın.

2. Veri Tabanında "vips" Tablosu Oluşturun

Oyun sunucunuzun veri tabanını açın ve "vips" isimli bir tablo oluşturun. "vips" tablosunun içerisine ise "ID", "visim", "vlevel" ve "vsure" sütunlarını ekleyin.

3. Oyun Modu Açın

Oyun modunuzu açtıktan sonra oyun modunun en başına aşağıda verdiğim kodu yapıştırın.

new pVip[MAX_PLAYERS];

Yukarıdaki değişkeni kullanmasak da olur ama bu değişken olmadığında sürekli olarak veri çekmek zorunda olacağımızdan minik bir değişken oluşturmaktan zarar gelmeyecektir. Oyun modunun sonuna aşağıda verdiğim kodu yapıştırın.

CMD:vipver(playerid,params[])
{
new name[24], name2[24], id, level, gun, query[256], str[256];
if(sscanf(params, "uii", id, level, gun)) return SendClientMessage(playerid, -1, "/vipver (ID) (Gün)");
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Yetkili değilsin.");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "O oyunda değil.");
if(level < 1 || level > 3) return SendClientMessage(playerid, -1, "Minimum 1, maksimum 3 level.");
pVip[id] = level;
GetPlayerName(id, name, 24);
GetPlayerName(playerid, name, 24);
format(str, sizeof(str), "%s(%d) isimli yetkili, %s(%d) isimli oyuncuya %d level VIP verdi.", name2, playerid, name, id, level);
SendClientMessageToAll(-1, str);
mysql_format(MySQL, query, sizeof(query), "DELETE FROM `vips` WHERE `visim` = '%s'", name);
mysql_query(MySQL, query); // İlk olarak oyuncunun mevcut verilerini (varsa) siliyoruz.
mysql_format(MySQL, query, sizeof(query), "INSERT INTO `vips` (`visim`, `vlevel`, `vsure`) VALUES ('%s', '%d', '%d'')", name,level,gettime() + (gun*86400)); // Oyuncu verilerini ekliyoruz.
mysql_query(MySQL, query);
return 1;
}

Yukarıda vipler tablosuna "visim", "vlevel" ve "vsure" olmak üzere 3 tane sütunlu veri kaydedildi. Üçüncü adıma geçmeden önce "mysql_format(MySQL" kısmındaki "MySQL" tanımını oyun modunun başında yaptığınız MySQL tanımına göre düzenlemeyi unutmayın.

Süreli VIP sistemi oluşturmanın altın kurallarından /vipver komutunu yukarıda hazırladık ama herhangi bir zamanda istediğimiz oyuncunun yetkisini almamız için bize bir komut daha gerekiyor. Yukarıdaki komutun hemen altına aşağıda verdiğim kodları yerleştirin.

CMD:vipal(playerid,params[])
{
new name[24], name2[24], id, query[256], str[256];
if(sscanf(params, "u", id)) return SendClientMessage(playerid, -1, "/vipal (ID)");
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Yetkili değilsin.");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "O oyunda değil.");
if(pVip[id] == 0) return SendClientMessage(playerid, -1, "Oyuncu zaten VIP değil.");
pVip[id] = 0;
GetPlayerName(id, name, 24);
GetPlayerName(playerid, name, 24);
format(str, sizeof(str), "%s(%d) isimli yetkili, %s(%d) isimli oyuncunun VIP yetkisini aldı.", name2, playerid, name, id);
SendClientMessageToAll(-1, str);
mysql_format(MySQL, query, sizeof(query), "DELETE FROM `vips` WHERE `visim` = '%s'", name);
mysql_query(MySQL, query);
return 1;
}

4. OnPlayerSpawn'da Kontrol Mekanizması Oluşturun

new query[128], name[24];
GetPlayerName(playerid, name, 24);
mysql_format(MySQL, query, sizeof(query), "SELECT * FROM `vips` WHERE `visim` = '%s'", name);
mysql_query(MySQL, query);
if(cache_num_rows() > 0) // Yukarıdaki sorgunun boş olup olmadığını kontrol eder.
{
new level, gun;
cache_get_value_name_int(0, "vlevel", level);
cache_get_value_name_int(0, "vsure", gun);
if(gettime() > gun)
{
pVip[playerid] = 0; // Oyuncunun yetkileri alındı.
mysql_format(MySQL, query, sizeof(query), "DELETE FROM `vips` WHERE `visim` = '%s'", name);
mysql_query(MySQL, query);
SendClientMessage(playerid,-1,"VIP paketinin süresi dolduğu için yetkilerine otomatik olarak el konuldu.");
}
}

5. Komut Oluşturun

Süreli VIP sistemi oluşturdunuz ama insanların satın alması için bir nedene ihtiyacı var. VIP oyunculara özel olarak aşağıda verdiğim örnekteki gibi nice komut oluşturabilirsiniz.

CMD:vcan(playerid, params[])
{
if(pVip[playerid] == 0) return SendClientMessage(playerid, -1, "VIP değilsin.");
SetPlayerHealth(playerid, 100);
return 1;
}

Yorum Gönder

0 Yorumlar