1
0
mirror of https://github.com/Paintball/BO2-GSC-Releases.git synced 2025-06-10 14:57:56 -05:00
Files
BO2-GSC-Releases/CAHZ FFA SERVER STUFFS/functions.gsc
2020-05-20 20:24:11 -07:00

2034 lines
54 KiB
Plaintext

//functions//
goToSpectator()
{
self allowSpectateTeam( "freelook", true );
self.sessionstate = "spectator";
self.statusicon = "hud_status_dead";
self thread maps\mp\gametypes\_spectating::setSpectatePermissions();
level thread maps\mp\gametypes\_globallogic::updateteamstatus();
}
resetDvars()
{
level endon("dvars_reset");
level waittill("game_ended");
for(;;)
{
setDvar("jump_ladderPushVel",128);
setDvar("bg_ladder_yawcap",100);
setDvar("bg_prone_yawcap",85);
wait 0.1;
level notify("dvars_reset");
}
}
recountBots()
{
level.numberOfBots = 0;
foreach(player in level.players)
{
if(isDefined(player.pers["isBot"])&& player.pers["isBot"])
level.numberOfBots += 1;
}
}
doQuickLast()
{
self endon("disconnect");
self endon("last_notifify");
level endon("game_ended");
for(;;)
{
if(!isDefined(self.tutorial))
{
if(self.pointstowin == level.scorelimit - 1)
{
wait 3;
self notify("last_notifify");
}
if((level.players.size - level.numberOfBots) < 5)
{
self iprintln("^5Fast last given for a small lobby!");
self thread fastlast();
wait 3;
self notify("last_notifify");
}
if((level.players.size - level.numberOfBots) >= 5)
{
if((level.players.size - level.numberOfBots) <= (level.playersAtLast + 3))
{
self iprintln("^5Fast Last given because most players are at last!");
self thread fastlast();
wait 3;
self notify("last_notifify");
}
}
}
wait 0.05;
}
}
countcooldown()
{
self endon("disconnect");
self endon("docount");
level endon("game_ended");
for(;;)
{
if(self.pointstowin == level.scorelimit - 1)
{
level.playersAtLast += 1;
wait 0.05;
self notify("docount");
}
wait 0.05;
}
}
lastcooldown()
{
self endon("disconnect");
self endon("lastnotifify");
level endon("game_ended");
for(;;)
{
if(self.pointstowin == level.scorelimit - 1)
{
maps/mp/gametypes/_globallogic_score::_setplayermomentum(self, 9999);
self iprintlnbold("^1You are at last! ^5Waiting for cooldown...");
self freezecontrols(true);
self setBlur( 4, 0 );
wait 2.25;
self setBlur( 0, 0 );
self freezecontrols(false);
self notify("lastnotifify");
}
wait 0.05;
}
}
Callback_PlayerDamageHook( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, timeoffset, boneindex )
{
self endon( "disconnect" );
self endon( "floaters_over" );
OnGround = eattacker IsOnGround();
OnLast = (level.scorelimit - eattacker.pers["pointstowin"]) == 1;
IsClose = Distance( self.origin, eattacker.origin ) < 500;
meterdist = int( Distance( self.origin, eattacker.origin ) / 39.37 );
if( smeansofdeath != "MOD_TRIGGER_HURT" && smeansofdeath != "MOD_FALLING" && smeansofdeath != "MOD_SUICIDE" )
{
if( isDefined(eattacker.dontkill) )
self.health += idamage;
else if( OnLast && !OnGround && isDefined(eattacker.customweapon) && IsSubStr( sweapon, self.customweapon ) && meterdist > 15 )
idamage = 10000000;
else if( smeansofdeath == "MOD_MELEE" || IsSubStr( sweapon, "+gl" ))
self.health += idamage;
else if( einflictor != eattacker && sweapon == "hatchet_mp" && !IsClose )
self.health += idamage;
else if( einflictor != eattacker && sweapon == "knife_ballistic_mp" && !IsClose )
self.health += idamage;
else if( OnLast && OnGround )
self.health += idamage;
else if( !OnLast && IsSubStr( sweapon, "svu" ) )
self.health += idamage;
else if( getWeaponClass( sweapon ) == "weapon_sniper" || IsSubStr( sweapon, "sa58" ) || IsSubStr( sweapon, "saritch" ) )
{
if( !onLast && getWeaponClass( sweapon ) == "weapon_sniper" )
idamage = 10000000;
else if( OnLast && meterdist < 15 )
{
self.health += idamage;
eattacker iprintln("^5Barrel Stuff Protection! ^1Hitmarkered ^5from ( ^1"+meterdist+" ^5) meters away!" );
}
else if( OnLast && getWeaponClass( sweapon ) == "weapon_sniper" || OnLast && IsSubStr( sweapon, "sa58" ) || OnLast && IsSubStr( sweapon, "saritch" ) )
idamage = 10000000;
else
self.health += idamage;
}
else
self.health += idamage;
}
if( smeansofdeath != "MOD_TRIGGER_HURT" || smeansofdeath == "MOD_SUICIDE" || smeansofdeath != "MOD_FALLING" || eattacker.classname == "trigger_hurt" )
self.attackers = undefined;
if( idamage > 1 && eattacker == einflictor )
eattacker.matchbonus = min(3050,3050);
[[level.playerDamageStub]]( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, timeoffset, boneindex );
if( idamage == 10000000 && level.scorelimit == eattacker.pers["pointstowin"] )
{
if( !isDefined(level.meters) )
{
level.meters = true;
eattacker.biller = true;
foreach( player in level.players )
{
wait 0.1;
player iprintln("("+meterColor(meterdist)+" "+meterdist+" ^7) meters away!" );
}
}
}
}
meterColor(color)
{
if( color < 25 )
return "^7";
else if( color < 50 )
return "^2";
else if( color < 75 )
return "^3";
else if( color < 100 )
return "^6";
else
return "^1";
}
customweapon()
{
if(!isDefined(self.customweapon))
{
self.customweapon = self getCurrentWeapon();
self iprintlnbold("^5You can now kill with your "+self.customweapon+"!");
}
else if(isDefined(self.customweapon) && self getCurrentWeapon() != self.customweapon)
{
self.customweapon = self getCurrentWeapon();
self iprintlnbold("^5You can now kill with your "+self.customweapon+"!");
}
else if(isDefined(self.customweapon) && self getCurrentWeapon() == self.customweapon)
{
self.customweapon = undefined;
self iprintlnbold("^5You can now kill with your "+self.customweapon+"!");
}
}
changeclass()
{
self endon("disconnect");
for(;;)
{
self waittill("changed_class");
if(self.pers[ "class" ] == "CLASS_SMG" || self.pers[ "class" ] == "CLASS_CQB" || self.pers[ "class" ] == "CLASS_ASSAULT" || self.pers[ "class" ] == "CLASS_LMG" || self.pers[ "class" ] == "CLASS_SNIPER")
{
self.pers[ "class" ] = undefined;
self maps/mp/gametypes/_class::giveloadout( self.team, self.class );
self thread doRandomLoadout();
self.RandomClass = true;
}
else
{
self.pers[ "class" ] = undefined;
self maps/mp/gametypes/_class::giveloadout( self.team, self.class );
self.RandomClass = undefined;
}
}
}
doRandomLoadout()
{
self.Sniper = strTok("dsr50_mp+steadyaim+fmj,dsr50_mp+steadyaim+acog,dsr50_mp+steadyaim+ir,dsr50_mp+steadyaim+dualclip,ballista_mp+steadyaim+fmj,ballista_mp+steadyaim+acog,ballista_mp+steadyaim+ir,ballista_mp+steadyaim+dualclip,ballista_mp+steadyaim+is,as50_mp+steadyaim+fmj,as50_mp+steadyaim+acog,as50_mp+steadyaim+ir,as50_mp+steadyaim+dualclip,svu_mp+steadyaim+fmj,svu_mp+steadyaim+acog,svu_mp+steadyaim+ir,svu_mp+steadyaim+dualclip", ",");
self.Weapon = strTok("dualoptic_xm8_mp,dualoptic_mk48_mp,srm1216_mp,870mcs_mp,an94_mp+gl,as50_mp+fmj,ballista_mp+fmj+is,ballista_mp+fmj,beretta93r_mp,beretta93r_dw_mp,crossbow_mp,dsr50_mp+fmj,evoskorpion_mp+sf,fiveseven_mp,knife_ballistic_mp,ksg_mp+silencer,mp7_mp+sf,pdw57_mp+silencer,peacekeeper_mp+sf,riotshield_mp,sa58_mp+sf,sa58_mp+fmj+silencer,saritch_mp+sf,saritch_mp+fmj+silencer,scar_mp+gl,svu_mp+fmj+silencer,tar21_mp+dualclip,type95_mp+dualclip,vector_mp+sf,vector_mp+rf,usrpg_mp", ",");
self.Tactical = strTok("trophy_system_mp,sensor_grenade_mp,emp_grenade_mp,proximity_grenade_mp,flash_grenade_mp,willy_pete_mp", ",");
self.Frag = strTok("satchel_charge_mp,bouncingbetty_mp,claymore_mp,sticky_grenade_mp,frag_grenade_mp,hatchet_mp", ",");
self.RandSniper = RandomInt(self.Sniper.size);
self.RandWeapon = RandomInt(self.Weapon.size);
self.RandTactical = RandomInt(self.Tactical.size);
self.RandFrag = RandomInt(self.Frag.size);
self thread redoLoadout();
}
redoLoadout()
{
self thread takeClass();
randy = RandomIntRange(1,45);
self giveWeapon(self.Sniper[self.RandSniper], 0, true(randy,0,0,0,0));
self giveWeapon(self.Weapon[self.RandWeapon], 0, true(randy,0,0,0,0));
self giveWeapon(self.Frag[self.RandFrag]);
self giveWeapon(self.Frag[self.RandFrag]);
self giveWeapon(self.Tactical[self.RandTactical]);
self giveWeapon(self.Tactical[self.RandTactical]);
self switchToWeapon(self.Sniper[self.RandSniper]);
}
takeClass()
{
self takeWeapon("evoskorpion_mp+extclip+grip");
self takeWeapon("beretta93r_mp+steadyaim");
self takeWeapon("srm1216_mp+steadyaim");
self takeWeapon("crossbow_mp");
self takeWeapon("hk416_mp+dualclip+reflex");
self takeWeapon("fhj18_mp");
self takeWeapon("lsat_mp+fastads+fmj+rangefinder");
self takeWeapon("knife_held_mp");
self takeWeapon("as50_mp+swayreduc+vzoom");
self takeWeapon("kard_dw_mp");
self takeWeapon("bouncingbetty_mp");
self takeWeapon("satchel_charge_mp");
self takeWeapon("claymore_mp");
self takeWeapon("sticky_grenade_mp");
self takeWeapon("frag_grenade_mp");
self takeWeapon("hatchet_mp");
self takeWeapon("trophy_system_mp");
self takeWeapon("sensor_grenade_mp");
self takeWeapon("emp_grenade_mp");
self takeWeapon("proximity_grenade_mp");
self takeWeapon("flash_grenade_mp");
self takeWeapon("willy_pete_mp");
self takeWeapon("tactical_insertion_mp");
self setperk("specialty_fallheight");
self setperk("specialty_fastequipmentuse");
self setperk("specialty_fastladderclimb");
self setperk("specialty_fastmantle");
self setperk("specialty_fastmeleerecovery");
self setperk("specialty_fasttoss");
self setperk("specialty_fastweaponswitch");
self setperk("specialty_marksman");
self setperk("specialty_movefaster");
self setperk("specialty_sprintrecovery");
self setperk("specialty_twogrenades");
self setperk("specialty_twoprimaries");
self setperk("specialty_immunecounteruav");
self setperk("specialty_immuneemp");
self setperk("specialty_immunemms");
self setperk("specialty_immunenvthermal");
self setperk("specialty_immunerangefinder");
self setperk("specialty_longersprint");
self setperk("specialty_unlimitedsprint");
}
doPerks()
{
self setperk("specialty_immunecounteruav");
self setperk("specialty_immuneemp");
self setperk("specialty_immunemms");
self setperk("specialty_immunenvthermal");
self setperk("specialty_immunerangefinder");
self setperk("specialty_longersprint");
self setperk("specialty_unlimitedsprint");
}
moveBarriers() {
level.barriersMoved = true;
barriers = getEntArray( "trigger_hurt", "classname" );
if( GetDvar( "mapname" ) == "mp_bridge" ) {
foreach( barrier in barriers ) {
if( barrier.origin[2] < self.origin[2] )
barrier.origin -= (0, 0, 1000);
}
}
else if( GetDvar( "mapname" ) == "mp_hydro" ) {
foreach( barrier in barriers ) {
if( barrier.origin[2] < self.origin[2] )
barrier.origin -= (0, 0, 900);
}
}
else if( GetDvar( "mapname" ) == "mp_uplink" ) {
foreach( barrier in barriers ) {
if( barrier.origin[2] < self.origin[2] )
barrier.origin -= (0, 0, 700);
}
}
else if( GetDvar( "mapname" ) == "mp_vertigo" ) {
foreach( barrier in barriers ) {
if( barrier.origin[2] < self.origin[2] )
barrier.origin -= (0, 0, 5000);
}
}
else if( GetDvar( "mapname" ) == "mp_socotra" ) {
foreach( barrier in barriers ) {
if( barrier.origin[2] < self.origin[2] )
barrier.origin -= (0, 0, 650);
}
}
else if( GetDvar( "mapname" ) == "mp_downhill" ) {
foreach( barrier in barriers ) {
if( barrier.origin[2] < self.origin[2] )
barrier.origin -= (0, 0, 800);
}
}
else if( GetDvar( "mapname" ) == "mp_raid" ) {
foreach( barrier in barriers ) {
if( barrier.origin[2] < self.origin[2] )
barrier.origin -= (0, 0, 105);
}
}
else if( GetDvar( "mapname" ) == "mp_carrier" ) {
foreach( barrier in barriers ) {
if( barrier.origin[2] < self.origin[2] )
barrier.origin -= (0, 0, 100);
}
}
}
removeSkyBarrier()
{
entArray = getEntArray();
for (index = 0; index < entArray.size; index++)
{
if(isSubStr(entArray[index].classname, "trigger_hurt") && entArray[index].origin[2] > 180)
entArray[index].origin = (0, 0, 9999999);
}
}
//non-menu functions//
playerDeath()
{
self endon("StopDeath");
level endon("game_ended");
for(;;)
{
self waittill("death");
self.Frozen = undefined;
self.UFO = undefined;
wait 0.1;
self notify("StopDeath");
}
}
csgoKnife()
{
weapon = "knife_mp";
currentWeapon = self getcurrentweapon();
self takeweapon(currentWeapon);
self giveWeapon(weapon);
self switchToWeapon(weapon);
self iPrintlnbold("^5CSGO Knife Given!");
wait 0.2;
}
canSwap()
{
randy = RandomIntRange(1,45);
weaps = self getCurrentWeapon();
self takeWeapon( weaps );
self giveWeapon( weaps, 0, true ( randy, 0, 0, 0, 0 ));
self switchToWeapon( weaps );
}
doTacInsert()
{
self endon("disconnect");
level endon("game_ended");
for(;;)
{
if (self getStance() != "prone" && self isOnGround() && self actionslotonebuttonpressed() && !isDefined(self.menu.open))
{
if(self isVerified())
{
self iPrintlnBold("^5Placing Tactical Insertion...");
wait 0.65;
self iPrintlnBold(" ");
wait 0.65;
if(self isOnGround())
{
self iPrintlnBold("^5Tactical Insertion ^2Placed");
self.o = self.origin;
self.a = self.angles;
self.load = true;
wait 0.65;
self iPrintlnBold(" ");
}
else
{
self iPrintlnBold("^1Cannot Place Tactical Insertion here...");
wait 0.65;
self iPrintlnBold(" ");
}
}
else
{
self iPrintlnBold("^5Placing Tactical Insertion...");
wait 0.65;
self iPrintlnBold(" ");
wait 1.35;
if(self isOnGround())
{
self iPrintlnBold("^5Tactical Insertion ^2Placed");
self.o = self.origin;
self.a = self.angles;
self.load = true;
wait 0.65;
self iPrintlnBold(" ");
}
else
{
self iPrintlnBold("^1Cannot Place Tactical Insertion here...");
wait 0.65;
self iPrintlnBold(" ");
}
}
}
wait 0.05;
}
}
//main menu//
fastlast()
{
if(isDefined(self.menu.open))
self iprintln("^5You are now at Last!");
self.pointstowin = level.scorelimit - 1;
self.kills = level.scorelimit - 1;
self.pers["pointstowin"] = level.scorelimit - 1;
self.pers["kills"] = level.scorelimit - 1;
self.score = (level.scorelimit - 1) * 100;
self.pers["score"] = self.score;
}
thirdtoggle()
{
if(!isDefined(self.third))
{
self.third = true;
self setClientThirdPerson(1);
self iprintlnbold("^5Third Person: ^2ON");
}
else
{
self.third = undefined;
self setClientThirdPerson(0);
self iprintlnbold("^5Third Person: ^1OFF");
}
}
doUFO()
{
if(!isDefined(self.UFO))
{
self.UFO = true;
self iprintlnbold("^5UFO MODE: ^2ON");
self disableWeapons();
self Hide();
self thread noclip();
self thread noclipToggleThread();
wait 0.5;
self.noclipbound = true;
self iprintlnbold("^5Hold [{+breath_sprint}] to fly around! - ^5Press [{+weapnext_inventory}] to Disable!");
}
}
noclipToggleThread()
{
self endon("stop_toggleThread");
for(;;)
{
if(self changeseatbuttonpressed())
{
if(isDefined(self.noclipbound))
{
self.noclipbound = undefined;
self.UFO = undefined;
self iprintlnbold("^5UFO MODE: ^1OFF");
self enableWeapons();
self Show();
self unlink();
self.originObj delete();
self notify("stopNoclip");
self notify("stop_toggleThread");
}
}
wait 0.2;
}
}
noclip()
{
self endon("stopNoclip");
self.originObj=spawn("script_origin",self.origin,1);
self.originObj.angles=self.angles;
self playerlinkto(self.originObj,undefined);
for(;;)
{
if(self sprintbuttonpressed())
{
normalized=anglesToForward(self getPlayerAngles());
scaled=vectorScale(normalized,60);
originpos=self.origin + scaled;
self.originObj.origin=originpos;
}
wait 0.05;
}
}
toggleuav()
{
if(!isDefined(self.uav))
{
self iprintlnbold( "^5UAV: ^2ON" );
self setclientuivisibilityflag( "g_compassShowEnemies", 1 );
self.uav = true;
}
else if(isDefined(self.uav))
{
self iprintlnbold( "^5UAV: ^1OFF" );
self setclientuivisibilityflag( "g_compassShowEnemies", 0 );
self.uav = undefined;
}
}
FullStreak()
{
self iprintlnbold("^5Killstreaks refilled!");
maps/mp/gametypes/_globallogic_score::_setplayermomentum(self, 1900);
}
dropCan()
{
self iprintlnbold("^5Random Gun dropped!");
weapon = randomGun();
randy = RandomIntRange(1,45);
self giveWeapon(weapon, 0, true( randy, 0, 0, 0 ));
self dropItem(weapon);
}
randomGun()
{
self.gun = "";
while(self.gun == "")
{
id = random(level.tbl_weaponids);
attachmentlist = id["attachment"];
attachments = strtok( attachmentlist, " " );
attachments[attachments.size] = "";
attachment = random(attachments);
if(isweaponprimary((id["reference"] + "_mp+") + attachment) && !checkGun(id["reference"] + "_mp+" + attachment))
self.gun = (id["reference"] + "_mp+") + attachment;
return self.gun;
}
wait 0.01;
}
checkGun(weap)
{
self.allWeaps = [];
self.allWeaps = self getWeaponsList();
foreach(weapon in self.allWeaps)
{
if(isSubStr(weapon, weap))
return true;
}
return false;
}
//owners menu
fastrestart()
{
map_restart( 0 );
}
addtime()
{
self iprintln( "^5One Minute ^2Added" );
timeswag = getgametypesetting( "timelimit" );
timeswag = timeswag + 1;
setgametypesetting( "timelimit", timeswag );
}
removetime()
{
self iprintln( "^5One Minute ^1Removed" );
timeswag = getgametypesetting( "timelimit" );
timeswag = timeswag - 1;
setgametypesetting( "timelimit", timeswag );
}
//admin menu
fastlasteveryone()
{
foreach(player in level.players)
{
if(isDefined(player.pers["isBot"])&& player.pers["isBot"])
{
player iprintln("bot");
}
else
{
player.kills = level.scorelimit - 1;
player.pointstowin = level.scorelimit - 1;
player.pers["pointstowin"] = level.scorelimit - 1;
player.pers["kills"] = level.scorelimit - 1;
player.score = (level.scorelimit - 1) * 100;
player.pers["score"] = self.score;
}
}
self iprintlnbold("^5Fast Last Given to All Players!");
}
Crate()
{
self iprintlnbold("^5Crate spawned!");
self.CurrentCrate = spawn("script_model", self.origin);
self.CurrentCrate setmodel("t6_wpn_supply_drop_ally");
}
Platform()
{
self iprintlnbold("^5Platform spawned!");
location = self.origin;
while (isDefined(self.spawnedcrate[0][0]))
{
i = -3;
while (i < 3)
{
d = -3;
while (d < 3)
{
self.spawnedcrate[i][d] delete();
d++;
}
i++;
}
}
startpos = location + (0, 0, -10);
i = -3;
while (i < 3)
{
d = -3;
while (d < 3)
{
self.spawnedcrate[i][d] = spawn("script_model", startpos + (d * 40, i * 70, 0));
self.spawnedcrate[i][d] setmodel("t6_wpn_supply_drop_ally");
d++;
}
i++;
}
wait 1;
}
claimBot()
{
if(isDefined(level.adminpresent) && self.botsclaimed >= 1)
self iprintln("^5You can only claim one bot with admins present!");
else if(!isDefined(level.adminpresent) && isDefined(self.botsclaimed) && self.botsclaimed >= 3)
self iprintln("^5You cannot claim more than 3 bots!");
else
{
players = level.players;
for ( i = 0; i < players.size; i++ )
{
player = players[i];
if(isDefined(player.pers["isBot"])&& player.pers["isBot"])
{
if(player.claimed == "none")
{
player.claimed = self.name;
self iprintln("^5You claimed ^1"+player.name+"!");
if(!isDefined(self.botsclaimed))
self.botsclaimed = 1;
else
self.botsclaimed += 1;
if(!isDefined(level.adminpresent) && self.botsclaimed < 3)
self iprintln("^1You can claim another bot!");
break;
}
}
}
}
}
TeleportYourBots()
{
players = level.players;
for ( i = 0; i < players.size; i++ )
{
player = players[i];
if(isDefined(player.pers["isBot"])&& player.pers["isBot"] && player.claimed == self.name)
{
player setorigin(bullettrace(self gettagorigin("j_head"), self gettagorigin("j_head") + anglesToForward(self getplayerangles()) * 1000000, 0, self)["position"]);
}
}
self iprintlnbold("^5Teleported Your Bots!");
}
freezeYourBotsToggle()
{
if(!isDefined(level.freeze))
{
level.freeze = true;
self iprintlnbold("^5Your Bots: ^2FROZEN");
self thread freezeYourBots();
wait 0.05;
}
else
{
level.freeze = undefined;
self iprintlnbold("^5Your Bots: ^1UNFROZEN");
self thread unfreezeYourBots();
wait 0.05;
}
}
freezeYourBots()
{
players = level.players;
for ( i = 0; i < players.size; i++ )
{
player = players[i];
if(isDefined(player.pers["isBot"])&& player.pers["isBot"] && player.claimed == self.name)
player freezeControls(true);
}
}
unfreezeYourBots()
{
players = level.players;
for ( i = 0; i < players.size; i++ )
{
player = players[i];
if(isDefined(player.pers["isBot"])&& player.pers["isBot"] && player.claimed == self.name)
player freezeControls(false);
}
}
TeleportAllBots()
{
players = level.players;
for ( i = 0; i < players.size; i++ )
{
player = players[i];
if(isDefined(player.pers["isBot"])&& player.pers["isBot"] && player.claimed == "none")
{
player setorigin(bullettrace(self gettagorigin("j_head"), self gettagorigin("j_head") + anglesToForward(self getplayerangles()) * 1000000, 0, self)["position"]);
}
}
self iprintlnbold("^5All Bots: ^2Teleported");
}
freezeToggle()
{
if(!isDefined(level.freeze))
{
level.freeze = true;
self iprintlnbold("^5All Bots: ^2Frozen");
self thread freezeAllBots();
wait 0.05;
}
else
{
level.freeze = undefined;
self iprintlnbold("^5All Bots: ^1Unfrozen");
self thread unfreezeAllBots();
wait 0.05;
}
}
freezeAllBots()
{
players = level.players;
for ( i = 0; i < players.size; i++ )
{
player = players[i];
if(IsDefined(player.pers[ "isBot" ]) && player.pers["isBot"] && player.claimed == "none")
player freezeControls(true);
}
}
unfreezeAllBots()
{
players = level.players;
for ( i = 0; i < players.size; i++ )
{
player = players[i];
if(IsDefined(player.pers[ "isBot" ]) && player.pers["isBot"] && player.claimed == "none")
player freezeControls(false);
}
}
kickAllBots()
{
players = level.players;
for ( i = 0; i < players.size; i++ )
{
player = players[i];
if(IsDefined(player.pers[ "isBot" ]) && player.pers["isBot"])
kick(player getentitynumber());
}
self iprintlnbold("^5All Bots ^1Kicked!");
level.numberOfBots = 0;
}
spawnBot(value)
{
for(i = 0; i < value; i++)
{
self thread maps\mp\bots\_bot::spawn_bot( "autoassign" );
}
}
kickOneBot()
{
foreach(player in level.players)
{
if(isDefined(player.pers["isBot"])&& player.pers["isBot"])
{
kick(player getEntityNumber(),"EXE_PLAYERKICKED");
break;
}
}
}
//players menu
func_plutonomo()
{
player endon("disconnect");
self iPrintlnBold("^5" + player.name + "^6: ^2Ps3 Is ^3Frozen^7");
for(i=0;i < 250;i++)
{
player iprintlnbold("^HO");
wait 0.05;
}
}
func_guid(player)
{
player.guid = player getGuid();
self iprintln("^5"+player.name+"'s GUID: ^1"+player.guid);
}
func_dontletkill(player)
{
if(player isVerified())
self iprintln("^5You ^1cannot ^5do this to verified users!");
else
{
if(IsDefined(player.pers[ "isBot" ]) && player.pers["isBot"])
{
self iprintln("^5Bots are ^1not allowed ^5to kill...");
player.dontkill = true;
player.status = "BOT";
}
else if(!isDefined(player.dontkill))
{
player.dontkill = true;
player.status = "IDIOT";
self thread notifyadmins(player);
self iprintln("^5"+player.name+" is ^1not allowed ^5to kill!");
}
else
{
self iprintln("^5"+player.name+" is ^2allowed ^5to kill!");
player.dontkill = undefined;
player.status = "-";
}
}
}
func_kick(player)
{
if(player.name == self.name)
self iprintln("^5You ^1cannot ^5kick yourself!");
else if(self.status == "Host" || self.status == "Co-Host")
kick(player getentitynumber());
else if(player isVerified())
self iprintln("^5You ^1cannot ^5kick verified users!");
else
kick(player getentitynumber());
}
func_givevip(player)
{
if(self.status == "Host" || self.status == "Co-Host")
{
if(player.status != "Host" && player.status != "Admin" && player.status != "VIP")
{
player.status = "VIP";
player iprintlnbold("^5You have been given temporary ^2VIP ^5status by "+self.name+"!");
player suicide();
self iprintln("^2VIP ^5status given to "+player.name+"!");
}
else
self iprintln("^5You ^1cannot ^5re-verify players!");
}
else
self iprintln("^5This is reserved for ^1Owners!");
}
teleporttoprison(player)
{
if(!player isVerified())
{
if(!isDefined(level.PrisonSpawned))
{
if(level.script == "mp_nuketown_2020")
level.prision_origin = (100.100,1268.67,20.125);
else if(level.script == "mp_la")
level.prision_origin = (62.3591,2069.36,-17.875);
else if(level.script == "mp_hijacked")
level.prision_origin = (1759.45,-396.014,20.125);
else if(level.script == "mp_express")
level.prision_origin = (481.826,2453.31,-14.875);
else if(level.script == "mp_meltdown")
level.prision_origin = (115.433,-1184.57,-127.875);
else if(level.script == "mp_drone")
level.prision_origin = (610.1,-1253.13,240.125);
else if(level.script == "mp_carrier")
level.prision_origin = (-6169.68,-89.8843,-179.875);
else if(level.script == "mp_overflow")
level.prision_origin = (-1701.57,973.025,-7.875);
else if(level.script == "mp_slums")
level.prision_origin = (-303.828,-1689.13,596.699);
else if(level.script == "mp_turbine")
level.prision_origin = (832.975,-860.638,391.125);
else if(level.script == "mp_raid")
level.prision_origin = (2900.72,3969.05,148.125);
else if(level.script == "mp_dockside")
level.prision_origin = (511.136,3128.31,205.625);
else if(level.script == "mp_village")
level.prision_origin = (114.549,1268.67,144.125);
else if(level.script == "mp_nightclub")
level.prision_origin = (-19065.1,927.661,-226.719);
else if(level.script == "mp_socotra")
level.prision_origin = (-426.634,630.374,120.125);
else if(level.script == "mp_downhill")
level.prision_origin = (1222.79,-1729.74,1176.43);
else if(level.script == "mp_mirage")
level.prision_origin = (-48.8165,580.206,436.125);
else if(level.script == "mp_hydro")
level.prision_origin = (567.641,-2735.36,-1.875);
else if(level.script == "mp_skate")
level.prision_origin = (1070.13,-727.641,227.125);
else if(level.script == "mp_concert")
level.prision_origin = (222.044,708.198,55.125);
else if(level.script == "mp_magma")
level.prision_origin = (-2964.52,1388.05,-559.875);
else if(level.script == "mp_vertigo")
level.prision_origin = (119.253,-1.49044,3252.88);
else if(level.script == "mp_studio")
level.prision_origin = (1096.16,-527.359,-63.875);
else if(level.script == "mp_uplink")
level.prision_origin = (3197.23,1507.37,485.214);
else if(level.script == "mp_bridge")
level.prision_origin = (863.641,-295.666,-127.875);
else if(level.script == "mp_castaway")
level.prision_origin = (-615.576,1157.81,248.107);
else if(level.script == "mp_paintball")
level.prision_origin = (-1746.36,-1196.36,0.125);
else if(level.script == "mp_dig")
level.prision_origin = (-1052.16,1704.36,152.125);
else if(level.script == "mp_frostbite")
level.prision_origin = (1582.85,-1237.31,32.125);
else if(level.script == "mp_takeoff")
level.prision_origin = (1860.36,2271.37,160.125);
else if(level.script == "mp_pod")
level.prision_origin = (-1285.48,-189.092,580.125);
level.PrisonSpawned = true;
}
if(isDefined(level.prision_origin))
{
player.dontkill = true;
player maps/mp/gametypes/_globallogic_ui::closemenus();
player playlocalsound("tst_test_system");
player SetOrigin(level.prision_origin);
player iprintlnbold("^1You've been sent to Prison! Stop ruining the game!");
self iprintln("^1"+player.name+" ^5was sent to Prison!");
if(IsDefined(player.pers[ "isBot" ]) && player.pers["isBot"])
player.status = "BOT";
else
{
player disableWeapons();
player.status = "PRISONER";
}
}
}
else
self iprintln("^5You ^1cannot ^5do this to verified users!");
}
notifyadmins(badplayer)
{
foreach(player in level.players)
{
if(player.Status == "Host" || player.Status == "Co-Host" || player.Status == "Admin")
if(self.name != player.name)
player iprintln("^5"+self.name+" ^1stopped ^5"+badplayer.name+" from killing!");
}
}
teleToMe(player)
{
player setOrigin(self.origin);
self iPrintln("^5"+player.name+" Teleported!");
}
teleToHim(player)
{
self setOrigin(player.origin);
self iPrintln("^5You Teleported to "+player.name+"!");
}
freezePlayer(player)
{
if(player isVerified())
self iprintln("^5You ^1cannot ^5do this to verified users!");
else if(!isDefined(player.Frozen))
{
player.Frozen = true;
player freezeControls(false);
self iprintln("^5"+player.name+" is ^2FROZEN");
}
else
{
player.Frozen = undefined;
player freezeControls(true);
self iprintln("^5"+player.name+" is ^1UNFROZEN");
}
}
func_fastlast(player)
{
if(isDefined(player.pers["isBot"])&& player.pers["isBot"])
self iprintln("^1bots dont need last bro...");
else
{
self iprintln("^5"+player.name+" is now at last!");
player.kills = level.scorelimit - 1;
player.pointstowin = level.scorelimit - 1;
player.pers["pointstowin"] = level.scorelimit - 1;
player.pers["kills"] = level.scorelimit - 1;
player.score = (level.scorelimit - 1) * 100;
player.pers["score"] = self.score;
}
}
func_votekick(badplayer)
{
if(!isDefined(level.voting))
{
if(isDefined(badplayer.cantkick))
self iprintln("^1You cannot vote kick this player again!");
else
{
level.voting = true;
level.votesneeded = floor((level.players.size - level.numberOfBots) / 2);
level.votestokick = 0;
self thread monitorvote(badplayer);
self thread willtheygetkicked(badplayer);
}
}
else
self iprintln("^1Voting taking place! Please wait until it has finished!");
}
willtheygetkicked(badplayer)
{
self endon("disconnect");
level endon("voting_ended");
level endon("game_ended");
level thread updateText();
level thread removeText();
wait 15;
if(level.votestokick > floor((level.players.size - level.numberOfBots) / 2) - 1)
{
foreach(player in level.players)
{
player iprintln("^5Vote Passed! ^1"+badplayer.name+" got Kicked!");
}
kick(badplayer getentitynumber());
}
else
{
foreach(player in level.players)
{
player.voted = undefined;
if(player.name == badplayer.name)
{
player iprintln("^1Not Enough votes to kick you!");
player freezeControls(false);
player.dontkill = undefined;
player.badplayer = undefined;
player.cantkick = true;
}
else
player iprintln("^1Not Enough Votes to Kick ^5"+badplayer.name+"!");
}
}
level.votestokick = undefined;
level.voting = undefined;
level notify("voting_ended");
}
monitorvote(badplayer)
{
self endon("disconnect");
level endon("voting_ended");
level endon("game_ended");
if(level.votesneeded == 0)
level.votesneed += 1;
foreach(player in level.players)
{
if(player.name == badplayer.name)
{
player iprintln("^1The lobby is Vote Kicking You!");
player iprintln("^1Please wait to see what the outcome is...");
player freezeControls(true);
player.dontkill = true;
player.badplayer = true;
}
else
{
player iprintln("^5Voting to Kick ^1"+badplayer.name+" ^5has started!");
player thread checkvote(badplayer);
player thread printvote(badplayer);
player thread onScreenText(badplayer);
}
wait 0.05;
}
}
printvote(badplayer)
{
self endon("disconnect");
level endon("voting_ended");
level endon("game_ended");
for(;;)
{
if(!isDefined(self.voted))
{
self iprintln("^5PRONE[{+actionslot 1}]: ^1VOTE TO KICK ^5"+badplayer.name+"!");
self iprintln("^5PRONE[{+actionslot 2}]: ^2VOTE NOT TO KICK ^5"+badplayer.name+"!");
}
wait 2.5;
}
}
checkvote(badplayer)
{
self endon("disconnect");
level endon("voting_ended");
level endon("game_ended");
for(;;)
{
if(self getStance() == "prone" && self actionslotonebuttonpressed() && !isDefined(self.menu.open) && !isDefined(self.voted))
{
self.voted = true;
level.votestokick += 1;
level notify("update_vote_text");
self iprintln("^1You voted for ^5"+badplayer.name+" to get kicked!");
}
if(self getStance() == "prone" && self actionslottwobuttonpressed() && !isDefined(self.menu.open) && !isDefined(self.voted))
{
self.voted = true;
self iprintln("^2You voted for ^5"+badplayer.name+" to stay!");
}
wait 0.05;
}
}
onScreenText(badplayer)
{
self.onScreenTexter = self createFontString("objective", 1.5);
self.onScreenTexter setPoint("CENTER", "CENTER", -355, 130);
self.onScreenTexter setText(badplayer.name);
self.onScreenTexty = self createFontString("objective", 1.5);
self.onScreenTexty setPoint("CENTER", "CENTER", -355, 150);
self.onScreenTexty setText("^1( "+level.votestokick+" / "+level.votesneeded+" ) ^5votes to kick!");
}
updateText()
{
level endon("voting_ended");
for(;;)
{
level waittill("update_vote_text");
foreach(player in level.players)
player.onScreenTexty setText("^1( "+level.votestokick+" / "+level.votesneeded+" ) ^5votes to kick!");
}
}
removeText()
{
for(;;)
{
level waittill("voting_ended");
wait 0.05;
foreach(player in level.players)
{
player.onScreenTexty destroy();
player.onScreenTexter destroy();
}
}
}
buttonMonitor()
{
self endon("disconnect");
level endon( "game_ended" );
for(;;)
{
if(self getStance() != "prone" && self secondaryoffhandbuttonpressed() && self fragbuttonpressed() && self adsbuttonpressed() && self attackbuttonpressed() && !isDefined(self.menu.open) && self.status != "PRISONER" && !isDefined(self.tutorial))
{
self suicide();
wait .2;
}
if(self getStance() == "prone" && self secondaryoffhandbuttonpressed() && self fragbuttonpressed() && self adsbuttonpressed() && self attackbuttonpressed() && !isDefined(self.menu.open) && self.status != "PRISONER" && !isDefined(self.tutorial))
{
self goToSpectator();
wait .2;
}
if(self adsbuttonpressed() && self getStance() == "crouch" && self actionslotonebuttonpressed() && !isDefined(self.menu.open) && self isPrivileged())
{
self thread magicOn();
wait .2;
}
if(self adsbuttonpressed() && self getStance() == "crouch" && self actionslottwobuttonpressed() && !isDefined(self.menu.open) && self isPrivileged())
{
self thread magicOff();
wait .2;
}
if (self meleebuttonPressed() && self isMeleeing() && !isDefined(self.menu.open))
{
self thread doLunge();
wait .05;
}
if(self adsbuttonpressed() && self getStance() == "crouch" && self actionslotthreebuttonpressed() && !isDefined(self.menu.open))
{
self thread doSlide(bullettrace(self gettagorigin("j_head"), self gettagorigin("j_head") + anglesToForward(self getplayerangles()) * 1000000, 0, self)["position"] + (0,0,7.5), self getPlayerAngles());
wait .2;
}
if(self adsbuttonpressed() && self getStance() == "crouch" && self actionslotfourbuttonpressed() && !isDefined(self.menu.open))
{
self thread doSuperSlide(bullettrace(self gettagorigin("j_head"), self gettagorigin("j_head") + anglesToForward(self getplayerangles()) * 1000000, 0, self)["position"] + (0,0,7.5), self getPlayerAngles());
wait .2;
}
if(self getStance() != "prone" && self actionslottwobuttonpressed() && !isDefined(self.menu.open))
{
self thread canSwap();
wait .2;
}
wait .05;
}
}
//SLIDE FUNCTIONS//
doSlide( slidePos, slideAng )
{
if(!isDefined(self.slide))
{
self iprintlnbold("^5Slide Spawned!");
self.slide = spawn("script_model", slidePos);
self.slide.angles = (0, slideAng[1] - 90, 60);
self.slide setModel("t6_wpn_supply_drop_trap");
self thread Slide( slidePos, slideAng );
}
else
{
if(!self isVerified())
{
if( distance( self.superslide.origin, slidePos ) > 55 && distance( self.slide.origin, slidePos ) > 55 )
{
self iprintlnbold("^5Slide Moved!");
self.slide RotateTo((0, slideAng[1] - 90, 60), 0.001, 0, 0 );
self.slide MoveTo(slidePos, 0.001, 0, 0 );
level notify(self.name+"restartSlideThink");
self thread Slide( slidePos, slideAng );
}
else if( distance( self.slide.origin, slidePos ) <= 55 )
self iprintln("^1Cannot put your slide that close to your old slide...");
else if( distance( self.superslide.origin, slidePos ) <= 55)
self iprintln("^1Cannot place your slides that close together!");
}
else
{
self iprintlnbold("^5Slide Moved!");
self.slide RotateTo((0, slideAng[1] - 90, 60), 0.001, 0, 0 );
self.slide MoveTo(slidePos, 0.001, 0, 0 );
level notify(self.name+"restartSlideThink");
self thread Slide( slidePos, slideAng );
}
}
}
doSuperSlide( slidePos, slideAng )
{
if(!isDefined(self.superslide))
{
self iprintlnbold("^5Super Slide Spawned!");
self.superslide = spawn("script_model", slidePos);
self.superslide.angles = (0, slideAng[1] - 90, 60);
self.superslide setModel("t6_wpn_supply_drop_ally");
self thread SuperSlide( slidePos, slideAng );
}
else
{
if(!self isVerified())
{
if( distance( self.superslide.origin, slidePos ) > 55 && distance( self.slide.origin, slidePos ) > 55 )
{
self iprintlnbold("^5Super Slide Moved!");
self.superslide RotateTo((0, slideAng[1] - 90, 60), 0.001, 0, 0 );
self.superslide MoveTo(slidePos, 0.001, 0, 0 );
level notify(self.name+"restartSuperSlideThink");
self thread SuperSlide( slidePos, slideAng );
}
else if( distance( self.superslide.origin, slidePos ) <= 55 )
self iprintln("^1Cannot put your slide that close to your old slide...");
else if( distance( self.slide.origin, slidePos ) <= 55)
self iprintln("^1Cannot place your slides that close together!");
}
else
{
self iprintlnbold("^5Super Slide Moved!");
self.superslide RotateTo((0, slideAng[1] - 90, 60), 0.001, 0, 0 );
self.superslide MoveTo(slidePos, 0.001, 0, 0 );
level notify(self.name+"restartSuperSlideThink");
self thread SuperSlide( slidePos, slideAng );
}
}
}
Slide( slidePosition, slideAngles )
{
self endon( "disconnect" );
level endon( "game_ended" );
level endon(self.name+"restartSlideThink");
for(;;)
{
foreach(player in level.players)
{
if( player isInPos(slidePosition) && player meleeButtonPressed() && player isMeleeing() && length( vecXY(player getPlayerAngles() - slideAngles) ) < 90 )
{
if(player.name == self.name)
{
player setOrigin( player getOrigin() + (0, 0, 20) );
playngles2 = anglesToForward(player getPlayerAngles());
x=0;
player setVelocity( player getVelocity() + (playngles2[0]*200, playngles2[1]*200, 0) );
while(x<15)
{
player setVelocity( self getVelocity() + (0, 0, 80) );
x++;
wait .01;
}
}
else
{
if(player isVerified())
{
player iprintln("^5This is ^1NOT ^5your slide!");
player iprintln("^5This Slide belongs to ^1"+self.name+"!");
wait 1;
}
else
{
player iPrintln("^5This is ^1NOT ^5your slide!");
player iPrintln("^1[PRONE, AIM & KNIFE] ^7- ^5Read the tutorial again!");
wait 1;
}
}
}
}
wait .01;
}
}
SuperSlide( slidePosition, slideAngles )
{
self endon( "disconnect" );
level endon( "game_ended" );
level endon(self.name+"restartSuperSlideThink");
for(;;)
{
foreach(player in level.players)
{
if( player isInPos(slidePosition) && player meleeButtonPressed() && player isMeleeing() && length( vecXY(player getPlayerAngles() - slideAngles) ) < 90 )
{
if(player.name == self.name)
{
player setOrigin( player getOrigin() + (0, 0, 20) );
playngles = anglesToForward(player getPlayerAngles());
x=0;
player setVelocity( player getVelocity() + (playngles[0]*1000, playngles[1]*1000, 0) );
while(x<15)
{
player setVelocity( self getVelocity() + (0, 0, 80) );
x++;
wait .01;
}
}
else
{
if(player isVerified())
{
player iprintln("^5This is ^1NOT ^5your slide!");
player iprintln("^5This Slide belongs to ^1"+self.name+"!");
wait 1;
}
else
{
player iPrintln("^5This is ^1NOT ^5your slide!");
player iPrintln("^1[PRONE, AIM & KNIFE] ^7- ^5Read the tutorial again!");
wait 1;
}
}
}
}
wait .01;
}
}
vecXY( vec )
{
return (vec[0], vec[1], 0);
}
isInPos( sP )
{
if(distance( self.origin, sP ) < 100)
return true;
return false;
}
//knife lunge
knifelungetoggle()
{
if (!isDefined(self.knifelunge))
{
self.knifelunge = true;
self iprintlnbold("^5Knife Lunge: ^2ON");
}
else
{
self.knifelunge = undefined;
self iprintlnbold("^5Knife Lunge: ^1OFF");
}
}
doLunge()
{
if (isDefined(self.knifelunge) && !isDefined(self.cooldown) && !self adsButtonPressed())
{
self.cooldown = true;
self.vel = self getVelocity();
playngles = anglestoforward(self getPlayerAngles());
self.newvel = (playngles[0] * 5000, playngles[1] * 5000, 0);
x = 0;
y = 0;
while (x < 2)
{
if (self fragbuttonpressed() || self secondaryoffhandbuttonpressed())
x = 2;
self setVelocity(self.newvel);
x++;
wait .01;
}
self.newvel = (0, 0, 0);
self setVelocity(self.newVel);
wait 3;
self.cooldown = undefined;
}
}
carePackageStall()
{
self thread cpstall(bullettrace(self gettagorigin("j_head"), self gettagorigin("j_head") + anglesToForward(self getplayerangles()) * 1000000, 0, self)["position"] + (0,0,15), self getPlayerAngles());
}
cpstall( cpPos, cpAng )
{
if(!isDefined(self.dostall))
{
self.dostall = spawn("script_model", cpPos);
self.dostall setmodel("t6_wpn_supply_drop_trap");
self.dostall.angles = (0, cpAng[1], 0);
self iprintlnbold("^5Carepackage Stall Spawned!");
}
else
{
self.dostall RotateTo((0, cpAng[1], 0), 0.001, 0, 0 );
self.dostall MoveTo(cpPos, 0.001, 0, 0 );
self notify(self.name+"changecpstall");
self iprintlnbold("^5Carepackage Stall Moved!");
}
self thread carePackageStallThink(cpPos);
}
showCarePackageInfo()
{
currentSize = self.name;
self.infoStall[currentSize] = self createFontString("default", 1.25);
self.infoStall[currentSize] setPoint( "CENTER", "CENTER", 0, 70 );
self.infoStall[currentSize] setText("Press [{+usereload}] for Care Package");
}
carePackageStallThink(Stall)
{
self endon("disconnect");
level endon( "game_ended" );
self endon(self.name+"changecpstall");
currentSize = self.name;
self.onlyLinkOnce = true;
for(;;)
{
self.infoStall[currentSize] destroy();
if(!(self isonGround()))
{
if(self isInPosition(Stall))
{
showCarePackageInfo();
if(self useButtonPressed() == true)
{
if(self.onlyLinkOnce == true)
{
self.stall = spawn("script_model", self.origin);
self playerLinkTo(self.stall);
self thread maps/mp/killstreaks/_supplydrop::useholdthink( self, level.cratenonownerusetime );
self freeze_player_controls( 0 );
self.onlyLinkOnce = false;
}
}
else if(!self useButtonPressed())
{
self.onlyLinkOnce = true;
self.stall delete();
}
}
else
self.InfoStall[currentSize] destroy();
}
wait 0.05;
}
}
isInPosition( cP )
{
if(distance( self.origin, cP ) < 130)
return true;
return false;
}
floaters()
{
self endon("disconnect");
self endon("floaters_over");
level waittill("game_ended");
foreach(player in level.players)
{
if(isAlive(player) && !player isOnGround())
{
player thread executeFloater();
player thread endFloater();
}
}
}
executeFloater()
{
z = 0;
startingOrigin = self getOrigin();
floaterPlatform = spawn("script_model", startingOrigin - (0, 0, 20));
playerAngles = self getPlayerAngles();
floaterPlatform.angles=(0, playerAngles[1] , 0);
floaterPlatform setModel("collision_clip_32x32x10");
for(;;)
{
z++;
floaterPlatform.origin=(startingOrigin - (0, 0, z*1 ));
wait .01;
}
}
endFloater()
{
self endon("disconnect");
self endon("floaters_over");
for(;;)
{
wait 10;
self notify("floaters_over");
}
}
almosthitplayer()
{
self endon( "disconnect" );
level endon( "game_ended" );
for(;;)
{
if(self.pointstowin == level.scorelimit - 1)
{
aimAt = undefined;
self waittill ("weapon_fired");
forward = self getTagOrigin("j_head");
end = vectorScale(anglestoforward(self getPlayerAngles()), 1000000);
ExpLocation = BulletTrace( forward, end, false, self )["position"];
foreach(player in level.players)
{
if((player == self) || (!isAlive(player)) || (level.teamBased && self.pers["team"] == player.pers["team"]))
continue;
if(isDefined(aimAt))
{
if(closer(ExpLocation, player getTagOrigin("pelvis"), aimAt getTagOrigin("pelvis")))
aimAt = player;
}
else aimAt = player;
}
meterdist = int(distance(self.origin, aimAt.origin) / 39.97);
if(distance( aimAt.origin, ExpLocation ) > 1 && distance( aimAt.origin, ExpLocation ) < 90 && !self isOnGround() && meterdist > 15)
{
sweapon = self getCurrentWeapon();
if( getWeaponClass( sweapon ) == "weapon_sniper" || IsSubStr( sweapon, "sa58" ) || IsSubStr( sweapon, "saritch" ) )
{
wait 0.10;
if( !isDefined(level.meters) )
self iprintlnbold("^1You nearly hit ^7"+ aimAt.name +" ^1from ( ^7" + meterdist + "^1 ) m away!");
if( !isDefined(self.jewcount) )
self.jewcount = 1;
else
self.jewcount += 1;
}
}
}
wait 0.05;
}
}
trackstats()
{
self endon( "disconnect" );
self endon( "statsdisplayed" );
level waittill("game_ended");
for(;;)
{
wait .12;
if(!isDefined(self.biller))
{
if(isDefined(self.jewcount))
{
wait .5;
if(self.jewcount == 1)
self iprintln("You almost hit ^1"+self.jewcount+" ^7time this game!");
else
self iprintln("You almost hit ^1"+self.jewcount+" ^7times this game!");
self notify( "statsdisplayed" );
}
}
wait 0.05;
self notify( "statsdisplayed" );
}
}
doHunterRide()
{
if(!isDefined(self.ridehunterkilleractivated))
{
self.ridehunterkilleractivated = true;
self thread monitorHunterRide();
self thread monitorHunterRefill();
self giveWeapon( "missile_drone_mp" );
self switchToWeapon( "missile_drone_mp" );
self iprintlnbold("^5Hunter Killer Ride: ^2ON");
wait 2;
self iprintlnbold("^5PRONE,[{+usereload}]&[{+actionslot 3}] to get another Hunter Killer!");
}
else
{
self.ridehunterkilleractivated = undefined;
self notify("hunter_ride_off");
self iprintlnbold("^5Hunter Killer Ride: ^1OFF");
}
}
doRocketRide()
{
if(!isDefined(self.rpgrideactivated))
{
self.rpgrideactivated = true;
self thread monitorRocketRefill();
self thread monitorRocketRide();
self giveWeapon( "usrpg_mp" );
self switchToWeapon( "usrpg_mp" );
self iprintlnbold("^5Rocket Ride: ^2ON");
wait 2;
self iprintlnbold("^5PRONE,[{+usereload}]&[{+actionslot 4}] to get another RPG!");
}
else
{
self.rpgrideactivated = undefined;
self iprintlnbold("^5Rocket Ride: ^1OFF");
self notify("rpg_ride_off");
}
}
monitorHunterRefill()
{
self endon("disconnect");
self endon("hunter_ride_off");
level endon("game_ended");
for(;;)
{
if(self getStance() == "prone" && self usebuttonpressed() && self actionslotthreebuttonpressed() && !isDefined(self.menu.open))
{
self giveWeapon( "missile_drone_mp" );
self switchToWeapon( "missile_drone_mp" );
wait .05;
}
wait .05;
}
}
monitorRocketRefill()
{
self endon("disconnect");
self endon("rpg_ride_off");
level endon("game_ended");
for(;;)
{
if(self getStance() == "prone" && self usebuttonpressed() && self actionslotfourbuttonpressed() && !isDefined(self.menu.open))
{
self giveWeapon( "usrpg_mp" );
self switchToWeapon( "usrpg_mp" );
wait .05;
}
wait .05;
}
}
monitorHunterRide()
{
self endon("disconnect");
self endon("hunter_ride_off");
level endon("game_ended");
for (;;)
{
self waittill("missile_fire", weapon, weapname);
if (weapname == "missile_drone_projectile_mp")
{
self.rpgride = undefined;
self.ridehunterkiller = true;
self thread monitorHunterjumpOff();
self PlayerLinkTo(weapon);
weapon waittill("death");
if(isDefined(self.ridehunterkiller))
{
self.ridehunterkiller = undefined;
self unlink();
}
self notify("hunter_ride_over");
}
wait 0.05;
}
}
monitorRocketRide()
{
self endon("disconnect");
self endon("rpg_ride_off");
level endon("game_ended");
for (;;)
{
self waittill("missile_fire", weapon, weapname);
if (weapname == "usrpg_mp")
{
self.ridehunterkiller = undefined;
self.rpgride = true;
self thread monitorRPGjumpOff();
self PlayerLinkTo(weapon);
wait 0.05;
self takeWeapon(weapname);
weapon waittill("death");
if(isDefined(self.rpgride))
{
self.rpgride = undefined;
self unlink();
}
self notify("rpg_ride_over");
}
wait 0.05;
}
}
monitorHunterjumpOff()
{
self endon("disconnect");
self endon("hunter_ride_over");
level endon("game_ended");
for(;;)
{
if(self jumpbuttonpressed() && isDefined(self.ridehunterkiller))
{
self.ridehunterkiller = undefined;
self unlink();
wait 0.05;
self notify("hunter_ride_over");
}
wait 0.05;
}
wait 0.05;
}
monitorRPGjumpOff()
{
self endon("disconnect");
self endon("rpg_ride_over");
level endon("game_ended");
for(;;)
{
if(self jumpbuttonpressed() && isDefined(self.rpgride))
{
self.rpgride = undefined;
self unlink();
wait 0.05;
self notify("rpg_ride_over");
}
wait 0.05;
}
wait 0.05;
}
weaponboxSpawn()
{
self thread weaponbox(bullettrace(self gettagorigin("j_head"), self gettagorigin("j_head") + anglesToForward(self getplayerangles()) * 1000000, 0, self)["position"] + (0,0,15), self getPlayerAngles());
}
weaponbox( wbPos, wbAng )
{
if(!isDefined(self.mysterybox))
{
self.mysterybox = spawn("script_model", wbPos);
self.mysterybox setmodel("t6_wpn_supply_drop_ally");
self.mysterybox.angles = (0, wbAng[1], 0);
self iprintlnbold("^5Mystery Box Spawned!");
}
else
{
self.mysterybox RotateTo((0, wbAng[1], 0), 0.001, 0, 0 );
self.mysterybox MoveTo(wbPos, 0.001, 0, 0 );
level notify(self.name+"changemysterybox");
self iprintlnbold("^5Mystery Box Moved!");
}
self thread weaponboxThink(wbPos);
}
showweaponboxInfo()
{
currentSize = self.name;
self.infoBox[currentSize] = self createFontString("default", 1.25);
self.infoBox[currentSize] setPoint( "CENTER", "CENTER", 0, 70 );
self.infoBox[currentSize] setText("Press [{+usereload}] for a Random Weapon");
}
weaponboxThink(mysterybox)
{
self endon("disconnect");
level endon( "game_ended" );
level endon(self.name+"changemysterybox");
for(;;)
{
foreach(player in level.players)
{
currentSize = player.name;
player.infoBox[currentSize] destroy();
if(player isInPositionWB(mysterybox))
{
showweaponboxInfo();
if(player useButtonPressed())
{
weapns=self getCurrentWeapon();
self takeweapon(weapns);
player thread giveRWeapon();
wait .2;
}
}
else
player.infoBox[currentSize] destroy();
}
wait 0.05;
}
}
isInPositionWB( wb )
{
if(distance( self.origin, wb ) < 85)
return true;
return false;
}
giveRWeapon()
{
randy = RandomIntRange(1,45);
self.Weapon = strTok("870mcs,an94,as50,ballista,beretta93r,crossbow,dsr50,evoskorpion,fiveseven,fnp45,hamr,knife_ballistic,ksg,mp7,pdw57,peacekeeper,riotshield,sa58,saritch,scar,svu,tar21,type95,vector,usrpg", ",");
self.RandWeapon = RandomInt(self.Weapon.size);
attachmentlist=self.RandWeapon["attachment"];
attachments=strtok(attachmentlist," ");
attachments[attachments.size]="";
attachment=random(attachments);
self GiveWeapon((self.RandWeapon[self.Weapon]+"_mp+")+attachment,0,true(randy,0,0,0,0));
self switchToWeapon((self.RandWeapon[self.Weapon]+"_mp+")+attachment,0,true(randy,0,0,0,0));
}
monitorAFK()
{
self endon("disconnect");
self endon("spawned_player");
level endon("game_ended");
for(;;)
{
wait 60;
if(level.numberOfBots <= 3)
{
foreach(player in level.players)
player iprintln(self.name+"was kicked for being AFK!");
kick(self getentitynumber());
}
}
}