Код:
#include <amxmodx>
#include <reapi>
#if AMXX_VERSION_NUM < 183
#include <dhudmessage>
#endif
#define HP 35.0 // Сколько hp давать игроку при спавне во время разминки
#define GIVE_C4 // Для блокировки выдачи бомбы, если не хотите блокировать закомментируйте строку
#define ROUND_START "Разминочный раунд на ножах! Вперёд бойцы!" // dhud Сообщение в начале Warm-up раунда на ножах
#pragma semicolon 1
new g_iRound, bool:g_bKnife;
new HookChain:HookRestartRound, HookChain:HookSpawn;
#if defined GIVE_C4
new HookChain:GiveC4;
#endif
public plugin_natives() {
register_library("Knife Round");
register_native("is_wurm_up_knife", "native_knife_round", 1);
}
public native_knife_round()
return g_bKnife;
public plugin_init() {
register_plugin("[ReAPI] Knife Round", "1.3", "pUzzlik");
RegisterHookChain(RG_RoundEnd, "RoundEnd_Post", true);
EnableHookChain(HookRestartRound = RegisterHookChain(RG_CSGameRules_RestartRound, "CSGameRules_RestartRound_Pre"));
EnableHookChain(HookSpawn = RegisterHookChain(RG_CBasePlayer_Spawn, "CBasePlayer_Spawn_Post", true));
#if defined GIVE_C4
EnableHookChain(GiveC4 = RegisterHookChain(RG_CSGameRules_GiveC4, "CSGameRules_GiveC4_Pre"));
#endif
}
public RoundEnd_Post(WinStatus:status, ScenarioEventEndRound:event) {
if(event == ROUND_GAME_COMMENCE) {
g_iRound = 0;
g_bKnife = true;
EnableHookChain(HookSpawn);
EnableHookChain(HookRestartRound);
#if defined GIVE_C4
EnableHookChain(GiveC4);
#endif
}
}
public CSGameRules_RestartRound_Pre() {
g_iRound++;
if(g_iRound >= 2) {
g_bKnife = false;
server_cmd("sv_restart 1");
DisableHookChain(HookSpawn);
DisableHookChain(HookRestartRound);
#if defined GIVE_C4
DisableHookChain(GiveC4);
#endif
}
}
#if defined GIVE_C4
public CSGameRules_GiveC4_Pre() return HC_SUPERCEDE;
#endif
public CBasePlayer_Spawn_Post(const id) {
if(g_bKnife) {
set_entvar(id, var_health, HP);
rg_add_account(id, 0, AS_SET, true);
#if !defined GIVE_C4
new TeamName:team = get_member(id, m_iTeam);
if(team == TEAM_CT) rg_give_defusekit (id, true);
#endif
rg_remove_all_items(id);
rg_give_item(id, "weapon_knife");
set_dhudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.65, 2, 6.0, 6.0, 0.1, 1.5);
show_dhudmessage(id, ROUND_START);
}
}