Basit Nvault Sistemi
Eklenti Yazarı : QuryWesT
Eklenti Yazarı : QuryWesT
Alıntı: #include <amxmodx>
#include <nvault>
#include <reapi>
// Kostum Uzantisi
new const Kostummenus[][] =
{
{ "kostumadi" }
}
new IP_IDsCoin[MAX_CLIENTS+1],
IP_IDsKaydedici[MAX_CLIENTS+1][1],
IP_IDsCvar[2],
IP_IDsNvault;
public plugin_init() {
register_plugin("Basit Nvault Sistemi", "1.0", "QuryWesT");
// Say
register_clcmd("say /nvaultmenu", "NvAnaMenu");
// Cvar
IP_IDsCvar[1] = register_cvar("amx_kostum1", "300");
}
// Menu
public NvAnaMenu(IP_IDs) {
static amenu[525]
formatex(amenu,charsmax(amenu),"\r[İxbir.net] \wNvault Menu")
new menuz = menu_create(amenu,"anamenu_devam")
if(IP_IDsKaydedici[IP_IDs][0] < 1){
formatex(amenu,charsmax(amenu),"\r[İxbir] \wKostum \d[%d Coin]", get_pcvar_num(IP_IDsCvar[1]))
menu_additem(menuz,amenu,"1") // Satın almadan önce
} else {
formatex(amenu,charsmax(amenu),"\r[İxbir] \wKostum \d[Kullanabilirsin]")
menu_additem(menuz,amenu,"1") // Satın aldıktan sonra
}
menu_setprop(menuz, MPROP_EXIT, MEXIT_ALL);
menu_display(IP_IDs, menuz, 0);
}
public anamenu_devam(IP_IDs, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data, 5, iName, 63, callback);
new key = str_to_num(data);
switch(key)
{
case 1:
{
if(IP_IDsKaydedici[IP_IDs][0] < 1) // if yoluyle modeli tanımlıyoruz
{
if(IP_IDsCoin[IP_IDs] >= get_pcvar_num(IP_IDsCvar[1])){
IP_IDsCoin[IP_IDs] -= get_pcvar_num(IP_IDsCvar[1]); // Oluşturdugumuz Para Birimi
rg_set_user_model(IP_IDs, "kostumadi") // Oluşturdugumuz Model Uzantısındaki Modelin İsmi
client_print_color(IP_IDs, IP_IDs,"^1[İxbir] ^4Basariyla Kostum ^3Satin Aldiniz.")
IP_IDsKaydedici[IP_IDs][0]++
}else{
client_print_color(IP_IDs, IP_IDs,"^1[İxbir] ^4Yetersiz Coin ^3Gerekli olan Coin: %i", get_pcvar_num(IP_IDsCvar[1]))
}
}else{
// Oyuncu eger ki modeli satın aldıysa bidakine sadece yazı ve modeli aktif etmesini kontroll eden kısım
client_print_color(IP_IDs, IP_IDs,"^1[İxbir] ^4Kostumunuz ^3Aktif.")
rg_set_user_model(IP_IDs, "kostumadi") // Oluşturdugumuz Model Uzantısındaki Modelin İsmi
IP_IDsKaydedici[IP_IDs][0]++
}
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
// Nvault
public client_connect(IP_IDs){
kaydetyukle(IP_IDs)
}
public client_disconnected(IP_IDs){
kaydetkaydet(IP_IDs)
}
public plugin_cfg(){
IP_IDsNvault = nvault_open("IP_IDsCoin")
if ( IP_IDsNvault == INVALID_HANDLE )
set_fail_state( "Dosya Bulunmamakta!" )
}
public plugin_end(){
nvault_close(IP_IDsNvault)
}
// Herhangi bi oyuncu serverdan çıkar, interneti, elektirik gitmesi vb. Şeylerde Otomatik Veriyi Kaydeder
kaydetkaydet(IP_IDs){
new szAuth[33];
new szData[256];
get_user_authid(IP_IDs , szAuth , charsmax(szAuth))
formatex(szData , 255 , "%i#%i#" ,IP_IDsCoin[IP_IDs],IP_IDsKaydedici[IP_IDs][0])
nvault_pset(IP_IDsNvault , szAuth , szData)
}
// Kaydedilen veriyi oyuncu servera giris yapınca yükler
kaydetyukle(IP_IDs){
new szAuth[33],szData[256],veri[3][8]; // Her Veri Artışında Birer Rakam Fazladan Ekleyiniz.
get_user_authid(IP_IDs , szAuth , charsmax(szAuth))
nvault_get(IP_IDsNvault, szAuth, szData, 255)
replace_all(szData , 255, "#", " ")
parse(szData, veri[0],7,veri[1],7); // Yeni Oluşturulan Veri Kaynagını Burada İşleve Dökülmesi Gerekir
IP_IDsCoin[IP_IDs] = str_to_num(veri[0]);
IP_IDsKaydedici[IP_IDs][0] = str_to_num(veri[1]);
}
// Modeli tanıtılan kısım
public plugin_precache()
{
new Text[64];
for(new i; i < sizeof(Kostummenus); i++)
{
formatex(Text, 63, "models/player/%s/%s.mdl", Kostummenus[0], Kostummenus[0]);
precache_model(Text);
}
}