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

Süreli VIP Sistemi (ZCMD)

Başlatan ace, 22 Nisan 2018, 10:35:27

« önceki - sonraki »

0 Üye ve 3 Ziyaretçi konuyu incelemekte.

ace

Önemli Not:

Öncelikle @jensen tarafından yardım aldım konuyu açtıktan sonra 2-3 gün sürdü kodun bitimi ve sonda ise günü saçma bir şekilde kaydeden bir sistem çıktı 2 miz için saçmaydı boşuna uraştık okadar olsun diye benimde onunda canı çıktı ve kod yenilenmiştir yenisi aşağıdadır ama en sonda aşağıdaki gibi bir şey çıktı;

Alıntı
Bende direk incelemeden koyu vermiştim sonra yardım taleplerine konu açtım skypeden düzeltti baya bir işi vardı her şeyi ayarladık gün ayarları falan zor bir şey vıp yapılan güne gün ekliyor mesela ayın 3. günündeyiz siz 13 gün verdiniz vip mysql de 16 oluyor yanındada hangi tarihte biteceği 365 gün girerseniz eğer yan taraf 2019 oluyor mysql de şöyle kayıt oluyor: 16|2018


Selamun aleyküm öncelikle anlatım bana ait değildir sadece bu paylaşım bana aittir.XpDeviL'in Pawn Yardımcısı programını bilmeyen vardır ve süreli VIP sistemi yapmak istiyordur belki bende bunu paylaşıyorum hem forumda bi ara çok aranıyordu. Kodları yazan ve Anlatımı yapan : XpDeviL'dir şimdi konuya geçelim.

Ön Söz

Süreli VIP Sisteminin kodları aşağıda yer almaktadır VIP Sistemi MYSQL ile yapılmıştır en son sürüm yani R41-4 De çalışmaktadır. Komutlar için zcmd kullanılmıştır. Veritabanı sql si aşağıda bulunmaktadır.




#include <a_samp>
#include  <a_mysql>
#include <sscanf2>
#include <zcmd>
/*================================= [ RENKLER ] ==============================*/
#define COLOR_ROYALBLUE 0x4169FFAA
#define COLOR_CHANNEL33 0x1B8EE0FF
#define COLOR_FORESTGREEN 0x228B22AA
#define COLOR_DARKOLIVEGREEN 0x556B2FAA
#define COLOR_PINK 0xFF0080FF
#define COLOR_DODGERBLUE 0x1E90FFAA
#define COLOR_DEADCONNECT 0x808080AA
#define COLOR_BLUE 0x0000FFAA
#define COLOR_ADMIN 0x10F441AA
#define COLOR_ERROR 0xD2691EAA
#define COLOR_WHITE 0xFFFFFFFF
#define COLOR_BAGISCI 0xEAFFE8FF
#define COLOR_PURPLE 0x800080AA
#define COLOR_CPURPLE 0xE84F8CAA
#define COLOR_LIGHTRED 0xFF6347AA
#define COLOR_LIME 0x10F441AA
#define COLOR_LIGHTGREEN 0x88EB00FF
#define COLOR_GRAD2 0xBFC0C2FF
#define COLOR_GREY 0xAFAFAFAA
#define COLOR_LINN 0xFFA275FF // özel renk
#define COLOR_ORANGE 0xFF9900AA
#define TEAM_GROVE_COLOR 0x00D900C8
#define TEAM_CYAN_COLOR 0xFF8282AA
#define COLOR_SYSTEM 0xEFEFF7AA
#define COLOR_GRAD1 0xB4B5B7FF
#define COLOR_GRAD2 0xBFC0C2FF
#define COLOR_GRAD3 0xCBCCCEFF
#define COLOR_GRAD4 0xD8D8D8FF
#define COLOR_GRAD5 0xE3E3E3FF
#define COLOR_GRAD6 0xF0F0F0FF
#define COLOR_GREY 0xAFAFAFAA
//#define COLOR_GREEN 0x33AA33AA
#define COLOR_EVGREEN 0x33AA33AA
#define COLOR_OTELGREEN 0x09B809AA
#define COLOR_GREEN COLOR_LIGHTGREEN
#define COLOR_RED 0xFF0000AA
//#define COLOR_RED COLOR_LIGHTRED
#define COLOR_LIGHTRED 0xFF6347AA
#define COLOR_LIGHTBLUE 0x33CCFFAA
//#define COLOR_LIGHTGREEN 0x9ACD32AA
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_YELLOW2 0xDABB3EAA
#define COLOR_YELLOW3 0xF5DEB3AA
#define COLOR_MAGENTA 0xFF00FFFF
#define COLOR_FADE1 0xE6E6E6E6
#define COLOR_FADE2 0xC8C8C8C8
#define COLOR_FADE3 0xAAAAAAAA
#define COLOR_FADE4 0x8C8C8C8C
#define COLOR_FADE5 0x6E6E6E6E

#define MYSQL_HOST "127.0.0.1"
#define MYSQL_KULLANICI "root"
#define MYSQL_SIFRE ""
#define MYSQL_VT "rexha"

//»Enum
enum p_vip
{
VIP,
VIPGun,
VIPYil
};

new pVIP[MAX_PLAYERS][p_vip];

new MySQL:mysqlC;

public OnFilterScriptInit()
{
new MySQLOpt: option_id = mysql_init_options();
mysql_set_option(option_id, AUTO_RECONNECT, true); // Veritabanı bağlanıtısını kaybederse yeniden bağlanır.
mysqlC = mysql_connect(MYSQL_HOST, MYSQL_KULLANICI, MYSQL_SIFRE, MYSQL_VT, option_id);
if(mysqlC == MYSQL_INVALID_HANDLE || mysql_errno(mysqlC) != 0)
{
print("Veritabanı bağlantısı başarısız oldu.");
SendRconCommand("exit");
return 1;
}
print("Veritabanı bağlantısı başarılı.");
return 1;
}

public OnFilterScriptExit()
{
mysql_close(mysqlC);
return 1;
}

CMD:vipyap(playerid, params[])
{
new gun, id, str[128], Cache: sorguj, sorgu[135], isim[24];
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{9D1619}<!> HATA :{FFFFFF} Bu komutu kullanmak için admin olamalısınız!"); // Komutu kullanan oyuncunun admin olup olmadığını kontrol ettik
if(sscanf(params, "ui", id, gun)) return SendClientMessage(playerid, -1, "{d61b1b}<!> Kullanım:{FFFFFF} /vipyap [ID] [Gün]");
if(pVIP[id][VIP] == 1) return SendClientMessage(playerid, -1, "{9D1619}<!> HATA :{FFFFFF} Oyuncu zaten VIP!"); // ID'si girilen oyuncunun VIP olup olmadığını kontrol ettik. Isterseniz burayı kaldırarak oyuncu VIP olsa bile komutu girerek süresini girilen süreyle değiştirebilirsiniz.
GetPlayerName(id, isim, sizeof(isim));
mysql_format(mysqlC, sorgu, sizeof(sorgu), "SELECT * FROM `Oyuncular` WHERE `Isim` = '%s'", isim);
sorguj = mysql_query(mysqlC, sorgu);
new veriler = cache_num_rows();
if(veriler)
{
OyuncuyuVIPYap(id, gun); // Oyuncuyu VIP yapma fonksiyonumuz. Aşağıda belirtilecek.
format(str, 128, "{10F441}%d gün VIP oldunuz.", gun); // Oyuncuya gidecek mesaj.
SendClientMessage(id, -1, str); // Mesajı oyuncuya gönderdik.
format(str, 128, "{10F441}Adlı oyuncu %d gün VIP yapıldı.", gun); // VIP yapan admine gidecek mesaj.
SendClientMessage(playerid, -1, str); // Mesajı admine gönderdik
}
else
{
OffOyuncuyuVIPYap(id, gun); // Oyuncuyu VIP yapma fonksiyonumuz. Aşağıda belirtilecek.
format(str, 128, "{10F441}%d gün VIP oldunuz.", gun); // Oyuncuya gidecek mesaj.
SendClientMessage(id, -1, str); // Mesajı oyuncuya gönderdik.
format(str, 128, "{10F441}Adlı oyuncu %d gün VIP yapıldı.", gun); // VIP yapan admine gidecek mesaj.
SendClientMessage(playerid, -1, str); // Mesajı admine gönderdik
}
cache_delete(sorguj);
return 1;
}

CMD:offvipyap(playerid, params[])
{
new gun, str[128], isim[24], sorgu[135], query[135], Cache: sorguj, gun_tmp, tmp[2][5], vericek[12], zaman[4];
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{9D1619}<!> HATA :{FFFFFF} Bu komutu kullanmak için admin olamalısınız!"); // Komutu kullanan oyuncunun admin olup olmadığını kontrol ettik
if(sscanf(params, "s[24]i", isim, gun)) return SendClientMessage(playerid, -1, "{d61b1b}<!> Kullanım:{FFFFFF} /offvipyap [Oyuncuisim] [Gün]");

mysql_format(mysqlC, sorgu, sizeof(sorgu), "SELECT * FROM `Oyuncular` WHERE `Isim` = '%s'", isim);
sorguj = mysql_query(mysqlC, sorgu);
new veriler = cache_num_rows();
if(veriler)
{
    new vipgun, vipyil, yil_tmp, vip_zaman[12];
cache_get_value_name(0, "VIPZaman", vericek, 12);
split(vericek, tmp, '|');
vipgun = strval(tmp[0]);
vipyil = strval(tmp[1]);
if(IsPlayerConnected(ReturnUser(isim))) return SendClientMessage(playerid, -1, "HATA: Oyuncu zaten oyunda.");
if(vipgun != 0 || vipyil != 0) return SendClientMessage(playerid, -1, "HATA: Oyuncu zaten vip.");
zaman[0] = getdate(zaman[1], zaman[2], zaman[3]);
gun_tmp = zaman[0] + gun;
loop_start:
if(gun_tmp > 365)
{
gun_tmp = gun_tmp - 365;
yil_tmp++;
goto loop_start;
}
format(vip_zaman, sizeof(vip_zaman), "%d|%d", gun_tmp, zaman[1] + yil_tmp);
mysql_format(mysqlC, query, sizeof(query), "INSERT INTO `Oyuncular` (Isim,VIPZaman) VALUES ('%s','%s')", isim, vip_zaman);
    mysql_query(mysqlC, query);
format(str, sizeof(str), "HATA: %s adlı oyuncuyu vip yaptın!", isim);
    SendClientMessage(playerid, -1, str);
}
else
{
format(str, sizeof(str), "HATA: %s adlı oyuncunun adını bulunamadı.", isim);
    SendClientMessage(playerid, -1, str);
}
cache_delete(sorguj);
return 1;
}

ReturnUser(text[])
{
new strPos, returnID = 0, bool: isnum = true;
while(text[strPos])
{
if(isnum) {
if('0' <= text[strPos] <= '9') returnID = (returnID * 10) + (text[strPos] - '0');
else isnum = false;
}
strPos++;
}
if(isnum)
{
if(IsPlayerConnected(returnID)) return returnID;
}
else
{
new sz_playerName[MAX_PLAYER_NAME];
for(new i=0; i<MAX_PLAYERS; i++)
{
    if(!IsPlayerConnected(i)) return INVALID_PLAYER_ID;
GetPlayerName(i, sz_playerName, MAX_PLAYER_NAME);
if(!strcmp(sz_playerName, text, true, strPos)) return i;
}
}
return INVALID_PLAYER_ID;
}

stock OffOyuncuyuVIPYap(playerid, gun)
{
new query[135], vip_zaman[12], zaman[4], yil_tmp, gun_tmp, isim[24];

zaman[0] = getdate(zaman[1], zaman[2], zaman[3]); // Öncelikle şimdiki zamanı bir değişkene alıyoruz.
gun_tmp = zaman[0] + gun; // Yıl arttırma işlemi için gün değerini geçici bir değişkene atadık.

loop_start: // Buraya döngü oluşturmak için bir kontrol noktası ekledik. Gün kontrolü yapacağımız için şu anki gelinen gün ile verilen gün 365'i geçerse bug oluşmasını önlemek için döngüye sokuyoruz.
if(gun_tmp > 365) // Eğer aşağıdaki işlemlerden sonra gün değeri hala 365'ten büyükse aşağıdaki işlemleri tekrar ediyoruz.
{
gun_tmp = gun_tmp - 365; // Günden 365 çıkardık,
yil_tmp++; // Yılı arttırdık.
goto loop_start; // Tekrar kontrol etmek için döngünün başına, yani belirttiğimiz kontrol noktasına dönüyoruz.
}

pVIP[playerid][VIP] = 1; // Oyuncuyu VIP yaptık.
GetPlayerName(playerid, isim, sizeof(isim));

format(vip_zaman, sizeof(vip_zaman), "%d|%d", gun_tmp, zaman[1] + yil_tmp); // Burda kaç gün VIP verilmiş ve hangi yılda bitiyor onları alıp kaydediyoruz. gün|yıl şeklinde kaydediyoruz. Daha sonra split fonksiyonu ile bunları ayıracağız.
mysql_format(mysqlC, query, sizeof(query), "INSERT INTO `Oyuncular` (Isim,VIPZaman) VALUES ('%s','%s')", isim, vip_zaman);
    mysql_query(mysqlC, query);
// Burada neden 365'ten büyükse yukarıdaki işlemleri yaptığımızı merak edenler için;
// Gün kontrolünü getdate fonksiyonuyla yapacağız. getdate fonksiyonu şu anki günü, yılın başından itibaren kaç gün geçmiş ona göre veren bir fonksiyon.
// Misal bugün 19 Mart ise, 1 Ocaktan itibaren geçen gün sayısını, yani; (Ocak) 31 + (Şubat) 28 + (Mart) 19 = 78'i veriyor.
// 365'ten sonra ise sıfırlanıyor. Yani misal siz Aralığın 31'inde oyuncuya 1 günlük VIP'lik verirseniz kaydedeceğimiz değer 365 (bulunduğumuz zaman) + 1 = 366 olacaktı.
// 366. gün hiç gelmeyeceği için, yani 365'ten sonra hep sıfırlanacağı için oyuncu sınırsız VIP olmuş olacaktı.
}


stock OyuncuyuVIPYap(playerid, gun)
{
new query[135], vip_zaman[12], zaman[4], yil_tmp, gun_tmp, isim[24];

zaman[0] = getdate(zaman[1], zaman[2], zaman[3]); // Öncelikle şimdiki zamanı bir değişkene alıyoruz.
gun_tmp = zaman[3] + gun; // Yıl arttırma işlemi için gün değerini geçici bir değişkene atadık.

loop_start: // Buraya döngü oluşturmak için bir kontrol noktası ekledik. Gün kontrolü yapacağımız için şu anki gelinen gün ile verilen gün 365'i geçerse bug oluşmasını önlemek için döngüye sokuyoruz.
if(gun_tmp > 365) // Eğer aşağıdaki işlemlerden sonra gün değeri hala 365'ten büyükse aşağıdaki işlemleri tekrar ediyoruz.
{
gun_tmp = gun_tmp - 365; // Günden 365 çıkardık,
yil_tmp++; // Yılı arttırdık.
goto loop_start; // Tekrar kontrol etmek için döngünün başına, yani belirttiğimiz kontrol noktasına dönüyoruz.
}

pVIP[playerid][VIP] = 1; // Oyuncuyu VIP yaptık.
GetPlayerName(playerid, isim, sizeof(isim));

format(vip_zaman, sizeof(vip_zaman), "%d|%d", gun_tmp, zaman[1] + yil_tmp); // Burda kaç gün VIP verilmiş ve hangi yılda bitiyor onları alıp kaydediyoruz. gün|yıl şeklinde kaydediyoruz. Daha sonra split fonksiyonu ile bunları ayıracağız.
format(query, sizeof(query),"UPDATE `Oyuncular` SET `VIPZaman`='%s' WHERE `Isim`='%s'", vip_zaman, isim); // Oyuncunun MySQL'deki değerlerini güncelliyoruz.
    mysql_query(mysqlC, query); // Burdaki mysqlB'yi kendi modunuzun MySQL değişkenine göre değiştirin.

// Burada neden 365'ten büyükse yukarıdaki işlemleri yaptığımızı merak edenler için;
// Gün kontrolünü getdate fonksiyonuyla yapacağız. getdate fonksiyonu şu anki günü, yılın başından itibaren kaç gün geçmiş ona göre veren bir fonksiyon.
// Misal bugün 19 Mart ise, 1 Ocaktan itibaren geçen gün sayısını, yani; (Ocak) 31 + (Şubat) 28 + (Mart) 19 = 78'i veriyor.
// 365'ten sonra ise sıfırlanıyor. Yani misal siz Aralığın 31'inde oyuncuya 1 günlük VIP'lik verirseniz kaydedeceğimiz değer 365 (bulunduğumuz zaman) + 1 = 366 olacaktı.
// 366. gün hiç gelmeyeceği için, yani 365'ten sonra hep sıfırlanacağı için oyuncu sınırsız VIP olmuş olacaktı.
}

public OnPlayerConnect(playerid)
{
VIPKontrolEt(playerid); // VIP kontrol etme fonksiyonumuz. Aşağıda belirtilecek.
return 1;
}

stock VIPKontrolEt(playerid)
{
new query[88], Cache:Result, tmp_str[12], tmp[2][5], isim[24], zaman[4];
GetPlayerName(playerid, isim, sizeof(isim));
format(query, sizeof(query), "SELECT * FROM `Oyuncular` WHERE `Isim` = '%s'", isim); // MySQL veritabanınızdaki 'Oyuncular' tablosundaki oyuncuyu seçiyoruz.
Result = mysql_query(mysqlC, query); // Seçilen veriyi geçici bir değişkene atadık.
cache_get_value_name(0, "VIPZaman", tmp_str, 12); // Seçilen verideki değeri aldık.
cache_delete(Result); // Hafızada tutulan MySQL verisini siliyoruz.
split(tmp_str, tmp, '|'); // Split fonksiyonu ile MySQL'e kaydettiğimiz gün|yıl şeklindeki veriyi bölüyoruz.
pVIP[playerid][VIPGun] = strval(tmp[0]); // Böldüğümüz verideki | karakterinden önceki yazıların sayısal değerini aldık.
pVIP[playerid][VIPYil] = strval(tmp[1]); // Böldüğümüz verideki | karakterinden sonraki yazıların sayısal değerini aldık.

zaman[0] = getdate(zaman[1], zaman[2], zaman[3]); // İşlemler için şu anki zamanı alıyoruz.

// Şimdi eğer oyuncu VIP ise süresinin dolup dolmadığını kontrol edeceğiz.
if(pVIP[playerid][VIPYil] > 0 || pVIP[playerid][VIPGun] > 0) // Oyuncu VIP'lik verilmiş mi kontrol ediyoruz.
{
if(zaman[0] > pVIP[playerid][VIPGun] && zaman[1] >= pVIP[playerid][VIPYil]) // Eğer VIP'lik verilmişse süresi dolmuş mu dolmamış mı kontrol ediyoruz.
{
SendClientMessage(playerid, -1, "VIP süreniz doldu. Artık VIP değilsiniz!"); // Eğer dolmuşsa mesaj gönderiyoruz.
VIPSil(playerid); // Oyuncunun VIP'liğini siliyoruz.
}
else
{
// Eğer süresi dolmamışsa kalan süresini göstereceğiz.
// Ben bunun için ufak bir fonksiyon yazdım. Fakat bayağı karışık oldu. Anlatmaya çalışacağım fakat anlaması zor olabilir.
new str[128], yil_tmp, gun_tmp;
// Önce oyuncunun kalan yıl ve gün değerlerini üzerinde oynayacağımız değişkenlere aktarıyoruz.
yil_tmp = pVIP[playerid][VIPYil];
gun_tmp = pVIP[playerid][VIPGun];
if(yil_tmp - zaman[1] > 0) // Eğer oyuncunun kalan süresi bulunduğumuz yılı geçiyorsa
{
loop_start: // Yine bir döngü noktası oluşturuyoruz burda süreyi hesaplayabimek için
if(yil_tmp >= zaman[1]) // Şu an döngüde bulunan yıl bulunduğumuz yıl veya daha büyükse
{
if(yil_tmp == pVIP[playerid][VIPYil]) gun_tmp = pVIP[playerid][VIPGun]; // Eğer döngüde bulunan yıl oyuncunun VIP süresinin biteceği yıl ise gün değişkenine VIP'liğin o yıldan kaç gün sonra biteceğini aldık.
else if(yil_tmp == zaman[1]) gun_tmp = gun_tmp + (365 - zaman[0]); // Eğer döngüde bulunan yıl içinde bulunduğumuz yılsa, gün değişkenine bu yılın bitmesine kaç gün varsa onu ekledik.
else gun_tmp = gun_tmp + 365; // Eğer döngüde bulunan yıl yukarıdaki yıllardan biri değilse demektir ki 1 yıl daha var. O yüzden gün değişkenine 365 ekliyoruz.
yil_tmp--; // Bu yıl üzerinden alacağımızı aldık. Yılı azaltıyoruz ki kalan yılları da hesaplayalım.
goto loop_start; // Döngünün başına dönüyoruz. Aynı işlemleri tekrarlayacağız.
}
}
else gun_tmp = pVIP[playerid][VIPGun] - zaman[0]; // Eğer oyuncunun kalan süresi bulunduğumuz yılı geçmiyorsa direk oyuncunun VIP'liğinin biteceği günü bulunduğumuz günden çıkarıyoruz.
format(str, sizeof(str), "VIP olarak giriş yaptınız. Kalan süre: %d Gün", gun_tmp);
SendClientMessage(playerid, -1, str); // Mesajımızı gönderdik.
pVIP[playerid][VIP] = 1; // Oyuncuyu VIP yaptık.
}
}
}

CMD:vipsil(playerid, params[])
{
new id;
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{9D1619}<!> HATA :{FFFFFF} Bu komutu kullanmak için admin olamlısınız!"); // Komutu kullanan oyuncunun admin olup olmadığını kontrol ettik
if(sscanf(params, "u", id)) return SendClientMessage(playerid, -1, "{d61b1b}<!> Kullanım:{FFFFFF} /vipsil [ID]");
if(pVIP[id][VIP] == 0) return SendClientMessage(playerid, -1, "{9D1619}<!> HATA :{FFFFFF} Oyuncu zaten VIP değil!"); // ID'si girilen oyuncunun VIP olup olmadığını kontrol ettik.
VIPSil(id); // Oyuncunun VIP'liğini silme fonksiyonumuz. Aşağıda belirtilecek.
SendClientMessage(id, -1, "VIP'liğiniz silindi!"); // Oyuncuya gidecek mesaj.
SendClientMessage(playerid, -1, "Oyuncunun VIP'liğini sildiniz."); // Admine gidecek mesaj.
return 1;
}

CMD:offvipsil(playerid, params[])
{
new str[128], isim[24], sorgu[135], query[135], Cache: sorguj, tmp[2][5], vericek[12];
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{9D1619}<!> HATA :{FFFFFF} Bu komutu kullanmak için admin olamlısınız!"); // Komutu kullanan oyuncunun admin olup olmadığını kontrol ettik
if(sscanf(params, "s[24]", isim)) return SendClientMessage(playerid, -1, "{d61b1b}<!> Kullanım:{FFFFFF} /vipsil [Oyuncuisim]");

mysql_format(mysqlC, sorgu, sizeof(sorgu), "SELECT * FROM `Oyuncular` WHERE `Isim` = '%s'", isim);
sorguj = mysql_query(mysqlC, sorgu);
new veriler = cache_num_rows();
if(veriler)
{
    new vipgun, vipyil;
cache_get_value_name(0, "VIPZaman", vericek, 12);
split(vericek, tmp, '|');
vipgun = strval(tmp[0]);
vipyil = strval(tmp[1]);
if(IsPlayerConnected(ReturnUser(isim))) return SendClientMessage(playerid, -1, "HATA: Oyuncu zaten oyunda.");
if(vipgun == 0 || vipyil == 0) return SendClientMessage(playerid, -1, "HATA: Oyuncu zaten vip değil.");
mysql_format(mysqlC, query, sizeof(query), "UPDATE `Oyuncular` SET `VIPZaman`='0|0' WHERE `Isim`='%s'", isim);
mysql_query(mysqlC, query);
format(str, sizeof(str), "HATA: %s adlı oyuncunun vipsini sildin.", isim);
    SendClientMessage(playerid, -1, str);
}
else
{
format(str, sizeof(str), "HATA: %s adlı oyuncunun adını bulunamadı.", isim);
    SendClientMessage(playerid, -1, str);
}
cache_delete(sorguj);
return 1;
}


stock VIPSil(playerid)
{
// Şimdi burda oyuncunun VIP'liğini silme fonksiyonumuzu yapıyoruz.
// MySQL'e kaydetme biçimimiz gün|yıl olduğu için 0|0 kaydediyoruz. Daha sonra değişkenleri sıfırlıyoruz.
new query[88], isim[24];
GetPlayerName(playerid, isim, sizeof(isim));
format(query, sizeof(query),"UPDATE `Oyuncular` SET `VIPZaman`='0|0' WHERE `Isim`='%s'", isim); // MySQL'e göndereceğimiz komutu belirtiyoruz.
mysql_query(mysqlC, query); // MySQL'e komutumuzu gönderiyoruz
pVIP[playerid][VIP] = 0; // Değişkenlerimizi sıfırlıyoruz.
pVIP[playerid][VIPGun] = 0;
pVIP[playerid][VIPYil] = 0;
}

stock split(const src[], dest[][], const delimiter)
{
    new n_pos,num,old,str[1];
    str[0] = delimiter;
    while(n_pos != -1)
    {
        n_pos = strfind(src,str,false,n_pos+1);
        strmid(dest[num++], src, (!num)?0:old+1,(n_pos==-1)?strlen(src):n_pos,256);
        old=n_pos;
    }
    return 1;
}

CMD:can(playerid, params[])
{
if(pVIP[playerid][VIP] == 0) return SendClientMessage(playerid, -1, "[HATA]: Bu komut VIP oyunculara özeldir!"); // Oyuncu VIP değilse hata mesajı gösteriyoruz. VIP komutlarının başına bu kontrolü ekleyerek VIP harici oyuncuların komutu kullanmasını engelleyebilirsiniz.
if(GetPVarInt(playerid, "komutsure2") > GetTickCount()) return SendClientMessage(playerid, COLOR_ADMIN, "Bu komutu kullanmak için 1 dakika beklemelisiniz!");
    SetPVarInt(playerid, "komutsure2", GetTickCount()+60000);
SetPlayerHealth(playerid, 100.0);
SendClientMessage(playerid, -1, "{FFFFFF}Canınız tazelendi!");
return 1;
}
Son düzenlenme: 08 Temmuz 2019, 14:14:53 AMD Ryzen

Christian

Tell your men they work for me now, this is my city!


Backup

Saçma. Uzatmaktan ibaret sadece. Kod bilgisiyle gövde gösterisi yapılmak istenmiş onu anlıyorum burada.

Biteceği tarihi bitis adlı değişkene atayıp diğer değişkene verin ve UPDATE sorgusu gönderin.
new bitis = gettime() + gun*86400;

Kontrol kısmı :

if(Player[playerid][Vsure] < gettime()) return SCM(playerid,-1,"Vipin bitti") , Player[playerid][Vip] = 0 , Player[playerid][Vsure] = 0;



rootcause_

Alıntı yapılan: Backup - 26 Nisan 2018, 20:33:11

Saçma. Uzatmaktan ibaret sadece. Kod bilgisiyle gövde gösterisi yapılmak istenmiş onu anlıyorum burada.

Biteceği tarihi bitis adlı değişkene atayıp diğer değişkene verin ve UPDATE sorgusu gönderin.
new bitis = gettime() + gun*86400;

Kontrol kısmı :

if(Player[playerid][Vsure] < gettime()) return SCM(playerid,-1,"Vipin bitti") , Player[playerid][Vip] = 0 , Player[playerid][Vsure] = 0;

Kodlayan kendisi değil zaten  :P


Backup

Alıntı yapılan: rootcause - 26 Nisan 2018, 21:02:15

Alıntı yapılan: Backup - 26 Nisan 2018, 20:33:11

Saçma. Uzatmaktan ibaret sadece. Kod bilgisiyle gövde gösterisi yapılmak istenmiş onu anlıyorum burada.

Biteceği tarihi bitis adlı değişkene atayıp diğer değişkene verin ve UPDATE sorgusu gönderin.
new bitis = gettime() + gun*86400;

Kontrol kısmı :

if(Player[playerid][Vsure] < gettime()) return SCM(playerid,-1,"Vipin bitti") , Player[playerid][Vip] = 0 , Player[playerid][Vsure] = 0;

Kodlayan kendisi değil zaten  :P

Biliyorum zaten  :hayir:  :yaramaz2:


ace

Bende direk incelemeden koyu vermiştim sonra yardım taleplerine konu açtım skypeden düzeltti baya bir işi vardı her şeyi ayarladık gün ayarları falan zor bir şey vıp yapılan güne gün ekliyor mesela ayın 3. günündeyiz siz 13 gün verdiniz vip mysql de 16 oluyor yanındada hangi tarihte biteceği 365 gün girerseniz eğer yan taraf 2019 oluyor mysql de şöyle kayıt oluyor: 16|2018 konuyu düzenliyorum!


BullTerrier

Alıntı yapılan: Müdbezel - 06 Mayıs 2018, 22:53:55

Tek kelime ile Çalıntı!
XpDevilin sistemi bu, artı olarak sadece offvipyap eklemişsin, keşke belirtseydin edit diye.
Adam Belirtmiş xpdevil den ALINTI diye neyin kafası bu ?


FelleR



Asena

İyi hoş güzel de, bu bir anlatım değil ki. Filterscripts olarak paylaşsaydın daha güzel olurdu. Neyse konu zaten geçmişte kalmış, paylaşım için teşekkürler.

Control, is overrated.

ace

Alıntı yapılan: Petrova - 08 Temmuz 2019, 14:35:09

İyi hoş güzel de, bu bir anlatım değil ki. Filterscripts olarak paylaşsaydın daha güzel olurdu. Neyse konu zaten geçmişte kalmış, paylaşım için teşekkürler.

Rica ederim, eski konumdu vip sistemi arayanlar belki bakar diye yorum yapayım dedim ön plana çıksın.


TheLucifer