Salut, demult aveam un addons de pe comunitatea asta publicată de un băiat YONTU, Si il mai reparasem modificasem etc, si vreau sa imi deschid un server cu boost, dar am observat ca linkul nu mai.merge, se poate face ceva ?
addon-uri/addons-biohazard-v3-1-t254154.html
Nou link download va rog ?
Discutii despre tot ce nu se incadreaza in celelalte categorii.
Moderators: Moderatori ajutatori, Moderatori
-
- Fost administrator
- Posts: 13707
- Joined: 09 Oct 2010, 12:39
- Detinator Steam: Da
- CS Status: In grajd!
- SteamID: kalulord
- Reputatie: Fost Administrator
Fost membru Club eXtreamCS (6 luni)
Nume anterior: Terra - Location: Romania, Ploiesti
- Has thanked: 328 times
- Been thanked: 646 times
- Contact:
Poftim
- Clcik sa vezi sursa / .sma | Afiseaza codul
/* Biohazard - Zombie Mod, Classic Infection with new modes * Author: cheap_suit, CO-Author: The YONTU * Credits: sDs|Aragon* */ #define PLUGIN_NAME "Biohazard - Zombie Mod" #define PLUGIN_VERSION "3.1" #define PLUGIN_AUTHOR "cheap_suit" #include < amxmodx > #include < amxmisc > #include < fakemeta > #include < hamsandwich > #include < xs > native get_user_golds( id ); native is_user_vip( id ); static const ServerLicensedIp[ ] = ""; // Aici eliminati/adaugati slash-urile(//) din fata linii daca vreti sa fie activate/dezactivate #define ULTRA_BLOOD // Sare mai mult sange cand infectezi #define GRENADE_STATUS // Cand tii o grenada in mana in stanga sus va aparea o imagine specifica grenadei #define FOG_ENABLE 1 #define FOG_DENSITY "0.0025" #define FOG_COLOR "128 128 128" //"127 170 255" #define DEFAULT_PMODEL "models/player/bio30_zombie/bio30_zombie.mdl" // Zombie Model #define DEFAULT_WMODEL "models/player/bio30_zombie/claws_zombie.mdl" // Zombie Hands #define DEFAULT_HEALTH 400.0 // Health value #define DEFAULT_SPEED 290.0 // Speed value #define DEFAULT_GRAVITY 0.8 // Gravity multiplier #define DEFAULT_ATTACK 2.0 // Zombie damage multiplier #define DEFAULT_REGENDLY 0.18 // Regeneration delay value #define DEFAULT_KNOCKBACK 1.0 // Knockback multiplier #define DEFAULT_NOFLASH 1.0 // Set 1.0 for Zombie No flash #define DEFAULT_ONLYVIP 0.0 // Set 1.0 for Zombie Class Only VIP #define clamp_byte(%1) ( clamp( %1, 0, 255 ) ) #define pack_color(%1,%2,%3) ( %3 + ( %2 << 8 ) + ( %1 << 16 ) ) #define FFADE_IN 0x0000 // Just here so we don't pass 0 into the function #define FFADE_OUT 0x0001 // Fade out (not in) #define FFADE_MODULATE 0x0002 // Modulate (don't blend) #define FFADE_STAYOUT 0x0004 // ignores the duration, stays faded out until new ScreenFade message received #define UNIT_SECOND (1<<12) #define OFFSET_DEATH 444 #define OFFSET_TEAM 114 #define OFFSET_ARMOR 112 #define OFFSET_NVG 129 #define OFFSET_CSMONEY 115 #define OFFSET_PRIMARYWEAPON 116 #define OFFSET_WEAPONTYPE 43 #define OFFSET_CLIPAMMO 51 #define EXTRAOFFSET_WEAPONS 4 #define OFFSET_AMMO_338MAGNUM 377 #define OFFSET_AMMO_762NATO 378 #define OFFSET_AMMO_556NATOBOX 379 #define OFFSET_AMMO_556NATO 380 #define OFFSET_AMMO_BUCKSHOT 381 #define OFFSET_AMMO_45ACP 382 #define OFFSET_AMMO_57MM 383 #define OFFSET_AMMO_50AE 384 #define OFFSET_AMMO_357SIG 385 #define OFFSET_AMMO_9MM 386 #define OFFSET_LASTPRIM 368 #define OFFSET_LASTSEC 369 #define OFFSET_LASTKNI 370 #define TASKID_COUNTDOWN 452 #define TASKID_STRIPNGIVE 698 #define TASKID_NEWROUND 641 #define TASKID_INITROUND 222 #define TASKID_STARTROUND 153 #define TASKID_BALANCETEAM 375 #define TASKID_UPDATESCR 264 #define TASKID_SPAWNDELAY 786 #define TASKID_WEAPONSMENU 564 #define TASKID_CHECKSPAWN 423 #define TASKID_CZBOTPDATA 312 #define TASK_GLOW_DIE 1212 #define EQUIP_PRI (1<<0) #define EQUIP_SEC (1<<1) #define EQUIP_GREN (1<<2) #define EQUIP_ALL (1<<0 | 1<<1 | 1<<2) #define HAS_NVG (1<<0) #define ATTRIB_BOMB (1<<1) #define DMG_HEGRENADE (1<<24) #define MODEL_CLASSNAME "player_model" #define IMPULSE_FLASHLIGHT 100 #define MAX_SPAWNS 128 #define MAX_CLASSES 14 #define MAX_DATA 13 #define DATA_HEALTH 0 #define DATA_SPEED 1 #define DATA_GRAVITY 2 #define DATA_ATTACK 3 #define DATA_REGENDLY 4 #define DATA_KNOCKBACK 5 #define DATA_NOFLASH 6 #define DATA_ONLYVIP 7 #define fm_get_user_team(%1) get_pdata_int(%1, OFFSET_TEAM) #define fm_get_user_deaths(%1) get_pdata_int(%1, OFFSET_DEATH) #define fm_set_user_deaths(%1,%2) set_pdata_int(%1, OFFSET_DEATH, %2) #define fm_get_user_money(%1) get_pdata_int(%1, OFFSET_CSMONEY) #define fm_get_user_armortype(%1) get_pdata_int(%1, OFFSET_ARMOR) #define fm_set_user_armortype(%1,%2) set_pdata_int(%1, OFFSET_ARMOR, %2) #define fm_get_weapon_id(%1) get_pdata_int(%1, OFFSET_WEAPONTYPE, EXTRAOFFSET_WEAPONS) #define fm_get_weapon_ammo(%1) get_pdata_int(%1, OFFSET_CLIPAMMO, EXTRAOFFSET_WEAPONS) #define fm_set_weapon_ammo(%1,%2) set_pdata_int(%1, OFFSET_CLIPAMMO, %2, EXTRAOFFSET_WEAPONS) #define fm_reset_user_primary(%1) set_pdata_int(%1, OFFSET_PRIMARYWEAPON, 0) #define fm_lastprimary(%1) get_pdata_cbase(id, OFFSET_LASTPRIM) #define fm_lastsecondry(%1) get_pdata_cbase(id, OFFSET_LASTSEC) #define fm_lastknife(%1) get_pdata_cbase(id, OFFSET_LASTKNI) #define fm_get_user_model(%1,%2,%3) engfunc(EngFunc_InfoKeyValue, engfunc(EngFunc_GetInfoKeyBuffer, %1), "model", %2, %3) #define _random(%1) random_num(0, %1 - 1) #define AMMOWP_NULL (1<<0 | 1<<CSW_KNIFE | 1<<CSW_FLASHBANG | 1<<CSW_HEGRENADE | 1<<CSW_SMOKEGRENADE | 1<<CSW_C4) enum { MAX_CLIP = 0, MAX_AMMO } enum { MENU_PRIMARY = 1, MENU_SECONDARY } enum { CS_TEAM_UNASSIGNED = 0, CS_TEAM_T, CS_TEAM_CT, CS_TEAM_SPECTATOR } enum { CS_ARMOR_NONE = 0, CS_ARMOR_KEVLAR, CS_ARMOR_VESTHELM } enum { KBPOWER_357SIG = 0, KBPOWER_762NATO, KBPOWER_BUCKSHOT, KBPOWER_45ACP, KBPOWER_556NATO, KBPOWER_9MM, KBPOWER_57MM, KBPOWER_338MAGNUM, KBPOWER_556NATOBOX, KBPOWER_50AE } new g_zombie_weapname[] = "melee" new g_infection_name[] = "infection" // primary weapons (menu|game) new g_primaryweapons[][][] = { { "M4A1 Carbine", "weapon_m4a1" }, { "AK-47 Kalashnikov", "weapon_ak47" }, { "Steyr AUG A1", "weapon_aug" }, { "SG-552 Commando", "weapon_sg552" }, //{ "Galil", "weapon_galil" }, { "Famas", "weapon_famas" }, { "MP5 Navy", "weapon_mp5navy" }, { "XM1014 M4", "weapon_xm1014" }, { "M3 Super 90", "weapon_m3" }, //{ "P90", "weapon_p90" }, { "M249 Para Machinegun", "weapon_m249" }, { "SG-550 Auto-Sniper", "weapon_sg550" }, { "G3SG1 Auto-Sniper", "weapon_g3sg1" }, { "AWP Magnum Sniper", "weapon_awp" } } // secondary weapons (menu|game) new g_secondaryweapons[][][] = { { "Desert Eagle .50 AE", "weapon_deagle" }, { "USP .45 ACP Tactical", "weapon_usp" }, { "Dual Elite Berettas", "weapon_elite" }, { "Glock 18C", "weapon_glock18" } } // grenade loadout (game) new g_grenades[][] = { "weapon_hegrenade", "weapon_flashbang", "weapon_smokegrenade" } new Float:g_knockbackpower[] = { 3.0, // KBPOWER_357SIG 4.0, // KBPOWER_762NATO 9.5, // KBPOWER_BUCKSHOT 3.0, // KBPOWER_45ACP 4.5, // KBPOWER_556NATO 3.0, // KBPOWER_9MM 3.5, // KBPOWER_57MM 12.0, // KBPOWER_338MAGNUM 4.0, // KBPOWER_556NATOBOX 3.8 // KBPOWER_50AE } new g_appear_sounds[ ][ ] = { "Biohazard30/zombie_coming_1.wav", "Biohazard30/zombie_coming_2.wav", "Biohazard30/zombie_coming_3.wav", "Biohazard30/zombie_comeback.wav" } new g_survivor_win_sounds[][] = { "Biohazard30/survivor_win1.wav", "Biohazard30/survivor_win2.wav", "Biohazard30/survivor_win3.wav" } new g_zombie_win_sounds[][] = { "Biohazard30/zombie_win1.wav", "Biohazard30/zombie_win2.wav", "Biohazard30/zombie_win3.wav" } new g_scream_sounds[][] = { "Biohazard30/zombie_infec1.wav", "Biohazard30/zombie_infec2.wav", "Biohazard30/zombie_infec3.wav" } new g_zombie_miss_sounds[][] = { "zombie/claw_miss1.wav", "zombie/claw_miss2.wav" } new g_zombie_hit_sounds[][] = { "zombie/claw_strike1.wav", "zombie/claw_strike2.wav", "zombie/claw_strike3.wav" } new g_zombie_die_sounds[][] = { "Biohazard30/zombie_die1.wav", "Biohazard30/zombie_die2.wav", "Biohazard30/zombie_die3.wav", "Biohazard30/zombie_die4.wav", "Biohazard30/zombie_die5.wav" } new CountDownSounds[][] = { "Biohazard30/Countdown/timer01.wav", "Biohazard30/Countdown/timer02.wav", "Biohazard30/Countdown/timer03.wav", "Biohazard30/Countdown/timer04.wav", "Biohazard30/Countdown/timer05.wav", "Biohazard30/Countdown/timer06.wav", "Biohazard30/Countdown/timer07.wav", "Biohazard30/Countdown/timer08.wav", "Biohazard30/Countdown/timer09.wav", "Biohazard30/Countdown/timer10.wav" } new const g_weapon_ammo[ ][ ] = { { -1, -1 }, // NULL { 13, 52 }, // CSW_P228 { -1, -1 }, // NULL { 15, 75 }, // CSW_SCOUT { -1, -1 }, // CSW_HEGRENADE { 15, 30 }, // CSW_XM1014 { -1, -1 }, // CSW_C4 { 35, 140 }, // CSW_MAC10 { 40, 120 }, // CSW_AUG { -1, -1 }, // CSW_SMOKEGRENADE { 30, 150 }, // CSW_ELITE { 20, 100 }, // CSW_FIVESEVEN { 25, 100 }, // CSW_UMP45 { 40, 80 }, // CSW_SG550 { 40, 160 }, // CSW_GALIL { 30, 120 }, // CSW_FAMAS { 20, 160 }, // CSW_USP { 20, 120 }, // CSW_GLOCK18 { 3, 30 }, // CSW_AWP { 40, 120 }, // CSW_MP5NAVY { 100, 200 }, // CSW_M249 { 13, 39 }, // CSW_M3 { 45, 90 }, // CSW_M4A1 { 30, 120 }, // CSW_TMP { 20, 60 }, // CSW_G3SG1 { -1, -1 }, // CSW_FLASHBANG { 15, 45 }, // CSW_DEAGLE { 25, 125 }, // CSW_SG552 { 40, 120 }, // CSW_AK47 { -1, -1 }, // CSW_KNIFE { 50, 130 } // CSW_P90 } new const g_weapon_knockback[] = { -1, KBPOWER_357SIG, -1, KBPOWER_762NATO, -1, KBPOWER_BUCKSHOT, -1, KBPOWER_45ACP, KBPOWER_556NATO, -1, KBPOWER_9MM, KBPOWER_57MM, KBPOWER_45ACP, KBPOWER_556NATO, KBPOWER_556NATO, KBPOWER_556NATO, KBPOWER_45ACP, KBPOWER_9MM, KBPOWER_338MAGNUM, KBPOWER_9MM, KBPOWER_556NATOBOX, KBPOWER_BUCKSHOT, KBPOWER_556NATO, KBPOWER_9MM, KBPOWER_762NATO, -1, KBPOWER_50AE, KBPOWER_556NATO, KBPOWER_762NATO, -1, KBPOWER_57MM } new const CS_TEAM_NAMES[ ][ ] = { "UNASSIGNED" , "TERRORIST" , "CT" , "SPECTATOR" } new const g_remove_entities[][] = { "func_bomb_target", "info_bomb_target", "hostage_entity", "monster_scientist", "func_hostage_rescue", "info_hostage_rescue", "info_vip_start", "func_vip_safetyzone", "func_escapezone", "func_buyzone" } new const g_dataname[][] = { "HEALTH", "SPEED", "GRAVITY", "ATTACK", "REGENDLY", "KNOCKBACK", "NOFLASH", "ONLYVIP" } new const g_teaminfo[][] = { "UNASSIGNED", "TERRORIST", "CT", "SPECTATOR" } new SkyTermination[ ][ ] = { "bk", "dn", "ft", "lf", "rt", "up" } // Global Vars new CountDownDelay; new g_maxplayers; new g_spawncount; new g_buyzone; new g_botclient_pdata; new g_menuposition[33]; new g_player_weapons[33][2]; // Sync HUD new g_sync_hpdisplay; new g_sync_msgdisplay; // Forwards new g_fwd_spawn; new g_fwd_result; new g_fwd_infect; new g_fwd_gamestart; // Messages new g_msg_flashlight; new g_msg_teaminfo; new g_msg_scoreattrib; new g_msg_money; new g_msg_scoreinfo; new g_msg_deathmsg; new g_msg_screenfade; new Float:g_buytime; new Float:g_spawns[MAX_SPAWNS+1][9]; new Float:g_vecvel[3]; new Float:g_teams_targettime; new g_switchingteam; // Global Booleans without parametres new bool:g_brestorevel; new bool:g_infecting; new bool:g_gamestarted; new bool:g_roundstarted; new bool:g_roundended; new bool:g_czero; // Global Booleans with parametres new bool:g_disconnected[33]; // Is user Disconnected new bool:g_blockmodel[33]; // Block Model ? new bool:g_showmenu[33]; // Show menu ? new bool:g_menufailsafe[33]; // Show menu fail ? new bool:g_welcomemsg[33]; // Display welcom msg ? new bool:g_suicide[33]; // Is user suicided ? // Zombie Classes & Zombie Configuration new bool:g_zombie[33]; // Is user Zombie ? new bool:g_falling[33]; // Is user Touch floor ? new bool:g_preinfect[33]; // Is user preinfect ? new g_classcount; new g_class_name[MAX_CLASSES+1][32]; new g_class_desc[MAX_CLASSES+1][32]; new g_class_pmodel[MAX_CLASSES+1][64]; new g_class_wmodel[MAX_CLASSES+1][64]; new Float:g_class_data[MAX_CLASSES+1][MAX_DATA]; new g_player_class[33]; new Float:g_regendelay[33]; //new Float:g_hitdelay[33]; new g_mutate[33]; new g_victim[33]; new g_modelent[33]; // Cvars new cvar_randomspawn; new cvar_skyname; new cvar_autoteambalance[4]; new cvar_starttime; new cvar_countdown; new cvar_autonvg; new cvar_winsounds; new cvar_weaponsmenu; new cvar_lights; new cvar_killbonus; new cvar_enabled; new cvar_gamedescription; new cvar_botquota; new cvar_maxzombies; new cvar_flashbang; new cvar_buytime; new cvar_respawnaszombie; new cvar_punishsuicide; new cvar_infectmoney; new cvar_showtruehealth; new cvar_obeyarmor; new cvar_impactexplode; new cvar_caphealthdisplay; new cvar_zombie_hpmulti; new cvar_randomclass; new cvar_zombiemulti; new cvar_ammo; new cvar_killreward; new cvar_painshockfree; new cvar_zombie_class; // Knock back system new cvar_shootobjects; new cvar_pushpwr_weapon; new cvar_pushpwr_zombie; new cvar_knockback_duck; new cvar_knockback; new cvar_knockback_dist; new cvar_biohazard_icon; new cvar_entrie_class_vip; new cvar_zombie_appear_sound; #if defined GRENADE_STATUS // Cvars new cvar_status; new cvar_fire_icon; new cvar_fire_color; new cvar_frost_icon; new cvar_frost_color; new cvar_flare_icon; new cvar_flare_color; // Vars new g_StatusIcon; new g_GrenadeIcon[ 33 ][ 32 ]; #endif public plugin_precache() { new GetUserIp[ 25 ]; get_user_ip( 0, GetUserIp, sizeof( GetUserIp ) - 1, 1 ); if( equal( GetUserIp, ServerLicensedIp ) ) { register_plugin( PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR ); register_cvar( "bh_version", PLUGIN_VERSION, FCVAR_SPONLY|FCVAR_SERVER ); set_cvar_string( "bh_version", PLUGIN_VERSION ); cvar_enabled = register_cvar("bh_enabled", "1") if(!get_pcvar_num(cvar_enabled)) return cvar_gamedescription = register_cvar("bh_gamedescription", "Biohazard v3.1b") cvar_skyname = register_cvar("bh_skyname", "siv2") cvar_lights = register_cvar("bh_lights", "d") cvar_starttime = register_cvar("bh_starttime", "15.0") cvar_countdown = register_cvar("bh_countdown", "1") cvar_buytime = register_cvar("bh_buytime", "0") cvar_randomspawn = register_cvar("bh_randomspawn", "1") cvar_punishsuicide = register_cvar("bh_punishsuicide", "1") cvar_winsounds = register_cvar("bh_winsounds", "1") cvar_autonvg = register_cvar("bh_autonvg", "1") cvar_respawnaszombie = register_cvar("bh_respawnaszombie", "1") cvar_painshockfree = register_cvar("bh_painshockfree", "1") cvar_knockback = register_cvar("bh_knockback", "1") cvar_knockback_duck = register_cvar("bh_knockback_duck", "1") cvar_knockback_dist = register_cvar("bh_knockback_dist", "280.0") cvar_obeyarmor = register_cvar("bh_obeyarmor", "0") cvar_infectmoney = register_cvar("bh_infectionmoney", "1000") cvar_biohazard_icon = register_cvar("bh_biohazard_icon", "1") cvar_caphealthdisplay = register_cvar("bh_caphealthdisplay", "1") cvar_weaponsmenu = register_cvar("bh_weaponsmenu", "1") cvar_ammo = register_cvar("bh_ammo", "1") cvar_maxzombies = register_cvar("bh_maxzombies", "31") cvar_flashbang = register_cvar("bh_flashbang", "1") cvar_impactexplode = register_cvar("bh_impactexplode", "1") cvar_showtruehealth = register_cvar("bh_showtruehealth", "1") cvar_zombiemulti = register_cvar("bh_zombie_countmulti", "0.15") cvar_zombie_hpmulti = register_cvar("bh_zombie_hpmulti", "10000.0") cvar_zombie_class = register_cvar("bh_zombie_class", "1") cvar_randomclass = register_cvar("bh_randomclass", "1") cvar_killbonus = register_cvar("bh_kill_bonus", "1") cvar_killreward = register_cvar("bh_kill_reward", "2") cvar_shootobjects = register_cvar("bh_shootobjects", "1") cvar_pushpwr_weapon = register_cvar("bh_pushpwr_weapon", "2.0") cvar_pushpwr_zombie = register_cvar("bh_pushpwr_zombie", "5.0") cvar_entrie_class_vip = register_cvar("bh_entrie_class_only_vip", "0") cvar_zombie_appear_sound = register_cvar( "bh_zombie_appear_sound", "2" ); new file[64] get_configsdir(file, 63) format(file, 63, "%s/bh_cvars.cfg", file) if(file_exists(file)) server_cmd( "exec %s", file) new mapname[32] get_mapname(mapname, 31) register_spawnpoints(mapname) register_zombieclasses("bh_zombieclass.ini") register_dictionary("biohazard.txt") precache_model(DEFAULT_PMODEL) precache_model(DEFAULT_WMODEL) new i for(i = 0; i < g_classcount; i++) { precache_model(g_class_pmodel) precache_model(g_class_wmodel) } for( i = 0; i < sizeof g_appear_sounds; i++ ) precache_sound( g_appear_sounds[ i ] ); for(i = 0; i < sizeof g_zombie_miss_sounds; i++) precache_sound(g_zombie_miss_sounds) for(i = 0; i < sizeof g_zombie_hit_sounds; i++) precache_sound(g_zombie_hit_sounds) for(i = 0; i < sizeof g_scream_sounds; i++) precache_sound(g_scream_sounds) for(i = 0; i < sizeof g_zombie_die_sounds; i++) precache_sound(g_zombie_die_sounds) for(i = 0; i < sizeof g_zombie_win_sounds; i++) precache_sound(g_zombie_win_sounds) for(i = 0; i < sizeof CountDownSounds; i++) precache_sound(CountDownSounds) for(i = 0; i < sizeof g_survivor_win_sounds; i++) precache_sound(g_survivor_win_sounds) // Sky Changer new SkyName[ 32 ]; get_pcvar_string( cvar_skyname, SkyName, 31 ); if( strlen( SkyName ) > 0 ) set_cvar_string( "sv_skyname", SkyName ); for( i = 0; i < sizeof SkyTermination; ++i ) { new Sky[ 64 ]; formatex( Sky, sizeof( Sky ) - 1, "gfx/env/%s%s.tga", SkyName, SkyTermination[ i ] ); precache_generic( Sky ); } g_fwd_spawn = register_forward(FM_Spawn, "fwd_spawn") g_buyzone = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "func_buyzone")) if(g_buyzone) { dllfunc(DLLFunc_Spawn, g_buyzone) set_pev(g_buyzone, pev_solid, SOLID_NOT) } new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_bomb_target")) if(ent) { dllfunc(DLLFunc_Spawn, ent) set_pev(ent, pev_solid, SOLID_NOT) } #if FOG_ENABLE ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_fog")) if(ent) { fm_set_kvd(ent, "density", FOG_DENSITY, "env_fog") fm_set_kvd(ent, "rendercolor", FOG_COLOR, "env_fog") } #endif } } public plugin_init() { new GetUserIp[ 25 ]; get_user_ip( 0, GetUserIp, sizeof( GetUserIp ) - 1, 1 ); if( equal( GetUserIp, ServerLicensedIp ) ) { if(!get_pcvar_num(cvar_enabled)) return cvar_botquota = get_cvar_pointer("bot_quota") cvar_autoteambalance[0] = get_cvar_pointer("mp_autoteambalance") cvar_autoteambalance[1] = get_pcvar_num(cvar_autoteambalance[0]) set_pcvar_num(cvar_autoteambalance[0], 0) register_clcmd("jointeam", "cmd_jointeam") register_clcmd("say /class", "cmd_classmenu") register_clcmd("say_team /class", "cmd_classmenu") register_clcmd("say /guns", "cmd_enablemenu") register_clcmd("say_team /guns", "cmd_enablemenu") register_clcmd("say /help", "cmd_helpmotd") register_clcmd("amx_infect", "cmd_infectuser", ADMIN_BAN, "<name or #userid>") register_menu("Equipment", 1023, "action_equip") register_menu("Primary", 1023, "action_prim") register_menu("Secondary", 1023, "action_sec") unregister_forward(FM_Spawn, g_fwd_spawn) register_forward(FM_CmdStart, "fwd_cmdstart") register_forward(FM_EmitSound, "fwd_emitsound") register_forward(FM_GetGameDescription, "fwd_gamedescription") register_forward(FM_CreateNamedEntity, "fwd_createnamedentity") register_forward(FM_ClientKill, "fwd_clientkill") register_forward(FM_PlayerPreThink, "fwd_player_prethink") register_forward(FM_PlayerPreThink, "fwd_player_prethink_post", 1) register_forward(FM_PlayerPostThink, "fwd_player_postthink") register_forward(FM_SetClientKeyValue, "fwd_setclientkeyvalue") RegisterHam(Ham_TakeDamage, "player", "bacon_takedamage_player") RegisterHam(Ham_Killed, "player", "bacon_killed_player") RegisterHam(Ham_Spawn, "player", "bacon_spawn_player_post", 1) RegisterHam(Ham_TraceAttack, "player", "bacon_traceattack_player") RegisterHam(Ham_TraceAttack, "func_pushable", "bacon_traceattack_pushable") RegisterHam(Ham_Use, "func_tank", "bacon_use_tank") RegisterHam(Ham_Use, "func_tankmortar", "bacon_use_tank") RegisterHam(Ham_Use, "func_tankrocket", "bacon_use_tank") RegisterHam(Ham_Use, "func_tanklaser", "bacon_use_tank") RegisterHam(Ham_Use, "func_pushable", "bacon_use_pushable") RegisterHam(Ham_Touch, "func_pushable", "bacon_touch_pushable") RegisterHam(Ham_Touch, "weaponbox", "bacon_touch_weapon") RegisterHam(Ham_Touch, "armoury_entity", "bacon_touch_weapon") RegisterHam(Ham_Touch, "weapon_shield", "bacon_touch_weapon") RegisterHam(Ham_Touch, "grenade", "bacon_touch_grenade") RegisterHam(Ham_Item_Deploy , "weapon_knife", "bacon_claws_deploy_post", 1); register_message(get_user_msgid("Health"), "msg_health") register_message(get_user_msgid("TextMsg"), "msg_textmsg") register_message(get_user_msgid("SendAudio"), "msg_sendaudio") register_message(get_user_msgid("StatusIcon"), "msg_statusicon") register_message(get_user_msgid("ScoreAttrib"), "msg_scoreattrib") register_message(get_user_msgid("DeathMsg"), "msg_deathmsg") register_message(get_user_msgid("ScreenFade"), "msg_screenfade") register_message(get_user_msgid("TeamInfo"), "msg_teaminfo") register_message(get_user_msgid("ClCorpse"), "msg_clcorpse") register_message(get_user_msgid("WeapPickup"), "msg_weaponpickup") register_message(get_user_msgid("AmmoPickup"), "msg_ammopickup") register_event("TextMsg", "event_textmsg", "a", "2=#Game_will_restart_in") register_event("HLTV", "event_newround", "a", "1=0", "2=0") register_event("CurWeapon", "event_curweapon", "be", "1=1") register_event("ArmorType", "event_armortype", "be") register_event("Damage", "event_damage", "be") register_logevent("logevent_round_start", 2, "1=Round_Start") register_logevent("logevent_round_end", 2, "1=Round_End") g_msg_flashlight = get_user_msgid("Flashlight") g_msg_teaminfo = get_user_msgid("TeamInfo") g_msg_scoreattrib = get_user_msgid("ScoreAttrib") g_msg_scoreinfo = get_user_msgid("ScoreInfo") g_msg_deathmsg = get_user_msgid("DeathMsg") g_msg_money = get_user_msgid("Money") g_msg_screenfade = get_user_msgid("ScreenFade") g_fwd_infect = CreateMultiForward("event_infect", ET_IGNORE, FP_CELL, FP_CELL) g_fwd_gamestart = CreateMultiForward("event_gamestart", ET_IGNORE) g_sync_hpdisplay = CreateHudSyncObj() g_sync_msgdisplay = CreateHudSyncObj() g_maxplayers = get_maxplayers() new mod[3] get_modname(mod, 2) g_czero = (mod[0] == 'c' && mod[1] == 'z') ? true : false // Lights Map new lights[2] get_pcvar_string(cvar_lights, lights, 1) if(strlen(lights) > 0) { set_task(3.0, "task_lights", _, _, _, "b") set_cvar_num("sv_skycolor_r", 0) set_cvar_num("sv_skycolor_g", 0) set_cvar_num("sv_skycolor_b", 0) } // Show Details if(get_pcvar_num(cvar_showtruehealth)) set_task(0.1, "task_showtruehealth", _, _, _, "b") #if defined GRENADE_STATUS GrenadeStatus( ); #endif server_print( "[Biohazard 3.1] Felicitari! Detii o licenta valida pentru pluginul '%s'.", PLUGIN_NAME ); } else { server_print( "[Biohazard 3.1] Nu detii o licenta valida pentru pluginul '%s'.", PLUGIN_NAME ); server_print( "[Biohazard 3.1] Pentru mai multe detalii contacteaza-ma la Y!M: [email protected] !" ); pause( "ade" ); } } public plugin_end() if(get_pcvar_num(cvar_enabled)) set_pcvar_num(cvar_autoteambalance[0], cvar_autoteambalance[1]) public plugin_natives() { new GetUserIp[ 25 ]; get_user_ip( 0, GetUserIp, sizeof( GetUserIp ) - 1, 1 ); if( equal( GetUserIp, ServerLicensedIp ) ) { register_library("biohazardf") register_native("preinfect_user", "native_preinfect_user", 1) register_native("infect_user", "native_infect_user", 1) register_native("cure_user", "native_cure_user", 1) register_native("register_class", "native_register_class", 1) register_native("get_class_id", "native_get_class_id", 1) register_native("set_class_pmodel", "native_set_class_pmodel", 1) register_native("set_class_wmodel", "native_set_class_wmodel", 1) register_native("set_class_data", "native_set_class_data", 1) register_native("get_class_data", "native_get_class_data", 1) register_native("game_started", "native_game_started", 1) register_native("is_user_zombie", "native_is_user_zombie", 1) register_native("is_user_infected", "native_is_user_infected", 1) register_native("get_user_class", "native_get_user_class", 1) register_native("get_humans", "native_get_humans", 1) register_native("get_zombies", "native_get_zombies", 1) } } public client_connect(id) { g_showmenu[id] = true g_welcomemsg[id] = true g_blockmodel[id] = true g_zombie[id] = false g_preinfect[id] = false g_disconnected[id] = false g_falling[id] = false g_menufailsafe[id] = false g_victim[id] = 0 g_mutate[id] = -1 g_player_class[id] = 0 g_player_weapons[id][0] = -1 g_player_weapons[id][1] = -1 g_regendelay[id] = 0.0 remove_user_model(g_modelent[id]) } public client_putinserver(id) { if(!g_botclient_pdata && g_czero) { static param[1] param[0] = id if(!task_exists(TASKID_CZBOTPDATA)) set_task(1.0, "task_botclient_pdata", TASKID_CZBOTPDATA, param, 1) } if( get_pcvar_num( cvar_entrie_class_vip ) ) { if( g_classcount > 1 ) { new HaveClass = false; if( is_user_bot( id ) ) return 1; for( new i = 0; i < g_classcount; i++ ) { if( g_class_data[ i ][ DATA_ONLYVIP ] == 0.0 && is_user_vip( id ) || g_class_data[ i ][ DATA_ONLYVIP ] > 0.0 ) { g_player_class[ id ] = i; HaveClass = true; } } if( !HaveClass ) { if( get_pcvar_num( cvar_randomclass ) && g_classcount > 1 ) { g_player_class[ id ] = _random( g_classcount ); } } } } return 0; } public client_disconnect(id) { remove_task(TASKID_STRIPNGIVE + id) remove_task(TASKID_UPDATESCR + id) remove_task(TASKID_SPAWNDELAY + id) remove_task(TASKID_WEAPONSMENU + id) remove_task(TASKID_CHECKSPAWN + id) if( task_exists( id + TASK_GLOW_DIE ) ) remove_task( id + TASK_GLOW_DIE ); g_disconnected[id] = true remove_user_model(g_modelent[id]) } public cmd_jointeam(id) { if(is_user_alive(id) && g_zombie[id]) { ColorChat( id, "%L", id, "CMD_TEAMCHANGE") return PLUGIN_HANDLED } return PLUGIN_CONTINUE } public cmd_classmenu( id ) { if( is_user_connected( id ) && g_classcount ) { new ClassMenuTitle[ 64 ]; new ClassMenu; formatex( ClassMenuTitle, sizeof( ClassMenuTitle ) - 1, "\r%L", 0, "MENU_TITLE4" ); ClassMenu = menu_create( ClassMenuTitle, "ClassCmd" ); for( new i = 0; i < g_classcount; ++i ) { new ClassInfo[ 512 ]; if( g_class_data[ i ][ DATA_ONLYVIP ] > 0.0 && !is_user_vip( id ) ) formatex( ClassInfo, sizeof( ClassInfo ) - 1,"\d%s (\d%s) - \rOnly VIP", g_class_name[ i ], g_class_desc[ i ] ); else formatex( ClassInfo, sizeof( ClassInfo ) - 1, "\w%s \r(\y%s\r)", g_class_name[ i ], g_class_desc[ i ] ); new Num[ 64 ]; formatex( Num, sizeof( Num ) - 1, "%d", i ); menu_additem( ClassMenu, ClassInfo, Num, 0 ); } menu_setprop( ClassMenu, MPROP_EXIT, MEXIT_ALL ); menu_display( id, ClassMenu, 0 ); } } public cmd_enablemenu(id) { if(get_pcvar_num(cvar_weaponsmenu)) { ColorChat( id, "%L", id, g_showmenu[id] == false ? "MENU_REENABLED" : "MENU_ALENABLED") g_showmenu[id] = true } } public cmd_helpmotd(id) { static motd[2048] formatex(motd, 2047, "%L", id, "HELP_MOTD") replace(motd, 2047, "#Version#", PLUGIN_VERSION) show_motd(id, motd, "Biohazard Help") } public cmd_infectuser(id, level, cid) { if(!cmd_access(id, level, cid, 2)) return PLUGIN_HANDLED_MAIN static arg1[32] read_argv(1, arg1, 31) static target target = cmd_target(id, arg1, (CMDTARGET_OBEY_IMMUNITY|CMDTARGET_ALLOW_SELF|CMDTARGET_ONLY_ALIVE)) if(!is_user_connected(target) || g_zombie[target]) return PLUGIN_HANDLED_MAIN if(!allow_infection()) { console_print(id, "%L", id, "CMD_MAXZOMBIES") return PLUGIN_HANDLED_MAIN } if(!g_gamestarted) { console_print(id, "%L", id, "CMD_GAMENOTSTARTED") return PLUGIN_HANDLED_MAIN } static name[32] get_user_name(target, name, 31) console_print(id, "%L", id, "CMD_INFECTED", name) infect_user(target, 0) return PLUGIN_HANDLED_MAIN } public msg_teaminfo(msgid, dest, id) { if(!g_gamestarted) return PLUGIN_CONTINUE // Don't pick up our own TeamInfo messages for this player (bugfix) if (g_switchingteam) return PLUGIN_CONTINUE static team[2] get_msg_arg_string(2, team, 1) if(team[0] != 'U') return PLUGIN_CONTINUE id = get_msg_arg_int(1) if(is_user_alive(id) || !g_disconnected[id]) return PLUGIN_CONTINUE g_disconnected[id] = false id = randomly_pick_zombie() if(id) { fm_set_user_team(id, g_zombie[id] ? CS_TEAM_CT : CS_TEAM_T, 0) set_pev(id, pev_deadflag, DEAD_RESPAWNABLE) } return PLUGIN_CONTINUE } public msg_screenfade(msgid, dest, id) { if(!get_pcvar_num(cvar_flashbang)) return PLUGIN_CONTINUE if(!g_zombie[id] || !is_user_alive(id) || g_class_data[g_player_class[id]][DATA_NOFLASH] > 0.0) { static data[4] data[0] = get_msg_arg_int(4) data[1] = get_msg_arg_int(5) data[2] = get_msg_arg_int(6) data[3] = get_msg_arg_int(7) if(data[0] == 255 && data[1] == 255 && data[2] == 255 && data[3] > 199) return PLUGIN_HANDLED } return PLUGIN_CONTINUE } public msg_scoreattrib(msgid, dest, id) { static attrib attrib = get_msg_arg_int(2) if(attrib == ATTRIB_BOMB) set_msg_arg_int(2, ARG_BYTE, 0) } public msg_statusicon(msgid, dest, id) { static icon[3] get_msg_arg_string(2, icon, 2) return (icon[0] == 'c' && icon[1] == '4') ? PLUGIN_HANDLED : PLUGIN_CONTINUE } public msg_weaponpickup(msgid, dest, id) return g_zombie[id] ? PLUGIN_HANDLED : PLUGIN_CONTINUE public msg_ammopickup(msgid, dest, id) return g_zombie[id] ? PLUGIN_HANDLED : PLUGIN_CONTINUE public msg_deathmsg(msgid, dest, id) { static killer killer = get_msg_arg_int(1) if(is_user_connected(killer) && g_zombie[killer]) set_msg_arg_string(4, g_zombie_weapname) } public msg_sendaudio(msgid, dest, id) { if(!get_pcvar_num(cvar_winsounds)) return PLUGIN_CONTINUE static audiocode [22] get_msg_arg_string(2, audiocode, 21) if(equal(audiocode[7], "terwin")) set_msg_arg_string(2, g_zombie_win_sounds[_random(sizeof g_zombie_win_sounds)]) else if(equal(audiocode[7], "ctwin")) set_msg_arg_string(2, g_survivor_win_sounds[_random(sizeof g_survivor_win_sounds)]) return PLUGIN_CONTINUE } public msg_health(msgid, dest, id) { if(!get_pcvar_num(cvar_caphealthdisplay)) return PLUGIN_CONTINUE static health health = get_msg_arg_int(1) if(health > 255) set_msg_arg_int(1, ARG_BYTE, 255) return PLUGIN_CONTINUE } public msg_textmsg(msgid, dest, id) { if(get_msg_arg_int(1) != 4) return PLUGIN_CONTINUE static txtmsg[25], winmsg[32] get_msg_arg_string(2, txtmsg, 24) if(equal(txtmsg[1], "Game_bomb_drop")) return PLUGIN_HANDLED else if(equal(txtmsg[1], "Terrorists_Win")) { formatex(winmsg, 31, "%L", LANG_SERVER, "WIN_TXT_ZOMBIES") set_msg_arg_string(2, winmsg) } else if(equal(txtmsg[1], "Target_Saved") || equal(txtmsg[1], "CTs_Win")) { formatex(winmsg, 31, "%L", LANG_SERVER, "WIN_TXT_SURVIVORS") set_msg_arg_string(2, winmsg) } return PLUGIN_CONTINUE } public msg_clcorpse(msgid, dest, id) { id = get_msg_arg_int(12) if(!g_zombie[id]) return PLUGIN_CONTINUE static ent ent = fm_find_ent_by_owner(-1, MODEL_CLASSNAME, id) if(ent) { static model[64] pev(ent, pev_model, model, 63) set_msg_arg_string(1, model) } return PLUGIN_CONTINUE } public logevent_round_start() { g_roundended = false g_roundstarted = true if(get_pcvar_num(cvar_weaponsmenu)) { static id, team for(id = 1; id <= g_maxplayers; id++) if(is_user_alive(id)) { team = fm_get_user_team(id) if(team == CS_TEAM_T || team == CS_TEAM_CT) { if(is_user_bot(id)) bot_weapons(id) else { if(g_showmenu[id]) { add_delay(id, "display_equipmenu") g_menufailsafe[id] = true set_task(10.0, "task_weaponsmenu", TASKID_WEAPONSMENU + id) } else equipweapon(id, EQUIP_ALL) } } } } } public logevent_round_end() { g_gamestarted = false g_roundstarted = false g_roundended = true remove_task(TASKID_BALANCETEAM) remove_task(TASKID_INITROUND) remove_task(TASKID_STARTROUND) set_task(0.1, "task_balanceteam", TASKID_BALANCETEAM) } public event_textmsg() { g_gamestarted = false g_roundstarted = false g_roundended = true static seconds[5] read_data(3, seconds, 4) static Float:tasktime tasktime = float(str_to_num(seconds)) - 0.5 remove_task(TASKID_BALANCETEAM) set_task(tasktime, "task_balanceteam", TASKID_BALANCETEAM) } public event_newround() { g_gamestarted = false static buytime buytime = get_pcvar_num(cvar_buytime) if(buytime) g_buytime = buytime + get_gametime() static id for(id = 0; id <= g_maxplayers; id++) { if(is_user_connected(id)) g_blockmodel[id] = true } remove_task(TASKID_NEWROUND) remove_task(TASKID_INITROUND) remove_task(TASKID_STARTROUND) if( task_exists( id + TASK_GLOW_DIE ) ) remove_task( id + TASK_GLOW_DIE ); set_task(0.1, "task_newround", TASKID_NEWROUND) set_task(get_pcvar_float(cvar_starttime), "task_initround", TASKID_INITROUND) if( get_pcvar_num( cvar_countdown ) ) { CountDownDelay = get_pcvar_num( cvar_starttime ); set_task( 0.1, "TASK_CountDown", TASKID_COUNTDOWN ); } } public event_curweapon(id) { if(!is_user_alive(id)) return PLUGIN_CONTINUE static weapon weapon = read_data(2) static viewmodel[64] pev(id, pev_viewmodel2, viewmodel, 63) if( g_zombie[ id ] ) { if( weapon != CSW_KNIFE && weapon != CSW_FLASHBANG && !task_exists( TASKID_STRIPNGIVE + id ) ) set_task( 0.1, "task_stripngive", TASKID_STRIPNGIVE + id ); return PLUGIN_CONTINUE; } static ammotype ammotype = get_pcvar_num(cvar_ammo) if(!ammotype || (AMMOWP_NULL & (1<<weapon))) return PLUGIN_CONTINUE static maxammo switch(ammotype) { case 1: maxammo = g_weapon_ammo[weapon][MAX_AMMO] case 2: maxammo = g_weapon_ammo[weapon][MAX_CLIP] } if(!maxammo) return PLUGIN_CONTINUE switch(ammotype) { case 1: { static ammo ammo = fm_get_user_bpammo(id, weapon) if(ammo < 1) fm_set_user_bpammo(id, weapon, maxammo) } case 2: { static clip; clip = read_data(3) if(clip < 1) { static weaponname[32] get_weaponname(weapon, weaponname, 31) static ent ent = fm_find_ent_by_owner(-1, weaponname, id) fm_set_weapon_ammo(ent, maxammo) } } } return PLUGIN_CONTINUE } public event_armortype(id) { if(!is_user_alive(id) || !g_zombie[id]) return PLUGIN_CONTINUE if(fm_get_user_armortype(id) != CS_ARMOR_NONE) fm_set_user_armortype(id, CS_ARMOR_NONE) return PLUGIN_CONTINUE } public event_damage(victim) { if(!is_user_alive(victim) || !g_gamestarted) return PLUGIN_CONTINUE if(!g_zombie[victim]) { static attacker attacker = get_user_attacker(victim) if(!is_user_alive(attacker) || !g_zombie[attacker] || g_infecting) return PLUGIN_CONTINUE if(g_victim[attacker] == victim) { g_infecting = true g_victim[attacker] = 0 message_begin(MSG_ALL, g_msg_deathmsg) write_byte(attacker) write_byte(victim) write_byte(0) write_string(g_infection_name) message_end() message_begin(MSG_ALL, g_msg_scoreattrib) write_byte(victim) write_byte(0) message_end() infect_user(victim, attacker) static Float:frags, deaths pev(attacker, pev_frags, frags) deaths = fm_get_user_deaths(victim) set_pev(attacker, pev_frags, frags + 1.0) fm_set_user_deaths(victim, deaths + 1) fm_set_user_money(attacker, get_pcvar_num(cvar_infectmoney)) static params[2] params[0] = attacker params[1] = victim set_task(0.3, "task_updatescore", TASKID_UPDATESCR, params, 2) } g_infecting = false } return PLUGIN_CONTINUE } public fwd_player_prethink(id) { if(!is_user_alive(id) || !g_zombie[id]) return FMRES_IGNORED static flags flags = pev(id, pev_flags) if(flags & FL_ONGROUND) { if(get_pcvar_num(cvar_painshockfree)) { pev(id, pev_velocity, g_vecvel) g_brestorevel = true } } else { static Float:fallvelocity pev(id, pev_flFallVelocity, fallvelocity) g_falling[id] = fallvelocity >= 350.0 ? true : false } if(g_gamestarted) { static Float:gametime gametime = get_gametime() static pclass pclass = g_player_class[id] static Float:health pev(id, pev_health, health) if(health < g_class_data[pclass][DATA_HEALTH] && g_regendelay[id] < gametime) { set_pev(id, pev_health, health + 1.0) g_regendelay[id] = gametime + g_class_data[pclass][DATA_REGENDLY] } } if( get_pcvar_num( cvar_biohazard_icon ) > 0 ) { if( is_user_alive( id ) ) { if( g_preinfect[ id ] && !g_zombie[ id ] ) set_biohazard_icon( id, 2, 255, 255, 0 ); else if( g_zombie[ id ] ) set_biohazard_icon( id, 1, 255, 0, 0 ); else if( !g_zombie[ id ] && !g_preinfect[ id ] ) set_biohazard_icon( id, 1, 125, 178, 255 ); } else set_biohazard_icon( id, 0, 0, 0 ,0 ); } return FMRES_IGNORED } public fwd_player_prethink_post(id) { if(!g_brestorevel) return FMRES_IGNORED g_brestorevel = false static flag flag = pev(id, pev_flags) if(!(flag & FL_ONTRAIN)) { static ent ent = pev(id, pev_groundentity) if(pev_valid(ent) && (flag & FL_CONVEYOR)) { static Float:vectemp[3] pev(id, pev_basevelocity, vectemp) xs_vec_add(g_vecvel, vectemp, g_vecvel) } set_pev(id, pev_velocity, g_vecvel) return FMRES_HANDLED } return FMRES_IGNORED } public fwd_player_postthink(id) { if(!is_user_alive(id)) return FMRES_IGNORED if(g_zombie[id] && g_falling[id] && (pev(id, pev_flags) & FL_ONGROUND)) { set_pev(id, pev_watertype, CONTENTS_WATER) g_falling[id] = false } if(get_pcvar_num(cvar_buytime)) { if(pev_valid(g_buyzone) && g_buytime > get_gametime()) dllfunc(DLLFunc_Touch, g_buyzone, id) } return FMRES_IGNORED } public fwd_emitsound(id, channel, sample[], Float:volume, Float:attn, flag, pitch) { if(channel == CHAN_ITEM && sample[6] == 'n' && sample[7] == 'v' && sample[8] == 'g') return FMRES_SUPERCEDE if(!is_user_connected(id) || !g_zombie[id]) return FMRES_IGNORED if(sample[8] == 'k' && sample[9] == 'n' && sample[10] == 'i') { if(sample[14] == 's' && sample[15] == 'l' && sample[16] == 'a') { emit_sound(id, channel, g_zombie_miss_sounds[_random(sizeof g_zombie_miss_sounds)], volume, attn, flag, pitch) return FMRES_SUPERCEDE } else if(sample[14] == 'h' && sample[15] == 'i' && sample[16] == 't' || sample[14] == 's' && sample[15] == 't' && sample[16] == 'a') { if(sample[17] == 'w' && sample[18] == 'a' && sample[19] == 'l') emit_sound(id, channel, g_zombie_miss_sounds[_random(sizeof g_zombie_miss_sounds)], volume, attn, flag, pitch) else emit_sound(id, channel, g_zombie_hit_sounds[_random(sizeof g_zombie_hit_sounds)], volume, attn, flag, pitch) return FMRES_SUPERCEDE } } else if(sample[7] == 'd' && (sample[8] == 'i' && sample[9] == 'e' || sample[12] == '6')) { emit_sound(id, channel, g_zombie_die_sounds[_random(sizeof g_zombie_die_sounds)], volume, attn, flag, pitch) return FMRES_SUPERCEDE } return FMRES_IGNORED } public fwd_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 == IMPULSE_FLASHLIGHT) { set_uc(handle, UC_Impulse, 0) return FMRES_SUPERCEDE } return FMRES_IGNORED } public fwd_spawn(ent) { if(!pev_valid(ent)) return FMRES_IGNORED static classname[32] pev(ent, pev_classname, classname, 31) static i for(i = 0; i < sizeof g_remove_entities; ++i) { if(equal(classname, g_remove_entities)) { engfunc(EngFunc_RemoveEntity, ent) return FMRES_SUPERCEDE } } return FMRES_IGNORED } public fwd_gamedescription() { static gamename[32] get_pcvar_string(cvar_gamedescription, gamename, 31) forward_return(FMV_STRING, gamename) return FMRES_SUPERCEDE } public fwd_createnamedentity(entclassname) { static classname[10] engfunc(EngFunc_SzFromIndex, entclassname, classname, 9) return (classname[7] == 'c' && classname[8] == '4') ? FMRES_SUPERCEDE : FMRES_IGNORED } public fwd_clientkill(id) { if(get_pcvar_num(cvar_punishsuicide) && is_user_alive(id)) g_suicide[id] = true } public fwd_setclientkeyvalue(id, infobuffer, const key[]) { if(!equal(key, "model") || !g_blockmodel[id]) return FMRES_IGNORED static model[32] fm_get_user_model(id, model, 31) if(equal(model, "gordon")) return FMRES_IGNORED g_blockmodel[id] = false return FMRES_SUPERCEDE } public bacon_touch_weapon(ent, id) return (is_user_alive(id) && g_zombie[id]) ? HAM_SUPERCEDE : HAM_IGNORED public bacon_use_tank(ent, caller, activator, use_type, Float:value) return (is_user_alive(caller) && g_zombie[caller]) ? HAM_SUPERCEDE : HAM_IGNORED public bacon_use_pushable(ent, caller, activator, use_type, Float:value) return HAM_SUPERCEDE public bacon_traceattack_player(victim, attacker, Float:damage, Float:direction[3], tracehandle, damagetype) { if(!g_gamestarted) return HAM_SUPERCEDE if(!get_pcvar_num(cvar_knockback) || !(damagetype & DMG_BULLET)) return HAM_IGNORED if(!is_user_connected(attacker) || !g_zombie[victim]) return HAM_IGNORED static kbpower kbpower = g_weapon_knockback[get_user_weapon(attacker)] if(kbpower != -1) { static flags flags = pev(victim, pev_flags) if(get_pcvar_num(cvar_knockback_duck) && ((flags & FL_DUCKING) && (flags & FL_ONGROUND))) return HAM_IGNORED static Float:origins[2][3] pev(victim, pev_origin, origins[0]) pev(attacker, pev_origin, origins[1]) if(get_distance_f(origins[0], origins[1]) <= get_pcvar_float(cvar_knockback_dist)) { static Float:velocity[3] pev(victim, pev_velocity, velocity) static Float:tempvec tempvec = velocity[2] xs_vec_mul_scalar(direction, damage, direction) xs_vec_mul_scalar(direction, g_class_data[g_player_class[victim]][DATA_KNOCKBACK], direction) xs_vec_mul_scalar(direction, g_knockbackpower[kbpower], direction) xs_vec_add(direction, velocity, velocity) velocity[2] = tempvec set_pev(victim, pev_velocity, velocity) return HAM_HANDLED } } return HAM_IGNORED } public bacon_touch_grenade(ent, world) { if(!get_pcvar_num(cvar_impactexplode)) return HAM_IGNORED static model[12] pev(ent, pev_model, model, 11) if(model[9] == 'h' && model[10] == 'e') { set_pev(ent, pev_dmgtime, 0.0) return HAM_HANDLED } return HAM_IGNORED } public bacon_takedamage_player(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_gamestarted || (!g_zombie[victim] && !g_zombie[attacker]) || ((damagetype & DMG_HEGRENADE) && g_zombie[attacker])) return HAM_SUPERCEDE if(g_zombie[attacker]) { if(get_user_weapon(attacker) != CSW_KNIFE) return HAM_SUPERCEDE damage *= g_class_data[g_player_class[attacker]][DATA_ATTACK] static Float:armor pev(victim, pev_armorvalue, armor) if(get_pcvar_num(cvar_obeyarmor) && armor > 0.0) { armor -= damage if(armor < 0.0) armor = 0.0 set_pev(victim, pev_armorvalue, armor) SetHamParamFloat(4, 0.0) } else { static bool:infect infect = allow_infection() g_victim[attacker] = infect ? victim : 0 if(!g_infecting) SetHamParamFloat(4, infect ? 0.0 : damage) else SetHamParamFloat(4, 0.0) } } return HAM_HANDLED } public bacon_killed_player(victim, killer, shouldgib) { if(!is_user_alive(killer) || g_zombie[killer] || !g_zombie[victim]) return HAM_IGNORED static killbonus killbonus = get_pcvar_num(cvar_killbonus) if(killbonus) set_pev(killer, pev_frags, pev(killer, pev_frags) + float(killbonus)) static killreward killreward = get_pcvar_num(cvar_killreward) if(!killreward) return HAM_IGNORED static weapon, maxclip, ent, weaponname[32] switch(killreward) { case 1: { weapon = get_user_weapon(killer) maxclip = g_weapon_ammo[weapon][MAX_CLIP] if(maxclip) { get_weaponname(weapon, weaponname, 31) ent = fm_find_ent_by_owner(-1, weaponname, killer) fm_set_weapon_ammo(ent, maxclip) } } case 2: { if(!user_has_weapon(killer, CSW_HEGRENADE)) bacon_give_weapon(killer, "weapon_hegrenade") else fm_set_user_bpammo( killer, CSW_HEGRENADE, fm_get_user_bpammo( killer, CSW_HEGRENADE ) + 1 ); } case 3: { weapon = get_user_weapon(killer) maxclip = g_weapon_ammo[weapon][MAX_CLIP] if(maxclip) { get_weaponname(weapon, weaponname, 31) ent = fm_find_ent_by_owner(-1, weaponname, killer) fm_set_weapon_ammo(ent, maxclip) } if(!user_has_weapon(killer, CSW_HEGRENADE)) bacon_give_weapon(killer, "weapon_hegrenade") else fm_set_user_bpammo( killer, CSW_HEGRENADE, fm_get_user_bpammo( killer, CSW_HEGRENADE ) + 1 ); } } return HAM_IGNORED } public bacon_spawn_player_post(id) { if(!is_user_alive(id)) return HAM_IGNORED static team team = fm_get_user_team(id) if(team != CS_TEAM_T && team != CS_TEAM_CT) return HAM_IGNORED if(g_zombie[id]) { if(get_pcvar_num(cvar_respawnaszombie) && !g_roundended) { set_zombie_attibutes(id) return HAM_IGNORED } else cure_user(id) } else if(pev(id, pev_rendermode) == kRenderTransTexture) reset_user_model(id) set_task(0.3, "task_spawned", TASKID_SPAWNDELAY + id) set_task(5.0, "task_checkspawn", TASKID_CHECKSPAWN + id) return HAM_IGNORED } public bacon_touch_pushable(ent, id) { static movetype pev(id, pev_movetype) if(movetype == MOVETYPE_NOCLIP || movetype == MOVETYPE_NONE) return HAM_IGNORED if(is_user_alive(id)) { set_pev(id, pev_movetype, MOVETYPE_WALK) if(!(pev(id, pev_flags) & FL_ONGROUND)) return HAM_SUPERCEDE } if(!get_pcvar_num(cvar_shootobjects)) return HAM_IGNORED static Float:velocity[2][3] pev(ent, pev_velocity, velocity[0]) if(vector_length(velocity[0]) > 0.0) { pev(id, pev_velocity, velocity[1]) velocity[1][0] += velocity[0][0] velocity[1][1] += velocity[0][1] set_pev(id, pev_velocity, velocity[1]) } return HAM_SUPERCEDE } public bacon_traceattack_pushable(ent, attacker, Float:damage, Float:direction[3], tracehandle, damagetype) { if(!get_pcvar_num(cvar_shootobjects) || !is_user_alive(attacker)) return HAM_IGNORED static Float:velocity[3] pev(ent, pev_velocity, velocity) static Float:tempvec tempvec = velocity[2] xs_vec_mul_scalar(direction, damage, direction) xs_vec_mul_scalar(direction, g_zombie[attacker] ? get_pcvar_float(cvar_pushpwr_zombie) : get_pcvar_float(cvar_pushpwr_weapon), direction) xs_vec_add(direction, velocity, velocity) velocity[2] = tempvec set_pev(ent, pev_velocity, velocity) return HAM_HANDLED } public bacon_claws_deploy_post( iEntity ) { static szOwner; szOwner = get_pdata_cbase( iEntity, 41, EXTRAOFFSET_WEAPONS ); if( g_zombie[ szOwner ] ) { set_pev( szOwner, pev_viewmodel2, g_class_wmodel[ g_player_class[ szOwner ] ] ); set_pev( szOwner, pev_weaponmodel2, "" ); } } public TASK_CountDown( ) { new Players[ 32 ]; new PlayersNum; get_players( Players, PlayersNum, "a" ); if( CountDownDelay > sizeof CountDownSounds + 1 ) { CountDownDelay--; new Message[ 64 ]; formatex( Message, sizeof( Message ) - 1, "%L", LANG_PLAYER, "COUNTDOWN_HUD", CountDownDelay, CountDownDelay == 1 ? "e" : "a" ); HudMessage( 0, Message, 125, 170, 255, -1.0, 0.28, 2, 0.01, 0.8, 0.01, 0.1 ); set_task( 1.0, "TASK_CountDown", TASKID_COUNTDOWN ); } else if( CountDownDelay > 1 ) { CountDownDelay--; new Message[ 64 ]; formatex( Message, sizeof( Message ) - 1, "%L", LANG_PLAYER, "COUNTDOWN_HUD", CountDownDelay, CountDownDelay == 1 ? "e" : "a" ); HudMessage( 0, Message, 125, 170, 255, -1.0, 0.28, 2, 0.01, 0.8, 0.01, 0.1 ); emit_sound( 0, CHAN_VOICE, CountDownSounds[ CountDownDelay - 1 ], VOL_NORM, ATTN_NORM, 0, PITCH_NORM ); set_task( 1.0, "TASK_CountDown", TASKID_COUNTDOWN ); for( new i = 0 ; i < PlayersNum ; i++ ) { if( is_user_connected( Players[ i ] ) ) { new color[ 3 ]; color[ 0 ] = 125; color[ 1 ] = 170; color[ 2 ] = 255; UTIL_ScreenFade( Players[ i ], color, 0.5, 0.5, 110 ); new shock[ 3 ]; shock[ 0 ] = 3; shock[ 1 ] = 2; shock[ 2 ] = 3; message_begin( MSG_ONE, get_user_msgid( "ScreenShake" ), _, Players[ i ] ); write_short( ( 1<<12 ) * shock[ 0 ] ); write_short( ( 1<<12 ) * shock[ 1 ] ); write_short( ( 1<<12 ) * shock[ 2 ] ); message_end( ); } } } else if( CountDownDelay <= 1 ) CountDownDelay = 0; } public task_spawned(taskid) { static id id = taskid - TASKID_SPAWNDELAY if(is_user_alive(id)) { if( !get_pcvar_num( cvar_weaponsmenu ) ) { for( new i = 0; i < sizeof g_grenades; ++i ) bacon_give_weapon( id, g_grenades[ i ] ); } if(g_welcomemsg[id]) { g_welcomemsg[id] = false static message[192] formatex(message, 191, "%L", id, "WELCOME_TXT") replace(message, 191, "#Version#", PLUGIN_VERSION) ColorChat(id, message) } if(g_suicide[id]) { g_suicide[id] = false user_silentkill(id) remove_task(TASKID_CHECKSPAWN + id) ColorChat(id, "%L", id, "SUICIDEPUNISH_TXT") return } if(get_pcvar_num(cvar_weaponsmenu) && g_roundstarted && g_showmenu[id]) is_user_bot(id) ? bot_weapons(id) : display_equipmenu(id) if(!g_gamestarted) ColorChat(id, "%L %L", id, "SCAN_RESULTS", id, g_preinfect[id] ? "SCAN_INFECTED" : "SCAN_CLEAN") else { static team team = fm_get_user_team(id) if(team == CS_TEAM_T) fm_set_user_team(id, CS_TEAM_CT) } if(get_pcvar_num(cvar_biohazard_icon) > 0) { if(g_preinfect[id] && !g_zombie[id]) set_biohazard_icon(id, 2, 255, 255, 0) else if(g_zombie[id]) set_biohazard_icon(id, 1, 255, 0, 0) else if(!g_zombie[id] && !g_preinfect[id]) set_biohazard_icon(id, 1, 125, 178, 255) } } } public task_checkspawn(taskid) { static id id = taskid - TASKID_CHECKSPAWN if(!is_user_connected(id) || is_user_alive(id) || g_roundended) return static team team = fm_get_user_team(id) if(team == CS_TEAM_T || team == CS_TEAM_CT) ExecuteHamB(Ham_CS_RoundRespawn, id) } public task_showtruehealth() { static id, Float:health, Float:gravity, Float:speed, class for(id = 1; id <= g_maxplayers; id++) if(is_user_alive(id) && !is_user_bot(id) && g_zombie[id]) { pev( id, pev_health, health ); pev( id, pev_gravity, gravity ); pev( id, pev_maxspeed, speed ); class = g_player_class[id] if(g_classcount > 1) { set_hudmessage(0, 255, 20, -1.0, 0.8, _, 0.2, 0.2) ShowSyncHudMsg(id, g_sync_hpdisplay, "Class: %s - Desc: %s^nHealth: %0.f^n^nSpeed: %0.1f^nGolds: %i", g_class_name[class], g_class_desc[class], health, speed, get_user_golds( id ) ); set_pdata_int( id, 361, get_pdata_int( id, 361 ) | ( 1<<3 ) ); } else { set_hudmessage(0, 230, 210, 0.01, 0.9, _, 0.2, 0.2) ShowSyncHudMsg(id, g_sync_hpdisplay, "Speed: %0.1f Gravity: %0.1f", speed, gravity / 0.00125 ); set_pdata_int( id, 361, get_pdata_int( id, 361 ) | ( 1<<3 ) ); } } } public task_lights() { static light[2] get_pcvar_string(cvar_lights, light, 1) engfunc(EngFunc_LightStyle, 0, light) } public task_updatescore(params[]) { if(!g_gamestarted) return static attacker attacker = params[0] static victim victim = params[1] if(!is_user_connected(attacker)) return static frags, deaths, team frags = get_user_frags(attacker) deaths = fm_get_user_deaths(attacker) team = get_user_team(attacker) message_begin(MSG_BROADCAST, g_msg_scoreinfo) write_byte(attacker) write_short(frags) write_short(deaths) write_short(0) write_short(team) message_end() if(!is_user_connected(victim)) return frags = get_user_frags(victim) deaths = fm_get_user_deaths(victim) team = get_user_team(victim) message_begin(MSG_BROADCAST, g_msg_scoreinfo) write_byte(victim) write_short(frags) write_short(deaths) write_short(0) write_short(team) message_end() } public task_weaponsmenu(taskid) { static id id = taskid - TASKID_WEAPONSMENU if(is_user_alive(id) && !g_zombie[id] && g_menufailsafe[id]) display_equipmenu(id) } public task_stripngive(taskid) { static id id = taskid - TASKID_STRIPNGIVE if(is_user_alive(id)) { fm_strip_user_weapons(id) fm_reset_user_primary(id) bacon_give_weapon(id, "weapon_knife") set_pev(id, pev_weaponmodel2, "") set_pev(id, pev_viewmodel2, g_class_wmodel[g_player_class[id]]) set_pev(id, pev_maxspeed, g_class_data[g_player_class[id]][DATA_SPEED]) } } public task_newround() { static players[32], num, zombies, i, id get_players(players, num, "a") if(num > 1) { for(i = 0; i < num; i++) g_preinfect[players] = false zombies = clamp(floatround(num * get_pcvar_float(cvar_zombiemulti)), 1, 31) i = 0 while(i < zombies) { id = players[_random(num)] if(!g_preinfect[id]) { g_preinfect[id] = true i++ } } } if(!get_pcvar_num(cvar_randomspawn) || g_spawncount <= 0) return static team for(i = 0; i < num; i++) { id = players team = fm_get_user_team(id) if(team != CS_TEAM_T && team != CS_TEAM_CT || pev(id, pev_iuser1)) continue static spawn_index spawn_index = _random(g_spawncount) static Float:spawndata[3] spawndata[0] = g_spawns[spawn_index][0] spawndata[1] = g_spawns[spawn_index][1] spawndata[2] = g_spawns[spawn_index][2] if(!fm_is_hull_vacant(spawndata, HULL_HUMAN)) { static i for(i = spawn_index + 1; i != spawn_index; i++) { if(i >= g_spawncount) i = 0 spawndata[0] = g_spawns[0] spawndata[1] = g_spawns[1] spawndata[2] = g_spawns[2] if(fm_is_hull_vacant(spawndata, HULL_HUMAN)) { spawn_index = i break } } } spawndata[0] = g_spawns[spawn_index][0] spawndata[1] = g_spawns[spawn_index][1] spawndata[2] = g_spawns[spawn_index][2] engfunc(EngFunc_SetOrigin, id, spawndata) spawndata[0] = g_spawns[spawn_index][3] spawndata[1] = g_spawns[spawn_index][4] spawndata[2] = g_spawns[spawn_index][5] set_pev(id, pev_angles, spawndata) spawndata[0] = g_spawns[spawn_index][6] spawndata[1] = g_spawns[spawn_index][7] spawndata[2] = g_spawns[spawn_index][8] set_pev(id, pev_v_angle, spawndata) set_pev(id, pev_fixangle, 1) } } public task_initround() { static zombiecount, newzombie zombiecount = 0 newzombie = 0 static players[32], num, i, id get_players(players, num, "a") for(i = 0; i < num; i++) if(g_preinfect[players]) { newzombie = players zombiecount++ } if(zombiecount > 1) newzombie = 0 else if(zombiecount < 1) newzombie = players[_random(num)] for(i = 0; i < num; i++) { id = players if(id == newzombie || g_preinfect[id]) infect_user(id, 0) else { fm_set_user_team(id, CS_TEAM_CT, 0) add_delay(id, "update_team") } } set_hudmessage(_, _, _, _, _, 1) if(newzombie) { static name[32] get_user_name(newzombie, name, 31) ShowSyncHudMsg(0, g_sync_msgdisplay, "%L", LANG_PLAYER, "INFECTED_HUD", name) ColorChat(id, "%L", LANG_PLAYER, "INFECTED_TXT", name) } else { ShowSyncHudMsg(0, g_sync_msgdisplay, "%L", LANG_PLAYER, "INFECTED_HUD2") ColorChat(id, "%L", LANG_PLAYER, "INFECTED_TXT2") } set_task(0.51, "task_startround", TASKID_STARTROUND) if( get_pcvar_num( cvar_zombie_appear_sound ) == 2 ) PlaySound( g_appear_sounds[ random_num( 0, charsmax( g_appear_sounds ) ) ] ); } public task_startround() { g_gamestarted = true ExecuteForward(g_fwd_gamestart, g_fwd_result) } public task_balanceteam() { static players[3][32], count[3] get_players(players[CS_TEAM_UNASSIGNED], count[CS_TEAM_UNASSIGNED]) count[CS_TEAM_T] = 0 count[CS_TEAM_CT] = 0 static i, id, team for(i = 0; i < count[CS_TEAM_UNASSIGNED]; i++) { id = players[CS_TEAM_UNASSIGNED] team = fm_get_user_team(id) if(team == CS_TEAM_T || team == CS_TEAM_CT) players[team][count[team]++] = id } if(abs(count[CS_TEAM_T] - count[CS_TEAM_CT]) <= 1) return static maxplayers maxplayers = (count[CS_TEAM_T] + count[CS_TEAM_CT]) / 2 if(count[CS_TEAM_T] > maxplayers) { for(i = 0; i < (count[CS_TEAM_T] - maxplayers); i++) fm_set_user_team(players[CS_TEAM_T], CS_TEAM_CT, 0) } else { for(i = 0; i < (count[CS_TEAM_CT] - maxplayers); i++) fm_set_user_team(players[CS_TEAM_CT][i], CS_TEAM_T, 0) } } public task_botclient_pdata(id) { if(g_botclient_pdata || !is_user_connected(id)) return if(get_pcvar_num(cvar_botquota) && is_user_bot(id)) { RegisterHamFromEntity(Ham_TakeDamage, id, "bacon_takedamage_player") RegisterHamFromEntity(Ham_Killed, id, "bacon_killed_player") RegisterHamFromEntity(Ham_TraceAttack, id, "bacon_traceattack_player") RegisterHamFromEntity(Ham_Spawn, id, "bacon_spawn_player_post", 1) g_botclient_pdata = 1 } } public bot_weapons(id) { g_player_weapons[id][0] = _random(sizeof g_primaryweapons) g_player_weapons[id][1] = _random(sizeof g_secondaryweapons) equipweapon(id, EQUIP_ALL) } public update_team(id) { if(!is_user_connected(id)) return static team team = fm_get_user_team(id) if(team == CS_TEAM_T || team == CS_TEAM_CT) { emessage_begin(MSG_ALL, g_msg_teaminfo) ewrite_byte(id) ewrite_string(g_teaminfo[team]) emessage_end() } } public infect_user(victim, attacker) { if(!is_user_alive(victim)) return message_begin(MSG_ONE, g_msg_screenfade, _, victim) write_short(1<<10) write_short(1<<10) write_short(0) write_byte((g_mutate[victim] != -1) ? 255 : 100) write_byte(100) write_byte(100) write_byte(250) message_end() message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "ScreenShake" ), _, victim ) write_short( ( 1<<12 ) * 4 ) // amplitude write_short( ( 1<<12 ) * 2 ) // duration write_short( ( 1<<12 ) * 10 ) // frequency message_end( ) message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "Damage" ), _, victim ) write_byte( 0 ) // damage save write_byte( 0 ) // damage take write_long( DMG_NERVEGAS ) // damage type - DMG_RADIATION write_coord( 0 ) // x write_coord( 0 ) // y write_coord( 0 ) // z message_end( ) // Get player's origin new Origin[ 3 ] get_user_origin( victim, Origin ) message_begin( MSG_PVS, SVC_TEMPENTITY, Origin ) write_byte( TE_IMPLOSION ) // TE id write_coord( Origin[ 0 ] ) // x write_coord( Origin[ 1 ] ) // y write_coord( Origin[ 2 ] ) // z write_byte( 128 ) // radius write_byte( 20 ) // count write_byte( 3 ) // duration message_end( ) message_begin( MSG_PVS, SVC_TEMPENTITY, Origin ) write_byte( TE_DLIGHT ) // TE id write_coord( Origin[ 0 ] ) // x write_coord( Origin[ 1 ] ) // y write_coord( Origin[ 2 ] ) // z write_byte( 20 ) // radius write_byte( 0 ) // r write_byte( 150 ) // g write_byte( 0 ) // b write_byte( 2 ) // life write_byte( 0 ) // decay rate message_end( ) #if defined ULTRA_BLOOD static origin[3]; get_user_origin(victim, origin) message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_PARTICLEBURST) write_coord(origin[0]) write_coord(origin[1]) write_coord(origin[2]) write_short(50) write_byte(70) write_byte(3) message_end() #endif if(g_mutate[victim] != -1) { g_player_class[victim] = g_mutate[victim] g_mutate[victim] = -1 set_hudmessage(_, _, _, _, _, 1) ShowSyncHudMsg(victim, g_sync_msgdisplay, "%L", victim, "MUTATION_HUD", g_class_name[g_player_class[victim]]) } fm_set_user_team(victim, CS_TEAM_T) set_zombie_attibutes(victim) emit_sound(victim, CHAN_STATIC, g_scream_sounds[_random(sizeof g_scream_sounds)], VOL_NORM, ATTN_NONE, 0, PITCH_NORM) ExecuteForward(g_fwd_infect, g_fwd_result, victim, attacker) } public cure_user(id) { if(!is_user_alive(id)) return g_zombie[id] = false g_falling[id] = false g_showmenu[id] = true; reset_user_model(id) fm_set_user_nvg(id, 0) set_pev(id, pev_gravity, 1.0) if( fm_get_user_team( id ) != CS_TEAM_CT ) { // need to change team? fm_set_user_team( id, CS_TEAM_CT ); fm_user_team_update( id ); } static viewmodel[64] pev(id, pev_viewmodel2, viewmodel, 63) if(equal(viewmodel, g_class_wmodel[g_player_class[id]])) { static weapon weapon = fm_lastknife(id) if(pev_valid(weapon)) ExecuteHam(Ham_Item_Deploy, weapon) } if(get_pcvar_num(cvar_weaponsmenu)) { static id, team for(id = 1; id <= g_maxplayers; id++) if(is_user_alive(id)) { team = fm_get_user_team(id) if(team == CS_TEAM_T || team == CS_TEAM_CT) { if(is_user_bot(id)) bot_weapons(id) else { if(g_showmenu[id]) { add_delay(id, "display_equipmenu") g_menufailsafe[id] = true set_task(10.0, "task_weaponsmenu", TASKID_WEAPONSMENU + id) } else equipweapon(id, EQUIP_ALL) } } } } } public display_equipmenu(id) { static menubody[512], len len = formatex(menubody, 511, "\r%L^n^n", id, "MENU_TITLE1") static bool:hasweap hasweap = ((g_player_weapons[id][0]) != -1 && (g_player_weapons[id][1] != -1)) ? true : false len += formatex(menubody[len], 511 - len,"\r1.\w %L^n", id, "MENU_NEWWEAPONS") len += formatex(menubody[len], 511 - len,"%s2.\w %L^n", hasweap ? "\r" : "\d", id, "MENU_PREVSETUP") len += formatex(menubody[len], 511 - len,"%s3.\w %L^n^n", hasweap ? "\r" : "\d", id, "MENU_DONTSHOW") len += formatex(menubody[len], 511 - len,"\r5.\w %L^n", id, "MENU_EXIT") static keys keys = (MENU_KEY_1|MENU_KEY_5) if(hasweap) keys |= (MENU_KEY_2|MENU_KEY_3) show_menu(id, keys, menubody, -1, "Equipment") } public action_equip(id, key) { if(!is_user_alive(id) || g_zombie[id]) return PLUGIN_HANDLED switch(key) { case 0: display_weaponmenu(id, MENU_PRIMARY, g_menuposition[id] = 0) case 1: equipweapon(id, EQUIP_ALL) case 2: { g_showmenu[id] = false equipweapon(id, EQUIP_ALL) ColorChat(id, "%L", id, "MENU_CMDENABLE") } } if(key > 0) { g_menufailsafe[id] = false remove_task(TASKID_WEAPONSMENU + id) } return PLUGIN_HANDLED } public display_weaponmenu(id, menuid, pos) { if(pos < 0 || menuid < 0) return static start start = pos * 8 static maxitem maxitem = menuid == MENU_PRIMARY ? sizeof g_primaryweapons : sizeof g_secondaryweapons if(start >= maxitem) start = pos = g_menuposition[id] static menubody[512], len len = formatex(menubody, 511, "\r%L\w^n^n", id, menuid == MENU_PRIMARY ? "MENU_TITLE2" : "MENU_TITLE3") static end end = start + 8 if(end > maxitem) end = maxitem static keys keys = MENU_KEY_0 static a, b b = 0 for(a = start; a < end; ++a) { keys |= (1<<b) len += formatex(menubody[len], 511 - len,"\r%d.\w %s^n", ++b, menuid == MENU_PRIMARY ? g_primaryweapons[a][0]: g_secondaryweapons[a][0]) } if(end != maxitem) { formatex(menubody[len], 511 - len, "^n\r9.\w %L^n0. %L", id, "MENU_MORE", id, pos ? "MENU_BACK" : "MENU_EXIT") keys |= MENU_KEY_9 } else formatex(menubody[len], 511 - len, "^n\r0.\w %L", id, pos ? "MENU_BACK" : "MENU_EXIT") show_menu(id, keys, menubody, -1, menuid == MENU_PRIMARY ? "Primary" : "Secondary") } public action_prim(id, key) { if(!is_user_alive(id) || g_zombie[id]) return PLUGIN_HANDLED switch(key) { case 8: display_weaponmenu(id, MENU_PRIMARY, ++g_menuposition[id]) case 9: display_weaponmenu(id, MENU_PRIMARY, --g_menuposition[id]) default: { g_player_weapons[id][0] = g_menuposition[id] * 8 + key equipweapon(id, EQUIP_PRI) display_weaponmenu(id, MENU_SECONDARY, g_menuposition[id] = 0) } } return PLUGIN_HANDLED } public action_sec(id, key) { if(!is_user_alive(id) || g_zombie[id]) return PLUGIN_HANDLED switch(key) { case 8: display_weaponmenu(id, MENU_SECONDARY, ++g_menuposition[id]) case 9: display_weaponmenu(id, MENU_SECONDARY, --g_menuposition[id]) default: { g_menufailsafe[id] = false remove_task(TASKID_WEAPONSMENU + id) g_player_weapons[id][1] = g_menuposition[id] * 8 + key equipweapon(id, EQUIP_SEC) equipweapon(id, EQUIP_GREN) } } return PLUGIN_HANDLED } public ClassCmd( id, szMenu, szItem ) { if( szItem == MENU_EXIT ) { menu_destroy( szMenu ); return PLUGIN_HANDLED; } new szData[ 6 ], szName[ 64 ]; new iAccess, iCallBack; menu_item_getinfo( szMenu, szItem, iAccess, szData, 5, szName, 63, iCallBack ); new iKey = str_to_num( szData ); if( g_class_data[ iKey ][ DATA_ONLYVIP ] > 0.0 && !is_user_vip( id ) ) { ColorChat( id, "%L", id, "MENU_CLASSONLYVIP", g_class_name[ iKey ] ); cmd_classmenu( id ); } else { g_mutate[ id ] = iKey; ColorChat( id, "%L", id, "MENU_CHANGECLASS", g_class_name[ g_mutate[ id ] ] ); } menu_destroy( szMenu ); return PLUGIN_HANDLED; } public register_spawnpoints(const mapname[]) { new configdir[32] get_configsdir(configdir, 31) new csdmfile[64], line[64], data[10][6] formatex(csdmfile, 63, "%s/csdm/%s.spawns.cfg", configdir, mapname) if(file_exists(csdmfile)) { new file file = fopen(csdmfile, "rt") while(file && !feof(file)) { fgets(file, line, 63) if(!line[0] || str_count(line,' ') < 2) continue parse(line, data[0], 5, data[1], 5, data[2], 5, data[3], 5, data[4], 5, data[5], 5, data[6], 5, data[7], 5, data[8], 5, data[9], 5) g_spawns[g_spawncount][0] = floatstr(data[0]), g_spawns[g_spawncount][1] = floatstr(data[1]) g_spawns[g_spawncount][2] = floatstr(data[2]), g_spawns[g_spawncount][3] = floatstr(data[3]) g_spawns[g_spawncount][4] = floatstr(data[4]), g_spawns[g_spawncount][5] = floatstr(data[5]) g_spawns[g_spawncount][6] = floatstr(data[7]), g_spawns[g_spawncount][7] = floatstr(data[8]) g_spawns[g_spawncount][8] = floatstr(data[9]) if(++g_spawncount >= MAX_SPAWNS) break } if(file) fclose(file) } } public register_zombieclasses(filename[]) { new configdir[32] get_configsdir(configdir, 31) new configfile[64] formatex(configfile, 63, "%s/%s", configdir, filename) if(get_pcvar_num(cvar_zombie_class) && file_exists(configfile)) { new line[128], leftstr[32], rightstr[64], classname[32], data[MAX_DATA], i new file file = fopen(configfile, "rt") while(file && !feof(file)) { fgets(file, line, 127), trim(line) if(!line[0] || line[0] == ';') continue if(line[0] == '[' && line[strlen(line) - 1] == ']') { copy(classname, strlen(line) - 2, line[1]) if(register_class(classname) == -1) break continue } strtok(line, leftstr, 31, rightstr, 63, '=', 1) if(equali(leftstr, "DESC")) copy(g_class_desc[g_classcount - 1], 31, rightstr) else if(equali(leftstr, "PMODEL")) copy(g_class_pmodel[g_classcount - 1], 63, rightstr) else if(equali(leftstr, "WMODEL")) copy(g_class_wmodel[g_classcount - 1], 63, rightstr) for(i = 0; i < MAX_DATA; i++) data[i] = equali(leftstr, g_dataname[i]) for(i = 0; i < MAX_DATA; i++) if(data[i]) { g_class_data[g_classcount - 1][i] = floatstr(rightstr) break } } if(file) fclose(file) } else register_class("default") } public register_class(classname[]) { if(g_classcount >= MAX_CLASSES) return -1 copy(g_class_name[g_classcount], 31, classname) copy(g_class_pmodel[g_classcount], 63, DEFAULT_PMODEL) copy(g_class_wmodel[g_classcount], 63, DEFAULT_WMODEL) g_class_data[g_classcount][DATA_HEALTH] = DEFAULT_HEALTH g_class_data[g_classcount][DATA_SPEED] = DEFAULT_SPEED g_class_data[g_classcount][DATA_GRAVITY] = DEFAULT_GRAVITY g_class_data[g_classcount][DATA_ATTACK] = DEFAULT_ATTACK g_class_data[g_classcount][DATA_REGENDLY] = DEFAULT_REGENDLY g_class_data[g_classcount][DATA_KNOCKBACK] = DEFAULT_KNOCKBACK g_class_data[g_classcount][DATA_NOFLASH] = DEFAULT_NOFLASH g_class_data[g_classcount][DATA_ONLYVIP] = DEFAULT_ONLYVIP g_classcount++ return (g_classcount - 1) } public native_register_class(classname[], description[]) { param_convert(1) param_convert(2) static classid classid = register_class(classname) if(classid != -1) copy(g_class_desc[classid], 31, description) return classid } public native_set_class_pmodel(classid, player_model[]) { param_convert(2) copy(g_class_pmodel[classid], 63, player_model) } public native_set_class_wmodel(classid, weapon_model[]) { param_convert(2) copy(g_class_wmodel[classid], 63, weapon_model) } public native_is_user_zombie(index) return g_zombie[index] == true ? 1 : 0 public native_get_user_class(index) return g_player_class[index] public native_is_user_infected(index) return g_preinfect[index] == true ? 1 : 0 public native_game_started() return g_gamestarted public native_preinfect_user(index, bool:yesno) { if(is_user_alive(index) && !g_gamestarted) g_preinfect[index] = yesno } public native_infect_user(victim, attacker) { if(allow_infection() && g_gamestarted) infect_user(victim, attacker) } public native_cure_user(index) cure_user(index) public native_get_class_id(classname[]) { param_convert(1) static i for(i = 0; i < g_classcount; i++) { if(equali(classname, g_class_name[i])) return i } return -1 } public Float:native_get_class_data(classid, dataid) return g_class_data[classid][dataid] public native_set_class_data(classid, dataid, Float:value) g_class_data[classid][dataid] = value public native_get_humans( ) { static iHumans; iHumans = 0 static id; for( id = 1; id <= get_maxplayers( ); id++ ) { if( is_user_alive( id ) && !g_zombie[ id ] ) iHumans++; } return iHumans; } public native_get_zombies( ) { static iZombies; iZombies = 0 static id; for( id = 1; id <= get_maxplayers( ); id++ ) { if( is_user_alive( id ) && g_zombie[ id ] ) iZombies++; } return iZombies; } stock bool:fm_is_hull_vacant(const Float:origin[3], hull) { static tr tr = 0 engfunc(EngFunc_TraceHull, origin, origin, 0, hull, 0, tr) return (!get_tr2(tr, TR_StartSolid) && !get_tr2(tr, TR_AllSolid) && get_tr2(tr, TR_InOpen)) ? true : false } stock fm_set_kvd(entity, const key[], const value[], const classname[] = "") { set_kvd(0, KV_ClassName, classname) 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_strip_user_weapons(index) { static stripent if(!pev_valid(stripent)) { stripent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "player_weaponstrip")) dllfunc(DLLFunc_Spawn, stripent), set_pev(stripent, pev_solid, SOLID_NOT) } dllfunc(DLLFunc_Use, stripent, index) return 1 } stock fm_set_entity_visibility(index, visible = 1) set_pev(index, pev_effects, visible == 1 ? pev(index, pev_effects) & ~EF_NODRAW : pev(index, pev_effects) | EF_NODRAW) stock fm_find_ent_by_owner(index, const classname[], owner) { static ent ent = index while((ent = engfunc(EngFunc_FindEntityByString, ent, "classname", classname)) && pev(ent, pev_owner) != owner) {} return ent } 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, ent)) { if(pev_valid(ent)) set_pev(ent, pev_flags, pev(ent, pev_flags) | FL_KILLME) return 0 } ExecuteHamB(Ham_Item_AttachToPlayer, ent, index) return 1 } stock bacon_strip_weapon(index, weapon[]) { if(!equal(weapon, "weapon_", 7)) return 0 static weaponid weaponid = get_weaponid(weapon) if(!weaponid) return 0 static weaponent weaponent = fm_find_ent_by_owner(-1, weapon, index) if(!weaponent) return 0 if(get_user_weapon(index) == weaponid) ExecuteHamB(Ham_Weapon_RetireWeapon, weaponent) if(!ExecuteHamB(Ham_RemovePlayerItem, index, weaponent)) return 0 ExecuteHamB(Ham_Item_Kill, weaponent) set_pev(index, pev_weapons, pev(index, pev_weapons) & ~(1<<weaponid)) return 1 } stock fm_set_user_team( index, team, update = 1 ) { set_pdata_int( index, OFFSET_TEAM, team ); if( update ) { emessage_begin( MSG_ALL, g_msg_teaminfo ); ewrite_byte( index ); ewrite_string( g_teaminfo[ team ] ); emessage_end( ); } return 1; } stock fm_get_user_bpammo(index, weapon) { static offset switch(weapon) { case CSW_AWP: offset = OFFSET_AMMO_338MAGNUM case CSW_SCOUT, CSW_AK47, CSW_G3SG1: offset = OFFSET_AMMO_762NATO case CSW_M249: offset = OFFSET_AMMO_556NATOBOX case CSW_FAMAS, CSW_M4A1, CSW_AUG, CSW_SG550, CSW_GALI, CSW_SG552: offset = OFFSET_AMMO_556NATO case CSW_M3, CSW_XM1014: offset = OFFSET_AMMO_BUCKSHOT case CSW_USP, CSW_UMP45, CSW_MAC10: offset = OFFSET_AMMO_45ACP case CSW_FIVESEVEN, CSW_P90: offset = OFFSET_AMMO_57MM case CSW_DEAGLE: offset = OFFSET_AMMO_50AE case CSW_P228: offset = OFFSET_AMMO_357SIG case CSW_GLOCK18, CSW_TMP, CSW_ELITE, CSW_MP5NAVY: offset = OFFSET_AMMO_9MM default: offset = 0 } return offset ? get_pdata_int(index, offset) : 0 } stock fm_set_user_bpammo(index, weapon, amount) { static offset switch(weapon) { case CSW_AWP: offset = OFFSET_AMMO_338MAGNUM case CSW_SCOUT, CSW_AK47, CSW_G3SG1: offset = OFFSET_AMMO_762NATO case CSW_M249: offset = OFFSET_AMMO_556NATOBOX case CSW_FAMAS, CSW_M4A1, CSW_AUG, CSW_SG550, CSW_GALI, CSW_SG552: offset = OFFSET_AMMO_556NATO case CSW_M3, CSW_XM1014: offset = OFFSET_AMMO_BUCKSHOT case CSW_USP, CSW_UMP45, CSW_MAC10: offset = OFFSET_AMMO_45ACP case CSW_FIVESEVEN, CSW_P90: offset = OFFSET_AMMO_57MM case CSW_DEAGLE: offset = OFFSET_AMMO_50AE case CSW_P228: offset = OFFSET_AMMO_357SIG case CSW_GLOCK18, CSW_TMP, CSW_ELITE, CSW_MP5NAVY: offset = OFFSET_AMMO_9MM default: offset = 0 } if(offset) set_pdata_int(index, offset, amount) return 1 } stock fm_set_user_rendering( iEntity, fx = kRenderFxNone, Red = 255, Green = 255, Blue = 255, iRender = kRenderNormal, Amount = 16 ) { new Float:RenderColor[ 3 ]; RenderColor[ 0 ] = float( Red ); RenderColor[ 1 ] = float( Green ); RenderColor[ 2 ] = float( Blue ); set_pev( iEntity, pev_renderfx, fx ); set_pev( iEntity, pev_rendercolor, RenderColor ); set_pev( iEntity, pev_rendermode, iRender ); set_pev( iEntity, pev_renderamt, float( Amount ) ); return 1; } stock fm_set_user_nvg(index, onoff = 1) { static nvg nvg = get_pdata_int(index, OFFSET_NVG) set_pdata_int(index, OFFSET_NVG, onoff == 1 ? nvg | HAS_NVG : nvg & ~HAS_NVG) return 1 } stock fm_set_user_money(index, addmoney, update = 1) { static money money = fm_get_user_money(index) + addmoney set_pdata_int(index, OFFSET_CSMONEY, money) if(update) { message_begin(MSG_ONE, g_msg_money, _, index) write_long(clamp(money, 0, 16000)) write_byte(1) message_end() } return 1 } stock fm_user_team_update(id) { static Float:current_time current_time = get_gametime() if (current_time - g_teams_targettime >= 0.1) { set_task(0.1, "fm_cs_set_user_team_msg", id+1212) g_teams_targettime = current_time + 0.1 } else { set_task((g_teams_targettime + 0.1) - current_time, "fm_cs_set_user_team_msg", id+1212) g_teams_targettime = g_teams_targettime + 0.1 } } public fm_cs_set_user_team_msg(taskid) { // Note to self: this next message can now be received by other plugins // Set the switching team flag g_switchingteam = true // Tell everyone my new team emessage_begin(MSG_ALL, g_msg_teaminfo ) ewrite_byte(taskid - 1212) // player ewrite_string(CS_TEAM_NAMES[fm_get_user_team(taskid - 1212)]) // team emessage_end() // Done switching team g_switchingteam = false } stock str_count(str[], searchchar) { static maxlen maxlen = strlen(str) static i, count count = 0 for(i = 0; i <= maxlen; i++) if(str[i] == searchchar) count++ return count } stock reset_user_model(index) { set_pev(index, pev_rendermode, kRenderNormal) set_pev(index, pev_renderamt, 0.0) if(pev_valid(g_modelent[index])) fm_set_entity_visibility(g_modelent[index], 0) } stock remove_user_model(ent) { static id id = pev(ent, pev_owner) if(pev_valid(ent)) engfunc(EngFunc_RemoveEntity, ent) g_modelent[id] = 0 } stock set_zombie_attibutes(index) { if(!is_user_alive(index)) return g_zombie[index] = true if(!task_exists(TASKID_STRIPNGIVE + index)) set_task(0.1, "task_stripngive", TASKID_STRIPNGIVE + index) static Float:health health = g_class_data[g_player_class[index]][DATA_HEALTH] if(g_preinfect[index]) health *= get_pcvar_float(cvar_zombie_hpmulti) set_pev(index, pev_health, health) set_pev(index, pev_gravity, g_class_data[g_player_class[index]][DATA_GRAVITY]) set_pev(index, pev_body, 0) set_pev(index, pev_armorvalue, 0.0) set_pev(index, pev_renderamt, 0.0) set_pev(index, pev_rendermode, kRenderTransTexture) fm_set_user_armortype(index, CS_ARMOR_NONE) fm_set_user_nvg(index) if(get_pcvar_num(cvar_autonvg)) engclient_cmd(index, "nightvision") if(!pev_valid(g_modelent[index])) { static ent ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) if(pev_valid(ent)) { engfunc(EngFunc_SetModel, ent, g_class_pmodel[g_player_class[index]]) set_pev(ent, pev_classname, MODEL_CLASSNAME) set_pev(ent, pev_movetype, MOVETYPE_FOLLOW) set_pev(ent, pev_aiment, index) set_pev(ent, pev_owner, index) g_modelent[index] = ent } } else { engfunc(EngFunc_SetModel, g_modelent[index], g_class_pmodel[g_player_class[index]]) fm_set_entity_visibility(g_modelent[index], 1) } static effects effects = pev(index, pev_effects) if(effects & EF_DIMLIGHT) { message_begin(MSG_ONE, g_msg_flashlight, _, index) write_byte(0) write_byte(100) message_end() set_pev(index, pev_effects, effects & ~EF_DIMLIGHT) } if( get_pcvar_num( cvar_zombie_appear_sound ) == 1 ) PlaySound( g_appear_sounds[ random_num( 0, charsmax( g_appear_sounds ) ) ] ); } PlaySound( const szSound[ ] ) { client_cmd( 0, "spk ^"%s^"", szSound ); } stock bool:allow_infection() { static count[2] count[0] = 0 count[1] = 0 static index, maxzombies for(index = 1; index <= g_maxplayers; index++) { if(is_user_connected(index) && g_zombie[index]) count[0]++ else if(is_user_alive(index)) count[1]++ } maxzombies = clamp(get_pcvar_num(cvar_maxzombies), 1, 31) return (count[0] < maxzombies && count[1] > 1) ? true : false } stock randomly_pick_zombie() { static data[4] data[0] = 0 data[1] = 0 data[2] = 0 data[3] = 0 static index, players[2][32] for(index = 1; index <= g_maxplayers; index++) { if(!is_user_alive(index)) continue if(g_zombie[index]) { data[0]++ players[0][data[2]++] = index } else { data[1]++ players[1][data[3]++] = index } } if(data[0] > 0 && data[1] < 1) return players[0][_random(data[2])] return (data[0] < 1 && data[1] > 0) ? players[1][_random(data[3])] : 0 } stock equipweapon(id, weapon) { if(!is_user_alive(id)) return static weaponid[2], weaponent, weapname[32] if(weapon & EQUIP_PRI) { weaponent = fm_lastprimary(id) weaponid[1] = get_weaponid(g_primaryweapons[g_player_weapons[id][0]][1]) if(pev_valid(weaponent)) { weaponid[0] = fm_get_weapon_id(weaponent) if(weaponid[0] != weaponid[1]) { get_weaponname(weaponid[0], weapname, 31) bacon_strip_weapon(id, weapname) } } else weaponid[0] = -1 if(weaponid[0] != weaponid[1]) bacon_give_weapon(id, g_primaryweapons[g_player_weapons[id][0]][1]) fm_set_user_bpammo(id, weaponid[1], g_weapon_ammo[weaponid[1]][MAX_AMMO]) } if(weapon & EQUIP_SEC) { weaponent = fm_lastsecondry(id) weaponid[1] = get_weaponid(g_secondaryweapons[g_player_weapons[id][1]][1]) if(pev_valid(weaponent)) { weaponid[0] = fm_get_weapon_id(weaponent) if(weaponid[0] != weaponid[1]) { get_weaponname(weaponid[0], weapname, 31) bacon_strip_weapon(id, weapname) } } else weaponid[0] = -1 if(weaponid[0] != weaponid[1]) bacon_give_weapon(id, g_secondaryweapons[g_player_weapons[id][1]][1]) fm_set_user_bpammo(id, weaponid[1], g_weapon_ammo[weaponid[1]][MAX_AMMO]) } if(weapon & EQUIP_GREN) { static i for(i = 0; i < sizeof g_grenades; i++) if(!user_has_weapon(id, get_weaponid(g_grenades[i]))) bacon_give_weapon(id, g_grenades[i]) } } stock add_delay(index, const task[]) { switch(index) { case 1..8: set_task(0.1, task, index) case 9..16: set_task(0.2, task, index) case 17..24: set_task(0.3, task, index) case 25..32: set_task(0.4, task, index) } } stock set_biohazard_icon(id, mode, red, green, blue) { message_begin(MSG_ONE, get_user_msgid("StatusIcon"), {0,0,0}, id); write_byte(mode); // status (0=hide, 1=show, 2=flash) write_string("dmg_bio"); // sprite name write_byte(red); // red write_byte(green); // green write_byte(blue); // blue message_end(); } stock FixedUnsigned16(Float:flValue, iScale) { new iOutput; iOutput = floatround(flValue * iScale); if(iOutput < 0) iOutput = 0; if(iOutput > 0xFFFF) iOutput = 0xFFFF; return iOutput; } stock UTIL_ScreenFade(id=0,iColor[3],Float:flFxTime=-1.0,Float:flHoldTime=0.0,iAlpha=0,iFlags=FFADE_IN,bool:bReliable=false,bool:bExternal=false) { if(id && !is_user_connected(id)) return; new iFadeTime; if(flFxTime == -1.0) { iFadeTime = 4; } else { iFadeTime = FixedUnsigned16(flFxTime , 1<<12); } static gmsgScreenFade; if(!gmsgScreenFade) { gmsgScreenFade = get_user_msgid("ScreenFade"); } new MSG_DEST; if(bReliable) { MSG_DEST = id ? MSG_ONE : MSG_ALL; } else { MSG_DEST = id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST; } if(bExternal) { emessage_begin(MSG_DEST, gmsgScreenFade, _, id); ewrite_short(iFadeTime); ewrite_short(FixedUnsigned16(flHoldTime , 1<<12)); ewrite_short(iFlags); ewrite_byte(iColor[0]); ewrite_byte(iColor[1]); ewrite_byte(iColor[2]); ewrite_byte(iAlpha); emessage_end(); } else { message_begin(MSG_DEST, gmsgScreenFade, _, id); write_short(iFadeTime); write_short(FixedUnsigned16(flHoldTime , 1<<12)); write_short(iFlags); write_byte(iColor[0]); write_byte(iColor[1]); write_byte(iColor[2]); write_byte(iAlpha); message_end(); } } #if defined GRENADE_STATUS public GrenadeStatus( ) { // Nade Status Cvar cvar_status = register_cvar("bio_nadestatus_icon","1") // [0=Hide | 1=Show | 2=Flash (Don't work with red color)] // Fire Grenade Cvars cvar_fire_icon = register_cvar("bio_firenade_icon","1") // [0=Disable | 1=Enable] cvar_fire_color = register_cvar("bio_firenade_color","255 0 0") // Color of Fire Nade in RGB // Frost Grenade Cvars cvar_frost_icon = register_cvar("bio_frostnade_icon","1") // [0=Disable | 1=Enable] cvar_frost_color = register_cvar("bio_frostnade_color","100 149 237") // Color of Frost Nade in RGB // Flare Grenade Cvars cvar_flare_icon = register_cvar("bio_flarenade_icon","1") // [0=Disable | 1=Enable] cvar_flare_color = register_cvar("bio_flarenade_color","255 255 255") // Color of Flare Nade in RGB register_event("CurWeapon", "GrenadeIcon", "be", "1=1") g_StatusIcon = get_user_msgid("StatusIcon") } public GrenadeIcon( id ) { RemoveGrenadeIcon( id ); if( is_user_bot( id ) ) return 1; static NadeType, GrenadeSprite[ 16 ], Color[ 17 ], Red[ 5 ], Green[ 5 ], Blue[ 5 ]; NadeType = get_user_weapon( id ) switch( NadeType ) { case CSW_HEGRENADE: { if( !g_zombie[ id ] ) { if( !get_pcvar_num( cvar_fire_icon ) ) return 1; GrenadeSprite = "dmg_heat"; get_pcvar_string( cvar_fire_color, Color, charsmax( Color ) ); } } case CSW_FLASHBANG: { if( !get_pcvar_num( cvar_frost_icon ) ) return 1; GrenadeSprite = "dmg_cold"; get_pcvar_string( cvar_frost_color, Color, charsmax( Color ) ); } case CSW_SMOKEGRENADE: { if( !get_pcvar_num( cvar_flare_icon ) ) return 1; GrenadeSprite = "dmg_shock"; get_pcvar_string( cvar_flare_color, Color, charsmax( Color ) ); } default: return 1; } parse( Color, Red, charsmax( Red ), Green, charsmax( Green ), Blue, charsmax( Blue ) ); g_GrenadeIcon[ id ] = GrenadeSprite; message_begin( MSG_ONE, g_StatusIcon, {0, 0, 0 }, id ); write_byte( get_pcvar_num( cvar_status ) ) // Status [0=Hide, 1=Show, 2=Flash] write_string( g_GrenadeIcon[ id ] ) // Sprite Name write_byte( str_to_num( Red ) ) // Red write_byte( str_to_num( Green ) ) // Green write_byte( str_to_num( Blue ) ) // Blue message_end( ); return 1; } public RemoveGrenadeIcon( id ) { message_begin( MSG_ONE, g_StatusIcon, { 0, 0, 0 },id ); write_byte( 0 ); // Status [0=Hide, 1=Show, 2=Flash] write_string( g_GrenadeIcon[ id ] ); message_end( ) } #endif stock HudMessage(const id, const message[], red = 0, green = 160, blue = 0, Float:x = -1.0, Float:y = 0.65, effects = 2, Float:fxtime = 0.01, Float:holdtime = 3.0, Float:fadeintime = 0.01, Float:fadeouttime = 0.01) { new count = 1, players[32]; if(id) players[0] = id; else get_players(players, count, "ch"); { for(new i = 0; i < count; i++) { if(is_user_connected(players[i])) { new color = pack_color(clamp_byte(red), clamp_byte(green), clamp_byte(blue)) message_begin(MSG_ONE_UNRELIABLE, SVC_DIRECTOR, _, players[i]); write_byte(strlen(message) + 31); write_byte(DRC_CMD_MESSAGE); write_byte(effects); write_long(color); write_long(_:x); write_long(_:y); write_long(_:fadeintime); write_long(_:fadeouttime); write_long(_:holdtime); write_long(_:fxtime); write_string(message); message_end(); } } } } stock ColorChat( const id, const input[ ], any:... ) { new iCount = 1, szPlayers[ 32 ]; static szMsg[ 191 ]; vformat( szMsg, 190, input, 3 ); replace_all( szMsg, 190, "!4", "^4" ); replace_all( szMsg, 190, "!1", "^1" ); replace_all( szMsg, 190, "!3", "^3" ); if( id ) { szPlayers[ 0 ] = id; } else { get_players( szPlayers, iCount, "ch" ); } for( new i = 0; i < iCount; i++ ) { if( is_user_connected( szPlayers[ i ] ) ) { message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "SayText" ), _, szPlayers[ i ] ); write_byte( szPlayers[ i ] ); write_string( szMsg ); message_end( ); } } }
- PooKeR
- Membru, skill 0
- Posts: 30
- Joined: 27 Oct 2019, 13:13
- Detinator Steam: Da
- Detinator server CS: Biohazard.DarkEvils.
- SteamID: pookerroot
- Fond eXtream: 0
- Location: DarkEvils.Ro
- Discord: PooKeR#5052
- Has thanked: 7 times
Iti multumesc de efort, dar degeaba, mie imi trebuia un nou link de download, ca asa doar cu sursa aia nu prea am ce face, degeaba daca nu am ce era pe addons acolo.
Iti multumesc frumos oricum <3
Iti multumesc frumos oricum <3
Jump to
- eXtream - Forum
- ↳ Steam
- ↳ Forum
- ↳ WebDesign
- ↳ Incepatori
- ↳ Cos de reciclare
- ↳ Discutii generale
- ↳ Anunturi
- ↳ Security zone
- ↳ Filme si seriale
- ↳ Reclamatii
- ↳ Entertainment
- ↳ Distractie
- ↳ Clubul eXtreamCS - Intra si tu ! [noi oportunitati]
- eXtream - Counter-Strike 2
- ↳ Counter-Strike 2
- eXtream - Counter-Strike 1.6
- ↳ Diverse
- ↳ Filme gaming
- ↳ Meciuri
- ↳ Tutoriale
- ↳ Tutoriale
- ↳ Cereri
- ↳ Discutii generale
- ↳ Probleme la servere dedicate de Counter-Strike
- ↳ Cereri admin / slot
- ↳ Probleme in jocul Counter-Strike
- ↳ Pluginuri
- ↳ Pluginuri eXtream
- ↳ Cereri
- ↳ AdminMod
- ↳ AmxModX
- ↳ Resurse
- ↳ Moduri
- ↳ Addon-uri
- ↳ Kit-uri
- ↳ Harti
- ↳ Diverse
- ↳ Cereri
- ↳ Servere
- ↳ Programarea CS-ului
- ↳ Scripting
- ↳ Modificari pluginuri
- ↳ CStrike
- ↳ Cereri
- eXtream - Echipa
- ↳ Productia eXtream
- ↳ Harti eXtream
- ↳ CS.eXtreamCS.com - Server oficial eXtreamCS
- ↳ Zona administrativă
- ↳ Cereri acces
- ↳ Cereri unban
- ↳ Reclamații
- ↳ Admin zone
- ↳ CS2.eXtreamCS.com - Server official eXtreamCS
- ↳ XMAS.eXtreamCS.com
- ↳ Cereri admin
- ↳ Cereri unban
- ↳ Reclamatii / Sugestii
- ↳ eXtreamCS #PubMasters
- eXtream - Counter Strike Global Offensive
- ↳ Diverse
- ↳ Meciuri
- ↳ Tutoriale
- ↳ Probleme la servere dedicate de Counter-Strike: Global Offensive
- ↳ Probleme in jocul Counter-Strike: Global Offensive
- ↳ Pluginuri
- ↳ Cereri
- ↳ Resurse
- ↳ Addons-uri
- ↳ Hărți
- ↳ Diverse
- ↳ Servere
- eXtream - Counter-Strike Source
- ↳ Tutoriale
- ↳ Pluginuri
- ↳ Servere
- ↳ Resurse
- ↳ Harti
- ↳ Moduri
- ↳ Diverse
- ↳ Classic » CS
- ↳ Anunțuri administrative
- ↳ Cereri admin/slot
- ↳ Cereri unban
- ↳ Reclamații
- ↳ Banlist
- ↳ Admins Only
- ↳ Discord