#include <amxmodx>
#include <amxmisc>
#include <reapi>
#include <nvault>
new const szOwnerFlag = ADMIN_RCON; /* Give Coin Flag */
#define szCoinTime 10 /* Kac dakikada Bi Coin versin */
enum _: IPTags {
SayTag,
MenuTag,
KisaTag
}
new const szTag[IPTags][] = {
"^3[WebAilesi.com]", /* Chat Tag */
"QuryWesT", /* Menu Tag */
"QWT" /* Kisa Tag */
};
/* {"Menu deki isim", Fiyat} */
new const szCoinMenu[][][] = {
{"8.000 Coin'e VIP Aylik", 8000},{"15.000 Coin'e VIP Plus Aylik", 15000},{"20.000 Coin'e AIS VIP Aylik", 20000}
};
new sCoin[MAX_CLIENTS+1],sVault,sDeger,sDeger2,sHud;
public plugin_init() {
register_plugin("ReCoinSystem", "1.0", "QuryWesT");
register_concmd("amx_coinver","@sGetPlayerGiveCoin",szOwnerFlag, "<isim> <miktar>");
RegisterHookChain(RG_CBasePlayer_Killed, "@sGetPlayerKilled", 1);
register_clcmd("say /CoinMenu", "@sGetPlayerCoinCreate");
sDeger = register_cvar("amx_killcoin", "2"); /* Kac Killde Bi Coin, versin */
sDeger2 = register_cvar("amx_surecoin", "10"); /* Kac dakikada Bi Coin vericek */
sHud = CreateHudSyncObj();
}
@sGetPlayerCoinCreate(const IP_IDs) {
new iMenu = menu_create(fmt("\r[\w%s\r] \d~> \yCoin Market", szTag[MenuTag]), "@sGetPlayerCoinCreate_")
for(new i=0; i < sizeof(szCoinMenu); i++) {
menu_additem(iMenu, fmt("\r[\w%s\r] \d~> \y%s", szTag[KisaTag], szCoinMenu[i][0]), fmt("%d", i));
}
menu_setprop(iMenu, MPROP_EXITNAME, fmt("\r[\w%s\r] \d~> \yCikis", szTag[KisaTag]));
menu_display(IP_IDs, iMenu);
}
@sGetPlayerCoinCreate_(const IP_IDs, const menu, const item) {
if(item == MENU_EXIT){ menu_destroy(menu);return PLUGIN_HANDLED; }
new iData[6],sL_Key;
menu_item_getinfo(menu,item,_,iData,charsmax(iData));
sL_Key = str_to_num(iData);
if(sCoin[IP_IDs] >= szCoinMenu[sL_Key][1][0]) {
sCoin[IP_IDs] -= szCoinMenu[sL_Key][1][0];client_print_color(IP_IDs, IP_IDs, "%s ^4( ^1%s ^4) ^3Satin aldiniz SS alarak discord adresine iletiniz!",szTag[SayTag],szCoinMenu[sL_Key][0][0]);
sSaveVault(IP_IDs,1);log_to_file("CoinVipLog.txt", "%n Isimli Oyuncu Coin ile Vip almistir!",IP_IDs);
} else client_print_color(IP_IDs, IP_IDs, "%s ^4Yeterli Coin bulunmuyor. Gereken: ^1%i",szTag[SayTag],szCoinMenu[sL_Key][1][0]);
menu_destroy(menu); return PLUGIN_HANDLED;
}
@sGetPlayerGiveCoin(const IP_IDs){
if(get_user_flags(IP_IDs) & szOwnerFlag){
new kisi[MAX_NAME_LENGTH],packs[10],index;
read_argv(1,kisi,charsmax(kisi));
read_argv(2,packs,charsmax(packs));
index = cmd_target(IP_IDs,kisi,0);
if(!is_str_num(packs)){return PLUGIN_HANDLED;}
else{
sCoin[IP_IDs] += str_to_num(packs);sSaveVault(index,1);
client_print_color(0, 0,"%s ^4Yetkili ^3[ ^1%n ^1] ^4Adli Oyuncusuna ^4%i ^3Coin Verdi.",szTag[SayTag],index,str_to_num(packs));
}
}
return PLUGIN_HANDLED;
}
@sGetPlayerKilled(const Victim, Killer) {
if(is_user_connected(Victim) && is_user_connected(Killer) && Victim != Killer) {
sCoin[Killer] += get_pcvar_num(sDeger);sSaveVault(Killer,1);
client_print_color(Killer, Killer, "%s ^4( ^3+%i Coin ^4) ^1Hesabiniza aktarildi!", szTag[SayTag],get_pcvar_num(sDeger));
}
}
@sGetPlayerHudShower(const IP_IDs) {
set_hudmessage(random(255), random(255), random(255), 0.69, 0.17, 0, 6.0, 1.1, 0.0, 0.0, -1)
ShowSyncHudMsg(IP_IDs, sHud, "[Coin: %i]^n[Say /CoinMenu]")
}
public plugin_natives(){
register_native("coin_get_user","@sGetNative", 1);
register_native("coin_set_user","@sSetNative", 1);
}
@sGetNative(IP_IDs) { return sCoin[IP_IDs]; }
@sSetNative(IP_IDs, ammount) { sCoin[IP_IDs] = ammount;return 1; }
@sGetPlayerTimeCoin(const IP_IDs) { sCoin[IP_IDs] += get_pcvar_num(sDeger2);client_print_color(IP_IDs, IP_IDs, "%s ^4Serverda ^3( ^1%i ^3) ^4Sure oynadiniz icin ^3( ^1%i ^3) ^4Coin kazandiniz!", szTag[SayTag],szCoinTime,get_pcvar_num(sDeger2));sSaveVault(IP_IDs,1); }
public client_disconnected(IP_IDs) { sSaveVault(IP_IDs,1); }
public client_putinserver(IP_IDs) { sLoadVault(IP_IDs,1);set_task(60.0*szCoinTime,"@sGetPlayerTimeCoin",IP_IDs, _, _, "b");set_task(1.0, "@sGetPlayerHudShower", IP_IDs, _, _, "b"); }
stock sLoadVault(const IP_IDs, const iType) {
new szAuthid[MAX_AUTHID_LENGTH];get_user_authid(IP_IDs,szAuthid,charsmax(szAuthid));
switch(iType) {
case 1: { sCoin[IP_IDs] = sGetIntData("%s>iCoin",szAuthid); }
}
return PLUGIN_HANDLED;
}
stock sSaveVault(const IP_IDs, const iType) {
new szAuthid[MAX_AUTHID_LENGTH];get_user_authid(IP_IDs,szAuthid,charsmax(szAuthid));
switch(iType) {
case 1: { sSetIntData("%s>iCoin",sCoin[IP_IDs],szAuthid); }
}
return PLUGIN_HANDLED;
}
stock sGetIntData(const sS_Key[],any:...){
new sL_FixedData[128];
vformat(sL_FixedData,127,sS_Key,2);
return nvault_get(sVault,sL_FixedData);
}
stock sSetIntData(const sS_Key[],const iS_Data,any:...){
new sL_FixedData[128],sL_NumToStr[48];
vformat(sL_FixedData,127,sS_Key,3);
num_to_str(iS_Data,sL_NumToStr,47);
nvault_set(sVault,sL_FixedData,sL_NumToStr);
}