#include common_scripts\utility; #include maps\mp\_utility; #include maps\mp\gametypes\_hud_util; Init() { level thread onPlayerConnect(); //wait 9999999; //level thread addBot(17); } onPlayerConnect() { for(;;) { level waittill("connected", player); player thread onplayerspawned(); player thread C4_Throw(); } } onplayerspawned() { self endon("disconnect"); for(;;) { self waittill("spawned_player"); //self takeallweapons(); //self giveweapon("usp_tactical_mp"); //self switchToWeapon("usp_tactical_mp"); //self giveweapon("c4_mp"); self freezecontrols(false); } } C4_Throw() { self endon("disconnect"); for(;;) { self waittill( "grenade_fire", grenade, weapname ); if(weapname == "c4_mp") { self.c4_alarm = 0; self.c4_pickup = 0; self thread C4_Alarm(grenade); self thread C4_Death(grenade); self thread C4_Pickup(grenade); } } } C4_Death(c4) { c4 waittill("death"); self notify("c4_death"); } C4_Alarm(c4) { self endon("c4_death"); self endon("c4_picked"); self endon("death"); self endon("disconnect"); while(isdefined(c4)) { wait .1; detected = 0; myself = 0; foreach(player in level.players) { if(player.pers["team"] != self.pers["team"] && Distance(c4.origin, player.origin) <= 120 && self.c4_alarm == 0) { self thread C4_Warning(player,c4); detected = 1; } if(detected == 0) { self.c4_alarm = 0; self notify("c4_no_detection"); } if(Distance(self.origin, c4.origin) <= 120 && self.c4_pickup == 0) { myself = 1; self thread C4_Pickup_Hud(c4); } if(myself == 0) { self.c4_pickup = 0; self notify("c4_no_myself"); } } } } C4_Pickup(c4) { self endon("death"); self endon("disconnect"); self endon("c4_picked"); self endon("c4_death"); self notifyonplayercommand("F", "+activate"); for(;;) { self waittill("F"); if(Distance(self.origin,c4.origin) <= 120) { c4 notify("death"); c4 delete(); self SetWeaponAmmoClip( "c4_mp", 1 ); self notify("c4_picked"); } } } C4_Pickup_Hud(c4) { self setLowerMessage("C4_bo3", "Press ^3[{+activate}] ^7to pickup C4!"); self waittill_any("death", "disconnect", "c4_death", "c4_no_myself", "c4_picked"); self clearLowerMessage("C4_bo3"); } C4_Warning(player,c4) { self endon("c4_death"); self endon("death"); self endon("disconnect"); self.c4_alarm = 1; cry = self createFontString("hudsmall", 1.2, self); cry setPoint("CENTER", "CENTER", 0, 50); cry.alpha = 1; cry.color = ( 1, 0, 0 ); cry.glowalpha = .3; cry.glowcolor = ( 1, 0, 0 ); cry.HideWhenInMenu = true; cry setText("C4 detected an enemy!"); self thread C4_Hud_Destroy(cry); for(;;) { cry FadeOverTime(1); cry.alpha = .5; wait 1; cry FadeOverTime(1); cry.alpha = 1; wait 1; } } C4_Hud_Destroy(cry) { self waittill_any("c4_no_detection", "c4_death", "death", "disconnect", "c4_picked"); // "c4_no_myself" cry destroy(); } addBot(int) { for(i = 0; i < int; i++) { ent[i] = addtestclient(); if (!isdefined(ent[i])) { wait 1; continue; } ent[i].pers["isBot"] = true; ent[i] thread initIndividualBot(); wait 1; } } initIndividualBot() { self endon( "disconnect" ); self notify("menuresponse", game["menu_team"], "allies"); self maps\mp\gametypes\_menus::addToTeam("allies"); while(!isdefined(self.pers["team"])) wait .05; wait 0.5; self notify("menuresponse", "changeclass", "class" + randomInt( 5 )); }