Версия: 1.0
Рулетка для сервера, писал себе для кнайфа. Эта версия чутка урезана.
При вводе в чат /ruletka, появляется меню с подтверждением. Выпасть могут деньги, хп, двойной урон или килл.
- Код: Выделить всё
swe_roulette_cost "8000" //Стоимость игры в рулетку
Настройки в исходнике
- Код: Выделить всё
#define HEALTH_MIN 10 //Минимальное кол-во. хп
#define HEALTH_MAX 35 //Максимальное кол-во. хп
#define MONEY_MIN 1000 //Минимальное кол-во. денег
#define MONEY_MAX 6000 //Максимальное кол-во. денег
#define CHAT_PREFIX "^1[^4Сюрприз^1]" //Префикс в чате, ^1 - желтый, ^4 - зеленый, ^3 - цвет команды.
- Код: Выделить всё
#include <amxmodx>
#include <cstrike>
#include <fun>
#include <colorchat>
#include <hamsandwich>
#define PLUGIN "[SWE] Roulette"
#define VERSION "1.0"
#define AUTHOR "IIPU3PAK"
#define HEALTH_MIN 10 //Минимальное кол-во. хп
#define HEALTH_MAX 35 //Максимальное кол-во. хп
#define MONEY_MIN 1000 //Минимальное кол-во. денег
#define MONEY_MAX 6000 //Максимальное кол-во. денег
#define CHAT_PREFIX "^1[^4Рулетка^1]" //Префикс в чате, ^1 - желтый, ^4 - зеленый, ^3 - цвет команды.
new g_Cvars[1];
new bool:g_DoubleDamage[33];
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /ruletka", "RandomMenu")
register_clcmd("say_team /ruletka", "RandomMenu")
g_Cvars[0] = register_cvar("swe_roulette_cost", "8000")
RegisterHam(Ham_TakeDamage, "player", "DoubleDamage")
RegisterHam(Ham_Spawn, "player", "HamSpawn", 1)
}
public RandomMenu(id)
{
if(!is_user_alive(id))
{
ColorChat(id, NORMAL, "%s ^3Ты мертв, подожди.", CHAT_PREFIX)
return PLUGIN_HANDLED;
}
if(cs_get_user_money(id) <= get_pcvar_num(g_Cvars[0]))
{
ColorChat(id, NORMAL, "%s ^3Недостаточно денег.", CHAT_PREFIX)
return PLUGIN_HANDLED;
}
new szText[ 512 char ];
formatex(szText, charsmax( szText ), "\r[SWE] \yСыграть в рулетку?^n\wУ вас: \r%d\y$", cs_get_user_money(id))
new menu = menu_create( szText, "menu_handler")
menu_additem(menu, "\yДа","1")
menu_additem(menu, "\rНет","2")
menu_setprop(menu, MPROP_EXITNAME, "Выход")
menu_setprop(menu, MPROP_EXIT,MEXIT_ALL)
menu_display(id, menu, 0)
return PLUGIN_HANDLED;
}
public menu_handler(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED;
}
new data[6], iName[64], access, callback
menu_item_getinfo(menu, item, access, data, 5, iName, 63, callback)
new key = str_to_num(data)
switch(key)
{
case 1:
{
RandomFunc(id)
}
case 2:
{
menu_destroy(menu)
}
}
return PLUGIN_HANDLED;
}
public RandomFunc(id)
{
new g_Random = random_num(1, 100);
new health_Random = random_num(HEALTH_MIN, HEALTH_MAX);
new money_Random = random_num(MONEY_MIN, MONEY_MAX);
new pName[32];
get_user_name(id, pName, 31);
if(g_Random >= 0 && g_Random < 25)
{
set_user_health(id, get_user_health(id) + health_Random)
ColorChat(0, NORMAL, "%s ^1Игроку ^3%s ^1выпало ^4+^3%d ^4ХП^1.", CHAT_PREFIX, pName, health_Random)
}
else if(g_Random >= 25 && g_Random < 50)
{
user_kill(id, 1)
ColorChat(0, NORMAL, "%s ^1Игроку ^3%s ^1выпала ^3Смерть^1.", CHAT_PREFIX, pName)
}
else if(g_Random >= 50 && g_Random < 75)
{
cs_set_user_money(id, cs_get_user_money(id) + money_Random)
ColorChat(0, NORMAL, "%s ^1Игроку ^3%s ^1выпало ^4+^3%d ^4$^1.", CHAT_PREFIX, pName, money_Random)
}
else if(g_Random >= 75 && g_Random < 100)
{
g_DoubleDamage[id] = true;
ColorChat(0, NORMAL, "%s ^1Игроку ^3%s ^1выпал ^4Двойной урон.", CHAT_PREFIX, pName)
}
cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(g_Cvars[0]))
}
public DoubleDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
if(!(attacker && attacker < 33) || !g_DoubleDamage[attacker])
return HAM_IGNORED;
SetHamParamFloat(4, damage * 2.0)
{
return HAM_IGNORED;
}
}
public HamSpawn(id)
{
g_DoubleDamage[id] = false;
}
public client_disconnect(id)
{
g_DoubleDamage[id] = false;
}
Добавлено спустя 3 минуты 9 секунд:
Жду сообщений об ошибках=)