#include <amxmodx>
#include <hamsandwich>
#include <cstrike>
#include <fakemeta>
#include <fun>
new g_zombi
new gHealthCvar
new g_blockcommand = 0
public plugin_init() {
register_plugin("dr_zombi", "1.0", "Crash94");
register_event("ResetHUD","ResetHUD","abe")
register_event("HLTV", "eventRoundStart", "a", "1=0", "2=0")
register_event("CurWeapon","switchweapon","be","1=1","2!29")
RegisterHam(Ham_Spawn, "player", "CPlayer__Spawn_Post", 1)
RegisterHam(Ham_TakeDamage, "player", "HamTakeDamage")
RegisterHam(Ham_Use, "func_button", "key")
register_clcmd("say /zm", "cmdZombi")
register_dictionary("deathrun_zombi.txt")
gHealthCvar = register_cvar( "deathrun_zombi_health", "1000" );
}
/*===============================
Скачка модели с сервера
================================*/
public plugin_precache() {
precache_model("models/player/zombi/zombi.mdl")
return PLUGIN_CONTINUE
}
/*===============================
Убрать модель в конце раунда
================================*/
public CPlayer__Spawn_Post(iPlayerID)
{
cs_reset_user_model(iPlayerID)
}
/*================================
Цветной чат
=================================*/
stock ChatColor(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4")
replace_all(msg, 190, "!y", "^1")
replace_all(msg, 190, "!team", "^3")
replace_all(msg, 190, "!team2", "^0")
if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}
/*===============================
Отключение режима
================================*/
public eventRoundStart(id)
{
g_zombi = false
g_blockcommand = 0
return PLUGIN_CONTINUE
}
/*===============================
Выполнение действия в режиме
================================*/
public ResetHUD(id)
{
win(id)
return PLUGIN_CONTINUE
}
/*===============================
Действия
================================*/
public win(id)
{
new cts;
for(new i = 0; i <= get_maxplayers(); i++)
if(is_user_alive(i) && get_user_team(i) == 2)
cts++;
if(cts == 0 && g_zombi )
{
user_kill(cts)
set_hudmessage(225, 0, 25, -1.0, 0.17, 1, 0.0, 5.0, 1.0, 1.0, -1)
show_hudmessage(0, "%L",0,"ZOMBI_WIN")
}
return PLUGIN_CONTINUE
}
/*===============================
Запуск режима
================================*/
public cmdZombi(id)
{
if(cs_get_user_team(id)==CS_TEAM_T)
{
if(g_blockcommand == 1)
{
ChatColor(id, "%L",0,"ZOMBI_USE")
}
else
{
++g_blockcommand
cs_set_user_model(id, "zombi")
set_user_health( id, get_pcvar_num( gHealthCvar ))
g_zombi = true
server_cmd("dr_free 0")
server_cmd("dr_invis 0")
server_cmd("deathrun_mode ZOMBI")
server_cmd("menu_enable 0")
set_hudmessage(20, 255, 20, -1.0, 0.17, 1, 0.0, 5.0, 1.0, 1.0, -1)
show_hudmessage(0, "%L",0,"ZOMBI_GO")
}
}
else
{
ChatColor(id, "%L",0,"NO_TEAM_T")
}
return PLUGIN_CONTINUE
}
/*===============================
Становление зомби
================================*/
public HamTakeDamage(victim, inflictor, attacker, id)
{
if(cs_get_user_team(attacker)==CS_TEAM_T && g_zombi)
{
if (is_user_alive(attacker) && g_zombi)
{
if(cs_get_user_team(victim)==CS_TEAM_T && g_zombi)
{
return 1
}
cs_set_user_team( victim, CS_TEAM_T )
cs_set_user_model(victim, "zombi")
set_user_health( victim, get_pcvar_num( gHealthCvar ))
static name[32]
get_user_name(victim, name, sizeof name -1)
ChatColor(0, "%L",0,"CT_ZOMBI_CHAT", name)
set_hudmessage(225, 0, 25, -1.0, 0.25, 1, 0.0, 2.0, 1.0, 1.0, -1)
show_hudmessage(0, "%L",0,"CT_ZOMBI_HUD", name)
}
}
return PLUGIN_CONTINUE
}
/*===============================
Блок кнопок
================================*/
public key(ent, idcaller, idactivator, use_type, Float:value)
{
if (is_user_alive(idactivator) && g_zombi && get_user_team(idactivator) == 1) {
ChatColor(idactivator, "%L",0,"NO_BUTTONS")
return HAM_SUPERCEDE
}
return HAM_IGNORED
}
/*===============================
У террориста только нож
================================*/
public switchweapon(id)
{
if (!g_zombi)
return PLUGIN_CONTINUE
if(cs_get_user_team(id)==CS_TEAM_T && g_zombi)
{
engclient_cmd(id,"weapon_knife")
}
return PLUGIN_CONTINUE
}