|
Senior Member
Join Date: Jun 2009
Location: Lithuania
|

06-23-2009
, 12:10
Zombie Swarm Scripting
|
#1
|
Hi I Tried To Make Something in Zombie Swarm I'am Newbie At Scripting , but now how to speak english not like my friend Ice*Shot Who Writes Threads In All Forum...ok I tryed something with sound like HUNTER_MISS 5 I Show You What I Did To The Zombie_Swarm.sma
Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <engine>
#include <fakemeta>
//Sets the sky you want for your server
#define SKYNAME "space"
//The time before zombies have leap at round start. Has to be a float/decimal
#define LEAP_CD 15.0
#define MAX_PLAYERS 32
new bool:g_restart_attempt[MAX_PLAYERS + 1]
#define HUNTER_MISS 2
new miss_hunter[HUNTER_MISS][] = {"Hunter/Hunter_Miss1.wav", "Hunter/Hunter_Miss2.wav" }
#define SMOKER_MISS 2
new miss_smoker[SMOKER_MISS][] = {"Smoker/Smoker_Miss1.wav", "Smoker/Smoker_Miss2.wav" }
#define BOOMER_MISS 2
new miss_boomer[BOOMER_MISS][] = {"Boomer/Boomer_Miss1.wav", "Boomer/Boomer_Miss2.wav" }
#define TANK_MISS 2
new miss_tank[TANK_MISS][] = {"Tank/Tank_Miss1.wav", "Tank/Tank_Miss1.wav" }
#define HUNTER_HIT 3
new hit_zombie[HUNTER_HIT][] = {"Hunter/Hunter_Hit1.wav", "Hunter/Hunter_Hit2.wav","Hunter/Hunter_Hit3.wav" }
#define SMOKER_HIT 3
new hit_zombie[SMOKER_HIT][] = {"Smoker/Smoker_Hit1.wav", "Smoker/Smoker_Hit2.wav","Smoker/Smoker_Hit3.wav" }
#define BOOMER_HIT 3
new hit_boomer[BOOMER_HIT][] = {"Boomer/Boomer_Hit1.wav", "Boomer/Boomer_Hit2.wav","Boomer/Boomer_Hit3.wav" }
#define TANK_HIT 3
new hit_tank[TANK_HIT][] = {"Tank/Tank_Hit1.wav", "Tank/Tank_Hit2.wav","Tank/Tank_Hit3.wav" }
#define HUNTER_PAIN 5
new pain_hunter[HUNTER_PAIN][] = {"Hunter/Hunter_pain1.wav", "Hunter/Hunter_pain2.wav", "Hunter/Hunter_pain3.wav", "Hunter/Hunter_pain4.wav", "Hunter/Hunter_pain5.wav" }
#define SMOKER_PAIN 3
new pain_smoker[SMOKER_PAIN][] = {"Smoker/Smoker_pain1.wav", "Smoker/Smoker_pain2.wav", "Smoker/Smoker_pain3.wav" }
#define BOOMER_PAIN 3
new pain_boomer[BOOMER_PAIN][] = {"Boomer/Boomer_pain1.wav", "Boomer/Boomer_pain2.wav", "Boomer/Boomer_pain3.wav" }
#define TANK_PAIN 6
new pain_tank[TANK_PAIN][] = {"Tank/Tank_pain1.wav", "Tank/Tank_pain2.wav""Tank/Tank_pain3.wav", "Tank/Tank_pain4.wav""Tank/Tank_pain5.wav", "Tank/Tank_pain6.wav" }
#define HUMAN_PAIN 2
new pain_human[HUMAN_PAIN][] = {"Human/human_pain1.wav", "Human/human_pain2.wav" }
#define Keysmenu_1 (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<9)
#define fm_find_ent_by_class(%1,%2) engfunc(EngFunc_FindEntityByString, %1, "classname", %2)
#define SLOT_PRIMARY 1
#define SLOT_SECONDARY 2
#define SLOT_KNIFE 3
#define SLOT_GRENADE 4
#define SLOT_C4 5
#define PRIMARY_WEAPONS_BIT_SUM ((1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90))
#define SECONDARY_WEAPONS_BIT_SUM ((2<<CSW_P228)|(2<<CSW_ELITE)|(2<<CSW_FIVESEVEN)|(CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE))
stock g_WeaponSlots[] = { 0, 2, 0, 1, 4, 1, 5, 1, 1, 4, 2, 2, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1 ,1, 4, 2, 1, 1, 3, 1 }
stock g_MaxBPAmmo[] = { 0, 254, 0, 254, 1, 254, 1, 254, 254, 1, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 2, 254, 254, 254, 0, 254 }
new bool:g_zombie[33]
new bool:buying
new bool:g_speed
new mod_name[32] = "DoviuX-Swarm"
//Pcvars...
new zomb_switch, zomb_hp,zomb_ap,zomb_speed,zomb_lightning,
zomb_leap,zomb_money,zomb_zdmg, zomb_hdmg,zomb_ammo, zomb_nvg, zomb_obj
new MODEL[256], zomb_model, use_model
new bombMap = 0
new hostageMap = 0
//The old commands
new g_autoteam, g_limitteams, g_flashlight
new hudsync
#define PLUGIN "DoviuX-Swarm"
#define VERSION "2.4"
#define AUTHOR "Mini_Midget"
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_cvar(PLUGIN,VERSION,FCVAR_SERVER)
register_dictionary("zombie_swarm.txt")
register_logevent("logevent_round_start",2, "1=Round_Start")
register_logevent("logevent_round_end", 2, "1=Round_End")
register_event("ResetHUD","event_hud_reset", "be")
register_event("TextMsg","event_restart_attempt", "a", "2=#Game_will_restart_in")
register_event("CurWeapon","event_cur_weapon","be", "1=1")
register_event("Damage","event_damage_scream","be","2!0","3=0")
register_event("Damage", "event_damage", "be", "2!0","3=0","4!0")
register_event("StatusIcon", "event_status_icon", "be", "1=1", "1=2", "2=c4")
register_event("HLTV", "event_new_round", "a", "1=0", "2=0")
register_forward(FM_ClientUserInfoChanged,"fw_info")
register_forward(FM_PlayerPostThink,"fw_postthink")
register_forward(FM_Touch,"fw_Touch");
register_forward( FM_EmitSound, "fw_EmitSound" )
register_forward(FM_CmdStart, "fw_Cmd")
register_forward(FM_GetGameDescription,"GameDesc")
register_message(get_user_msgid("Scenario"),"message_scenario");
register_message(get_user_msgid("BombDrop"),"message_bombdrop");
register_message(get_user_msgid("AmmoPickup"),"message_ammopickup");
register_message(get_user_msgid("TextMsg"),"message_textmsg");
register_message(get_user_msgid("HostagePos"),"message_hostagepos");
register_clcmd("say","clcmd_say")
register_menucmd(register_menuid("Buy Menu"), Keysmenu_1, "buy_menu")
register_clcmd("fullupdate","clcmd_fullupdate")
register_concmd("zombie_swarm", "zsonoff", ADMIN_BAN, "<0/1> Disable/Enable Zombie Swarm")
zomb_switch = register_cvar("zs_enabled","1")
zomb_hp = register_cvar("zs_health","2000")
zomb_ap = register_cvar("zs_armour","500")
zomb_speed = register_cvar("zs_speed","300")
zomb_lightning = register_cvar("zs_lightning","1")
zomb_leap = register_cvar("zs_leap","0")
zomb_money = register_cvar("zs_money","1000")
zomb_zdmg = register_cvar("zs_zdmg","55")
zomb_hdmg = register_cvar("zs_hdmg","150")
zomb_ammo = register_cvar("zs_ammo","0")
zomb_nvg = register_cvar("zs_nvg","1")
zomb_obj = register_cvar("zs_objectives","1")
zomb_model = register_cvar("zs_model","zombie_swarm")
use_model = register_cvar("zs_use","1")
if(fm_find_ent_by_class(1, "info_bomb_target") || fm_find_ent_by_class(1, "func_bomb_target"))
bombMap = 1;
if(fm_find_ent_by_class(1,"hostage_entity"))
hostageMap = 1
g_autoteam = get_cvar_num("mp_autoteambalance")
g_limitteams = get_cvar_num("mp_limitteams")
g_flashlight = get_cvar_num("mp_flashlight")
server_cmd("sv_skyname %s", SKYNAME)
server_cmd("sv_maxspeed 1000")
set_cvar_num("mp_autoteambalance",0)
set_cvar_num("mp_limitteams", 1)
set_cvar_num("mp_flashlight", 1)
set_task(1.0, "lightning_effects")
set_task(1.0, "ambience_loop")
format(mod_name, 31, "Zombie Swarm %s", VERSION)
hudsync = CreateHudSyncObj()
}
public plugin_precache()
{
precache_model("models/player/Hunter/Hunter.mdl")
precache_model("models/v_knife_zombie.mdl")
precache_sound("Hunter/HunterAlert.wav")
new i
for (i = 0; i < HUNTER_MISS; i++)
precache_sound(miss_hunter[i])
for (i = 0; i < HUNTER_HIT; i++)
precache_sound(hit_hunter[i])
for (i = 0; i < HUNTER_PAIN; i++)
precache_sound(pain_hunter[i])
for (i = 0; i < HUMAN_PAIN; i++)
precache_sound(pain_human[i])
}
public plugin_precache()
{
precache_model("models/player/Smoker/Smoker.mdl")
precache_model("models/v_knife_zombie.mdl")
precache_sound("Smoker/SmokerAlert.wav")
new i
for (i = 0; i < SMOKER_MISS; i++)
precache_sound(miss_smoker[i])
for (i = 0; i < SMOKER_HIT; i++)
precache_sound(hit_smoker[i])
for (i = 0; i < SMOKER_PAIN; i++)
precache_sound(pain_smoker[i])
for (i = 0; i < HUMAN_PAIN; i++)
precache_sound(pain_human[i])
}
public plugin_precache()
{
precache_model("models/player/Boomer/Boomer.mdl")
precache_model("models/v_knife_zombie.mdl")
precache_sound("Boomer/BoomerAlert.wav")
new i
for (i = 0; i < BOOMER_MISS; i++)
precache_sound(miss_boomer[i])
for (i = 0; i < BOOMER_HIT; i++)
precache_sound(hit_boomer[i])
for (i = 0; i < BOOMER_PAIN; i++)
precache_sound(pain_boomer[i])
for (i = 0; i < HUMAN_PAIN; i++)
precache_sound(pain_human[i])
}
public plugin_precache()
{
precache_model("models/player/Tank/Tank.mdl")
precache_model("models/v_knife_zombie.mdl")
precache_sound("Tank/TankAlert.wav")
new i
for (i = 0; i < TANK_MISS; i++)
precache_sound(miss_tank[i])
for (i = 0; i < TANK_HIT; i++)
precache_sound(hit_tank[i])
for (i = 0; i < TANK_PAIN; i++)
precache_sound(pain_tank[i])
for (i = 0; i < HUMAN_PAIN; i++)
precache_sound(pain_human[i])
}
public client_putinserver(id)
{
g_zombie[id] = false
g_restart_attempt[id] = false
g_speed = false
client_cmd(id, "stopsound")
}
public zsonoff(id,level,cid)
{
if (!cmd_access(id,level,cid,1))
return PLUGIN_HANDLED
new szArg[5]
read_argv(1, szArg, 4)
if (equali(szArg,"1") || equali(szArg,"on"))
{
if (get_cvar_num("zombie_swarm") == 1)
{
console_print(id, "%s is already on!", PLUGIN)
return PLUGIN_HANDLED
}
zs_on()
set_hudmessage(255, 255, 255, -1.0, 0.25, 0, 1.0, 5.0, 0.1, 0.2, -1)
show_hudmessage(0, "%s is now ON!", PLUGIN)
console_print(0, "%s has been turned ON!", PLUGIN)
client_print(0, print_chat, "%s has been turned ON!", PLUGIN)
return PLUGIN_HANDLED
}
if (equali(szArg,"0") || equali(szArg,"off"))
{
if (get_cvar_num("zs_enabled") == 0)
{
console_print(id, "%s is already off!", PLUGIN)
return PLUGIN_HANDLED
}
zs_off()
set_hudmessage(255, 255, 255, -1.0, 0.25, 0, 1.0, 5.0, 0.1, 0.2, -1)
show_hudmessage(0, "%s has been turned OFF!", PLUGIN)
console_print(0, "%s has been turned OFF!", PLUGIN)
client_print(0, print_chat, "%s has been turned OFF!", PLUGIN)
return PLUGIN_HANDLED
}
console_print(id, "Invalid argument!")
client_print(id, print_chat, "Invalid argument!")
return PLUGIN_HANDLED
}
public zs_on()
{
new maxplayers = get_maxplayers()
for (new i = 1; i <= maxplayers; i++)
{
g_zombie[i] = false
g_restart_attempt[i] = false
}
set_cvar_num("zs_enabled", 1)
set_task(1.0, "lightning_effects")
set_task(1.0, "ambience_loop")
set_cvar_num("mp_autoteambalance",0)
set_cvar_num("mp_limitteams", 1)
set_cvar_num("mp_flashlight", 1)
set_cvar_num("sv_restartround", 3)
}
public zs_off()
{
new maxplayers = get_maxplayers()
for (new i = 1; i <= maxplayers; i++)
{
g_zombie[i] = false
g_restart_attempt[i] = false
client_cmd(i, "stopsound")
}
set_cvar_num("zs_enabled", 0)
set_lights("#OFF")
remove_task(12175)
set_cvar_num("mp_autoteambalance",g_autoteam)
set_cvar_num("mp_limitteams", g_limitteams)
set_cvar_num("mp_flashlight", g_flashlight)
set_cvar_num("sv_restartround", 3)
}
public GameDesc()
{
forward_return(FMV_STRING, mod_name)
return FMRES_SUPERCEDE
}
public event_new_round(id)
{
if(hostageMap && get_pcvar_num(zomb_obj))
set_task(0.1,"move_hostages")
buying = true
new Float:buy_time = get_cvar_float("mp_buytime") * 60
set_task(buy_time, "buy_false", 7294)
g_speed = false
new freeze = get_cvar_num("mp_freezetime")
set_task(float(freeze),"allow_speed")
}
public allow_speed()
{
g_speed = true
new players[32], num, i
get_players(players, num)
for (i = 0 ; i < num; i++)
if (g_zombie[players[i]])
set_user_maxspeed(players[i], (get_pcvar_float(zomb_speed)))
}
public logevent_round_start(id)
{
if(!get_pcvar_num(zomb_switch))
return PLUGIN_HANDLED
if (get_pcvar_num(zomb_nvg))
server_cmd("amx_restrict on nvgs")
else
server_cmd("amx_restrict off nvgs")
set_task (0.5 , "team_check")
set_task (5.0 , "StartMsg")
if (g_zombie[id]) set_user_maxspeed(id,(get_pcvar_float(zomb_speed)))
return PLUGIN_CONTINUE
}
public logevent_round_end()
{
if (task_exists(7294))
remove_task(7294)
}
public buy_false() buying = false
public clcmd_fullupdate() return PLUGIN_HANDLED
public event_restart_attempt()
{
if(!get_pcvar_num(zomb_switch))
return PLUGIN_HANDLED
new players[32], num
get_players(players, num, "a")
for (new i; i < num; i++)
g_restart_attempt[players[i]] = true
return PLUGIN_CONTINUE
}
public event_hud_reset(id)
{
if(!get_pcvar_num(zomb_switch))
return PLUGIN_HANDLED
if (g_restart_attempt[id])
g_restart_attempt[id] = false
set_task(0.2,"event_player_spawn",id)
return PLUGIN_CONTINUE
}
public event_player_spawn(id)
{
if(!is_user_alive(id))
return PLUGIN_HANDLED
new CsTeams:team = cs_get_user_team(id)
new CsArmorType:ArmorType = CS_ARMOR_VESTHELM
if(team == CS_TEAM_T)
{
g_zombie[id] = true
set_task(random_float(0.1,0.5), "Reset_Weapons", id) //Strips zombies if they do have guns
set_user_health(id,get_pcvar_num(zomb_hp))
cs_set_user_armor(id,get_pcvar_num(zomb_ap),ArmorType)
set_user_footsteps(id, 1)
set_user_gravity(id,0.875)
cs_set_user_money(id,0)
if (g_speed)
set_user_maxspeed(id,(get_pcvar_float(zomb_speed)))
if (!cs_get_user_nvg(id))
{
cs_set_user_nvg(id,1)
engclient_cmd(id, "nightvision")
}
}
else if(team == CS_TEAM_CT)
{
g_zombie[id] = false
set_user_footsteps(id, 0)
cs_set_user_money(id, cs_get_user_money(id) + get_pcvar_num(zomb_money))
if (get_pcvar_num(use_model))
cs_reset_user_model(id)
}
ShowHUD(id)
return PLUGIN_CONTINUE
}
public fw_info(id,buffer)
{
if (g_zombie[id])
return FMRES_SUPERCEDE
return FMRES_IGNORED
}
public fw_postthink(id)
{
if (!is_user_alive(id) || !get_pcvar_num(use_model))
return FMRES_IGNORED
if (g_zombie[id])
{
new szModel[33]
get_pcvar_string(zomb_model, MODEL, 255)
cs_get_user_model(id, szModel, 32)
if (containi(szModel, MODEL) !=-1 )
return FMRES_IGNORED
new info = engfunc(EngFunc_GetInfoKeyBuffer, id)
engfunc(EngFunc_SetClientKeyValue, id, info, "model", MODEL)
return FMRES_IGNORED
}
return FMRES_IGNORED
}
public ShowHUD(id)
{
if(!is_user_alive(id))
return PLUGIN_HANDLED
if(g_zombie[id])
{
new hp = get_user_health(id)
new ap = get_user_armor(id)
set_hudmessage(255, 180, 0, 0.02, 0.90, 0, 0.0, 0.3, 0.0, 0.0)
ShowSyncHudMsg(id, hudsync , "HP: %d |AP : %d", hp, ap)
}
set_task(0.1 , "ShowHUD" , id)
return PLUGIN_CONTINUE
}
public event_cur_weapon(id)
{
if(!get_pcvar_num(zomb_switch))
return PLUGIN_HANDLED
if(!is_user_alive(id))
return PLUGIN_HANDLED
new weapon = read_data(2)
new clip = read_data(3)
if (g_WeaponSlots[weapon] == SLOT_PRIMARY || g_WeaponSlots[weapon] == SLOT_SECONDARY)
{
switch (get_pcvar_num(zomb_ammo))
{
case 1:
{
new ammo = cs_get_user_bpammo(id, weapon)
if (ammo < g_MaxBPAmmo[weapon])
{
cs_set_user_bpammo(id, weapon, g_MaxBPAmmo[weapon])
}
}
case 2:
{
give_ammo(id , weapon , clip)
}
}
}
if ( g_zombie[id] && g_speed )
set_user_maxspeed(id,(get_pcvar_float(zomb_speed)))
if (g_zombie[id] && g_WeaponSlots[weapon] == SLOT_KNIFE)
set_pev(id, pev_viewmodel, engfunc(EngFunc_AllocString, "models/v_knife_zombie.mdl"))
return PLUGIN_CONTINUE
}
public give_ammo(id , weapon , clip)
{
if (!is_user_alive(id))
return PLUGIN_HANDLED
if (!clip)
{
new weapname[33]
get_weaponname(weapon , weapname , 32)
new wpn = -1
while((wpn = fm_find_ent_by_class(wpn , weapname)) != 0)
{
if(id == pev(wpn,pev_owner))
{
cs_set_weapon_ammo(wpn , maxclip(weapon))
break;
}
}
}
return PLUGIN_CONTINUE
}
public event_status_icon(id)
{
if(!get_pcvar_num(zomb_switch))
return PLUGIN_HANDLED
engclient_cmd(id, "drop", "weapon_c4")
set_task(0.1, "delete_c4")
return PLUGIN_CONTINUE
}
public delete_c4()
{
new ent = find_ent_by_class(-1, "weaponbox")
while (ent > 0)
{
new model[33]
entity_get_string(ent, EV_SZ_model, model, 32)
if (equali(model, "models/w_backpack.mdl"))
{
remove_entity(ent)
return PLUGIN_CONTINUE
}
ent = find_ent_by_class(ent, "weaponbox")
}
return PLUGIN_CONTINUE
}
public Reset_Weapons(id)
{
if(!is_user_alive(id))
return PLUGIN_HANDLED
if(g_zombie[id])
{
strip_user_weapons(id)
give_item(id,"weapon_knife")
if (is_user_bot(id))
{
return PLUGIN_HANDLED
}
else if (get_pcvar_num(zomb_leap))
{
set_task(LEAP_CD,"cooldown_begin",id)
set_hudmessage(255, 255, 255, -1.0, 0.40, 0, 6.0, 14.0)
show_hudmessage(id, "%L",LANG_PLAYER,"LEAP_WAIT",floatround(LEAP_CD))
}
}
return PLUGIN_CONTINUE
}
public cooldown_begin(id)
{
if (!is_user_alive(id))
return PLUGIN_HANDLED
if (g_zombie[id])
{
set_hudmessage(255, 255, 255, -1.0, 0.40, 0, 6.0, 5.0)
show_hudmessage(id, "%L",LANG_PLAYER,"LEAP_READY")
give_item(id, "item_longjump")
}
return PLUGIN_CONTINUE
}
public team_check()
{
new players[32],num,i,id
get_players(players,num,"d")
for(i = 0; i < num; i++)
{
id = players[i]
if (!g_zombie[id])
{
user_silentkill(id)
cs_set_user_team(id,CS_TEAM_T)
}
}
return PLUGIN_HANDLED
}
public StartMsg(id)
{
client_print(0,print_chat,"%L",LANG_PLAYER,"WELCOME_MSG", VERSION)
client_print(0,print_chat,"%L",LANG_PLAYER,"ZOMBIE_MSG", get_pcvar_num(zomb_hp), get_pcvar_num(zomb_ap), get_pcvar_num(zomb_speed))
client_print(0,print_chat,"%L",LANG_PLAYER,"HELP_MSG")
}
public lightning_effects()
{
if(!get_pcvar_num(zomb_switch))
return PLUGIN_HANDLED
if (get_pcvar_num(zomb_lightning) == 0)
{
set_lights("#OFF")
remove_task(12175)
set_task(20.0,"lightning_effects")
}
else if (get_pcvar_num(zomb_lightning) == 1)
{
set_lights("a")
set_task(random_float(10.0,17.0),"thunder_clap",12175)
}
else if (get_pcvar_num(zomb_lightning) == 2)
{
set_lights("b")
remove_task(12175)
set_task(20.0,"lightning_effects")
}
return PLUGIN_CONTINUE
}
public thunder_clap()
{
if(!get_pcvar_num(zomb_switch))
return PLUGIN_HANDLED
set_lights("p")
client_cmd(0,"speak ambience/thunder_clap.wav")
set_task(1.25,"lightning_effects",12175)
return PLUGIN_CONTINUE
}
public ambience_loop()
{
if(!get_pcvar_num(zomb_switch))
return PLUGIN_HANDLED
client_cmd(0,"spk zombie_swarm/ambience.wav")
set_task(17.0,"ambience_loop")
return PLUGIN_CONTINUE
}
public fw_Touch(pToucher, pTouched)
{
if(!get_pcvar_num(zomb_switch))
return FMRES_IGNORED
if ( !pev_valid(pToucher) || !pev_valid(pTouched) )
return FMRES_IGNORED
if ( !is_user_connected(pTouched) )
return FMRES_IGNORED
if ( !g_zombie[pTouched] )
return FMRES_IGNORED
new className[32]
pev(pToucher, pev_classname, className, 31)
if ( equal(className, "weaponbox") || equal(className, "armoury_entity" ) || equal(className, "weapon_shield" ) )
return FMRES_SUPERCEDE
return FMRES_IGNORED
}
public fw_EmitSound(id, channel, sample[])
{
if(!get_pcvar_num(zomb_switch))
return FMRES_IGNORED
if ( !is_user_alive(id) || !g_zombie[id] )
return FMRES_IGNORED
if ( sample[0] == 'w' && sample[1] == 'e' && sample[8] == 'k' && sample[9] == 'n' )
{
switch(sample[17])
{
case 'l': return FMRES_SUPERCEDE
case 's', 'w':
{
emit_sound(id, CHAN_WEAPON, miss_zombie[random_num(0, ZOMBIE_MISS - 1)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
return FMRES_SUPERCEDE
}
case 'b', '1', '2', '3', '4':
{
emit_sound(id, CHAN_WEAPON, hit_zombie[random_num(0, ZOMBIE_HIT - 1)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
return FMRES_SUPERCEDE
}
}
}
else if (equal(sample,"items/nvg_on.wav") || (equal(sample,"items/nvg_off.wav")))
return FMRES_SUPERCEDE
return FMRES_IGNORED
}
public fw_Cmd(id, handle, seed)
{
new impulse = get_uc(handle, UC_Impulse)
if (impulse == 100 && g_zombie[id])
{
set_uc(handle, UC_Impulse, 0)
}
return FMRES_HANDLED
}
public event_damage_scream(id)
{
if(!get_pcvar_num(zomb_switch))
return PLUGIN_HANDLED
if(!is_user_alive(id))
return PLUGIN_HANDLED
if ( g_zombie[id] )
{
emit_sound(id, CHAN_VOICE, pain_zombie[random_num(0, ZOMBIE_PAIN - 1)], 1.0, ATTN_NORM, 0, PITCH_NORM)
} else {
emit_sound(id, CHAN_VOICE, pain_human[random_num(0, HUMAN_PAIN - 1)], 1.0, ATTN_NORM, 0, PITCH_NORM)
}
return PLUGIN_HANDLED
}
public event_damage(id)
{
if(!get_pcvar_num(zomb_switch))
return PLUGIN_HANDLED
if(!is_user_alive(id))
return PLUGIN_HANDLED
new damage = read_data(2)
new weapon, hitzone
new attacker = get_user_attacker(id, weapon, hitzone)
new Float:Random_Float[3]
for(new i = 0; i < 3; i++) Random_Float[i] = random_float(100.0, 125.0)
new current_hp = get_user_health(attacker)
new max_hp = get_pcvar_num(zomb_hp)
new zdmg = get_pcvar_num(zomb_zdmg)
new hdmg = get_pcvar_num(zomb_hdmg)
current_hp += damage
if (attacker > sizeof g_zombie)
return PLUGIN_CONTINUE
if ( g_zombie[attacker] && weapon == CSW_KNIFE )
{
if (zdmg <= 0)
return PLUGIN_CONTINUE
else if (damage >= zdmg)
Punch_View(id, Random_Float)
if ( current_hp >= max_hp )
{
set_user_health(attacker, max_hp)
} else {
set_user_health(attacker, current_hp)
}
}
else if ( !g_zombie[attacker] && hitzone == HIT_HEAD)
{
if (hdmg <= 0)
return PLUGIN_CONTINUE
else if (damage >= hdmg)
Punch_View(id, Random_Float)
}
return PLUGIN_HANDLED
}
public clcmd_say(id)
{
if(!get_pcvar_num(zomb_switch))
return PLUGIN_HANDLED
static ARGS[15]
read_args(ARGS,14)
remove_quotes(ARGS)
if(equali(ARGS,"/help"))
{
zombie_help(id)
}
else if (equali(ARGS,"/bm"))
{
if ( !is_user_alive(id) )
{
client_print(id, print_center, "%L", id, "BUY_ALIVE")
return PLUGIN_HANDLED
}
else if ( g_zombie[id] )
{
client_print(id, print_center, "%L", id, "BUY_HUMAN")
return PLUGIN_HANDLED
}
else if ( !cs_get_user_buyzone(id) )
{
client_print(id, print_center, "%L", id, "BUY_BUYZONE")
return PLUGIN_HANDLED
}
else if (!buying)
{
new Float:time_buy = get_cvar_float("mp_buytime") * 60
client_print(id, print_center, "%L", id, "BUY_TIME", floatround(time_buy))
return PLUGIN_HANDLED
}
else
{
show_menu(id, Keysmenu_1, "\yBuy Menu\w^n^n1. .40 Dual Elites \y($800)\w^n2. INGRAM MAC-10 \y($1400)\w^n3. IDF Defender \y($2000)\w^n4. CV-47 \y($2500)\w^n5. KREIG 552 \y($3500)\w^n6. D3/AU-1 \y($5000)\w^n^n0. Exit")
}
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
public zombie_help(id)
{
new help_title[64], len
static msg[2047]
format(help_title,63,"%L",id,"HELP_HEADER")
len = format(msg,2046,"<body bgcolor=#f5f5f5><font color=#000000><br>")
len += format(msg[len],2046-len,"<center><h2>%L</h2><br><table><tr><td><p><b><font color=#000000>",id,"HELP_TITLE")
len += format(msg[len],2046-len,"<h2>%L</h2>",id,"HELP_OBJECTIVE")
len += format(msg[len],2046-len,"%L<br>",id,"HELP_ZOMBIE")
len += format(msg[len],2046-len,"%L<br>",id,"HELP_ZOMBIE_KNIFE")
len += format(msg[len],2046-len,"%L<br>",id,"HELP_ZOMBIE_NVG")
if (get_pcvar_num(zomb_leap))
len += format(msg[len],2046-len,"%L<br>",id,"HELP_ZOMBIE_LEAP")
if (get_pcvar_num(zomb_zdmg) >= 1)
len += format(msg[len],2046-len,"%L<br>",id,"HELP_ZOMBIE_HIT",get_pcvar_num(zomb_zdmg))
len += format(msg[len],2046-len,"<h2>%L</h2>",id,"HELP_HUMAN")
len += format(msg[len],2046-len,"%L<br>",id,"HELP_HUMAN_GUNS")
if (get_pcvar_num(zomb_nvg))
len += format(msg[len],2046-len,"%L<br>",id,"HELP_HUMAN_NVG")
if (get_pcvar_num(zomb_hdmg) >= 1)
len += format(msg[len],2046-len,"%L<br>",id,"HELP_HUMAN_HIT",get_pcvar_num(zomb_hdmg))
len += format(msg[len],2046-len,"<h2>%L</h2>",id,"HELP_TIPS")
len += format(msg[len],2046-len,"%L<br>",id,"HELP_TIPS_ONE")
len += format(msg[len],2046-len,"%L<br>",id,"HELP_TIPS_TWO")
len += format(msg[len],2046-len,"%L<br>",id,"HELP_ENJOY")
len += format(msg[len],2046-len,"</b><br></td></tr></table><br>Mini_Midget</center>")
show_motd(id,msg,help_title)
}
public buy_menu(id, key)
{
new money = cs_get_user_money(id)
new dualcost = 800
new mac10cost = 1400
new idfcost = 2000
new akcost = 2500
new kreigcost = 3500
new D3cost = 5000
switch (key)
{
case 0:
{
if(money < dualcost)
{
client_print(id, print_center, "%L",id, "BUY_MONEY", dualcost)
}
else
{
drop_sec(id)
cs_set_user_money(id, money - dualcost)
give_item(id,"weapon_elite")
}
}
case 1:
{
if(money < mac10cost)
{
client_print(id, print_center, "%L",id, "BUY_MONEY", mac10cost)
}
else
{
drop_prim(id)
cs_set_user_money(id, money - mac10cost)
give_item(id,"weapon_mac10")
}
}
case 2:
{
if(money < idfcost)
{
client_print(id, print_center, "%L",id, "BUY_MONEY", idfcost)
}
else
{
drop_prim(id)
cs_set_user_money(id, money - idfcost)
give_item(id,"weapon_galil")
}
}
case 3:
{
if(money < akcost)
{
client_print(id, print_center, "%L",id, "BUY_MONEY", akcost)
}
else
{
drop_prim(id)
cs_set_user_money(id, money - akcost)
give_item(id,"weapon_ak47")
}
}
case 4:
{
if(money < kreigcost)
{
client_print(id, print_center, "%L",id, "BUY_MONEY", kreigcost)
}
else
{
drop_prim(id)
cs_set_user_money(id, money - kreigcost)
give_item(id,"weapon_sg552")
}
}
case 5:
{
if(money < D3cost)
{
client_print(id, print_center, "%L",id, "BUY_MONEY", D3cost)
}
else
{
drop_prim(id)
cs_set_user_money(id, money - D3cost)
give_item(id,"weapon_g3sg1")
}
}
case 9:
return PLUGIN_HANDLED
}
return PLUGIN_HANDLED
}
public message_hostagepos(msg_id,msg_dest,msg_entity)
{
if(!get_pcvar_num(zomb_obj))
return PLUGIN_CONTINUE
return PLUGIN_HANDLED;
}
public message_textmsg(msg_id,msg_dest,msg_entity)
{
if(!bombMap || !get_pcvar_num(zomb_obj))
return PLUGIN_CONTINUE;
static message[16];
get_msg_arg_string(2, message, 15);
if(equal(message,"#Game_bomb_drop"))
return PLUGIN_HANDLED;
return PLUGIN_CONTINUE;
}
public message_ammopickup(msg_id,msg_dest,msg_entity)
{
if(!bombMap || !get_pcvar_num(zomb_obj))
return PLUGIN_CONTINUE;
if(get_msg_arg_int(1) == 14) // C4
return PLUGIN_HANDLED;
return PLUGIN_CONTINUE;
}
public message_bombdrop(msg_id,msg_dest,msg_entity)
{
if(!get_pcvar_num(zomb_obj))
return PLUGIN_HANDLED;
return PLUGIN_CONTINUE;
}
public message_scenario(msg_id,msg_dest,msg_entity)
{
if(get_msg_args() > 1 && get_pcvar_num(zomb_obj))
{
new sprite[8];
get_msg_arg_string(2, sprite, 7);
if(equal(sprite,"hostage"))
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
public move_hostages()
{
new ent;
while((ent = fm_find_ent_by_class(ent,"hostage_entity")) != 0)
set_pev(ent, pev_origin, Float:{8192.0,8192.0,8192.0});
}
//Stocks by VEN
stock drop_prim(id)
{
new weapons[32], num
get_user_weapons(id, weapons, num)
for (new i = 0; i < num; i++) {
if (PRIMARY_WEAPONS_BIT_SUM & (1<<weapons[i]))
{
static wname[32]
get_weaponname(weapons[i], wname, sizeof wname - 1)
engclient_cmd(id, "drop", wname)
}
}
}
stock drop_sec(id)
{
new weapons[32], num
get_user_weapons(id, weapons, num)
for (new i = 0; i < num; i++)
{
if (SECONDARY_WEAPONS_BIT_SUM & (2<<weapons[i]))
{
static wname[32]
get_weaponname(weapons[i], wname, sizeof wname - 1)
engclient_cmd(id, "drop", wname)
}
}
}
//Stock by Cheap_Suit
stock Punch_View(id, Float:ViewAngle[3])
{
entity_set_vector(id, EV_VEC_punchangle, ViewAngle)
}
//Stock by v3x
stock maxclip(weapon)
{
new ca = 0
switch (weapon)
{
case CSW_P228 : ca = 13
case CSW_SCOUT : ca = 10
case CSW_HEGRENADE : ca = 0
case CSW_XM1014 : ca = 7
case CSW_C4 : ca = 0
case CSW_MAC10 : ca = 30
case CSW_AUG : ca = 30
case CSW_SMOKEGRENADE : ca = 0
case CSW_ELITE : ca = 30
case CSW_FIVESEVEN : ca = 20
case CSW_UMP45 : ca = 25
case CSW_SG550 : ca = 30
case CSW_GALI : ca = 35
case CSW_FAMAS : ca = 25
case CSW_USP : ca = 12
case CSW_GLOCK18 : ca = 20
case CSW_AWP : ca = 10
case CSW_MP5NAVY : ca = 30
case CSW_M249 : ca = 100
case CSW_M3 : ca = 8
case CSW_M4A1 : ca = 30
case CSW_TMP : ca = 30
case CSW_G3SG1 : ca = 20
case CSW_FLASHBANG : ca = 0;
case CSW_DEAGLE : ca = 7
case CSW_SG552 : ca = 30
case CSW_AK47 : ca = 30
case CSW_P90 : ca = 50
}
return ca;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ ansicpg1252\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang5129\\ f0\\ fs16 \n\\ par }
*/
new const ZOMBIE_PLAYER_MODEL[][] =
{
"Hunter",
"Boomer",
"Smoker"
};
new const ZOMBIE_MODEL[][] =
{
"models/player/Hunter/Hunter.mdl",
"models/player/Boomer/Boomer.mdl",
"models/player/Smoker/Smoker.mdl"
};
new consy ZOMBIE_PLAYER_CLAWS[] =
{
"v_knife_hunter",
"v_knife_bommer"
};
new const ZOMBIE_CLAWS[][] =
{
"models/v_knife_hunter.mdl",
"models/v_knife_boomer.mdl"
};
new const ZOMBIE_FLESH[][] =
{
"models/abone_template1.mdl",
"models/bonegibs.mdl",
"models/fleshgibs.mdl",
"models/gib_b_bone.mdl",
"models/gib_b_gib.mdl",
"models/gib_legbone.mdl",
"models/gib_lung.mdl"
}
new mod_name[32] = "Zombie Swarm"
new player_model[33][32]
new Float: g_counter
new bool: g_zombie[33]
new bool: g_infreezetime
new bool: g_model[33]
new Float: g_LastLeap[33]
new Float: g_LastFthrow[33]
new bool: g_light_flashing
new g_light_style[3][2] = { "a", "b", "m" }
new g_light_stylenum
new g_light_counter
new g_light_num
new msg_hideweapon /*, msg_statusicon*/
new g_hudsync
new const blocked_commands[][] = {
"buy", "buyequip", "cl_autobuy", "cl_rebuy", "cl_setautobuy", "cl_setrebuy",
"km45", "9x19mm", "glock", "deagle", "nighthawk", "p228", "228compact", "elites", "fn57", "fiveseven",
"12gauge", "autoshotgun", "xm1014",
"smg", "tmp", "mp5", "c90", "p90", "mac10", "ump45",
"cv47", "ak47", "galil", "defender", "famas", "clarion", "sg552", "krieg552", "m4a1", "aug", "bullpup", "scout", "awp", "magnum", "g3sg1", "d3au1", "sg550", "krieg550",
"m249",
"vest", "vesthelm", "flash", "hegren", "sgren", "defuser", "shield", "nvgs"
new cvar_switch, cvar_health, cvar_armour, cvar_gravity, cvar_speed, cvar_skyname, cvar_lights,
cvar_autonvg, cvar_blocknvg, cvar_backspeed, cvar_cooldown, cvar_lforce, cvar_lheight, cvar_fforce,
cvar_fdamage, cvar_fsdamage, cvar_hedmg_multi, cvar_weadmg_multi
public plugin_precache()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_cvar(PLUGIN, VERSION, FCVAR_SPONLY|FCVAR_SERVER)
set_cvar_string(PLUGIN, VERSION)
register_dictionary("zombie_swarm.txt")
register_concmd("zombie_swarm", "concmd_zombieswarm", ADMIN_BAN, "<0/1> Disable/Enable Zombie Swarm")
cvar_switch = register_cvar("zswarm_enable", "1")
if (!get_pcvar_num(cvar_switch)) return
engfunc(EngFunc_PrecacheModel, ZOMBIE_CLAWS);
engfunc(EngFunc_PrecacheSound, g_sound_ambience);
new iNum
for (iNum = 0; iNum < sizeof(ZOMBIE_MODEL); iNum++)
engfunc(EngFunc_PrecacheModel, ZOMBIE_MODEL[iNum]);
for (iNum = 0; iNum < sizeof g_sound_miss; iNum++)
engfunc(EngFunc_PrecacheSound, g_sound_miss[iNum])
for (iNum = 0; iNum < sizeof g_sound_hit; iNum++)
engfunc(EngFunc_PrecacheSound, g_sound_hit[iNum])
for (iNum = 0; iNum < sizeof g_sound_pain; iNum++)
engfunc(EngFunc_PrecacheSound, g_sound_pain[iNum])
for (iNum = 0; iNum < sizeof g_sound_die; iNum++)
engfunc(EngFunc_PrecacheSound, g_sound_die[iNum])
for (iNum = 0; iNum < sizeof ZOMBIE_FLESH; iNum++)
engfunc(EngFunc_PrecacheModel, ZOMBIE_FLESH[iNum])
public plugin_init()
{
if (!get_pcvar_num(cvar_switch)) return
cvar_health = register_cvar("zswarm_health", "800")
cvar_armour = register_cvar("zswarm_armour", "")
cvar_gravity = register_cvar("zswarm_gravity", "800")
cvar_speed = register_cvar("zswarm_speed", "240")
cvar_lights = register_cvar("zswarm_light", "1")
cvar_skyname = register_cvar("zswarm_skyname", "space")
cvar_autonvg = register_cvar("zswarm_autonvg", "1")
cvar_blocknvg = register_cvar("zswarm_blocknvg","1")
cvar_backspeed = register_cvar("zswarm_bspeed", "1")
cvar_cooldown = register_cvar("zswarm_cooldown","5.0")
cvar_lforce = register_cvar("zswarm_lforce", "525")
cvar_lheight = register_cvar("zswarm_lheight", "260")
cvar_fforce = register_cvar("zswarm_fforce", "1500")
cvar_fdamage = register_cvar("zswarm_fdamage", "20")
cvar_fsdamage = register_cvar("zswarm_fsdamage","100")
cvar_hedmg_multi = register_cvar("zswarm_hemulti", "1.0")
cvar_weadmg_multi= register_cvar("zswarm_weamulti", "0.5")
RegisterHam(Ham_Spawn, "player", "bacon_spawn", 1)
RegisterHam(Ham_TakeDamage,"player", "bacon_takedamage")
RegisterHam(Ham_Touch, "weaponbox", "bacon_touch")
RegisterHam(Ham_Touch, "armoury_entity", "bacon_touch")
RegisterHam(Ham_Touch, "weapon_shield", "bacon_touch")
register_logevent("logevent_round_start", 2, "1=Round_Start")
register_logevent("logevent_round_end" , 2, "1=Round_End")
register_event("HLTV", "event_new_round", "a", "1=0", "2=0")
register_event("CurWeapon", "event_cur_weapon", "be")
register_message(get_user_msgid("ScoreAttrib"), "message_ScoreAttrib")
register_message(get_user_msgid("StatusIcon"), "message_StatusIcon")
register_message(get_user_msgid("TextMsg"), "message_TextMessage")
register_message(get_user_msgid("SendAudio"), "message_SendAudio")
for(new i = 0; i < sizeof blocked_commands; i++) register_clcmd(blocked_commands[i], "clcmd_blocked")
register_clcmd("nightvision", "clcmd_nightvision")
new iEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "ambient_generic"))
if(iEnt)
{
dllfunc(DLLFunc_Think, iEnt)
set_pev(iEnt, pev_classname, CLASS_WEATHER)
fm_set_kvd(iEnt, "targetname", "boomer")
fm_set_kvd(iEnt, "pitchstart", "100")
fm_set_kvd(iEnt, "pitch", "100")
fm_set_kvd(iEnt, "health", "500")
fm_set_kvd(iEnt, "spawnflags", "50")
dllfunc(DLLFunc_Spawn, iEnt)
set_pev(iEnt, pev_nextthink, get_gametime() + 2.0)
}
format(mod_name, 31, "%s %s", PLUGIN, VERSION)
register_forward(FM_GetGameDescription, "fw_GameDescription")
register_forward(FM_PlayerPreThink, "fw_PlayerPreThink")
register_forward(FM_SetClientKeyValue, "fw_SetClientKeyValue")
register_forward(FM_ClientUserInfoChanged, "fw_ClientUserInfoChanged")
register_forward(FM_EmitSound, "fw_EmitSound")
register_forward(FM_CmdStart, "fw_CmdStart")
register_forward(FM_Touch, "fw_Touch")
register_forward(FM_Think, "fw_Think_lights", 1)
msg_hideweapon = get_user_msgid("HideWeapon")
//msg_statusicon = get_user_msgid("StatusIcon")
g_hudsync = CreateHudSyncObj()
new skyname[32]
get_pcvar_string(cvar_skyname, skyname, 31)
set_cvar_string("sv_skyname", skyname)
set_cvar_num("sv_skycolor_r", 0)
set_cvar_num("sv_skycolor_g", 0)
set_cvar_num("sv_skycolor_b", 0)
server_cmd("sv_maxspeed 2000")
}
public client_putinserver(id)
{
g_zombie[id] = false
}
public fw_GameDescription()
{
forward_return(FMV_STRING, mod_name)
return FMRES_SUPERCEDE
}
public concmd_zombieswarm(id, level, cid)
{
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED
new sz_arg[8]
read_argv(1, sz_arg, 7)
if ( equali(sz_arg, "1") || equali(sz_arg, "on") || equali(sz_arg, "enable") )
{
set_task(5.0, "Task_Restart")
set_pcvar_num(cvar_switch, 1)
set_hudmessage(255, 255, 255, -1.0, 0.25, 0, 1.0, 5.0, 0.1, 0.2, -1)
show_hudmessage(0, "%L", LANG_PLAYER, "PLUGIN_HON_MSG", PLUGIN)
console_print(0, "%L", LANG_PLAYER, "PLUGIN_TON_MSG", PLUGIN)
for(new i = 1; i < 6; i++)
client_print(0, print_chat, "%L", LANG_PLAYER, "PLUGIN_TON_MSG", PLUGIN)
return PLUGIN_HANDLED
}
else if ( equali(sz_arg, "0") || equali(sz_arg, "off") || equali(sz_arg, "disable") )
{
set_task(5.0, "Task_Restart")
set_pcvar_num(cvar_switch, 0)
set_hudmessage(255, 255, 255, -1.0, 0.25, 0, 1.0, 5.0, 0.1, 0.2, -1)
show_hudmessage(0, "%L", LANG_PLAYER, "PLUGIN_HOFF_MSG", PLUGIN)
console_print(0, "%L", LANG_PLAYER, "PLUGIN_TOFF_MSG", PLUGIN)
for(new i = 1; i < 6; i++)
client_print(0, print_chat, "%L", LANG_PLAYER, "PLUGIN_TOFF_MSG", PLUGIN)
return PLUGIN_HANDLED
}
console_print(id, "Invalid argument!")
return PLUGIN_HANDLED
}
public bacon_spawn(id)
{
if (!is_user_alive(id))
return
static CsTeams: team ; team = cs_get_user_team(id)
if (team == CS_TEAM_T) //Terr
{
new Float:health, Float:gravity, armour
health = get_pcvar_float(cvar_health)
gravity = get_pcvar_float(cvar_gravity) / 800
armour = get_pcvar_num(cvar_armour)
g_zombie[id] = true
if(!task_exists(TASKID_STRIP + id))
set_task(0.2, "Task_Strip", TASKID_STRIP + id)
set_pev(id, pev_health, health)
cs_set_user_armor(id, armour, CS_ARMOR_VESTHELM)
set_pev(id, pev_gravity, gravity)
if (!cs_get_user_nvg(id))
cs_set_user_nvg(id)
if (get_pcvar_num(cvar_autonvg))
set_task(0.2, "Task_NVG", TASKID_NVG + id)
copy(player_model[id], 31, ZOMBIE_PLAYER_MODEL[random_num(0, sizeof(ZOMBIE_PLAYER_MODEL) - 1)])
new currentmodel[32];
fm_get_user_model(id, currentmodel, sizeof currentmodel - 1);
if(!equal(currentmodel, player_model[id]))
{
set_task(0.5 + g_counter, "Task_Model", id + TASKID_MODEL)
g_counter += 0.2;
}
if(!task_exists(TASKID_SHOWHUD + id))
set_task(0.2, "Task_ShowHUD", TASKID_SHOWHUD + id)
}
else if (team == CS_TEAM_CT) // CT
{
g_zombie[id] = false
fm_reset_user_model(id)
}
}
public bacon_takedamage(victim, inflictor, attacker, Float:damage, damagetype)
{
if(damagetype & DMG_GENERIC || victim == attacker || !is_user_alive(victim) || !is_user_connected(attacker))
return HAM_IGNORED
if(!g_zombie[victim] && !g_zombie[attacker])
{
SetHamParamFloat(4, 0.0)
return HAM_HANDLED
}
static CsTeams:team[2]
team[0] = cs_get_user_team(attacker), team[1] = cs_get_user_team(victim)
if(team[0] == team[1])
return HAM_IGNORED
if(!g_zombie[attacker])
{
damage *= (damagetype & DMG_HEGRENADE) ? get_pcvar_float(cvar_hedmg_multi) : get_pcvar_float(cvar_weadmg_multi)
SetHamParamFloat(4, damage)
return HAM_HANDLED
}
return HAM_IGNORED
}
public event_new_round()
{
g_infreezetime = true
}
public logevent_round_start()
{
g_infreezetime = false
}
public logevent_round_end()
{
g_counter = 0.0
}
public event_cur_weapon(id)
{
if(!is_user_alive(id))
return PLUGIN_HANDLED
if (g_zombie[id])
{
new weapon = read_data(2)
if (weapon != CSW_KNIFE)
{
engclient_cmd(id, "weapon_knife")
set_pev(id, pev_viewmodel2, ZOMBIE_CLAWS)
set_pev(id, pev_weaponmodel2, "")
}
message_begin(MSG_ONE, msg_hideweapon, _ , id)
write_byte(HIDE_HUD | HIDE_FLASH | HIDE_HP_HUD | HIDE_MONEY)
message_end()
}
else
{
message_begin(MSG_ONE, msg_hideweapon, _ , id)
write_byte(HIDE_NONE)
message_end()
}
return PLUGIN_CONTINUE
}
public message_ScoreAttrib(msg_id, msg_dest, id)
{
new attrib; attrib = get_msg_arg_int(2)
if(attrib == (1<<1)) set_msg_arg_int(2, ARG_BYTE, 0)
}
public message_StatusIcon(msg_id, msg_dest, id)
{
if(!is_user_connected(id) || !g_zombie[id])
return PLUGIN_CONTINUE
new icon[4]; get_msg_arg_string(2, icon, 3)
if(equal(icon, "c4") || equal(icon, "buy"))
return PLUGIN_HANDLED
return PLUGIN_CONTINUE
}
public message_TextMessage(msg_id, msg_dest, id)
{
if(get_msg_arg_int(1) != 4)
return PLUGIN_CONTINUE
new text_msg[25], win_msg[32]
get_msg_arg_string(2, text_msg, 24)
if(equal(text_msg[1], "Game_bomb_drop"))
return PLUGIN_HANDLED
else if(equal(text_msg[1], "Terrorists_Win"))
{
formatex(win_msg, 31, "%L", LANG_SERVER, "WIN_ZOMBIE")
set_msg_arg_string(2, win_msg)
}
else if(equal(text_msg[1], "Target_Saved") || equal(text_msg[1], "CTs_Win"))
{
formatex(win_msg, 31, "%L", LANG_SERVER, "WIN_HUMAN")
set_msg_arg_string(2, win_msg)
}
return PLUGIN_CONTINUE
}
public message_SendAudio(msg_id, msg_dest, id)
{
new audiocode [22]; get_msg_arg_string(2, audiocode, 21)
if(equal(audiocode[7], "MOVEOUT") || equal(audiocode[7], "LOCKNLOAD")
|| equal(audiocode[7], "LETSGO") || (equal(audiocode[7], "GO")))
set_msg_arg_string(2, "%!MRAD_ELIM")
else if(equal(audiocode[7], "terwin"))
return PLUGIN_HANDLED
//set_msg_arg_string(2, g_zombie_win_sounds[_random(sizeof g_zombie_win_sounds)])
return PLUGIN_CONTINUE
}
public clcmd_blocked(id)
{
if (g_zombie[id])
{
client_print(id, print_center, "%L", LANG_PLAYER, "BLOCK_BUY")
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
public clcmd_nightvision(id)
{
if(!g_zombie[id] && get_pcvar_num(cvar_blocknvg) && cs_get_user_nvg(id))
{
client_print(id, print_center, "%L", LANG_PLAYER, "BLOCK_NVG")
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
public clcmd_throw(id)
{
static Float: Origin[3], Float: Velocity[3], Float: Angle[3], MinBox[3], MaxBox[3]
pev(id, pev_origin, Origin)
pev(id, pev_velocity, Velocity)
pev(id, pev_angles, Angle)
static Health, Float: damage
Health = get_user_health(id)
damage = get_pcvar_float(cvar_fsdamage)
if (Health > damage)
{
static ent ; ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
set_pev(ent, pev_classname, CLASS_FLESH)
engfunc(EngFunc_SetModel, ent, ZOMBIE_FLESH[random(sizeof ZOMBIE_FLESH)])
Angle[0] = random_float(1.0, 360.0)
Angle[1] = random_float(1.0, 360.0)
MinBox = { -1.0, -1.0, -1.0 }
MaxBox = { 1.0, 1.0, 1.0 }
set_pev(ent, pev_angles, Angle)
engfunc(EngFunc_SetSize, ent, MinBox, MaxBox)
engfunc(EngFunc_SetOrigin, ent, Origin)
set_pev(ent, pev_movetype, MOVETYPE_TOSS)
set_pev(ent, pev_solid, SOLID_TRIGGER)
set_pev(ent, pev_owner, id)
velocity_by_aim(id, get_pcvar_num(cvar_fforce), Velocity)
set_pev(ent, pev_velocity, Velocity)
emit_sound(id, CHAN_VOICE, g_sound_pain[random(sizeof g_sound_pain)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
set_pev(id, pev_health, Health - damage)
}
else
{
client_print(id, print_center, "%L", LANG_PLAYER, "FLESH_HEALTH")
}
}
public fw_PlayerPreThink(id)
{
if(!is_user_alive(id))
return FMRES_IGNORED
static Float: velocity[3], Float: Time
static button, flag
button = pev(id, pev_button)
flag = pev(id, pev_flags)
Time = get_gametime()
if (g_zombie[id])
{
if ( (!g_infreezetime) && (button & IN_RELOAD) && (flag & FL_ONGROUND))
{
static Float: cooldown, Float: lheight, lforce
cooldown = get_pcvar_float(cvar_cooldown)
lforce = get_pcvar_num(cvar_lforce)
lheight = get_pcvar_float(cvar_lheight)
if (Time - cooldown > g_LastLeap[id])
{
set_pev(id, pev_button, button & ~IN_RELOAD)
velocity_by_aim(id, lforce, velocity)
velocity[2] = lheight
set_pev(id, pev_velocity, velocity)
g_LastLeap[id] = Time
}
}
else if ( (!g_infreezetime) && (button & IN_ATTACK) && (button & IN_ATTACK2))
{
if(Time - 1.1 > g_LastFthrow[id])
{
clcmd_throw(id)
g_LastFthrow[id] = Time
}
}
else if (!g_infreezetime)
{
static Float:speed; speed = get_pcvar_float(cvar_speed)
set_pev(id, pev_maxspeed, speed)
}
}
else if (!g_zombie[id])
{
if ( (button & IN_BACK) && (flag & FL_ONGROUND) )
{
static Float: backspeed ; backspeed = get_pcvar_float(cvar_backspeed)
pev(id, pev_velocity, velocity)
xs_vec_mul_scalar(velocity, backspeed, velocity)
set_pev(id, pev_velocity, velocity)
}
}
return FMRES_IGNORED
}
public fw_SetClientKeyValue(id, infobuffer, key[], value[])
{
if (g_model[id] && equal(key, "model"))
return FMRES_SUPERCEDE;
return FMRES_IGNORED;
}
public fw_ClientUserInfoChanged(id, infobuffer)
{
if (!g_model[id])
return FMRES_IGNORED;
new currentmodel[32];
fm_get_user_model(id, currentmodel, sizeof currentmodel - 1);
if(!equal(currentmodel, player_model[id]))
fm_set_user_model(id, player_model[id])
return FMRES_IGNORED;
}
public fw_EmitSound(id, channel, sample[], Float:volume, Float:attn, flag, pitch)
{
if(!is_user_connected(id) || !g_zombie[id])
return FMRES_IGNORED
//KNIFE
if (sample[0] == 'w' && sample[1] == 'e' && sample[8] == 'k' && sample[9] == 'n')
{
switch(sample[17])
{
case 'l':
return FMRES_SUPERCEDE
case 's', 'w':
{
emit_sound(id, CHAN_WEAPON, g_sound_miss[random(sizeof g_sound_miss)], volume, attn, flag, pitch)
return FMRES_SUPERCEDE
}
case 'b', '1', '2', '3', '4':
{
emit_sound(id, CHAN_WEAPON, g_sound_hit[random(sizeof g_sound_hit)], volume, attn, flag, pitch)
return FMRES_SUPERCEDE
}
}
}
//PAIN
else if (sample[1] == 'l' && sample[2] == 'a' && sample[3] == 'y' && ( (containi(sample, "bhit") != -1) || (containi(sample, "pain") != -1) || (containi(sample, "shot") != -1)))
{
emit_sound(id, CHAN_VOICE, g_sound_pain[random(sizeof g_sound_pain)], volume, attn, flag, pitch)
return FMRES_SUPERCEDE
}
//DEATH
else if (sample[7] == 'd' && (sample[8] == 'i' && sample[9] == 'e' || sample[12] == '6'))
{
emit_sound(id, CHAN_VOICE, g_sound_die[random(sizeof g_sound_die)], volume, attn, flag, pitch)
return FMRES_SUPERCEDE
}
//NVG
else if (sample[6] == 'n' && sample[7] == 'v' && sample[8] == 'g')
return FMRES_SUPERCEDE
return FMRES_IGNORED
}
public fw_CmdStart(id, handle, seed)
{
if(!is_user_alive(id) || !g_zombie[id])
return FMRES_IGNORED
static impulse; impulse = get_uc(handle, UC_Impulse)
if(impulse == 100)
{
set_uc(handle, UC_Impulse, 0)
return FMRES_SUPERCEDE
}
return FMRES_IGNORED
}
public bacon_touch(ent, id)
{
if (is_user_alive(id) && g_zombie[id])
return HAM_SUPERCEDE
return HAM_IGNORED
}
public fw_Touch(pToucher, pTouched)
{
if ( pev_valid(pToucher))
{
static className[32], className2[32]
pev(pToucher, pev_classname, className, 31)
if ( pev_valid(pTouched)) pev(pTouched, pev_classname, className2, 31)
if ( equal(className, CLASS_FLESH))
{
static attacker ; attacker = pev(pToucher, pev_owner)
if ( pev_valid(pTouched))
{
if ( equal(className2, "player") && is_user_connected(pTouched))
{
static origin[3], Float: damage
get_user_origin(pTouched, origin)
damage = get_pcvar_float(cvar_fdamage)
static CsTeams:team[2]
team[0] = cs_get_user_team(pTouched), team[1] = cs_get_user_team(attacker)
if (attacker == pTouched)
return FMRES_SUPERCEDE
if (!get_cvar_num("mp_friendlyfire") && team[0] == team[1])
return FMRES_SUPERCEDE
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(TE_BLOOD);
write_coord(origin[0]);
write_coord(origin[1]);
write_coord(origin[2] + 10);
write_coord(random_num(-360, 360));
write_coord(random_num(-360, 360));
write_coord(-10);
write_byte(70);
write_byte(random_num(15, 35));
message_end()
ExecuteHam(Ham_TakeDamage, pTouched, pToucher, attacker, damage, DMG_GENERIC)
}
else if ( equal(className2, "func_breakable")) dllfunc(DLLFunc_Use, pTouched, attacker)
else if ( equal(className2, CLASS_FLESH)) return FMRES_SUPERCEDE
}
engfunc(EngFunc_RemoveEntity, pToucher)
}
}
return FMRES_IGNORED
}
public fw_Think_lights(iEnt)
{
if (!pev_valid(iEnt))
return FMRES_IGNORED;
static className[32]
pev(iEnt, pev_classname, className, 31);
static Float:gametime; gametime = get_gametime()
if (equal(className, CLASS_WEATHER))
{
switch (get_pcvar_num(cvar_lights))
{
case 0:
{
engfunc(EngFunc_LightStyle, 0, "m")
set_pev(iEnt, pev_nextthink, gametime + 0.1);
}
case 1:
{
static thinkReturn, randNum;
if(!g_light_flashing)
{
randNum = random_num(0, 1);
if(randNum)
g_light_flashing = true;
g_light_num = random_num(1, 3);
dllfunc(DLLFunc_Use, iEnt, 0)
}
thinkReturn = lightning();
if(thinkReturn)
set_pev(iEnt, pev_nextthink, gametime + random_float(9.5, 16.5));
else
set_pev(iEnt, pev_nextthink, gametime + 0.1);
}
case 2:
{
engfunc(EngFunc_LightStyle, 0, "b")
set_pev(iEnt, pev_nextthink, gametime + 0.1);
}
default:
{
engfunc(EngFunc_LightStyle, 0, "a")
set_pev(iEnt, pev_nextthink, gametime + 0.1);
}
}
}
return FMRES_HANDLED;
}
lightning()
{
switch(g_light_num)
{
// Flash 1 time
case 1:
{
g_light_counter += 1;
switch(g_light_counter)
{
case 1: g_light_stylenum = 1;
case 2: g_light_stylenum = 2;
case 3: g_light_stylenum = 1;
case 4: g_light_stylenum = 0;
}
engfunc(EngFunc_LightStyle, 0, g_light_style[g_light_stylenum])
if(g_light_counter == 4)
{
g_light_counter = 0;
g_light_flashing = false;
return 1;
}
else
return 0;
}
// Flash 2 times
case 2:
{
g_light_counter += 1;
switch(g_light_counter)
{
case 1: g_light_stylenum = 1;
case 2: g_light_stylenum = 2;
case 3: g_light_stylenum = 1;
case 4: g_light_stylenum = 2;
case 5: g_light_stylenum = 1;
case 6: g_light_stylenum = 0;
}
engfunc(EngFunc_LightStyle, 0, g_light_style[g_light_stylenum])
if(g_light_counter == 6)
{
g_light_counter = 0;
g_light_flashing = false;
return 1;
}
else
return 0;
}
// Flash 3 times
case 3:
{
g_light_counter += 1;
switch(g_light_counter)
{
case 1: g_light_stylenum = 1;
case 2: g_light_stylenum = 2;
case 3: g_light_stylenum = 1;
case 4: g_light_stylenum = 2;
case 5: g_light_stylenum = 1;
case 6: g_light_stylenum = 2;
case 7: g_light_stylenum = 1;
case 8: g_light_stylenum = 0;
}
engfunc(EngFunc_LightStyle, 0, g_light_style[g_light_stylenum])
if(g_light_counter == 8)
{
g_light_counter = 0;
g_light_flashing = false;
return 1;
}
else
return 0;
}
}
return 1;
}
}
I Need To Make Random Classes Hunter - Leaps To Front He Has 800Hp and he's only zombie who can leap, Smoker - Drags Players To Him Self 700Hp,Boomer - Explodes And Kill's People Next To Him and if you can make he pukes on human and human monitor makes green and thei can't see anything for about 5 seconds 450Hp,Tank Becomes One of The Players At Terrorists Team 1 at a time When tank Dies Another 1 player become Tank 3000Hp.And All The Classes (Hunter,Smoker,Boomer) Player Become Hunter He Died He respawned And He Become Smoker or Boomer or maybe Tank or Hunter Again, I Need To Do It Or Can You Help me Do It Please I'am new at this scripting thing.
And When You Make It Can You Compile It Please
|
|