#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <hamsandwich>
#define ROUND_BONUS 3 // С какого раунда выдавать бонусы
//#define FLAG_IMMUNITY ADMIN_IMMUNITY // Если раскоментировать строку будет только на один флаг который вы укажите из amxconst.inc
const KEYSMENU = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4;
new bool:g_bSteamBonus[33], g_iRoundCounter, g_iRandomNum;
public plugin_init()
{
register_plugin("Steam Bonus", "1.3.2", "DUKKHAZ0R"); // by pUzzlik for gesk1995
register_event("TextMsg", "eGameCommencing", "a", "2=#Game_will_restart_in", "2=#Game_Commencing");
register_event("HLTV", "eRoundStart", "a", "1=0", "2=0");
RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1);
register_menucmd(register_menuid("BonusMenu"), KEYSMENU, "BonusMenuHandler");
}
public eGameCommencing()
g_iRoundCounter = 0;
public eRoundStart()
g_iRoundCounter++;
public client_putinserver(id)
g_bSteamBonus[id] = is_user_steam(id) ? true : false;
public fwHamPlayerSpawnPost(id)
if(is_user_alive(id) && g_bSteamBonus[id] && g_iRoundCounter >= ROUND_BONUS) ShowBonusMenu(id);
public ShowBonusMenu(id)
{
#if defined FLAG_IMMUNITY
if(get_user_flags(id) & FLAG_IMMUNITY) return PLUGIN_CONTINUE;
#else
if(!is_user_admin(id)) return PLUGIN_CONTINUE;
#endif
static len, menu[256];
new iKey = MENU_KEY_0|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4;
new iMoney = cs_get_user_money(id);
len = formatex(menu, charsmax(menu), "\r[\ySteam Bonus\r] \yВыберите бонус^n^n");
len += formatex(menu[len], charsmax(menu) - len, "\r1. %s^n", (iMoney < 16000) ? "\wДеньги" : "У вас уже \r16000$");
if (iMoney < 16000) iKey |= MENU_KEY_1;
len += formatex(menu[len], charsmax(menu) - len, "\r2. \wЧутка HP \r[\yДо 20\r]^n");
len += formatex(menu[len], charsmax(menu) - len, "\r3. \wНабор гранат^n");
len += formatex(menu[len], charsmax(menu) - len, "\r4. \wБроня и шлем^n^n");
len += formatex(menu[len], charsmax(menu) - len, "\r0. \wОтказаться от приза");
return show_menu(id, iKey, menu, -1, "BonusMenu");
}
public BonusMenuHandler(id, iKey)
{
switch(iKey)
{
case 0:
{
g_iRandomNum = random_num(1, 1000);
cs_set_user_money(id, min(cs_get_user_money(id) + g_iRandomNum, 16000));
ChatColor(id, "^1[^4Steam Bonus^1] Вы получили бонус за ^4Steam CS^1 - Деньги в размере ^4%d$", g_iRandomNum);
}
case 1:
{
g_iRandomNum = random_num(1, 10);
set_user_health(id, get_user_health(id) + g_iRandomNum);
ChatColor(id, "^1[^4Steam Bonus^1] Вы получили бонус за ^4Steam CS^1 - Дополнительно ^4%d HP", g_iRandomNum);
}
case 2:
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
ChatColor(id, "^1[^4Steam Bonus^1] Вы получили бонус за ^4Steam CS^1 - ^4Комплект гранат");
}
case 3:
{
cs_set_user_armor(id, 50, CS_ARMOR_VESTHELM);
ChatColor(id, "^1[^4Steam Bonus^1] Вы получили бонус за ^4Steam CS^1 - ^4Армор и шлем");
}
}
}
stock bool:is_user_steam(const id)
{
static dp_pointer; if(!dp_pointer) dp_pointer = get_cvar_pointer("dp_r_id_provider");
server_cmd("dp_clientinfo %d", id);
server_exec();
return get_pcvar_num(dp_pointer) == 2 ? true : false;
}
stock ChatColor(const id, const szRawMessage[], any:...)
{
if(!is_user_connected(id)) return;
static szMessage[191]; vformat(szMessage, charsmax(szMessage), szRawMessage, 3);
message_begin(MSG_ONE_UNRELIABLE, 76, .player = id);
write_byte(id);
write_string(szMessage);
message_end();
}