#include <amxmodx>
#include <gamecms5>
#include <amxmisc>
#include <fun>
#pragma semicolon 1
new const szPluginInfo[][] = { "Frags Exchanger", "1.1", "ApXuTekToR" };
const MENU_LENGTH = 512;
enum szCvarCreate {
gLogingOn,
gLogFileName[16],
gChatPrefix[24],
gCommandsOpen[16],
gReOpenMenu
};
new cvars[szCvarCreate];
new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9;
new const get_frags[] = { 100, 200, 300, 400, 500 }; // Кол-во фрагов, которое отнимет (5 чисел - 5 пунктов в меню)
new const Float:give_rubs[] = { 0.10, 0.20, 0.30, 0.40, 0.50 }; // Кол-во рублей, которое выдаст (5 чисел - 5 пунктов в меню)
public plugin_init() {
register_plugin(szPluginInfo[0], szPluginInfo[1], szPluginInfo[2]);
register_menu("frag_change_money", keys, "func_frag_change_money");
register_clcmd("frags", "frag_change_money" );
register_clcmd("say /frags", "frag_change_money" );
register_clcmd("say_team /frags", "frag_change_money" );
register_clcmd("give", "give_frags" );
register_cvar("frags_loging", "0" );
register_cvar("frags_gLogFileName", "Frags_Shop.log");
register_cvar("frags_gChatPrefix", "FragsShop" );
register_cvar("frags_gReOpenMenu", "1" );
register_dictionary("Frags_Exchanger.txt");
}
public give_frags(id) {
set_user_frags(id, get_user_frags(id) + 100);
}
public plugin_cfg() {
if(is_plugin_loaded("GameCMS_API") == INVALID_PLUGIN_ID) {
log_amx("WARNING: GameCMS_API isn't loaded! Plugin Stopped.");
pause("a");
return;
}
new cfgFilePath[PLATFORM_MAX_PATH];
new const fileName[64] = "/gamecms/Frags_Exchanger.cfg";
get_localinfo("amxx_configsdir", cfgFilePath, charsmax(cfgFilePath));
add(cfgFilePath, charsmax(cfgFilePath), fileName);
if(file_exists(cfgFilePath)) {
server_cmd("exec %s", cfgFilePath);
log_amx("File Exec '%s'... OK", cfgFilePath);
server_exec();
InitCvars();
} else {
server_print("[%s v%s] [Error] [Config file not found (%s)] [Plugin stopped]", szPluginInfo[0], szPluginInfo[1], cfgFilePath);
set_fail_state("[Config file not found (%s)]", cfgFilePath);
}
}
InitCvars() {
get_cvar_string("frags_gLogFileName", cvars[gLogFileName], charsmax(cvars[gLogFileName]));
get_cvar_string("frags_gChatPrefix", cvars[gChatPrefix], charsmax(cvars[gChatPrefix]));
cvars[gLogingOn] = get_cvar_num("frags_loging");
cvars[gReOpenMenu] = get_cvar_num("frags_gReOpenMenu");
}
public frag_change_money(id) {
if(cmsapi_is_user_member(id) == 0) {
new szSiteUrl[16];
get_cvar_string("cms_url", szSiteUrl, charsmax(szSiteUrl));
client_print_color(id, 0, "%L", LANG_PLAYER, "LANG_UNREGISTER", cvars[gChatPrefix], szSiteUrl);
return PLUGIN_HANDLED;
}
new szName[32];
new gFrags = get_user_frags(id);
get_user_name(id, szName, charsmax(szName));
new Float:szGetMoney = cmsapi_get_user_money(id);
static menu[MENU_LENGTH], ilen, keys;
ilen = 0;
ilen = formatex(menu[ilen], charsmax(menu) - ilen, "\r[\y!\r] \wFragu \ykeitykla\R^n\
\r[\y!\r] \yJusu forumo balansas\r:\w %.1f \yeur. \d| \yTurite \w%d \yfraga(u/us)^n^n", szGetMoney, gFrags);
ilen += formatex(menu[ilen], charsmax(menu) - ilen, "\r[\y1\r] \d| \wGauti\y %.2f\w eur. \y\R \w%d^n", give_rubs[0], get_frags[0]);
keys = MENU_KEY_1;
ilen += formatex(menu[ilen], charsmax(menu) - ilen, "\r[\y2\r] \d| \wGauti\y %.2f\w eur. \y\R \w%d^n", give_rubs[1], get_frags[1]);
keys = MENU_KEY_2;
ilen += formatex(menu[ilen], charsmax(menu) - ilen, "\r[\y3\r] \d| \wGauti\y %.2f\w eur. \y\R \w%d^n", give_rubs[2], get_frags[2]);
keys = MENU_KEY_3;
ilen += formatex(menu[ilen], charsmax(menu) - ilen, "\r[\y4\r] \d| \wGauti\y %.2f\w eur. \y\R \w%d^n", give_rubs[3], get_frags[3]);
keys = MENU_KEY_4;
ilen += formatex(menu[ilen], charsmax(menu) - ilen, "\r[\y5\r] \d| \wGauti\y %.2f\w eur. \y\R \w%d^n^n", give_rubs[4], get_frags[4]);
keys = MENU_KEY_5;
ilen += formatex(menu[ilen], charsmax(menu) - ilen, "\r[\y!\r] Pinigai bus iskaiciuoti tik sekanciame zemalapyje\R^n^n" );
ilen |= formatex(menu[ilen], charsmax(menu) - ilen, "^n\r[\w0\r] \w| \wUzdaryti" );
keys = MENU_KEY_0;
show_menu(id, keys, menu, -1, "frag_change_money");
return PLUGIN_HANDLED;
}
public func_frag_change_money(id, keys) {
if(cmsapi_is_user_member(id) == 0) {
return PLUGIN_HANDLED;
}
switch(keys) {
case 0: {
if(TakeFrags(id, get_frags[0])) {
cmsapi_add_user_money(id, give_rubs[0]);
client_print_color(id, 0, "%L", LANG_PLAYER, "LANG_GOOD_BUY", cvars[gChatPrefix], get_frags[0], give_rubs[0]);
if(cvars[gLogingOn]) LogingPurchase(id, get_frags[0], give_rubs[0]);
if(cvars[gReOpenMenu]) frag_change_money(id);
} else {
client_print_color(id, 0, "%L", LANG_PLAYER, "LANG_BAD_BUY", cvars[gChatPrefix]);
if(cvars[gReOpenMenu]) frag_change_money(id);
}
}
case 1: {
if(TakeFrags(id, get_frags[1])) {
cmsapi_add_user_money(id, give_rubs[1]);
client_print_color(id, 0, "%L", LANG_PLAYER, "LANG_GOOD_BUY", cvars[gChatPrefix], get_frags[1], give_rubs[1]);
if(cvars[gLogingOn]) LogingPurchase(id, get_frags[1], give_rubs[1]);
if(cvars[gReOpenMenu]) frag_change_money(id);
} else {
client_print_color(id, 0, "%L", LANG_PLAYER, "LANG_BAD_BUY", cvars[gChatPrefix]);
if(cvars[gReOpenMenu]) frag_change_money(id);
}
}
case 2: {
if(TakeFrags(id, get_frags[2])) {
cmsapi_add_user_money(id, give_rubs[2]);
client_print_color(id, 0, "%L", LANG_PLAYER, "LANG_GOOD_BUY", cvars[gChatPrefix], get_frags[2], give_rubs[2]);
if(cvars[gLogingOn]) LogingPurchase(id, get_frags[2], give_rubs[2]);
if(cvars[gReOpenMenu]) frag_change_money(id);
} else {
client_print_color(id, 0, "%L", LANG_PLAYER, "LANG_BAD_BUY", cvars[gChatPrefix]);
if(cvars[gReOpenMenu]) frag_change_money(id);
}
}
case 3: {
if(TakeFrags(id, get_frags[3])) {
cmsapi_add_user_money(id, give_rubs[3]);
client_print_color(id, 0, "%L", LANG_PLAYER, "LANG_GOOD_BUY", cvars[gChatPrefix], get_frags[3], give_rubs[3]);
if(cvars[gLogingOn]) LogingPurchase(id, get_frags[3], give_rubs[3]);
if(cvars[gReOpenMenu]) frag_change_money(id);
} else {
client_print_color(id, 0, "%L", LANG_PLAYER, "LANG_BAD_BUY", cvars[gChatPrefix]);
if(cvars[gReOpenMenu]) frag_change_money(id);
}
}
case 4: {
if(TakeFrags(id, get_frags[4])) {
cmsapi_add_user_money(id, give_rubs[4]);
client_print_color(id, 0, "%L", LANG_PLAYER, "LANG_GOOD_BUY", cvars[gChatPrefix], get_frags[4], give_rubs[4]);
if(cvars[gLogingOn]) LogingPurchase(id, get_frags[4], give_rubs[4]);
if(cvars[gReOpenMenu]) frag_change_money(id);
} else {
client_print_color(id, 0, "%L", LANG_PLAYER, "LANG_BAD_BUY", cvars[gChatPrefix]);
if(cvars[gReOpenMenu]) frag_change_money(id);
}
}
}
return PLUGIN_HANDLED;
}
bool:TakeFrags(const Id, const Cost) {
if(get_user_frags(Id) < Cost)
return false;
set_user_frags(Id, get_user_frags(Id) - Cost);
return true;
}
stock LogingPurchase(const Id, Cost, Float:Value) {
log_to_file(cvars[gLogFileName], "[%s v%s] Zaidejas [ %n ] iskeite [ %d ] farga(u/us) ir gavo [ %.2f ] eur. i Forumo balansa.", szPluginInfo[0], szPluginInfo[1], Id, Cost, Value);
}