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

Frags Exchanger 1.1

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

Evgen

Участник
Сообщения
33
Реакции
4
Баллы
8
1606715031074.png

1606714836273.png


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

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

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

v1rus

Участник
Сообщения
29
Реакции
2
Баллы
3
1608758476048.png

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

v1rus

Участник
Сообщения
29
Реакции
2
Баллы
3

Код:
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
 

D1m0n41k

Участник
Сообщения
475
Реакции
202
Баллы
43
v1rus, так как Вы перешли на дробные значения, так же и плагин необходимо перевести на вывод дробных значений.

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

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

Вложения

  • Frags_Exchanger.sma
    7.2 KB · Просмотры: 13

v1rus

Участник
Сообщения
29
Реакции
2
Баллы
3
v1rus, так как Вы перешли на дробные значения, так же и плагин необходимо перевести на вывод дробных значений.

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

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

v1rus

Участник
Сообщения
29
Реакции
2
Баллы
3
изображение_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);
}
 
Последнее редактирование:

D1m0n41k

Участник
Сообщения
475
Реакции
202
Баллы
43
v1rus, что меняли? Где меняли?
Скачайте просто заново и настройте под себя переделанную версию
 

.Дмитрий

Участник
Сообщения
8
Реакции
0
Баллы
1
Всем доброе утро, как скачать плагин, как получить права на скачивание?
 

r1nk0

Пользователь
Сообщения
20
Реакции
11
Баллы
3
Всем доброе утро, как скачать плагин, как получить права на скачивание?
 

.Дмитрий

Участник
Сообщения
8
Реакции
0
Баллы
1
как скачать? написал Стасу больше недели назад, был он последний раз 8 ноября, 2 движка купленных его, может как-то подругому можно подтвердить раз он на связь не выходит?
 

ev_sa

Участник
Сообщения
2
Реакции
1
Баллы
3
Баг в плагине обмен фрагов на баланс сайта



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

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

Вложения

  • Frags_Exchanger.sma
    7.1 KB · Просмотры: 2

RockTheStreet

Пользователь
Сообщения
300
Решения
1
Реакции
50
Баллы
28
ev_sa, Это, судя по всему, команда для дебага плагина. А Вы на серьёзных щах заявляете, мол в плагине 'баг')
 

.Дмитрий

Участник
Сообщения
8
Реакции
0
Баллы
1
ev_sa, Это, судя по всему, команда для дебага плагина. А Вы на серьёзных щах заявляете, мол в плагине 'баг')
вот только игрок наобменивал таким образом на сервере, если эта команда для дебага, то хотя-бы написали-бы об этом
 
Сверху