• Уважаемые пользователи!
    За решением проблем с работой плагинов, компиляцией, падением сервера и прочими обращайтесь в раздел Помощи!
    Данная тема предназначена для обсуждения плагина, его функционала, принципа работы и предложений.
Frags Exchanger

Frags Exchanger 1.1

Нет прав для скачивания
1606715031074.png

1606714836273.png


Было бы неплохо, если логи писались и на сайте, т.к. человек покупает услугу, а ты не видишь откуда он взял деньги на покупку) Приходится смотреть логи сервера

Примерно как-то так типо
1606715232046.png

p.s. объяснил как смог, думаю все поняли)))
 
1608758476048.png

у меня не рублями а еурами. будет работать?
 

Код:
new const get_frags[] = { 100, 200, 300, 400, 500 };        // Кол-во фрагов, которое отнимет (5 чисел - 5 пунктов в меню)
new const give_rubs[] = { 0.1, 0.2, 0.3, 0.4, 0.5 };            // Кол-во рублей, которое выдаст (5 чисел - 5 пунктов в меню)
изображение_2020-12-24_193510.png
 
v1rus, так как Вы перешли на дробные значения, так же и плагин необходимо перевести на вывод дробных значений.

Вот переделанная версия.
Так же заменена функция начисления денег, так как cmsapi_reload_wallet не поддерживает float значения, ну или же их необходимо округлять в одну из сторон, что как я понимаю не подходит под Ваши нужды.

Теперь используется функция cmsapi_add_user_money, но предупреждаю сразу, деньги будут начисляться не моментально, а только после смены карты.
 

Вложения

  • Frags_Exchanger.sma
    7.2 KB · Просмотры: 13
v1rus, так как Вы перешли на дробные значения, так же и плагин необходимо перевести на вывод дробных значений.

Вот переделанная версия.
Так же заменена функция начисления денег, так как cmsapi_reload_wallet не поддерживает float значения, ну или же их необходимо округлять в одну из сторон, что как я понимаю не подходит под Ваши нужды.

Теперь используется функция cmsapi_add_user_money, но предупреждаю сразу, деньги будут начисляться не моментально, а только после смены карты.
Спасибо. И после смены карты устроит
 
изображение_2020-12-24_223150.png

(y)
Добавлено:

что-то изменил в коде и не работает (num 1, num 2, num 3, num 4, num 5)

Код:
#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);
}
 
Последнее редактирование:
v1rus, что меняли? Где меняли?
Скачайте просто заново и настройте под себя переделанную версию
 
Всем доброе утро, как скачать плагин, как получить права на скачивание?
 
Всем доброе утро, как скачать плагин, как получить права на скачивание?
 
как скачать? написал Стасу больше недели назад, был он последний раз 8 ноября, 2 движка купленных его, может как-то подругому можно подтвердить раз он на связь не выходит?
 
Баг в плагине обмен фрагов на баланс сайта



Любой игрок может себе выдать по 100 за раз использование команды фрагов через команду give weapon_knife_flip

Ниже кидаю нормальный сма без багаphoto_2023-05-26_22-56-55.jpg
 

Вложения

  • Frags_Exchanger.sma
    7.1 KB · Просмотры: 2
ev_sa, Это, судя по всему, команда для дебага плагина. А Вы на серьёзных щах заявляете, мол в плагине 'баг')
 
ev_sa, Это, судя по всему, команда для дебага плагина. А Вы на серьёзных щах заявляете, мол в плагине 'баг')
вот только игрок наобменивал таким образом на сервере, если эта команда для дебага, то хотя-бы написали-бы об этом
 
Назад
Сверху