#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <cstrike>
#include <engine>
#include <fun>
#include <fakemeta>
#include <dhudmessage>
#define Keysmenu_1 (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9) //Keys: 1234567890
#define Keysmenu_2 (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9) //Keys: 1234567890
#define ADMIN_ACCESS ADMIN_LEVEL_D
#define OFFSET_TEAM 114
#define OFFSET_DEAGLE_AMMO 384
new mxplr
new status[33]
#define MAXPLAYERS 32
#define is_zombie(%1) (status[%1] & (1<<0))
#define team_change(%1) (status[%1] & (1<<1))
#define make_zombie(%1) (status[%1] = status[%1] | (1<<0))
#define need_teamchange(%1) (status[%1] = status[%1] | (1<<1))
new bool:vibri_event = false;
new inf
new invisibility[33][2];
new chameleon[33][2];
new footsteps[33][2];
new gmsgTeamInfo
enum teams
{
FM_TEAM_UNASSIGNED = 0,
FM_TEAM_T,
FM_TEAM_CT,
FM_TEAM_SPECTATOR
}
new wents[][] =
{
"weapon_shield",
"weaponbox",
"armoury_entity"
}
public plugin_init()
{
register_plugin("KnifeGames", "0.1", "Desert")
gmsgTeamInfo = get_user_msgid("TeamInfo")
register_concmd("glow", "RandGlow", ADMIN_ACCESS, "All Player Random Glow.")
register_logevent("RoundEnd", 2, "1=Round_End")
register_logevent("randomevent", 2, "1=Round_Start")
RegisterHam(Ham_Spawn, "player", "spawn_post", 1)
RegisterHam(Ham_TakeDamage, "player", "damage")
RegisterHam(Ham_Spawn, "player", "PlayerSpawn", 1)
for(new i = 0; i < sizeof(wents); i++)
{
RegisterHam(Ham_Touch, wents[i], "blocktouch")
}
mxplr = get_maxplayers()
}
public PlayerSpawn(id)
{
fm_strip_user_weapons(id)
fm_give_item(id, "weapon_knife")
return PLUGIN_CONTINUE
}
public client_putinserver(id)
{
if(is_user_bot(id))
return PLUGIN_HANDLED;
invisibility[id][0] = 0;
footsteps[id][0] = 0;
chameleon[id][0] = 0;
set_user_rendering(id,kRenderFxNone,255,255,255, kRenderNormal,16);
return PLUGIN_CONTINUE;
}
public client_disconnect(id)
{
if(is_user_bot(id))
return PLUGIN_HANDLED;
invisibility[id][0] = 0;
footsteps[id][0] = 0;
chameleon[id][0] = 0;
return PLUGIN_CONTINUE;
}
public randomevent(id)
{
switch(random_num(0, 15))
{
case 0:
{
vibri_event = true
hp(0)
}
case 1:
{
vibri_event = true
hegrenade(0)
}
case 2:
{
vibri_event = true
zombie()
}
case 3:
{
vibri_event = true
nodead(0)
}
case 4:
{
vibri_event = true
night(0)
}
}
}
/*----------------------------------------------!!!Зомби!!!----------------------------------------------*/
public respawn(id) {
set_user_godmode(id, 0);
set_user_rendering(id,kRenderFxNone,255,255,255, kRenderNormal,16);
return PLUGIN_CONTINUE;
}
public spawn_post(id)
{
if(!is_user_alive(id))
return HAM_IGNORED
if(is_zombie(id))
{
set_pev(id, pev_health, 2000.0)
fm_strip_user_weapons(id)
fm_give_item(id, "weapon_knife")
}
return HAM_IGNORED
}
public damage(id, inflictor, ida, Float:dmg, dmgbits)
{
if(!is_user_alive(ida) || !is_zombie(ida) || is_zombie(id) || inf)
return HAM_IGNORED
zombieme(id, ida)
check_last()
return HAM_IGNORED
}
public check_last()
{
new num
for(new id = 1; id <= mxplr; id++)
{
if(!is_user_alive(id) || is_zombie(id))
continue
num++
}
if(num <= 1)
{
inf = 1
set_hudmessage(255, 0, 0, 0.09, -1.0, 0, 6.0, 12.0)
show_hudmessage(0, "Остался последний выживший!")
}
}
public blocktouch(ent, id)
{
if(!pev_valid(ent) || !is_user_alive(id) || !is_zombie(id))
return HAM_IGNORED
return HAM_SUPERCEDE
}
public zombie()
{
new id, num
num = get_playersnum()
id = random_num(1, num)
while(!is_user_alive(id))
{
id = random_num(1, num)
}
if(fm_get_user_team(id) != FM_TEAM_T)
{
need_teamchange(id)
}
new name[32]
get_user_name(id, name, 31)
zombieme(id, 0)
//set_hudmessage(255, 0, 0, 0.09, -1.0, 0, 6.0, 12.0)
//show_hudmessage(0, "%s is first zombie!", name)
client_print(0, print_chat, "[Knife игры] Играем в зомби! Зомби в облике террористов.!")
set_dhudmessage(255, 0, 0, 0.09, -1.0, 0, 6.0, 12.0)
show_dhudmessage(0, "%s Первый зомби с 2000 хп! кого ударит тот тоже будет зомби!", name)
new i
for(i = 1; i <= mxplr; i++)
{
if(!is_user_alive(i) || i == id)
continue
if(fm_get_user_team(i) != FM_TEAM_CT)
{
fm_set_user_team(i, FM_TEAM_CT)
team_msg(i, "CT")
need_teamchange(i)
}
fm_strip_user_weapons(i)
fm_give_item(i, "weapon_deagle")
fm_give_item(i, "weapon_knife")
set_pdata_int(i, OFFSET_DEAGLE_AMMO, 200)
}
}
public zombieme(id, killer)
{
fm_set_user_team(id, FM_TEAM_T)
make_zombie(id)
ExecuteHamB(Ham_CS_RoundRespawn, id)
set_user_rendering(id, kRenderFxGlowShell, 255, 0, 0, kRenderNormal,30)
if(is_user_alive(killer))
{
make_deathmsg(killer, id, 0, "infection")
}
}
/*----------------------------------------------!!!Зомби-конец!!!----------------------------------------------*/
/*----------------------------------------------Гладиатор-----------------------------------------*/
public hp(first) {
if(vibri_event == true)
{
new players[32], team[32], num, player;
get_players(players, num, "ah")
for(new i = 0; i < num; i++)
{
player = players[i];
if((is_user_alive(player)))
{
get_user_team(player,team,32);
strip_user_weapons(player);
give_item(player, "weapon_knife");
set_task(0.1, "RandGlow"); // Glow
set_user_health(player, 1000);
set_cvar_num("dr_shop", 0);
client_print(0, print_chat, "[Knife игры] Играем в гладиаторов!")
set_dhudmessage(255, 0, 0, -1.0, 0.19, 0, 0.0, 10.0, 0.1, 0.2)
show_dhudmessage(0, "Играем в гладиаторов!")
}
}
}
else
{
client_print(0, print_chat, "[Knife игры] Эвент кончился")
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
/*----------------------------------------------Гладиатор-Конец-----------------------------------------*/
/*----------------------------------------------Снайпер-----------------------------------------*/
public scouts(first) {
if(vibri_event == true)
{
new players[32], team[32], num, player;
get_players(players, num, "ah")
for(new i = 0; i < num; i++)
{
player = players[i];
if((is_user_alive(player)))
{
get_user_team(player,team,32);
strip_user_weapons(player);
give_item(player, "weapon_scout");
//cs_set_user_bpammo(CSW_SCOUT, 90);
set_user_health(player, 100);
set_cvar_num("dr_shop", 0);
set_task(0.1, "RandGlow"); // Glow
client_print(0, print_chat,"[Knife игры] Играем в снайперов!")
set_dhudmessage(255, 0, 0, -1.0, 0.19, 0, 0.0, 10.0, 0.1, 0.2)
show_dhudmessage(0, "Играем в снайперов!")
}
}
}
else
{
client_print(0, print_chat, "[Knife игры] Эвент кончился")
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
/*----------------------------------------------Снайпер-конец------------------------------------------*/
/*----------------------------------------------Гренабой-----------------------------------------*/
public hegrenade(first) {
if(vibri_event == true)
{
new players[32], team[32], num, player;
get_players(players, num, "ah")
for(new i = 0; i < num; i++)
{
player = players[i];
if((is_user_alive(player)))
{
get_user_team(player,team,32);
strip_user_weapons(player);
set_task(0.1, "RandGlow"); // Glow
give_item(player, "weapon_hegrenade");
cs_set_user_bpammo(player, CSW_HEGRENADE, 100)
set_user_health(player, 100);
set_cvar_num("dr_shop", 0);
client_print(0, print_chat, "[Knife игры] Играем в бомбардировку!")
set_dhudmessage(255, 0, 0, -1.0, 0.19, 0, 0.0, 10.0, 0.1, 0.2)
show_dhudmessage(0, "Играем в бомбардировку!")
}
}
}
else
{
client_print(0, print_chat, "[Knife игры] Эвент кончился")
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
/*----------------------------------------------Гренабой-конец------------------------------------------*/
/*----------------------------------------------Ночь-----------------------------------------*/
public night(first) {
if(vibri_event == true)
{
new players[32], team[32], num, player;
get_players(players, num, "ah")
for(new i = 0; i < num; i++)
{
player = players[i];
if((is_user_alive(player)))
{
get_user_team(player,team,32);
strip_user_weapons(player);
give_item(player, "weapon_knife");
//set_task(0.1, "RandGlow"); // Glow
set_lights("a");
set_cvar_num("dr_shop", 0);
client_print(0, print_chat, "[Knife игры] Играем в ночных разбойников! Правила можно нарушать!")
set_dhudmessage(255, 0, 0, -1.0, 0.19, 0, 0.0, 10.0, 0.1, 0.2)
show_dhudmessage(0, "Играем в ночных разбойников!")
}
}
}
}
/*----------------------------------------------Ночь-конец------------------------------------------*/
/*----------------------------------------------Гравитация-----------------------------------------*/
public gravity(first) {
if(vibri_event == true)
{
new players[32], team[32], num, player;
get_players(players, num, "ah")
for(new i = 0; i < num; i++)
{
player = players[i];
if((is_user_alive(player)))
{
get_user_team(player,team,32);
strip_user_weapons(player);
give_item(player, "weapon_knife");
//set_task(0.1, "RandGlow"); // Glow
set_cvar_num("sv_gravity", 0);
set_cvar_num("dr_shop", 0);
client_print(0, print_chat, "[Knife игры] Играем в космонавтов! Правила можно нарушать!")
set_dhudmessage(255, 0, 0, -1.0, 0.19, 0, 0.0, 10.0, 0.1, 0.2)
show_dhudmessage(0, "Играем в космонавтов!")
}
}
}
}
/*----------------------------------------------Гравитация-конец------------------------------------------*/
/*----------------------------------------------ДМ-день-----------------------------------------*/
public nodead(first) {
if(vibri_event == true)
{
new players[32], team[32], num, player;
get_players(players, num, "ah")
for(new i = 0; i < num; i++)
{
player = players[i];
get_user_team(player,team,32);
set_task(1.0, "allrespawn");
set_task(2.0, "allrespawn");
set_task(3.0, "allrespawn");
set_task(4.0, "allrespawn");
set_task(5.0, "allrespawn");
set_task(6.0, "allrespawn");
set_task(7.0, "allrespawn");
set_task(8.0, "allrespawn");
set_task(9.0, "allrespawn");
set_task(10.0, "allrespawn");
set_task(11.0, "allrespawn");
set_task(12.0, "allrespawn");
set_task(13.0, "allrespawn");
set_task(14.0, "allrespawn");
set_task(15.0, "allrespawn");
set_task(16.0, "allrespawn");
set_task(17.0, "allrespawn");
set_task(18.0, "allrespawn");
set_task(19.0, "allrespawn");
set_task(20.0, "allrespawn");
set_task(21.0, "allrespawn");
set_task(22.0, "allrespawn");
set_task(23.0, "allrespawn");
set_task(24.0, "allrespawn");
set_task(25.0, "allrespawn");
set_task(26.0, "allrespawn");
set_task(27.0, "allrespawn");
set_task(28.0, "allrespawn");
set_task(29.0, "allrespawn");
set_task(30.0, "allrespawn");
set_task(31.0, "allrespawn");
set_task(32.0, "allrespawn");
set_task(33.0, "allrespawn");
set_task(34.0, "allrespawn");
set_task(35.0, "allrespawn");
set_task(36.0, "allrespawn");
set_task(37.0, "allrespawn");
set_task(38.0, "allrespawn");
set_task(39.0, "allrespawn");
set_task(40.0, "allrespawn");
set_task(41.0, "allrespawn");
set_task(42.0, "allrespawn");
set_task(43.0, "allrespawn");
set_task(44.0, "allrespawn");
set_task(45.0, "allrespawn");
set_task(47.0, "allrespawn");
set_task(50.0, "allrespawn");
set_task(53.0, "allrespawn");
set_task(55.0, "allrespawn");
set_task(57.0, "allrespawn");
set_task(59.0, "allrespawn");
set_task(60.0, "allkill");
set_cvar_num("dr_shop", 0);
client_print(0, print_chat, "[Knife игры] Играем в бессмертных! Правила можно нарушать!")
set_dhudmessage(255, 0, 0, -1.0, 0.19, 0, 0.0, 10.0, 0.1, 0.2)
show_dhudmessage(0, "Играем в бессмертных! 60 секунд вы будете воскрешатся без остановки!")
}
}
}
public allrespawn(id)
{
for(new i = 1; i <= MAXPLAYERS; i++)
{
if(is_user_alive(i) || !is_user_connected(i))
continue;
ExecuteHamB(Ham_CS_RoundRespawn, i)
}
return;
}
public allkill(id)
{
set_dhudmessage(255, 0, 0, -1.0, 0.19, 0, 0.0, 10.0, 0.1, 0.2)
show_dhudmessage(0, "Бессмертность кончилась!")
return PLUGIN_HANDLED
}
/*----------------------------------------------ДМ-день-конец------------------------------------------*/
public RoundEnd() {
// MAx Player numb
new maxplayers = get_maxplayers()+1;
for(new id = 1; id < maxplayers; id++)
{
if(is_zombie(id))
{
status[id] &= ~(1<<0)
}
if(team_change(id))
{
fm_set_user_team(id, FM_TEAM_CT)
status[id] &= ~(1<<1)
}
}
if(vibri_event == true)
{
new players[32], team[32], num, player;
get_players(players, num, "ah")
for(new i = 0; i < num; i++)
{
player = players[i];
get_user_team(player,team,32);
set_user_rendering(player,kRenderFxNone,255,255,255, kRenderNormal,16);
}
vibri_event = false;
set_lights("#OFF");
set_cvar_num("amx_set_ffa", 0);
set_cvar_num("mp_friendlyfire", 0);
set_cvar_num("sv_gravity", 800);
set_cvar_num("dr_shop", 1);
remove_task();
}
inf = 0
}
public RandGlow() {
new Red = random(256);
new Green = random(256);
new Blue = random(256);
new players[32], num, player;
get_players(players, num, "ah")
for(new i = 0; i < num; i++)
{
player = players[i];
set_user_rendering(player, kRenderFxGlowShell, Red, Green, Blue, kRenderNormal,30)
}
}
stock fm_strip_user_weapons(index) {
new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "player_weaponstrip"))
if (!pev_valid(ent))
return 0
dllfunc(DLLFunc_Spawn, ent)
dllfunc(DLLFunc_Use, ent, index)
engfunc(EngFunc_RemoveEntity, ent)
return 1
}
stock fm_set_user_team(id, {teams,_}:iTeam)
{
if( iTeam > FM_TEAM_SPECTATOR )
return
set_pdata_int(id, OFFSET_TEAM, _:iTeam)
}
public team_msg(id, const team[])
{
emessage_begin(MSG_BROADCAST, gmsgTeamInfo)
ewrite_byte(id)
ewrite_string(team)
emessage_end()
}
stock teams:fm_get_user_team(id)
{
return teams:get_pdata_int(id, OFFSET_TEAM)
}
stock fm_give_item(index, const item[]) {
if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5) && !equal(item, "tf_weapon_", 10))
return 0;
new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, item))
if (!pev_valid(ent))
return 0;
new Float:origin[3];
pev(index, pev_origin, origin);
set_pev(ent, pev_origin, origin);
set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN);
dllfunc(DLLFunc_Spawn, ent);
new save = pev(ent, pev_solid);
dllfunc(DLLFunc_Touch, ent, index);
if (pev(ent, pev_solid) != save)
return ent;
engfunc(EngFunc_RemoveEntity, ent);
return -1;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/