Frags Exchanger

Плагин АМХХ Frags Exchanger 1.1

Нет прав для скачивания
C++:
#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],
    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[] = { 10, 20, 30, 40, 50 };        // Кол-во фрагов, которое отнимет (5 чисел - 5 пунктов в меню)
new const give_rubs[] = { 1, 2, 3, 4, 5 };            // Кол-во рублей, которое выдаст (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] \wОбменник \yфрагов\R Стоимость^n\
                                                        \r[\y!\r] \yВаш баланс\r:\w %.1f \yруб. \d| \w%d \yфраг(-а -ов)^n^n", szGetMoney, gFrags);

    ilen += formatex(menu[ilen], charsmax(menu) - ilen, "\r[\y1\r] \d| \wОбмен на\y %d\w руб. \y\R %d^n", give_rubs[0], get_frags[0]);
    keys |= MENU_KEY_1;
    ilen += formatex(menu[ilen], charsmax(menu) - ilen, "\r[\y2\r] \d| \wОбмен на\y %d\w руб. \y\R %d^n", give_rubs[1], get_frags[1]);
    keys |= MENU_KEY_2;
    ilen += formatex(menu[ilen], charsmax(menu) - ilen, "\r[\y3\r] \d| \wОбмен на\y %d\w руб. \y\R %d^n", give_rubs[2], get_frags[2]);
    keys |= MENU_KEY_3;
    ilen += formatex(menu[ilen], charsmax(menu) - ilen, "\r[\y4\r] \d| \wОбмен на\y %d\w руб. \y\R %d^n", give_rubs[3], get_frags[3]);
    keys |= MENU_KEY_4;
    ilen += formatex(menu[ilen], charsmax(menu) - ilen, "\r[\y5\r] \d| \wОбмен на\y %d\w руб. \y\R %d^n", give_rubs[4], get_frags[4]);
    keys |= MENU_KEY_5;
    ilen += formatex(menu[ilen], charsmax(menu) - ilen, "^n\r[\w0\r] \w| \wЗакрыть" );

    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_reload_wallet(id, give_rubs[0], true);
                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_reload_wallet(id, give_rubs[1], true);
                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_reload_wallet(id, give_rubs[2], true);
                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_reload_wallet(id, give_rubs[3], true);
                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_reload_wallet(id, give_rubs[4], true);
                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, Value) {
    log_to_file(cvars[gLogFileName], "[%s v%s] Игрок [ %n ] обменял [ %d ] фрагов на [ %d ] рубль(-я, -ей)", szPluginInfo[0], szPluginInfo[1], Id, Cost, Value);
}
Назад
Сверху