Автор: wellasgood + MIRDOBRO777
Версия: 1.0.1
Требования: reapi
Краткое описание: Меню ставок на деньги.
За основу был взят плугин скриптера: NordicWarrior - Advanced Lottery
Был сокращен код.
Изменена идея в другую сторону (с лотереи на ставки).
Описание функционала:
1. Открывается меню, далее предлагается выбрать ставку, иначе ввести свою (только целое число).
2. Если у игрока не хватает денег, то ставку он поставить не сможет.
3. После выбора ставки, открывается еще одно меню, там нужно угадать число, меньше (x2), больше (x2), равно (x10). Если по условиям проходит, то игроку начисляются деньги.
4. Учтены такие вещи, как: в случае сделанной ставки, если у игрока 0 денег, то ему не даст продолжать играть; возможность отменить ставку.
Был сокращен код.
Изменена идея в другую сторону (с лотереи на ставки).
Описание функционала:
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
- Скомпилируйте плагин.
- Скопируйте скомпилированный файл .amxx в директорию: amxmodx/plugins/
- Пропишите .amxx в файле amxmodx/configs/plugins.ini
- Скопируйте словарь плагина .txt в директорию amxmodx/data/lang/
- Смените карту или перезапустите сервер.
В .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;
}
/*---------------------------------------------------*/
