Русское сообщество по скриптингу

Multi Money

Утвержденные плагины для AMX Mod X администратором/модератором форума.

Модератор: Leonidddd

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только работоспособных плагинов для AMX Mod X. Новые плагины нужно выкладывать в разделе "Новые плагины".

Multi Money

Сообщение WellasGooD » 04 мар 2020, 20:49

money.jpg

Автор: wellasgood + MIRDOBRO777
Версия: 1.0.1
Требования: reapi
Краткое описание: Меню ставок на деньги.

За основу был взят плугин скриптера: NordicWarrior - Advanced Lottery
Был сокращен код.
Изменена идея в другую сторону (с лотереи на ставки).

Описание функционала:

1. Открывается меню, далее предлагается выбрать ставку, иначе ввести свою (только целое число).​

2. Если у игрока не хватает денег, то ставку он поставить не сможет.​

3. После выбора ставки, открывается еще одно меню, там нужно угадать число, меньше (x2), больше (x2), равно (x10). Если по условиям проходит, то игроку начисляются деньги.​

4. Учтены такие вещи, как: в случае сделанной ставки, если у игрока 0 денег, то ему не даст продолжать играть; возможность отменить ставку.​
Amx Mod X 1.9.0, Amx Mod X 1.10.0 dev
RU, EN
Команды для чата: /multi, /mt
  1. Скомпилируйте плагин.
  2. Скопируйте скомпилированный файл .amxx в директорию: amxmodx/plugins/
  3. Пропишите .amxx в файле amxmodx/configs/plugins.ini
  4. Скопируйте словарь плагина .txt в директорию amxmodx/data/lang/
  5. Смените карту или перезапустите сервер.
В .sma:

Код: Выделить всё

new const g_iBets[] = {100, 200, 500, 1000, 2000, 5000, 10000, 16000}; // Отображаемые ставки в меню (максимум 8 ставок), 1 значение массива является минимальной ставкой.
new const prefix[] = "^3[^4MULTI^3]^1" // Префикс к сообщениям плагина в чате


Код: Выделить всё

#include <amxmodx>
#include <amxmisc>
#include <reapi>

#define get_player_money(%1) get_member(%1, m_iAccount)

new g_Bet[MAX_PLAYERS+1], SelectPlayer[MAX_PLAYERS+1];

new const PLUGIN[] = "Multi-Money";
new const VERSION[] = "1.0.1";
new const AUTHOR[] = "MirDobro777 & wellasgood";

//Настройки
new const g_iBets[] = {100, 200, 500, 1000, 2000, 5000, 10000, 16000}; // Отображаемые ставки в меню (максимум 8 ставок)
new const prefix[] = "^3[^4MULTI^3]^1" // Префикс к сообщениям плагина в чате

public plugin_init(){
    register_plugin(PLUGIN, VERSION, AUTHOR);
    register_dictionary("multi-money.txt");

    register_clcmd("say /multi", "func_multimenu");
    register_clcmd("say /mt", "func_multimenu");
    register_concmd("my_bet", "func_receivingbet");

    register_menu("BetMenu", 1023, "func_betmenu");
    register_menu("NumberMenu", 1023, "func_numbermenu");
}
/*---------------------------------------------------*/
public func_multimenu(id){
    if(!is_user_connected(id)) return PLUGIN_HANDLED;

    new iMoney = get_player_money(id);
    new szMenu[MAX_MENU_LENGTH], iLen;
    new keys = MENU_KEY_0;

    if(iMoney < g_iBets[0]){
        iLen = formatex(szMenu[iLen], charsmax(szMenu), "%L", id, "MULTI_NOT_BET", g_iBets[0]); //Минимальная ставка (100)
    }
    else{
        iLen = formatex(szMenu[iLen], charsmax(szMenu), "%L", id, "MULTI_YES_BET", iMoney);
    }

    for(new i, n = min(8, sizeof g_iBets); i < n; i++){
        if(iMoney < g_iBets[i]){
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "%L", id, "MULTI_BET_COUNT1", i + 1, g_iBets[i]);
        }
        else{
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "%L", id, "MULTI_BET_COUNT2", i + 1, g_iBets[i]);
            keys |= (1 << i);
        }
    }

    if(iMoney < g_iBets[0]){
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "%L", id, "MULTI_MY_BET1");
    }
    else{
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "%L", id, "MULTI_MY_BET2");
        keys |= (1 << 8);
    }

    formatex(szMenu[iLen], charsmax(szMenu) - iLen, "%L", id, "MULTI_MENU_EXIT1");
    keys |= (1 << 9);

    show_menu(id, keys, szMenu, -1, "BetMenu");
    return PLUGIN_HANDLED;
}
/*---------------------------------------------------*/
public func_betmenu(id, iKey){
    switch(iKey)
    {
        case 8:
            {
                client_cmd(id, "messagemode ^"my_bet^"");
                client_print_color(id, print_team_default, "%l", "MULTI_CHAT_INFO1", prefix);
                return PLUGIN_HANDLED;
            }
        case 9: return PLUGIN_HANDLED;
        default:
            {
                if(g_iBets[iKey] <= get_player_money(id)){
                    func_selectmenu(id, g_iBets[iKey]);
                }
                else{
                    func_multimenu(id);
                }
            }
    }

    return PLUGIN_HANDLED;
}
/*---------------------------------------------------*/
public func_selectmenu(id, iBet){
    if(!is_user_connected(id)) return PLUGIN_HANDLED;

    new szMenu[MAX_MENU_LENGTH], iLen;
    new keys = MENU_KEY_0;
    g_Bet[id] = iBet;

    iLen = formatex(szMenu[iLen], charsmax(szMenu), "%L", id, "MULTI_NUM", get_player_money(id), g_Bet[id]);

    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "%L", id, "MULTI_NUM_COUNT1");
    keys |= (1 << 0);
    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "%L", id, "MULTI_NUM_COUNT2");
    keys |= (1 << 1);
    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "%L", id, "MULTI_NUM_COUNT3");
    keys |= (1 << 2);

    formatex(szMenu[iLen], charsmax(szMenu) - iLen, "%L", id, "MULTI_MENU_EXIT2");
    keys |= (1 << 9);

    show_menu(id, keys, szMenu, -1, "NumberMenu");
    return PLUGIN_HANDLED;
}
/*---------------------------------------------------*/
public func_numbermenu(id, iKey){
    switch(iKey)
    {
        case 0: SelectPlayer[id] = 1;
        case 1: SelectPlayer[id] = 2;
        case 2: SelectPlayer[id] = 3;
        case 9:
            {
                func_multimenu(id);
                return PLUGIN_HANDLED;
            }
    }

    func_roll(id);
    return PLUGIN_HANDLED;
}
/*---------------------------------------------------*/
public func_roll(id){
    if(g_Bet[id] > get_player_money(id)){
        client_print_color(id, print_team_default, "%l", "MULTI_CHAT_INFO2", prefix);
        func_multimenu(id);
        return PLUGIN_HANDLED;
    }

    new iMoney = get_player_money(id);
    new iRandom = random_num(1, 1000), iReward;

    if(iRandom < 500 && SelectPlayer[id] == 1){
        iReward = g_Bet[id] * 1;
        rg_add_account(id, iMoney + iReward, AS_ADD);
        client_print_color(id, print_team_default, "%l", "MULTI_CHAT_INFO3", prefix, iRandom);
    }
    else if(iRandom == 500 && SelectPlayer[id] == 3){
        iReward = g_Bet[id] * 9;
        rg_add_account(id, iMoney + iReward, AS_ADD);
        client_print_color(id, print_team_default, "%l", "MULTI_CHAT_INFO3", prefix, iRandom);
    }
    else if(iRandom > 500 && SelectPlayer[id] == 2){
        iReward = g_Bet[id] * 1;
        rg_add_account(id, iMoney + iReward, AS_ADD);
        client_print_color(id, print_team_default, "%l", "MULTI_CHAT_INFO3", prefix, iRandom);
    }
    else{
        client_print_color(id, print_team_default, "%l", "MULTI_CHAT_INFO4", prefix, iRandom);
        rg_add_account(id, iMoney - g_Bet[id], AS_SET);
    }

    func_selectmenu(id, g_Bet[id]);
    return PLUGIN_HANDLED;
}
/*---------------------------------------------------*/
public func_receivingbet(id){
    new szParam[9];
    read_argv(1, szParam, charsmax(szParam));

    if(!is_str_num(szParam)){
        client_print_color(id, print_team_default, "%l", "MULTI_CHAT_INFO5", prefix);
        return func_multimenu(id);
    }

    new iBet = str_to_num(szParam);

    if(get_player_money(id) < iBet){
        client_print_color(id, print_team_default, "%l", "MULTI_CHAT_INFO6", prefix);
        return func_multimenu(id);
    }

    if(iBet < g_iBets[0]){
        client_print_color(id, print_team_default, "%l", "MULTI_CHAT_INFO7", prefix);
        return func_multimenu(id);
    }

    func_selectmenu(id, iBet);
    return PLUGIN_HANDLED;
}
/*---------------------------------------------------*/

screen-2.jpg
screen-1.jpg




Multi Money.zip




Утверждено. //Leonidddd
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Telegram: @WellAsGood
Аватара пользователя
WellasGooD
Скриптер
 
Сообщения: 26
Зарегистрирован: 11 ноя 2016, 12:12
Откуда: Russia
Благодарил (а): 7 раз.
Поблагодарили: 5 раз.
Опыт программирования: Больше трех лет
Языки программирования: Amxx Pawn
Visual Basic Application (VBA Excel, Outlook VBA)

Вернуться в Утвержденные плагины

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3