| ~Ice*shOt |
05-17-2009 15:28 |
Fix 1 error
PHP Code:
#include <amxmodx> #include <amxmisc> #include <fakemeta> #include <cstrike> #include <hamsandwich> #include <xs> #define PLUGIN "Mystic Swarm" #define VERSION "1.2" #define AUTHOR "xFrost" /*================================================================================ [CS Offesets] =================================================================================*/ //#define OFFSET_ARMOR 112 #define DMG_HEGRENADE (1<<24) /*================================================================================ [Hide HUD] =================================================================================*/ #define HIDE_HUD (1<<0) //crosshair, ammo, weapons list #define HIDE_FLASH (1<<1) //flashlight, + #define HIDE_HP_HUD (1<<3) //Health, armour and radar #define HIDE_MONEY (1<<5) //money, + #define HIDE_NONE (1<<7) //+ /* Symbol + mean that an additional crosshair will be drawn. That crosshair looks exactly like the one from Crosshair message.*/ /*================================================================================ [Tasks Offsets] =================================================================================*/ #define TASKID_STRIP 2046 #define TASKID_SHOWHUD 2931 #define TASKID_MODEL 3810 #define TASKID_NVG 8382 /*================================================================================ [Classnames] =================================================================================*/ #define CLASS_WEATHER "zswarm_weather" #define CLASS_AMBIENCE "zswarm_ambience" #define CLASS_FLESH "zswarm_flesh" /*================================================================================ [Sounds/Waves] =================================================================================*/ new const g_sound_thunder1[] = "ambience/thunder_clap.wav" new const g_sound_thunder2[] = "de_torn/torn_thndrstrike.wav" new const g_sound_ambience[] = "msx/amb.mp3" new const g_sound_miss[][] = { "msx/miss1_hunter.wav", "msx/miss2_hunter.wav" } new const g_sound_hit[][] = { "msx/strike1_hunter.wav", "msx/strike2_hunter.wav", "msx/strike3_hunter.wav" } new const g_sound_pain[][] = { "msx/pain1_hunter.wav", "msx/pain2_hunter.wav", "msx/pain3_hunter.wav", "msx/pain4_hunter.wav", "msx/pain5_hunter.wav", "msx/pain6_hunter.wav", "msx/pain7_hunter.wav" } new const g_sound_die[][] = { "msx/die1_hunter.wav", "msx/die2_hunter.wav", "msx/die3_hunter.wav", "msx/die4_hunter.wav", "msx/die5_hunter.wav", "msx/die6_hunter.wav" } /*================================================================================ [Models] =================================================================================*/ new const ZOMBIE_PLAYER_MODEL[][] = { "Hunter", "Boomer", "Smoker", "Tank" }; new const ZOMBIE_MODEL[][] = { "models/player/Hunter/Hunter.mdl", "models/player/Boomer/Boomer.mdl", "models/player/Smoker/Smoker.mdl", "models/player/Tank/Tank.mdl" }; new const ZOMBIE_CLAWS[] = { "models/v_knife_swarm.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" } /*================================================================================ [Global Variables] =================================================================================*/ new mod_name[32] = "Mystic 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" } /*================================================================================ [CVARS] =================================================================================*/ 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 /*================================================================================ [Precache] =================================================================================*/ 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_PrecacheModel, ZOMBIE_MODEL); engfunc(EngFunc_PrecacheSound, g_sound_thunder1); engfunc(EngFunc_PrecacheSound, g_sound_thunder2); engfunc(EngFunc_PrecacheSound, g_sound_ambience); new 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]) } /*================================================================================ [Plugin start] =================================================================================*/ public plugin_init() { if (!get_pcvar_num(cvar_switch)) return cvar_health = register_cvar("zswarm_health", "700") cvar_armour = register_cvar("zswarm_armour", "0") cvar_gravity = register_cvar("zswarm_gravity", "700") cvar_speed = register_cvar("zswarm_speed", "245") 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", "10") cvar_fsdamage = register_cvar("zswarm_fsdamage","50") 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, "message", g_sound_thunder1) fm_set_kvd(iEnt, "targetname", "boom") fm_set_kvd(iEnt, "pitchstart", "100") fm_set_kvd(iEnt, "pitch", "100") fm_set_kvd(iEnt, "health", "10") fm_set_kvd(iEnt, "spawnflags", "49") 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_NONE) 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) 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_ATTACK2) 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) set_pev(iEnt, pev_message, g_sound_thunder1); else set_pev(iEnt, pev_message, g_sound_thunder2); 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; } /*================================================================================ [Tasks] =================================================================================*/ public Task_Restart() { new mapname[32] get_mapname(mapname, 31) server_cmd("changelevel %s", mapname) } public Task_ShowHUD(task) { new id = task - TASKID_SHOWHUD if(!is_user_alive(id) || !g_zombie[id]) return PLUGIN_HANDLED static health, armour health = get_user_health(id) armour = get_user_armor(id) set_hudmessage(255, 180, 0, 0.02, 0.97, 0, 0.0, 0.3, 0.0, 0.0) ShowSyncHudMsg(id, g_hudsync , "Health: %d | Armour: %d", health, armour) set_task(0.1, "Task_ShowHUD", TASKID_SHOWHUD + id) return PLUGIN_CONTINUE } public Task_Strip(task) { new id = task - TASKID_STRIP if (cs_get_user_submodel(id)) cs_set_user_submodel(id, 0) fm_strip_user_weapons(id) bacon_give_weapon(id, "weapon_knife") set_pev(id, pev_viewmodel2, ZOMBIE_CLAWS) set_pev(id, pev_weaponmodel2, "") } public Task_Model(task) { new id = task - TASKID_MODEL; fm_set_user_model(id, player_model[id]) } public Task_NVG(task) { new id = task - TASKID_NVG engclient_cmd(id, "nightvision") for(new i = 1; i < 10; i++) client_cmd(id, "-nvgadjust") } /*================================================================================ [Stocks] =================================================================================*/ stock fm_strip_user_weapons(index) { static ent; 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_model(player, modelname[]) { engfunc(EngFunc_SetClientKeyValue, player, engfunc(EngFunc_GetInfoKeyBuffer, player), "model", modelname) g_model[player] = true } stock fm_get_user_model(player, model[], len) { engfunc(EngFunc_InfoKeyValue, engfunc(EngFunc_GetInfoKeyBuffer, player), "model", model, len) } stock fm_reset_user_model(player) { g_model[player] = false dllfunc(DLLFunc_ClientUserInfoChanged, player, engfunc(EngFunc_GetInfoKeyBuffer, player)) } stock fm_set_kvd(entity, const key[], const value[], const classname[] = "") { if (classname[0]) set_kvd(0, KV_ClassName, classname); else { new class[32]; pev(entity, pev_classname, class, sizeof class - 1); set_kvd(0, KV_ClassName, class); } set_kvd(0, KV_KeyName, key); set_kvd(0, KV_Value, value); set_kvd(0, KV_fHandled, 0); return dllfunc(DLLFunc_KeyValue, entity, 0); } stock fm_find_ent_by_owner(index, const classname[], owner, jghgtype = 0) { new strtype[11] = "classname", ent = index; switch (jghgtype) { case 1: strtype = "target"; case 2: strtype = "targetname"; } while ((ent = engfunc(EngFunc_FindEntityByString, ent, strtype, classname)) && pev(ent, pev_owner) != owner) {} return ent; } stock bool:fm_strip_user_gun(index, wid = 0, const wname[] = "") { new ent_class[32]; if (!wid && wname[0]) copy(ent_class, sizeof ent_class - 1, wname); else { new weapon = wid, clip, ammo; if (!weapon && !(weapon = get_user_weapon(index, clip, ammo))) return false; get_weaponname(weapon, ent_class, sizeof ent_class - 1); } new ent_weap = fm_find_ent_by_owner(-1, ent_class, index); if (!ent_weap) return false; engclient_cmd(index, "drop", ent_class); new ent_box = pev(ent_weap, pev_owner); if (!ent_box || ent_box == index) return false; dllfunc(DLLFunc_Think, ent_box); return true; } stock bacon_give_weapon(index, weapon[]) { if(!equal(weapon,"weapon_", 7)) return 0 static ent; ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, weapon)) if(!pev_valid(ent)) return 0 set_pev(ent, pev_spawnflags, SF_NORESPAWN) dllfunc(DLLFunc_Spawn, ent) if(!ExecuteHamB(Ham_AddPlayerItem, index, any:ent) || !ExecuteHamB(Ham_Item_AttachToPlayer, ent, any:index)) { if(pev_valid(ent)) set_pev(ent, pev_flags, pev(ent, pev_flags) & FL_KILLME) return 0 } return 1 }
Can fix this mod error? please
|