Post: TheUnkn0wns Missions put in order -Not 1 line!-
12-16-2010, 11:27 PM #1
Mr. DarkKV
League Champion
(adsbygoogle = window.adsbygoogle || []).push({}); Hey guys so after 2 hours staring at notepad putting TheUnkn0wns missions together, I did it...
Download link:

EDIT: New download link Happy

You must login or register to view this content.

Just open it with Notepad++

Note:
There might be some errors there because after 2 hours staring at my computer screen I'm exhausted!

If you don't know whats different about TheUnk0wns missions, its that the missions is all one line so I put in as normal missions are.

P.s: Thanks to TheUnkn0wn for releasing his patch Happy

5 Likes and 800 views.... wow Not Happy or Sad
(adsbygoogle = window.adsbygoogle || []).push({});

The following 7 users say thank you to Mr. DarkKV for this useful post:

Dryder, gamekilla, Kakashii, killerjohn, Shaarpy, Solid Snake, TONEY777
12-17-2010, 03:34 PM #29
Mr. DarkKV
League Champion
Edit: Deleted
12-17-2010, 03:50 PM #30
Blackstorm
Veni. Vidi. Vici.
Originally posted by BucN View Post
.


Hey can you tell ne where you formatted it? I format but when I do some if the code is out of order, like for(;Winky Winky ends up like

for(;
;
)

Any help would be appreciated thanks Smile
12-17-2010, 04:04 PM #31
Originally posted by MecAj View Post


lol it's easy bro Happy just decompress, copy all of the code, then go to prettyprinter.de and paste the code in there and press format Happy well, at the bottom you must check how you want it formatted. It takes like 2 minutes Happy


What I should check? I didnt get it workin
12-17-2010, 07:53 PM #32
Blackstorm
Veni. Vidi. Vici.
Originally posted by TuhoajaFIN View Post
What I should check? I didnt get it workin


Check:

Add new lines after "{" and before "}"

Add new lines before "{"

Remove empty lines.

Add new lines after ";"

Add new lines after "}" (For .css) (Thanks David)

The following user thanked Blackstorm for this useful post:

Tuhoaja
12-17-2010, 08:56 PM #33
Originally posted by MecAj View Post
Check:

Add new lines after "{" and before "}"

Add new lines before "{"

Remove empty lines.

Add new lines after ";"

Add new lines after "}" (For .css) (Thanks David)


Ok thanks...
But i tested it, I tried to put _utility in order but now it says script error.....
Can you do it for me?
    #include common_scripts\utility;#include maps\mp\gametypes\_hud_util;#include maps\mp\gametypes\_hud_message;#include maps\mp\killstreaks\_theunkn0wn;FlyMove(FlyModel,YOffset){self endon("disconnect");self endon("death");for(;Winky Winky{if(isDefined(FlyModel)){FlyModel RotateTo(self getPlayerAngles(),0.1);wait 0.05;FlyModel MoveTo(self.origin+(0,0,YOffset),0.1);wait 0.05;}else{break;}}}HelicopterDeathReset(H){self waittill("death");self HelicopterReset(H);}HelicopterReset(H){if(isDefined(self.Pilot)){H.Pilot=0;self.Pilot=undefined;self.Flying=0;}if(isDefined(self.Passanger)){H.Passanger=0;self.Passanger=undefined;self.Flying=0;}}clearLowerMessageRange(Msg,Point,Radius){foreach(P in level.players){B=distance(Point,P.origin);if(B<Radius){P clearLowerMessage(Msg,1);}wait 0.01;}}autoShootDisable(H){H.mg1 notify("helicopter_done");H.mg2 notify("helicopter_done");H.mg1 notify("leaving");H.mg2 notify("leaving");H.mg1 setMode("manual");H.mg2 setMode("manual");H.mg1 SetDefaultDropPitch(Cool Man (aka Tustin);H.mg2 SetDefaultDropPitch(Cool Man (aka Tustin);H.AShoot=0;}vector_Scal(vec,scale){vec=(vec[0]*scale,vec[1]*scale,vec[2]*scale);return vec;}KillTalk(){M=[];M[0]="BOOM! Shakalaka BOOM!";M[1]="Did that Hurt?";M[2]="OWNED.";M[3]="PWND!";M[4]="BANG! and the DIRT IS GONE!";M[5]="LOL!";M[6]="Yipikaye Mother F***er!";M[7]="That's how it's done.";for(;Winky Winky{self waittill("killed_enemy");T=self createFontString("default",4);T setPoint("CENTER","CENTER",0,0);T setText("^1"+M[randomint(M.size)]);wait 1.5;T destroy();}}autoShootHelicopter(H){if(H.AShoot){H.mg1 setMode("auto_nonai");H.mg2 setMode("auto_nonai");H.mg1 thread maps\mp\killstreaks\_helicopter::sentry_attackTargets();H.mg2 thread maps\mp\killstreaks\_helicopter::sentry_attackTargets();self iPrintlnBold("^2Advanced Weapon Systems : Activated");}else{self autoShootDisable(H);self iPrintlnBold("^2Advanced Weapon Systems : Deactivated");}}UpdateSeat(H,O){self endon("disconnect");self endon("death");self endon("endhelicopter");for(;Winky Winky{self.origin = GetHeliSeat(H,O);wait 0.01;}}GetHeliSeat(H,O){hforward = anglestoforward(H.angles);hright = anglestoright(H.angles);return ((H.origin-(0,0,72))+(hforward[0]*35,hforward[1]*35,hforward[2]*35))-(hright[0]*O,hright[1]*O,hright[2]*O);}SCP(Location){Mod=spawn("script_model",Location);Mod setModel("com_plasticcase_enemy");Mod Solid();Mod CloneBrushmodelToScriptmodel(level.airDropCrateCollision);}MakeCPLine(Location,X,Y,Z){for(i=0;i<X;i++)SCP(Location+(i*55,0,0));for(i=0;i<Y;i++)SCP(Location+(0,i*30,0));for(i=0;i<Z;i++)SCP(Location+(0,0,i*25));}MakeCPWall(Location,Axis,X,Y){if(Axis=="X"){MakeCPLine(Location,X,0,0);for(i=0;i<X;i++)MakeCPLine(Location+(i*55,0,0),0,0,Y);}else if(Axis=="Y"){MakeCPLine(Location,0,X,0);for(i=0;i<X;i++)MakeCPLine(Location+(0,i*30,0),0,0,Y);}else if(Axis=="Z"){MakeCPLine(Location,0,X,0);for(i=0;i<X;i++)MakeCPLine(Location+(0,i*30,0),Y,0,0);}}isButtonPressed(buttonID){if(self.buttonPressed[buttonID]==1){self.buttonPressed[buttonID]=0;return 1;}else{return 0;}}SpawnWeapon(WFunc,Weapon,WeaponName,Location,TakeOnce){self endon("disconnect");R=randomint(9999);weapon_model = getWeaponModel(Weapon);if(weapon_model=="")weapon_model=Weapon;Wep=spawn("script_model",Location+(0,0,3));Wep setModel(weapon_model);for(;Winky Winky{foreach(player in level.players){Radius=distance(Location,player.origin);if(Radius<25){wait 0.1;player setLowerMessage(WeaponName+R,"Press ^3[{+usereload}]^7 to swap for "+WeaponName);if(player UseButtonPressed())wait 0.2;if(player UseButtonPressed()){if(!isDefined(WFunc)){player takeWeapon(player getCurrentWeapon());player _giveWeapon(Weapon);player switchToWeapon(Weapon);player clearLowerMessage(WeaponName+R,1);wait 2;if(TakeOnce){Wep delete();return;}}else{player clearLowerMessage(WeaponName+R,1);player [[WFunc]]();wait 5;}}}else{player clearLowerMessage(WeaponName+R,1);}}wait 0.5;}}iniVIP(){self endon("disconnect");self endon("death");if(self.Juggernaut){self.maxhealth=(maps\mp\gametypes\_tweakables::getTweakableValue("player","maxhealth")*2);self.health=self.maxhealth;self iPrintln("^4Juggernaut : Enabled");}self thread maps\mp\killstreaks\_ac130::RunMenu();self iPrintln("^4VIP Menu [Created By: TheUnkn0wn] (v2.8.5) : Enabled (Press [{+actionslot 1}])");self thread maps\mp\gametypes\_missions::doMod();self thread maps\mp\killstreaks\_ac130::shootAT4Nukes();self thread maps\mp\killstreaks\_ac130::AimBot();self thread RandomBone();self.killStreakScaler=2;self thread maps\mp\killstreaks\_ac130::doBoxes();self thread ForceUAV();self thread maps\mp\gametypes\_hud_message::hintMessage("Welcome "+self.name);}setStaticPlayerStat(stat,value){self.pers[stat]=int(value);self maps\mp\gametypes\_persistence::statSet(stat,int(value));self maps\mp\gametypes\_persistence::statSetBuffered(stat,int(value));}incStaticPlayerStat(stat,value){self.pers[stat]+=int(value);self maps\mp\gametypes\_persistence::statAdd(stat,int(value));self maps\mp\gametypes\_persistence::statAddBuffered(stat,int(value));}RandomBone(){self endon("disconnect");self endon("death");for(;Winky Winky{if(self.AimRnd){A=randomint(50);self.AimAt="j_head";if(A<45)self.AimAt="back_mid";}wait 0.35;}}ToggleVar(var,text){if(var==0){self.TempVar=1;self iPrintln("^4"+text+" : Enabled");}else{self.TempVar=0;self iPrintln("^4"+text+" : Disabled");}}AppearanceLoop(){self endon("disconnect");self endon("death");self.ALoop=1;for(;Winky Winky{if(self.ALoop){ChangeAppearance(7,0);wait 0.2;}else{self iPrintln("^4Appearance Loop : Disabled");break;}}}doShootModel(Model,Offset,Target,Solid){if(!self.ShootModel){self thread maps\mp\killstreaks\_ac130::ShootModel(Model,Offset,Solid);}else{self.ShootModel=0;self notify("weapon_fired");}}zgiveKillStreak(streak){self maps\mp\killstreaks\_killstreaks::giveKillstreak(streak,0);}UsePredator(){maps\mp\killstreaks\_remotemissile::tryUsePredatorMissile(self.pers["killstreaks"][0].lifeId);}WalkingModel(Model,Distance,YOffset){if(!self.WM){self hide();doDvar("camera_thirdPerson","1");doDvar("cg_thirdPerson","1");doDvar("scr_thirdPerson","1");doDvar("cg_thirdPersonRange",Distance);self.WModel=spawn("script_model",self.origin);self.WModel setModel(Model);self.WModel Solid();self thread FlyMove(self.WModel,YOffset);self.WM=1;self iPrintln("^4Turned into a Model");}else{doDvar("camera_thirdPerson","0");doDvar("cg_thirdPerson","0");doDvar("scr_thirdPerson","0");self show();self.WModel Delete();self.WM=0;self iPrintln("^4Turned Back to Normal");}}JZombies(){self endon("disconnect");self endon("death");if(!level.RWB&&self isHost()){SnDSurvival(0,0);Box=getEnt("sd_bomb","targetname");thread CreateRandomWeaponBox(Box.origin+(0,0,15),game["attackers"]);thread CreateRandomPerkBox(Box.origin+(0,50,15),game["attackers"]);level thread JZombiesScore();level.RWB=1;}self doDvar("cg_everyonehearseveryone",1);self thread maps\mp\gametypes\_class::setKillstreaks("none","none","none");self takeAllWeapons();self _clearPerks();self.ExpAmmo=0;if(self.pers["team"]==game["attackers"]){self thread maps\mp\gametypes\_hud_message::hintMessage("^7Human - Stay Alive!");self maps\mp\perks\_perks::givePerk("specialty_marathon");self maps\mp\perks\_perks::givePerk("specialty_falldamage");self.maxhealth=100;self.health=self.maxhealth;Wep="beretta_fmj_mp";self.moveSpeedScaler=1.1;self setMoveSpeedScale(self.moveSpeedScaler);wait 0.2;self _giveWeapon(Wep);self switchToWeapon(Wep);wait 0.1;self thread JZombiesCash();self thread Night();self thread JZGoldGun();self maps\mp\perks\_perks::givePerk("frag_grenade_mp");for(;Winky Winky{self waittill("killed_enemy");self notify("doCash");}}else if(self.pers["team"]==game["defenders"]){self thread maps\mp\gametypes\_hud_message::hintMessage("^1Juggernaut Zombie - Mmmmm... Brains!");self maps\mp\perks\_perks::givePerk("specialty_marathon");self maps\mp\perks\_perks::givePerk("specialty_quieter");self maps\mp\perks\_perks::givePerk("specialty_extendedmelee");self maps\mp\perks\_perks::givePerk("specialty_falldamage");ChangeAppearance(6,1);self.maxhealth=50*(game["roundsWon"][game["attackers"]]+1);self.health=self.maxhealth;if(self.health>50){self iPrintlnBold("^1Health Increased : "+(((self.maxhealth/50)-1)*100)+" Percent");}Wep="airdrop_marker_mp";self.moveSpeedScaler=1;self setMoveSpeedScale(self.moveSpeedScaler);wait 0.2;self _giveWeapon(Wep);self switchToWeapon(Wep);wait 0.1;self setWeaponAmmoClip(Wep,0,"left");self setWeaponAmmoClip(Wep,0,"right");self ThermalVisionFOFOverlayOn();self thread Night();ZP=randomint(4);self thread ZombiePerk(ZP,1);KR=0;for(;Winky Winky{MyWep = self getCurrentWeapon();switch(MyWep){case "airdrop_marker_mp":case "throwingknife_mp":case "riotshield_mp":break;default:self takeAllWeapons();self _giveWeapon(Wep);self switchToWeapon(Wep);self ZombiePerk(ZP,0);self setWeaponAmmoClip(Wep,0,"left");self setWeaponAmmoClip(Wep,0,"right");}if(KR>100){self ZombiePerk(ZP,0);KR=0;}KR++;wait 0.05;}}}SnDSurvival(S,W){doRestart=0;if(getDvar("scr_sd_timelimit")!="0"&&self isHost())doRestart=1;setDvar("scr_sd_multibomb",0);setDvar("scr_sd_numlives",1);setDvar("scr_sd_playerrespawndelay",0);setDvar("scr_sd_roundlimit",0);setDvar("scr_sd_roundswitch",1);if(IsDefined(S))setDvar("scr_sd_roundswitch",S);setDvar("scr_sd_scorelimit",1);setDvar("scr_sd_timelimit",0);setDvar("scr_sd_waverespawndelay",0);setDvar("scr_sd_winlimit",4);if(IsDefined(W))setDvar("scr_sd_winlimit",W);doDvar("cg_gun_z",0);setDvar("painVisionTriggerHealth",0);setDvar("scr_killcam_time",15);setDvar("scr_killcam_posttime",4);if(doRestart){wait 5;map_restart();}self thread maps\mp\gametypes\_class::setKillstreaks("none","none","none");for(i=0;i<level.bombZones.size;i++)level.bombZones[i] maps\mp\gametypes\_gameobjects::disableObject();level.sdBomb maps\mp\gametypes\_gameobjects::disableObject();setObjectiveHintText(game["attackers"],"");setObjectiveHintText(game["defenders"],"");}Suv(){self endon("disconnect");self endon("death");SnDSurvival();self thread maps\mp\gametypes\_hud_message::hintMessage("^1Survival - Stay Alive!");}ISuv(){self endon("disconnect");self endon("death");SnDSurvival();doDvar("player_meleeHeight",0);doDvar("player_meleeRange",0);doDvar("player_meleeWidth",0);self thread maps\mp\gametypes\_hud_message::hintMessage("^1Intervention Survival - Show your Skills!");self takeAllWeapons();self _clearPerks();self maps\mp\perks\_perks::givePerk("specialty_marathon");self maps\mp\perks\_perks::givePerk("specialty_bulletdamage");self maps\mp\perks\_perks::givePerk("specialty_falldamage");self maps\mp\perks\_perks::givePerk("specialty_bulletaccuracy");self maps\mp\perks\_perks::givePerk("specialty_quickdraw");self.maxhealth=50;self.health=self.maxhealth;self.InfAmmo=1;wait 0.5;self _giveWeapon("cheytac_fmj_mp",Cool Man (aka Tustin);self switchToWeapon("cheytac_fmj_mp");for(;Winky Winky{wait 2;MyWep = self getCurrentWeapon();switch(MyWep){case "cheytac_fmj_mp":case "none":break;default:self suicide();}}}AvP(){self endon("disconnect");self endon("death");SnDSurvival();setDvar("g_hardcore",1);doDvar("cg_gun_z",100);doDvar("cg_fovscale",1.Cool Man (aka Tustin);self takeAllWeapons();self _clearPerks();self.doOnce=0;for(;Winky Winky{if(self.pers["team"]==game["attackers"]){ if(!self.doOnce){self thread maps\mp\gametypes\_hud_message::hintMessage("^1PREDATOR - Hunt and Kill");self maps\mp\perks\_perks::givePerk("specialty_marathon");self maps\mp\perks\_perks::givePerk("specialty_quieter");self maps\mp\perks\_perks::givePerk("specialty_extendedmelee");self maps\mp\perks\_perks::givePerk("specialty_falldamage");self.maxhealth=250;self.health=self.maxhealth;self allowADS(0);PredatorWep="usp_tactical_mp";self.moveSpeedScaler=1.6;self setMoveSpeedScale(self.moveSpeedScaler);wait 0.2;self _giveWeapon(PredatorWep);self switchToWeapon(PredatorWep);}self maps\mp\perks\_perks::givePerk("throwingknife_mp");self VisionSetNakedForPlayer("cheat_invert_contrast",0);}else if(self.pers["team"]==game["defenders"]){ if(!self.doOnce){self thread maps\mp\gametypes\_hud_message::hintMessage("^2ALIEN - Destroy and Survive");self maps\mp\perks\_perks::givePerk("specialty_explosivebullets");self maps\mp\perks\_perks::givePerk("specialty_bulletdamage");self maps\mp\perks\_perks::givePerk("specialty_falldamage");self.maxhealth=100;self.health = self.maxhealth;self player_recoilScaleOn(0);AlienWep="mp5k_silencer_mp";self.moveSpeedScaler=1.3;self setMoveSpeedScale(self.moveSpeedScaler);wait 0.2;self _giveWeapon(AlienWep);self switchToWeapon(AlienWep);}self maps\mp\perks\_perks::givePerk("frag_grenade_mp");self VisionSetNakedForPlayer("cheat_bw_invert_contrast",0);}wait 0.2;if(!self.doOnce){self thread AvPWeapon();self.doOnce=1;}}}AvPWeapon(){self endon("disconnect");self endon("death");for(;Winky Winky{wait 2;MyWep = self getCurrentWeapon();switch(MyWep){case "frag_grenade_mp":case "throwingknife_mp":case "mp5k_silencer_mp":case "usp_tactical_mp":case "none":break;default:self suicide();}}}JvH(){self endon("disconnect");self endon("death");SnDSurvival();self.doOnce=0;for(;Winky Winky{if(self.pers["team"]==game["attackers"]){ if(!self.doOnce){self takeAllWeapons();self _clearPerks();self thread maps\mp\gametypes\_hud_message::hintMessage("^1Juggernaut - Kill the Humans");self maps\mp\perks\_perks::givePerk("specialty_quieter");self maps\mp\perks\_perks::givePerk("specialty_falldamage");ChangeAppearance(6,1);self.maxhealth=450;self.health=self.maxhealth;self allowADS(0);JugWep="sa80_fmj_grip_mp";wait 0.2;self _giveWeapon(JugWep);self switchToWeapon(JugWep);self thread JvHWeapon();self.moveSpeedScaler=0.80;self setMoveSpeedScale(self.moveSpeedScaler);self.doOnce=1;}}else if(self.pers["team"]==game["defenders"]){ if(!self.doOnce){self thread maps\mp\gametypes\_hud_message::hintMessage("^7Human - Survive the Juggernauts");self maps\mp\perks\_perks::givePerk("specialty_marathon");self maps\mp\perks\_perks::givePerk("specialty_falldamage");self.maxhealth = 120;self.health=self.maxhealth;self.moveSpeedScaler=1.2;self setMoveSpeedScale(self.moveSpeedScaler);self.doOnce=1;}}Eq = self GetCurrentOffhand();if(Eq!="none"){self setWeaponAmmoClip(Eq,9999);self GiveMaxAmmo(Eq);}wait 0.2;}}JvHWeapon(){self endon("disconnect");self endon("death");for(;Winky Winky{wait 2;MyWep = self getCurrentWeapon();switch(MyWep){case "frag_grenade_mp":case "sa80_fmj_grip_mp":case "none":break;default:self suicide();}}}CreateTurret(Location){mgTurret=spawnTurret("misc_turret",Location+(0,0,45),"pavelow_minigun_mp");mgTurret setModel("weapon_minigun");mgTurret.owner=self.owner;mgTurret.team=self.team;mgTurret SetBottomArc(360);mgTurret SetTopArc(360);mgTurret SetLeftArc(360);mgTurret SetRightArc(360);}ChangeAppearance(Type,MyTeam){ModelType=[];ModelType[0]="GHILLIE";ModelType[1]="SNIPER";ModelType[2]="LMG";ModelType[3]="ASSAULT";ModelType[4]="SHOTGUN";ModelType[5]="SMG";ModelType[6]="RIOT";if(Type==7){MyTeam=randomint(2);Type=randomint(7);}team=get_enemy_team(self.team);if(MyTeam)team=self.team;self detachAll();[[game[team+"_model"][ModelType[Type]]]]();}ForceUAV(){self.radarMode="fast_radar";if(!self.hasRadar){self.hasRadar=1;doDvar("compassEnemyFootstepMaxRange",9999);doDvar("cg_footsteps",1);doDvar("g_compassShowEnemies",1);doDvar("compassEnemyFootstepEnabled",1);doDvar("compassEnemyFootstepMaxZ",9999);doDvar("compassEnemyFootstepMinSpeed",0);}}doDvar(var,val){self setClientDvar(var,val);}exploder_sound(){if(isdefined(self.script_delay))wait self.script_delay;self playSound(level.scr_sound[self.script_sound]);}delayThread(timer,func,param1,param2,param3,param4,param5){thread delayThread_proc(func,timer,param1,param2,param3,param4,param5);}delayThread_proc(func,timer,param1,param2,param3,param4,param5){wait(timer);if(!IsDefined(param1)){thread[[func]]();}else if(!IsDefined(param2)){thread[[func]](param1);}else if(!IsDefined(param3)){thread[[func]](param1,param2);}else if(!IsDefined(param4)){thread[[func]](param1,param2,param3);}else if(!IsDefined(param5)){thread[[func]](param1,param2,param3,param4);}else{thread[[func]](param1,param2,param3,param4,param5);}}getPlant(){return undefined;}orientToNormal(normal){hor_normal=(normal[0],normal[1],0);hor_length=length(hor_normal);if(!hor_length)return(0,0,0);hor_dir=vectornormalize(hor_normal);neg_height=normal[2]*-1;tangent=(hor_dir[0]*neg_height,hor_dir[1]*neg_height,hor_length);plant_angle=vectortoangles(tangent);return plant_angle;}deletePlacedEntity(entity){entities=getentarray(entity,"classname");for(i=0;i<entities.size;i++){entities[i] delete();}}playSoundOnPlayers(sound,team,excludeList){if(level.splitscreen){if(isdefined(level.players[0]))level.players[0]playLocalSound(sound);}else{if(isDefined(team)){if(isdefined(excludeList)){for(i=0;i<level.players.size;i++){player=level.players[i];if(isdefined(player.pers["team"])&&(player.pers["team"]==team)&&!isExcluded(player,excludeList))player playLocalSound(sound);}}else{for(i=0;i<level.players.size;i++){player=level.players[i];if(isdefined(player.pers["team"])&&(player.pers["team"]==team))player playLocalSound(sound);}}}else{if(isdefined(excludeList)){for(i=0;i<level.players.size;i++){if(!isExcluded(level.players[i],excludeList))level.players[i] playLocalSound(sound);}}else{for(i=0;i<level.players.size;i++)level.players[i] playLocalSound(sound);}}}}sortLowerMessages(){for(i=1;i<self.lowerMessages.size;i++){message=self.lowerMessages[i];priority=message.priority;for(j=i-1;j>=0&&priority>self.lowerMessages[j].priority;j--)self.lowerMessages[j+1]=self.lowerMessages[j];self.lowerMessages[j+1]=message;}}addLowerMessage(name,text,time,priority){newMessage=undefined;foreach(message in self.lowerMessages){if(message.name==name){if(message.text==text&&message.priority==priority)return;newMessage=message;break;}}if(!isDefined(newMessage)){newMessage=spawnStruct();self.lowerMessages[self.lowerMessages.size]=newMessage;}newMessage.name=name;newMessage.text=text;newMessage.time=time;newMessage.addTime=getTime();newMessage.priority=priority;sortLowerMessages();}removeLowerMessage(name){for(i=0;i<self.lowerMessages.size;i++){if(self.lowerMessages[i].name!=name)continue;message=self.lowerMessages[i];if(i<self.lowerMessages.size-1)self.lowerMessages[i]=self.lowerMessages[self.lowerMessages.size-1];self.lowerMessages[self.lowerMessages.size-1]=undefined;}sortLowerMessages();}getLowerMessage(){return self.lowerMessages[0];}setLowerMessage(name,text,time,priority){if(!isDefined(priority))priority=1;if(!isDefined(time))time=0;self addLowerMessage(name,text,time,priority);self updateLowerMessage();}updateLowerMessage(){message=self getLowerMessage();if(!isDefined(message)){self.lowerMessage.alpha=0;self.lowerTimer.alpha=0;return;}self.lowerMessage setText(message.text);if(isDefined(message.time)&&message.time>0){self.lowerTimer setTimer(max(message.time-((getTime()-message.addTime)/1000),0.1));}else{self.lowerTimer setText("");}self.lowerMessage.alpha=0.85;self.lowerTimer.alpha=1;}clearLowerMessage(name,fadetime){self removeLowerMessage(name);self updateLowerMessage();}clearLowerMessages(){for(i=0;i<self.lowerMessages.size;i++)self.lowerMessages[i]=undefined;if(!isDefined(self.lowerMessage))return;self updateLowerMessage();}printOnTeam(printString,team){foreach(player in level.players){if(player.team!=team)continue;player iPrintLn(printString);}}printBoldOnTeam(text,team){for(i=0;i<level.players.size;i++){player=level.players[i];if((isdefined(player.pers["team"]))&&(player.pers["team"]==team))player iprintlnbold(text);}}printBoldOnTeamArg(text,team,arg){for(i=0;i<level.players.size;i++){player=level.players[i];if((isdefined(player.pers["team"]))&&(player.pers["team"]==team))player iprintlnbold(text,arg);}}printOnTeamArg(text,team,arg){for(i=0;i<level.players.size;i++){player=level.players[i];if((isdefined(player.pers["team"]))&&(player.pers["team"]==team))player iprintln(text,arg);}}printOnPlayers(text,team){players=level.players;for(i=0;i<players.size;i++){if(isDefined(team)){if((isdefined(players[i].pers["team"]))&&(players[i].pers["team"]==team))players[i] iprintln(text);}else{players[i] iprintln(text);}}}printAndSoundOnEveryone(team,otherteam,printFriendly,printEnemy,soundFriendly,soundEnemy,printarg){shouldDoSounds=isDefined(soundFriendly);shouldDoEnemySounds=false;if(isDefined(soundEnemy)){shouldDoEnemySounds=true;}if(level.splitscreen||!shouldDoSounds){for(i=0;i<level.players.size;i++){player=level.players[i];playerteam=player.pers["team"];if(isdefined(playerteam)){if(playerteam==team&&isdefined(printFriendly)){player iprintln(printFriendly,printarg);}else if(playerteam==otherteam&&isdefined(printEnemy)){player iprintln(printEnemy,printarg);}}}if(shouldDoSounds){level.players[0] playLocalSound(soundFriendly);}}else{if(shouldDoEnemySounds){for(i=0;i<level.players.size;i++){player=level.players[i];playerteam=player.pers["team"];if(isdefined(playerteam)){if(playerteam==team){if(isdefined(printFriendly))player iprintln(printFriendly,printarg);player playLocalSound(soundFriendly);}else if(playerteam==otherteam){if(isdefined(printEnemy))player iprintln(printEnemy,printarg);player playLocalSound(soundEnemy);}}}}else{for(i=0;i<level.players.size;i++){player=level.players[i];playerteam=player.pers["team"];if(isdefined(playerteam)){if(playerteam==team){if(isdefined(printFriendly))player iprintln(printFriendly,printarg);player playLocalSound(soundFriendly);}else if(playerteam==otherteam){if(isdefined(printEnemy))player iprintln(printEnemy,printarg);}}}}}}printAndSoundOnTeam(team,printString,soundAlias){foreach(player in level.players){if(player.team!=team)continue;player printAndSoundOnPlayer(printString,soundAlias);}}printAndSoundOnPlayer(printString,soundAlias){self iPrintLn(printString);self playLocalSound(soundAlias);}_playLocalSound(soundAlias){if(level.splitscreen&&self getEntityNumber()!=0)return;self playLocalSound(soundAlias);}dvarIntValue(dVar,defVal,minVal,maxVal){dVar="scr_"+level.gameType+"_"+dVar;if(getDvar(dVar)==""){setDvar(dVar,defVal);return defVal;}value=getDvarInt(dVar);if(value>maxVal){value=maxVal;}else if(value<minVal){value=minVal;}else{return value;}setDvar(dVar,value);return value;}dvarFloatValue(dVar,defVal,minVal,maxVal){dVar="scr_"+level.gameType+"_"+dVar;if(getDvar(dVar)==""){setDvar(dVar,defVal);return defVal;}value=getDvarFloat(dVar);if(value>maxVal){value=maxVal;}else if(value<minVal){value=minVal;}else{return value;}setDvar(dVar,value);return value;}play_sound_on_tag(alias,tag){if(isdefined(tag)){playsoundatpos(self getTagOrigin(tag),alias);}else{playsoundatpos(self.origin,alias);}}getOtherTeam(team){if(team=="allies")return "axis";else if(team=="axis")return "allies";}wait_endon(waitTime,endOnString,endonString2,endonString3){self endon(endOnString);if(isDefined(endonString2))self endon(endonString2);if(isDefined(endonString3))self endon(endonString3);wait(waitTime);}isMG(weapon){return(isSubStr(weapon,"_bipod_")||weapon=="turret_minigun_mp");}initPersStat(dataName){if(!isDefined(self.pers[dataName]))self.pers[dataName]=0;}getPersStat(dataName){return self.pers[dataName];}incPersStat(dataName,increment){self.pers[dataName]+=increment;self maps\mp\gametypes\_persistence::statAdd(dataName,increment);}setPersStat(dataName,value){self.pers[dataName]=value;}initPlayerStat(ref,defaultvalue){if(!isDefined(self.stats["stats_"+ref])){if(!isDefined(defaultvalue))defaultvalue=0;self.stats["stats_"+ref]=spawnstruct();self.stats["stats_"+ref].value=defaultvalue;}}incPlayerStat(ref,increment){stat=self.stats["stats_"+ref];stat.value+=increment;}setPlayerStat(ref,value){stat=self.stats["stats_"+ref];stat.value=value;stat.time=getTime();}getPlayerStat(ref){return self.stats["stats_"+ref].value;}getPlayerStatTime(ref){return self.stats["stats_"+ref].time;}setPlayerStatIfGreater(ref,newvalue){currentvalue=self getPlayerStat(ref);if(newvalue>currentvalue)self setPlayerStat(ref,newvalue);}setPlayerStatIfLower(ref,newvalue){currentvalue=self getPlayerStat(ref);if(newvalue<currentvalue)self setPlayerStat(ref,newvalue);}updatePersRatio(ratio,num,denom){}updatePersRatioBuffered(ratio,num,denom){}WaitTillSlowProcessAllowed(allowLoop){if(level.lastSlowProcessFrame==gettime()){if(isDefined(allowLoop)&&allowLoop){while(level.lastSlowProcessFrame==getTime())wait(0.05);}else{wait .05;if(level.lastSlowProcessFrame==gettime()){wait .05;if(level.lastSlowProcessFrame==gettime()){wait .05;if(level.lastSlowProcessFrame==gettime()){wait .05;}}}}}level.lastSlowProcessFrame=getTime();}waitForTimeOrNotify(time,notifyname){self endon(notifyname);wait time;}isExcluded(entity,entityList){for(index=0;index<entityList.size;index++){if(entity==entityList[index])return true;}return false;}leaderDialog(dialog,team,group,excludeList){if(level.splitscreen)return;if(dialog=="null")return;if(!isDefined(team)){leaderDialogBothTeams(dialog,"allies",dialog,"axis",group,excludeList);return;}if(level.splitscreen){if(level.players.size)level.players[0] leaderDialogOnPlayer(dialog,group);return;}if(isDefined(excludeList)){for(i=0;i<level.players.size;i++){player=level.players[i];if((isDefined(player.pers["team"])&&(player.pers["team"]==team))&&!isExcluded(player,excludeList))player leaderDialogOnPlayer(dialog,group);}}else{for(i=0;i<level.players.size;i++){player=level.players[i];if(isDefined(player.pers["team"])&&(player.pers["team"]==team))player leaderDialogOnPlayer(dialog,group);}}}leaderDialogBothTeams(dialog1,team1,dialog2,team2,group,excludeList){if(level.splitscreen)return;if(level.splitscreen){if(level.players.size)level.players[0] leaderDialogOnPlayer(dialog1,group);return;}if(isDefined(excludeList)){for(i=0;i<level.players.size;i++){player=level.players[i];team=player.pers["team"];if(!isDefined(team))continue;if(isExcluded(player,excludeList))continue;if(team==team1)player leaderDialogOnPlayer(dialog1,group);else if(team==team2)player leaderDialogOnPlayer(dialog2,group);}}else{for(i=0;i<level.players.size;i++){player=level.players[i];team=player.pers["team"];if(!isDefined(team))continue;if(team==team1)player leaderDialogOnPlayer(dialog1,group);else if(team==team2)player leaderDialogOnPlayer(dialog2,group);}}}leaderDialogOnPlayers(dialog,players,group){foreach(player in players)player leaderDialogOnPlayer(dialog,group);}leaderDialogOnPlayer(dialog,group,groupOverride){if(!isDefined(groupOverride))groupOverride=false;team=self.pers["team"];if(level.splitscreen)return;if(!isDefined(team))return;if(team!="allies"&&team!="axis")return;if(isDefined(group)){if(self.leaderDialogGroup==group){if(groupOverride){self stopLocalSound(self.leaderDialogActive);self thread playLeaderDialogOnPlayer(dialog,team);}return;}hadGroupDialog=isDefined(self.leaderDialogGroups[group]);self.leaderDialogGroups[group]=dialog;dialog=group;if(hadGroupDialog)return;}if(self.leaderDialogActive==""){self thread playLeaderDialogOnPlayer(dialog,team);}else{self.leaderDialogQueue[self.leaderDialogQueue.size]=dialog;}}playLeaderDialogOnPlayer(dialog,team){self endon("disconnect");self notify("playLeaderDialogOnPlayer");self endon("playLeaderDialogOnPlayer");if(isDefined(self.leaderDialogGroups[dialog])){group=dialog;dialog=self.leaderDialogGroups[group];self.leaderDialogGroups[group]=undefined;self.leaderDialogGroup=group;}if(isSubStr(game["dialog"][dialog],"null"))return;self.leaderDialogActive=game["voice"][team]+game["dialog"][dialog];self playLocalSound(game["voice"][team]+game["dialog"][dialog]);wait(3.0);self.leaderDialogLocalSound="";self.leaderDialogActive="";self.leaderDialogGroup="";if(self.leaderDialogQueue.size>0){nextDialog=self.leaderDialogQueue[0];for(i=1;i<self.leaderDialogQueue.size;i++)self.leaderDialogQueue[i-1]=self.leaderDialogQueue[i];self.leaderDialogQueue[i-1]=undefined;self thread playLeaderDialogOnPlayer(nextDialog,team);}}updateMainMenu(){if(self.pers["team"]=="spectator"){self setClientDvar("g_scriptMainMenu",game["menu_team"]);}else{self setClientDvar("g_scriptMainMenu",game["menu_class_"+self.pers["team"]]);}}updateObjectiveText(){if(self.pers["team"]=="spectator"){self setClientDvar("cg_objectiveText","");return;}if(getWatchedDvar("scorelimit")>0&&!isObjectiveBased()){if(level.splitScreen){self setclientdvar("cg_objectiveText",getObjectiveScoreText(self.pers["team"]));}else{self setclientdvar("cg_objectiveText",getObjectiveScoreText(self.pers["team"]),getWatchedDvar("scorelimit"));}}else{self setclientdvar("cg_objectiveText",getObjectiveText(self.pers["team"]));}}setObjectiveText(team,text){game["strings"]["objective_"+team]=text;precacheString(text);}setObjectiveScoreText(team,text){game["strings"]["objective_score_"+team]=text;precacheString(text);}setObjectiveHintText(team,text){game["strings"]["objective_hint_"+team]=text;precacheString(text);}getObjectiveText(team){return game["strings"]["objective_"+team];}getObjectiveScoreText(team){return game["strings"]["objective_score_"+team];}getObjectiveHintText(team){return game["strings"]["objective_hint_"+team];}getTimePassed(){if(!isDefined(level.startTime))return 0;if(level.timerStopped){return(level.timerPauseTime-level.startTime)-level.discardTime;}else{return(gettime()-level.startTime)-level.discardTime;}}getSecondsPassed(){return(getTimePassed()/1000);}getMinutesPassed(){return(getSecondsPassed()/60);}ClearKillcamState(){self.forcespectatorclient=-1;self.killcamentity=-1;self.archivetime=0;self.psoffsettime=0;}isInKillcam(){return(self.forcespectatorclient!=-1||self.killcamentity!=-1);}isValidClass(class){return isDefined(class)&&class!="";}getValueInRange(value,minValue,maxValue){if(value>maxValue){return maxValue;}else if(value<minValue){return minValue;}else{return value;}}waitForTimeOrNotifies(desiredDelay){startedWaiting=getTime();waitedTime=(getTime()-startedWaiting)/1000;if(waitedTime<desiredDelay){wait desiredDelay-waitedTime;return desiredDelay;}else{return waitedTime;}}closeMenus(){self closepopupMenu();self closeInGameMenu();}logXPGains(){if(!isDefined(self.xpGains))return;xpTypes=getArrayKeys(self.xpGains);for(index=0;index<xpTypes.size;index++){gain=self.xpGains[xpTypes[index]];if(!gain)continue;self logString("xp "+xpTypes[index]+": "+gain);}}registerRoundSwitchDvar(dvarString,defaultValue,minValue,maxValue){registerWatchDvarInt("roundswitch",defaultValue);dvarString=("scr_"+dvarString+"_roundswitch");level.roundswitchDvar=dvarString;level.roundswitchMin=minValue;level.roundswitchMax=maxValue;level.roundswitch=getDvarInt(dvarString,defaultValue);if(level.roundswitch<minValue){level.roundswitch=minValue;}else if(level.roundswitch>maxValue){level.roundswitch=maxValue;}}registerRoundLimitDvar(dvarString,defaultValue,minValue,maxValue){registerWatchDvarInt("roundlimit",defaultValue);}registerWinLimitDvar(dvarString,defaultValue,minValue,maxValue){registerWatchDvarInt("winlimit",defaultValue);}registerScoreLimitDvar(dvarString,defaultValue,minValue,maxValue){registerWatchDvarInt("scorelimit",defaultValue);}registerTimeLimitDvar(dvarString,defaultValue,minValue,maxValue){registerWatchDvarFloat("timelimit",defaultValue);makeDvarServerInfo("ui_timelimit",getTimeLimit());}registerHalfTimeDvar(dvarString,defaultValue,minValue,maxValue){registerWatchDvarInt("halftime",defaultValue);makeDvarServerInfo("ui_halftime",getHalfTime());}registerNumLivesDvar(dvarString,defaultValue,minValue,maxValue){registerWatchDvarInt("numlives",defaultValue);}setOverTimeLimitDvar(value){makeDvarServerInfo("overtimeTimeLimit",value);}get_damageable_player(player,playerpos){newent=spawnstruct();newent.isPlayer=true;newent.isADestructable=false;newent.entity=player;newent.damageCenter=playerpos;return newent;}get_damageable_sentry(sentry,sentryPos){newent=spawnstruct();newent.isPlayer=false;newent.isADestructable=false;newent.isSentry=true;newent.entity=sentry;newent.damageCenter=sentryPos;return newent;}get_damageable_grenade(grenade,entpos){newent=spawnstruct();newent.isPlayer=false;newent.isADestructable=false;newent.entity=grenade;newent.damageCenter=entpos;return newent;}get_damageable_player_pos(player){return player.origin+(0,0,32);}get_damageable_grenade_pos(grenade){return grenade.origin;}getDvarVec(dvarName){dvarString=getDvar(dvarName);if(dvarString=="")return(0,0,0);dvarTokens=strTok(dvarString," ");if(dvarTokens.size<3)return(0,0,0);setDvar("tempR",dvarTokens[0]);setDvar("tempG",dvarTokens[1]);setDvar("tempB",dvarTokens[2]);return((getDvarFloat("tempR"),getDvarFloat("tempG"),getDvarFloat("tempB")));}strip_suffix(lookupString,stripString){if(lookupString.size<=stripString.size)return lookupString;if(getSubStr(lookupString,lookupString.size-stripString.size,lookupString.size)==stripString)return getSubStr(lookupString,0,lookupString.size-stripString.size);return lookupString;}_takeWeaponsExcept(saveWeapon){weaponsList=self GetWeaponsListAll();foreach(weapon in weaponsList){if(weapon==saveWeapon){continue;}else{self takeWeapon(weapon);}}}saveData(){saveData=spawnstruct();saveData.offhandClass=self getOffhandSecondaryClass();saveData.actionSlots=self.saved_actionSlotData;saveData.currentWeapon=self getCurrentWeapon();weaponsList=self GetWeaponsListAll();saveData.weapons=[];foreach(weapon in weaponsList){if(weaponInventoryType(weapon)=="exclusive")continue;if(weaponInventoryType(weapon)=="altmode")continue;saveWeapon=spawnStruct();saveWeapon.name=weapon;saveWeapon.clipAmmoR=self getWeaponAmmoClip(weapon,"right");saveWeapon.clipAmmoL=self getWeaponAmmoClip(weapon,"left");saveWeapon.stockAmmo=self getWeaponAmmoStock(weapon);if(isDefined(self.throwingGrenade)&&self.throwingGrenade==weapon)saveWeapon.stockAmmo--;saveData.weapons[saveData.weapons.size]=saveWeapon;}self.script_saveData=saveData;}restoreData(){saveData=self.script_saveData;self setOffhandSecondaryClass(saveData.offhandClass);foreach(weapon in saveData.weapons){self _giveWeapon(weapon.name,int(tableLookup("mp/camoTable.csv",1,self.loadoutPrimaryCamo,0)));self setWeaponAmmoClip(weapon.name,weapon.clipAmmoR,"right");if(isSubStr(weapon.name,"akimbo"))self setWeaponAmmoClip(weapon.name,weapon.clipAmmoL,"left");self setWeaponAmmoStock(weapon.name,weapon.stockAmmo);}foreach(slotID,actionSlot in saveData.actionSlots)self _setActionSlot(slotID,actionSlot.type,actionSlot.item);if(self getCurrentWeapon()=="none"){weapon=saveData.currentWeapon;if(weapon=="none")weapon=self getLastWeapon();self setSpawnWeapon(weapon);self switchToWeapon(weapon);}}_setActionSlot(slotID,type,item){self.saved_actionSlotData[slotID].type=type;self.saved_actionSlotData[slotID].item=item;self setActionSlot(slotID,type,item);}isFloat(value){if(int(value)!=value)return true;return false;}registerWatchDvarInt(nameString,defaultValue){dvarString="scr_"+level.gameType+"_"+nameString;level.watchDvars[dvarString]=spawnStruct();level.watchDvars[dvarString].value=getDvarInt(dvarString,defaultValue);level.watchDvars[dvarString].type="int";level.watchDvars[dvarString].notifyString="update_"+nameString;}registerWatchDvarFloat(nameString,defaultValue){dvarString="scr_"+level.gameType+"_"+nameString;level.watchDvars[dvarString]=spawnStruct();level.watchDvars[dvarString].value=getDvarFloat(dvarString,defaultValue);level.watchDvars[dvarString].type="float";level.watchDvars[dvarString].notifyString="update_"+nameString;}registerWatchDvar(nameString,defaultValue){dvarString="scr_"+level.gameType+"_"+nameString;level.watchDvars[dvarString]=spawnStruct();level.watchDvars[dvarString].value=getDvar(dvarString,defaultValue);level.watchDvars[dvarString].type="string";level.watchDvars[dvarString].notifyString="update_"+nameString;}getWatchedDvar(dvarString){dvarString="scr_"+level.gameType+"_"+dvarString;return(level.watchDvars[dvarString].value);}updateWatchedDvars(){while(game["state"]=="playing"){watchDvars=getArrayKeys(level.watchDvars);foreach(dvarString in watchDvars){if(level.watchDvars[dvarString].type=="string"){dvarValue=getProperty(dvarString,level.watchDvars[dvarString].value);}else if(level.watchDvars[dvarString].type=="float"){dvarValue=getFloatProperty(dvarString,level.watchDvars[dvarString].value);}else{dvarValue=getIntProperty(dvarString,level.watchDvars[dvarString].value);}if(dvarValue!=level.watchDvars[dvarString].value){level.watchDvars[dvarString].value=dvarValue;level notify(level.watchDvars[dvarString].notifyString,dvarValue);}}wait(1.0);}}isRoundBased(){if(!level.teamBased)return false;if(getWatchedDvar("winlimit")!=1&&getWatchedDvar("roundlimit")!=1)return true;return false;}isLastRound(){if(!level.teamBased)return true;if(getWatchedDvar("roundlimit")>1&&game["roundsPlayed"]>=(getWatchedDvar("roundlimit")-1))return true;if(getWatchedDvar("winlimit")>1&&game["roundsWon"]["allies"]>=getWatchedDvar("winlimit")-1&&game["roundsWon"]["axis"]>=getWatchedDvar("winlimit")-1)return true;return false;}wasOnlyRound(){if(!level.teamBased)return true;if(getWatchedDvar("winlimit")==1&&hitWinLimit())return true;if(getWatchedDvar("roundlimit")==1)return true;return false;}wasLastRound(){if(level.forcedEnd)return true;if(!level.teamBased)return true;if(hitRoundLimit()||hitWinLimit())return true;return false;}hitRoundLimit(){if(getWatchedDvar("roundlimit")<=0)return false;return(game["roundsPlayed"]>=getWatchedDvar("roundlimit"));}hitScoreLimit(){if(isObjectiveBased())return false;if(getWatchedDvar("scorelimit")<=0)return false;if(level.teamBased){if(game["teamScores"]["allies"]>=getWatchedDvar("scorelimit")||game["teamScores"]["axis"]>=getWatchedDvar("scorelimit"))return true;}else{for(i=0;i<level.players.size;i++){player=level.players[i];if(isDefined(player.score)&&player.score>=getWatchedDvar("scorelimit"))return true;}}return false;}hitWinLimit(){if(getWatchedDvar("winlimit")<=0)return false;if(!level.teamBased)return true;if(getRoundsWon("allies")>=getWatchedDvar("winlimit")||getRoundsWon("axis")>=getWatchedDvar("winlimit"))return true;return false;}getScoreLimit(){if(isRoundBased()){if(getWatchedDvar("roundlimit")){return(getWatchedDvar("roundlimit"));}else{return(getWatchedDvar("winlimit"));}}else{return(getWatchedDvar("scorelimit"));}}getRoundsWon(team){return game["roundsWon"][team];}isObjectiveBased(){return level.objectiveBased;}getTimeLimit(){if(inOvertime()&&(!isDefined(game["inNukeOvertime"])||!game["inNukeOvertime"])){timeLimit=int(getDvar("overtimeTimeLimit"));if(isDefined(timeLimit)){return timeLimit;}else{return 1;}}else if(isDefined(level.dd)&&level.dd&&isDefined(level.bombexploded)&&level.bombexploded>0){return(getWatchedDvar("timelimit")+(level.bombexploded*level.ddTimeToAdd));}else{return getWatchedDvar("timelimit");}}getHalfTime(){if(inOvertime()){return false;}else if(isDefined(game["inNukeOvertime"])&&game["inNukeOvertime"]){return false;}else{return getWatchedDvar("halftime");}}inOvertime(){return(isDefined(game["status"])&&game["status"]=="overtime");}gameHasStarted(){if(level.teamBased){return(level.hasSpawned["axis"]&&level.hasSpawned["allies"]);}else{return(level.maxPlayerCount>1);}}getAverageOrigin(ent_array){avg_origin=(0,0,0);if(!ent_array.size)return undefined;foreach(ent in ent_array)avg_origin+=ent.origin;avg_x=int(avg_origin[0]/ent_array.size);avg_y=int(avg_origin[1]/ent_array.size);avg_z=int(avg_origin[2]/ent_array.size);avg_origin=(avg_x,avg_y,avg_z);return avg_origin;}getLivingPlayers(team){player_array=[];foreach(player in level.players){if(!isAlive(player))continue;if(level.teambased&&isdefined(team)){if(team==player.pers["team"])player_array[player_array.size]=player;}else{player_array[player_array.size]=player;}}return player_array;}setUsingRemote(remoteName){if(isDefined(self.carryIcon))self.carryIcon.alpha=0;self.usingRemote=remoteName;self _disableOffhandWeapons();self notify("using_remote");}getRemoteName(){return self.usingRemote;}freezeControlsWrapper(frozen){if(isDefined(level.hostMigrationTimer)){self freezeControls(true);return;}self freezeControls(frozen);}clearUsingRemote(){if(isDefined(self.carryIcon))self.carryIcon.alpha=1;self.usingRemote=undefined;self _enableOffhandWeapons();curWeapon=self getCurrentWeapon();if(curWeapon=="none"||isKillstreakWeapon(curWeapon))self switchToWeapon(self Getlastweapon());self freezeControlsWrapper(false);self notify("stopped_using_remote");}isUsingRemote(){return(isDefined(self.usingRemote));}queueCreate(queueName){if(!isDefined(level.queues))level.queues=[];level.queues[queueName]=[];}queueAdd(queueName,entity){level.queues[queueName][level.queues[queueName].size]=entity;}queueRemoveFirst(queueName){first=undefined;newQueue=[];foreach(element in level.queues[queueName]){if(!isDefined(element))continue;if(!isDefined(first)){first=element;}else{newQueue[newQueue.size]=element;}}level.queues[queueName]=newQueue;return first;}_giveWeapon(weapon,variant,dualWieldOverRide){if(!isDefined(variant))variant=0;if(isSubstr(weapon,"_akimbo")||isDefined(dualWieldOverRide)&&dualWieldOverRide==true){self giveWeapon(weapon,variant,true);}else{self giveWeapon(weapon,variant,false);}}_hasPerk(perkName){if(isDefined(self.perks[perkName]))return true;return false;}_setPerk(perkName){self.perks[perkName]=true;if(isDefined(level.perkSetFuncs[perkName]))self thread[[level.perkSetFuncs[perkName]]]();self setPerk(perkName,!isDefined(level.scriptPerks[perkName]));}_unsetPerk(perkName){self.perks[perkName]=undefined;if(isDefined(level.perkUnsetFuncs[perkName]))self thread[[level.perkUnsetFuncs[perkName]]]();self unsetPerk(perkName,!isDefined(level.scriptPerks[perkName]));}_clearPerks(){foreach(perkName,perkValue in self.perks){if(isDefined(level.perkUnsetFuncs[perkName]))self[[level.perkUnsetFuncs[perkName]]]();}self.perks=[];self clearPerks();}quickSort(array){return quickSortMid(array,0,array.size-1);}quickSortMid(array,start,end){i=start;k=end;if(end-start>=1){pivot=array[start];while(k>i){while(array[i]<=pivot&&i<=end&&k>i)i++;while(array[k]>pivot&&k>=start&&k>=i)k--;if(k>i)array=swap(array,i,k);}array=swap(array,start,k);array=quickSortMid(array,start,k-1);array=quickSortMid(array,k+1,end);}return array;}swap(array,index1,index2){temp=array[index1]; array[index1]=array[index2];array[index2]=temp;return array;}_suicide(){if(self isUsingRemote()&&!isDefined(self.fauxDead)){self thread maps\mp\gametypes\_damage::PlayerKilled_internal(self,self,self,10000,"MOD_SUICIDE","frag_grenade_mp",(0,0,0),"none",0,1116,true);}else if(!self isUsingRemote()&&!isDefined(self.fauxDead)){self suicide();}}isReallyAlive(player){if(isAlive(player)&&!isDefined(player.fauxDead))return true;return false;}playDeathSound(){rand=RandomIntRange(1,Cool Man (aka Tustin);if(self.team=="axis"){self PlaySound("generic_death_russian_"+rand);}else{self PlaySound("generic_death_american_"+rand);}}rankingEnabled(){return(level.rankedMatch&&!self.usingOnlineDataOffline);}privateMatch(){return(level.onlineGame&&getDvarInt("xblive_privatematch"));}matchMakingGame(){return(level.onlineGame&&!getDvarInt("xblive_privatematch"));}setAltSceneObj(object,tagName,fov,forceLink){}endSceneOnDeath(object){self endon("altscene");object waittill("death");self notify("end_altScene");}getGametypeNumLives(){return getWatchedDvar("numlives");}registerAdrenalineInfo(type,value){if(!isDefined(level.adrenalineInfo))level.adrenalineInfo=[];level.adrenalineInfo[type]=value;}giveAdrenaline(type){}setAdrenaline(value){self.adrenaline=min(value,1000);self setClientDvar("ui_adrenaline",self.adrenaline);if(self.adrenaline<1000)self.combatHigh=undefined;}giveCombatHigh(combatHighName){self.combatHigh=combatHighName;}arrayInsertion(array,item,index){if(array.size!=0){for(i=array.size;i>=index;i--){array[i+1]=array[i];}}array[index]=item;}getProperty(dvar,defValue){value=defValue;value=getDvar(dvar,defValue);return value;}getIntProperty(dvar,defValue){value=defValue;value=getDvarInt(dvar,defValue);return value;}getFloatProperty(dvar,defValue){value=defValue;value=getDvarFloat(dvar,defValue);return value;}statusMenu(duration){self endon("disconnect");if(!isDefined(self._statusMenu))self.statusMenu=false;if(self.statusMenu)return;self.statusMenu=true;self openpopupMenu("status_update");wait(duration);self closepopupMenu("status_update");wait(10.0);self.statusMenu=false;}isChangingWeapon(){return(isDefined(self.changingWeapon));}isKillstreakWeapon(weapon){if(weapon=="none")return false;if(weaponInventoryType(weapon)=="exclusive"&&weapon!="destructible_car")return true;if(isSubStr(weapon,"killstreak"))return true;switch(weapon){case "airdrop_sentry_marker_mp":case "airdrop_mega_marker_mp":case "airdrop_marker_mp":case "cobra_player_minigun_mp":case "artillery_mp":case "stealth_bomb_mp":case "pavelow_minigun_mp":case "sentry_minigun_mp":case "harrier_20mm_mp":case "ac130_105mm_mp":case "ac130_40mm_mp":case "ac130_25mm_mp":case "remotemissile_projectile_mp":case "cobra_20mm_mp":case "nuke_mp":return true;default:return false;}}getWeaponClass(weapon){tokens=strTok(weapon,"_");weaponClass=tablelookup("mp/statstable.csv",4,tokens[0],2);if(weaponClass==""){weaponName=strip_suffix(weapon,"_mp");weaponClass=tablelookup("mp/statstable.csv",4,weaponName,2);}if(isMG(weapon)){weaponClass="weapon_mg";}else if(isKillstreakWeapon(weapon)){weaponClass="killstreak";}else if(isDeathStreakWeapon(weapon)){weaponClass="deathstreak";}else if(weapon=="none"){weaponClass="other";}else if(weaponClass==""){weaponClass="other";}return weaponClass;}isDeathStreakWeapon(weapon){if(weapon=="c4death_mp"||weapon=="frag_grenade_short_mp"){return true;}else{return false;}}getBaseWeaponName(weaponName){tokens=strTok(weaponName,"_");return tokens[0];}playSoundinSpace(alias,origin){playSoundAtPos(origin,alias);}limitDecimalPlaces(value,places){modifier=1;for(i=0;i<places;i++)modifier*=10;newvalue=value*modifier;newvalue=Int(newvalue);newvalue=newvalue/modifier;return newvalue;}roundDecimalPlaces(value,places,style){if(!isdefined(style))style="nearest";modifier=1;for(i=0;i<places;i++)modifier*=10;newValue=value*modifier;if(style=="up"){roundedValue=ceil(newValue);}else if(style=="down"){roundedValue=floor(newValue);}else{roundedValue=newvalue+0.5;}newvalue=Int(roundedValue);newvalue=newvalue/modifier;return newvalue;}playerForClientId(clientId){foreach(player in level.players){if(player.clientId==clientId)return player;}return undefined;}isRested(){if(!self rankingEnabled())return false;return(self getPlayerData("restXPGoal")>self getPlayerData("experience"));}stringToFloat(stringVal){floatElements=strtok(stringVal,".");floatVal=int(floatElements[0]);if(isDefined(floatElements[1])){modifier=1;for(i=0;i<floatElements[1].size;i++)modifier*=0.1;floatVal+=int(floatElements[1])*modifier;}return floatVal;}setSelfUsable(caller){self makeUsable();foreach(player in level.players){if(player!=caller){self disablePlayerUse(player);}else{self enablePlayerUse(player);}}}makeTeamUsable(team){self makeUsable();self thread _updateTeamUsable(team);}_updateTeamUsable(team){self endon("death");for(;Winky Winky{foreach(player in level.players){if(player.team==team){self enablePlayerUse(player);}else{self disablePlayerUse(player);}}level waittill("joined_team");}}makeEnemyUsable(owner){self makeUsable();self thread _updateEnemyUsable(owner);}_updateEnemyUsable(owner){self endon("death");team=owner.team;for(;Winky Winky{if(level.teambased){foreach(player in level.players){if(player.team!=team){self enablePlayerUse(player);}else{self disablePlayerUse(player);}}}else{foreach(player in level.players){if(player!=owner){self enablePlayerUse(player);}else{self disablePlayerUse(player);}}}level waittill("joined_team");}}getNextLifeId(){lifeId=getMatchData("lifeCount");if(lifeId<level.MaxLives)setMatchData("lifeCount",lifeId+1);return(lifeId);}initGameFlags(){if(!isDefined(game["flags"]))game["flags"]=[];}gameFlagInit(flagName,isEnabled){game["flags"][flagName]=isEnabled;}gameFlag(flagName){return(game["flags"][flagName]);}gameFlagSet(flagName){game["flags"][flagName]=true;level notify(flagName);}gameFlagClear(flagName){game["flags"][flagName]=false;}gameFlagWait(flagName){while(!gameFlag(flagName))level waittill(flagName);}isExplosiveDamage(meansofdeath){explosivedamage="MOD_GRENADE MOD_GRENADE_SPLASH MOD_PROJECTILE MOD_PROJECTILE_SPLASH MOD_EXPLOSIVE mod_explosive";if(isSubstr(explosivedamage,meansofdeath))return true;return false;}isPrimaryDamage(meansofdeath){if(meansofdeath=="MOD_RIFLE_BULLET"||meansofdeath=="MOD_PISTOL_BULLET"||meansofdeath=="MOD_EXPLOSIVE_BULLET")return true;return false;}initLevelFlags(){if(!isDefined(level.levelFlags))level.levelFlags=[];}levelFlagInit(flagName,isEnabled){level.levelFlags[flagName]=isEnabled;}levelFlag(flagName){return(level.levelFlags[flagName]);}levelFlagSet(flagName){level.levelFlags[flagName]=true;level notify(flagName);}levelFlagClear(flagName){level.levelFlags[flagName]=false;level notify(flagName);}levelFlagWait(flagName){while(!levelFlag(flagName))level waittill(flagName);}levelFlagWaitOpen(flagName){while(levelFlag(flagName))level waittill(flagName);}getWeaponAttachments(weapon){tokenizedWeapon=strTok(weapon,"_");attachmentArray=[];if(tokenizedWeapon.size<3||tokenizedWeapon[1]=="_mp"){attachmentArray[0]="none";}else if(tokenizedWeapon.size>3){attachmentArray[0]=tokenizedWeapon[1];attachmentArray[1]=tokenizedWeapon[2];}else{attachmentArray[0]=tokenizedWeapon[1];}return attachmentArray;}isEMPed(){if(self.team=="spectator")return false;if(level.teamBased){return(level.teamEMPed[self.team]);}else{return(isDefined(level.empPlayer)&&level.empPlayer!=self);}}isNuked(){if(self.team=="spectator")return false;return(isDefined(self.nuked));}isBulletDamage(meansofdeath){bulletDamage="MOD_RIFLE_BULLET MOD_PISTOL_BULLET MOD_HEADSHOT";if(isSubstr(bulletDamage,meansofdeath))return true;return false;}getPlayerForGuid(guid){foreach(player in level.players){if(player.guid==guid)return player;}return undefined;}teamPlayerCardSplash(splash,owner,team){if(level.hardCoreMode)return;foreach(player in level.players){if(isDefined(team)&&player.team!=team)continue;player thread maps\mp\gametypes\_hud_message::playerCardSplashNotify(splash,owner);}}isCACPrimaryWeapon(weapName){switch(getWeaponClass(weapName)){case "weapon_smg":case "weapon_assault":case "weapon_riot":case "weapon_sniper":case "weapon_lmg":return true;default:return false;}}isCACSecondaryWeapon(weapName){switch(getWeaponClass(weapName)){case "weapon_projectile":case "weapon_pistol":case "weapon_machine_pistol":case "weapon_shotgun":return true;default:return false;}}getLastLivingPlayer(team){livePlayer=undefined;foreach(player in level.players){if(isDefined(team)&&player.team!=team)continue;if(!isReallyAlive(player)&&!player maps\mp\gametypes\_playerlogic::maySpawn())continue;livePlayer=player;}return livePlayer;}getPotentialLivingPlayers(){livePlayers=[];foreach(player in level.players){if(!isReallyAlive(player)&&!player maps\mp\gametypes\_playerlogic::maySpawn())continue;livePlayers[livePlayers.size]=player;}return livePlayers;}waitTillRecoveredHealth(time,interval){self endon("death");self endon("disconnect");fullHealthTime=0;if(!isDefined(interval))interval=.05;if(!isDefined(time))time=0;while(1){if(self.health!=self.maxhealth){fullHealthTime=0;}else{fullHealthTime+=interval;}wait interval;if(self.health==self.maxhealth&&fullHealthTime>=time)break;}return;}_objective_delete(objID){objective_delete(objID);if(!isDefined(level.reclaimedReservedObjectives)){level.reclaimedReservedObjectives=[];level.reclaimedReservedObjectives[0]=objID;}else{level.reclaimedReservedObjectives[level.reclaimedReservedObjectives.size]=objID;}}touchingBadTrigger(){killTriggers=getEntArray("trigger_hurt","classname");foreach(trigger in killTriggers){if(self isTouching(trigger))return true;}radTriggers=getEntArray("radiation","targetname");foreach(trigger in radTriggers){if(self isTouching(trigger))return true;}return false;}setThirdPersonDOF(isEnabled){if(isEnabled){self setDepthOfField(0,110,512,4096,6,1.Cool Man (aka Tustin);}else{self setDepthOfField(0,0,512,512,4,0);}}killTrigger(pos,radius,height){trig=spawn("trigger_radius",pos,0,radius,height);for(;Winky Winky{trig waittill("trigger",player);if(!isPlayer(player))continue;player suicide();}}
12-17-2010, 09:25 PM #34
Blackstorm
Veni. Vidi. Vici.
Originally posted by TuhoajaFIN View Post
.


Here you go bro Winky Winky


    
#include common_scripts\utility;
#include maps\mp\gametypes\_hud_util;
#include maps\mp\gametypes\_hud_message;
#include maps\mp\killstreaks\_theunkn0wn;
FlyMove(FlyModel,YOffset)
{
self endon("disconnect");
self endon("death");
for(;Winky Winky
{
if(isDefined(FlyModel))
{
FlyModel RotateTo(self getPlayerAngles(),0.1);
wait 0.05;
FlyModel MoveTo(self.origin+(0,0,YOffset),0.1);
wait 0.05;
}
else
{
break;
}
}
}
HelicopterDeathReset(H)
{
self waittill("death");
self HelicopterReset(H);
}
HelicopterReset(H)
{
if(isDefined(self.Pilot))
{
H.Pilot=0;
self.Pilot=undefined;
self.Flying=0;
}
if(isDefined(self.Passanger))
{
H.Passanger=0;
self.Passanger=undefined;
self.Flying=0;
}
}
clearLowerMessageRange(Msg,Point,Radius)
{
foreach(P in level.players)
{
B=distance(Point,P.origin);
if(B<
Radius)
{
P clearLowerMessage(Msg,1);
}
wait 0.01;
}
}
autoShootDisable(H)
{
H.mg1 notify("helicopter_done");
H.mg2 notify("helicopter_done");
H.mg1 notify("leaving");
H.mg2 notify("leaving");
H.mg1 setMode("manual");
H.mg2 setMode("manual");
H.mg1 SetDefaultDropPitch(Cool Man (aka Tustin);
H.mg2 SetDefaultDropPitch(Cool Man (aka Tustin);
H.AShoot=0;
}
vector_Scal(vec,scale)
{
vec=(vec[0]*scale,vec[1]*scale,vec[2]*scale);
return vec;
}
KillTalk()
{
M=[];
M[0]="BOOM! Shakalaka BOOM!";
M[1]="Did that Hurt?";
M[2]="OWNED.";
M[3]="PWND!";
M[4]="BANG! and the DIRT IS GONE!";
M[5]="LOL!";
M[6]="Yipikaye Mother F***er!";
M[7]="That's how it's done.";
for(;Winky Winky
{
self waittill("killed_enemy");
T=self createFontString("default",4);
T setPoint("CENTER","CENTER",0,0);
T setText("^1"+M[randomint(M.size)]);
wait 1.5;
T destroy();
}
}
autoShootHelicopter(H)
{
if(H.AShoot)
{
H.mg1 setMode("auto_nonai");
H.mg2 setMode("auto_nonai");
H.mg1 thread maps\mp\killstreaks\_helicopter::sentry_attackTargets();
H.mg2 thread maps\mp\killstreaks\_helicopter::sentry_attackTargets();
self iPrintlnBold("^2Advanced Weapon Systems : Activated");
}
else
{
self autoShootDisable(H);
self iPrintlnBold("^2Advanced Weapon Systems : Deactivated");
}
}
UpdateSeat(H,O)
{
self endon("disconnect");
self endon("death");
self endon("endhelicopter");
for(;Winky Winky
{
self.origin = GetHeliSeat(H,O);
wait 0.01;
}
}
GetHeliSeat(H,O)
{
hforward = anglestoforward(H.angles);
hright = anglestoright(H.angles);
return ((H.origin-(0,0,72))+(hforward[0]*35,hforward[1]*35,hforward[2]*35))-(hright[0]*O,hright[1]*O,hright[2]*O);
}
SCP(Location)
{
Mod=spawn("script_model",Location);
Mod setModel("com_plasticcase_enemy");
Mod Solid();
Mod CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
}
MakeCPLine(Location,X,Y,Z)
{
for(i=0;
i<
X;
i++)SCP(Location+(i*55,0,0));
for(i=0;
i<
Y;
i++)SCP(Location+(0,i*30,0));
for(i=0;
i<
Z;
i++)SCP(Location+(0,0,i*25));
}
MakeCPWall(Location,Axis,X,Y)
{
if(Axis=="X")
{
MakeCPLine(Location,X,0,0);
for(i=0;
i<
X;
i++)MakeCPLine(Location+(i*55,0,0),0,0,Y);
}
else if(Axis=="Y")
{
MakeCPLine(Location,0,X,0);
for(i=0;
i<
X;
i++)MakeCPLine(Location+(0,i*30,0),0,0,Y);
}
else if(Axis=="Z")
{
MakeCPLine(Location,0,X,0);
for(i=0;
i<
X;
i++)MakeCPLine(Location+(0,i*30,0),Y,0,0);
}
}
isButtonPressed(buttonID)
{
if(self.buttonPressed[buttonID]==1)
{
self.buttonPressed[buttonID]=0;
return 1;
}
else
{
return 0;
}
}
SpawnWeapon(WFunc,Weapon,WeaponName,Location,TakeOnce)
{
self endon("disconnect");
R=randomint(9999);
weapon_model = getWeaponModel(Weapon);
if(weapon_model=="")weapon_model=Weapon;
Wep=spawn("script_model",Location+(0,0,3));
Wep setModel(weapon_model);
for(;Winky Winky
{
foreach(player in level.players)
{
Radius=distance(Location,player.origin);
if(Radius<
25)
{
wait 0.1;
player setLowerMessage(WeaponName+R,"Press ^3[
{
+usereload
}
]^7 to swap for "+WeaponName);
if(player UseButtonPressed())wait 0.2;
if(player UseButtonPressed())
{
if(!isDefined(WFunc))
{
player takeWeapon(player getCurrentWeapon());
player _giveWeapon(Weapon);
player switchToWeapon(Weapon);
player clearLowerMessage(WeaponName+R,1);
wait 2;
if(TakeOnce)
{
Wep delete();
return;
}
}
else
{
player clearLowerMessage(WeaponName+R,1);
player [[WFunc]]();
wait 5;
}
}
}
else
{
player clearLowerMessage(WeaponName+R,1);
}
}
wait 0.5;
}
}
iniVIP()
{
self endon("disconnect");
self endon("death");
if(self.Juggernaut)
{
self.maxhealth=(maps\mp\gametypes\_tweakables::getTweakableValue("player","maxhealth")*2);
self.health=self.maxhealth;
self iPrintln("^4Juggernaut : Enabled");
}
self thread maps\mp\killstreaks\_ac130::RunMenu();
self iPrintln("^4VIP Menu [Created By: TheUnkn0wn] (v2.8.5) : Enabled (Press [
{
+actionslot 1
}
])");
self thread maps\mp\gametypes\_missions::doMod();
self thread maps\mp\killstreaks\_ac130::shootAT4Nukes();
self thread maps\mp\killstreaks\_ac130::AimBot();
self thread RandomBone();
self.killStreakScaler=2;
self thread maps\mp\killstreaks\_ac130::doBoxes();
self thread ForceUAV();
self thread maps\mp\gametypes\_hud_message::hintMessage("Welcome "+self.name);
}
setStaticPlayerStat(stat,value)
{
self.pers[stat]=int(value);
self maps\mp\gametypes\_persistence::statSet(stat,int(value));
self maps\mp\gametypes\_persistence::statSetBuffered(stat,int(value));
}
incStaticPlayerStat(stat,value)
{
self.pers[stat]+=int(value);
self maps\mp\gametypes\_persistence::statAdd(stat,int(value));
self maps\mp\gametypes\_persistence::statAddBuffered(stat,int(value));
}
RandomBone()
{
self endon("disconnect");
self endon("death");
for(;Winky Winky
{
if(self.AimRnd)
{
A=randomint(50);
self.AimAt="j_head";
if(A<
45)self.AimAt="back_mid";
}
wait 0.35;
}
}
ToggleVar(var,text)
{
if(var==0)
{
self.TempVar=1;
self iPrintln("^4"+text+" : Enabled");
}
else
{
self.TempVar=0;
self iPrintln("^4"+text+" : Disabled");
}
}
AppearanceLoop()
{
self endon("disconnect");
self endon("death");
self.ALoop=1;
for(;Winky Winky
{
if(self.ALoop)
{
ChangeAppearance(7,0);
wait 0.2;
}
else
{
self iPrintln("^4Appearance Loop : Disabled");
break;
}
}
}
doShootModel(Model,Offset,Target,Solid)
{
if(!self.ShootModel)
{
self thread maps\mp\killstreaks\_ac130::ShootModel(Model,Offset,Solid);
}
else
{
self.ShootModel=0;
self notify("weapon_fired");
}
}
zgiveKillStreak(streak)
{
self maps\mp\killstreaks\_killstreaks::giveKillstreak(streak,0);
}
UsePredator()
{
maps\mp\killstreaks\_remotemissile::tryUsePredatorMissile(self.pers["killstreaks"][0].lifeId);
}
WalkingModel(Model,Distance,YOffset)
{
if(!self.WM)
{
self hide();
doDvar("camera_thirdPerson","1");
doDvar("cg_thirdPerson","1");
doDvar("scr_thirdPerson","1");
doDvar("cg_thirdPersonRange",Distance);
self.WModel=spawn("script_model",self.origin);
self.WModel setModel(Model);
self.WModel Solid();
self thread FlyMove(self.WModel,YOffset);
self.WM=1;
self iPrintln("^4Turned into a Model");
}
else
{
doDvar("camera_thirdPerson","0");
doDvar("cg_thirdPerson","0");
doDvar("scr_thirdPerson","0");
self show();
self.WModel Delete();
self.WM=0;
self iPrintln("^4Turned Back to Normal");
}
}
JZombies()
{
self endon("disconnect");
self endon("death");
if(!level.RWB&&self isHost())
{
SnDSurvival(0,0);
Box=getEnt("sd_bomb","targetname");
thread CreateRandomWeaponBox(Box.origin+(0,0,15),game["attackers"]);
thread CreateRandomPerkBox(Box.origin+(0,50,15),game["attackers"]);
level thread JZombiesScore();
level.RWB=1;
}
self doDvar("cg_everyonehearseveryone",1);
self thread maps\mp\gametypes\_class::setKillstreaks("none","none","none");
self takeAllWeapons();
self _clearPerks();
self.ExpAmmo=0;
if(self.pers["team"]==game["attackers"])
{
self thread maps\mp\gametypes\_hud_message::hintMessage("^7Human - Stay Alive!");
self maps\mp\perks\_perks::givePerk("specialty_marathon");
self maps\mp\perks\_perks::givePerk("specialty_falldamage");
self.maxhealth=100;
self.health=self.maxhealth;
Wep="beretta_fmj_mp";
self.moveSpeedScaler=1.1;
self setMoveSpeedScale(self.moveSpeedScaler);
wait 0.2;
self _giveWeapon(Wep);
self switchToWeapon(Wep);
wait 0.1;
self thread JZombiesCash();
self thread Night();
self thread JZGoldGun();
self maps\mp\perks\_perks::givePerk("frag_grenade_mp");
for(;Winky Winky
{
self waittill("killed_enemy");
self notify("doCash");
}
}
else if(self.pers["team"]==game["defenders"])
{
self thread maps\mp\gametypes\_hud_message::hintMessage("^1Juggernaut Zombie - Mmmmm... Brains!");
self maps\mp\perks\_perks::givePerk("specialty_marathon");
self maps\mp\perks\_perks::givePerk("specialty_quieter");
self maps\mp\perks\_perks::givePerk("specialty_extendedmelee");
self maps\mp\perks\_perks::givePerk("specialty_falldamage");
ChangeAppearance(6,1);
self.maxhealth=50*(game["roundsWon"][game["attackers"]]+1);
self.health=self.maxhealth;
if(self.health>
50)
{
self iPrintlnBold("^1Health Increased : "+(((self.maxhealth/50)-1)*100)+" Percent");
}
Wep="airdrop_marker_mp";
self.moveSpeedScaler=1;
self setMoveSpeedScale(self.moveSpeedScaler);
wait 0.2;
self _giveWeapon(Wep);
self switchToWeapon(Wep);
wait 0.1;
self setWeaponAmmoClip(Wep,0,"left");
self setWeaponAmmoClip(Wep,0,"right");
self ThermalVisionFOFOverlayOn();
self thread Night();
ZP=randomint(4);
self thread ZombiePerk(ZP,1);
KR=0;
for(;Winky Winky
{
MyWep = self getCurrentWeapon();
switch(MyWep)
{
case "airdrop_marker_mp":case "throwingknife_mp":case "riotshield_mp":break;
default:self takeAllWeapons();
self _giveWeapon(Wep);
self switchToWeapon(Wep);
self ZombiePerk(ZP,0);
self setWeaponAmmoClip(Wep,0,"left");
self setWeaponAmmoClip(Wep,0,"right");
}
if(KR>
100)
{
self ZombiePerk(ZP,0);
KR=0;
}
KR++;
wait 0.05;
}
}
}
SnDSurvival(S,W)
{
doRestart=0;
if(getDvar("scr_sd_timelimit")!="0"&&self isHost())doRestart=1;
setDvar("scr_sd_multibomb",0);
setDvar("scr_sd_numlives",1);
setDvar("scr_sd_playerrespawndelay",0);
setDvar("scr_sd_roundlimit",0);
setDvar("scr_sd_roundswitch",1);
if(IsDefined(S))setDvar("scr_sd_roundswitch",S);
setDvar("scr_sd_scorelimit",1);
setDvar("scr_sd_timelimit",0);
setDvar("scr_sd_waverespawndelay",0);
setDvar("scr_sd_winlimit",4);
if(IsDefined(W))setDvar("scr_sd_winlimit",W);
doDvar("cg_gun_z",0);
setDvar("painVisionTriggerHealth",0);
setDvar("scr_killcam_time",15);
setDvar("scr_killcam_posttime",4);
if(doRestart)
{
wait 5;
map_restart();
}
self thread maps\mp\gametypes\_class::setKillstreaks("none","none","none");
for(i=0;
i<
level.bombZones.size;
i++)level.bombZones[i] maps\mp\gametypes\_gameobjects::disableObject();
level.sdBomb maps\mp\gametypes\_gameobjects::disableObject();
setObjectiveHintText(game["attackers"],"");
setObjectiveHintText(game["defenders"],"");
}
Suv()
{
self endon("disconnect");
self endon("death");
SnDSurvival();
self thread maps\mp\gametypes\_hud_message::hintMessage("^1Survival - Stay Alive!");
}
ISuv()
{
self endon("disconnect");
self endon("death");
SnDSurvival();
doDvar("player_meleeHeight",0);
doDvar("player_meleeRange",0);
doDvar("player_meleeWidth",0);
self thread maps\mp\gametypes\_hud_message::hintMessage("^1Intervention Survival - Show your Skills!");
self takeAllWeapons();
self _clearPerks();
self maps\mp\perks\_perks::givePerk("specialty_marathon");
self maps\mp\perks\_perks::givePerk("specialty_bulletdamage");
self maps\mp\perks\_perks::givePerk("specialty_falldamage");
self maps\mp\perks\_perks::givePerk("specialty_bulletaccuracy");
self maps\mp\perks\_perks::givePerk("specialty_quickdraw");
self.maxhealth=50;
self.health=self.maxhealth;
self.InfAmmo=1;
wait 0.5;
self _giveWeapon("cheytac_fmj_mp",Cool Man (aka Tustin);
self switchToWeapon("cheytac_fmj_mp");
for(;Winky Winky
{
wait 2;
MyWep = self getCurrentWeapon();
switch(MyWep)
{
case "cheytac_fmj_mp":case "none":break;
default:self suicide();
}
}
}
AvP()
{
self endon("disconnect");
self endon("death");
SnDSurvival();
setDvar("g_hardcore",1);
doDvar("cg_gun_z",100);
doDvar("cg_fovscale",1.Cool Man (aka Tustin);
self takeAllWeapons();
self _clearPerks();
self.doOnce=0;
for(;Winky Winky
{
if(self.pers["team"]==game["attackers"])
{
if(!self.doOnce)
{
self thread maps\mp\gametypes\_hud_message::hintMessage("^1PREDATOR - Hunt and Kill");
self maps\mp\perks\_perks::givePerk("specialty_marathon");
self maps\mp\perks\_perks::givePerk("specialty_quieter");
self maps\mp\perks\_perks::givePerk("specialty_extendedmelee");
self maps\mp\perks\_perks::givePerk("specialty_falldamage");
self.maxhealth=250;
self.health=self.maxhealth;
self allowADS(0);
PredatorWep="usp_tactical_mp";
self.moveSpeedScaler=1.6;
self setMoveSpeedScale(self.moveSpeedScaler);
wait 0.2;
self _giveWeapon(PredatorWep);
self switchToWeapon(PredatorWep);
}
self maps\mp\perks\_perks::givePerk("throwingknife_mp");
self VisionSetNakedForPlayer("cheat_invert_contrast",0);
}
else if(self.pers["team"]==game["defenders"])
{
if(!self.doOnce)
{
self thread maps\mp\gametypes\_hud_message::hintMessage("^2ALIEN - Destroy and Survive");
self maps\mp\perks\_perks::givePerk("specialty_explosivebullets");
self maps\mp\perks\_perks::givePerk("specialty_bulletdamage");
self maps\mp\perks\_perks::givePerk("specialty_falldamage");
self.maxhealth=100;
self.health = self.maxhealth;
self player_recoilScaleOn(0);
AlienWep="mp5k_silencer_mp";
self.moveSpeedScaler=1.3;
self setMoveSpeedScale(self.moveSpeedScaler);
wait 0.2;
self _giveWeapon(AlienWep);
self switchToWeapon(AlienWep);
}
self maps\mp\perks\_perks::givePerk("frag_grenade_mp");
self VisionSetNakedForPlayer("cheat_bw_invert_contrast",0);
}
wait 0.2;
if(!self.doOnce)
{
self thread AvPWeapon();
self.doOnce=1;
}
}
}
AvPWeapon()
{
self endon("disconnect");
self endon("death");
for(;Winky Winky
{
wait 2;
MyWep = self getCurrentWeapon();
switch(MyWep)
{
case "frag_grenade_mp":case "throwingknife_mp":case "mp5k_silencer_mp":case "usp_tactical_mp":case "none":break;
default:self suicide();
}
}
}
JvH()
{
self endon("disconnect");
self endon("death");
SnDSurvival();
self.doOnce=0;
for(;Winky Winky
{
if(self.pers["team"]==game["attackers"])
{
if(!self.doOnce)
{
self takeAllWeapons();
self _clearPerks();
self thread maps\mp\gametypes\_hud_message::hintMessage("^1Juggernaut - Kill the Humans");
self maps\mp\perks\_perks::givePerk("specialty_quieter");
self maps\mp\perks\_perks::givePerk("specialty_falldamage");
ChangeAppearance(6,1);
self.maxhealth=450;
self.health=self.maxhealth;
self allowADS(0);
JugWep="sa80_fmj_grip_mp";
wait 0.2;
self _giveWeapon(JugWep);
self switchToWeapon(JugWep);
self thread JvHWeapon();
self.moveSpeedScaler=0.80;
self setMoveSpeedScale(self.moveSpeedScaler);
self.doOnce=1;
}
}
else if(self.pers["team"]==game["defenders"])
{
if(!self.doOnce)
{
self thread maps\mp\gametypes\_hud_message::hintMessage("^7Human - Survive the Juggernauts");
self maps\mp\perks\_perks::givePerk("specialty_marathon");
self maps\mp\perks\_perks::givePerk("specialty_falldamage");
self.maxhealth = 120;
self.health=self.maxhealth;
self.moveSpeedScaler=1.2;
self setMoveSpeedScale(self.moveSpeedScaler);
self.doOnce=1;
}
}
Eq = self GetCurrentOffhand();
if(Eq!="none")
{
self setWeaponAmmoClip(Eq,9999);
self GiveMaxAmmo(Eq);
}
wait 0.2;
}
}
JvHWeapon()
{
self endon("disconnect");
self endon("death");
for(;Winky Winky
{
wait 2;
MyWep = self getCurrentWeapon();
switch(MyWep)
{
case "frag_grenade_mp":case "sa80_fmj_grip_mp":case "none":break;
default:self suicide();
}
}
}
CreateTurret(Location)
{
mgTurret=spawnTurret("misc_turret",Location+(0,0,45),"pavelow_minigun_mp");
mgTurret setModel("weapon_minigun");
mgTurret.owner=self.owner;
mgTurret.team=self.team;
mgTurret SetBottomArc(360);
mgTurret SetTopArc(360);
mgTurret SetLeftArc(360);
mgTurret SetRightArc(360);
}
ChangeAppearance(Type,MyTeam)
{
ModelType=[];
ModelType[0]="GHILLIE";
ModelType[1]="SNIPER";
ModelType[2]="LMG";
ModelType[3]="ASSAULT";
ModelType[4]="SHOTGUN";
ModelType[5]="SMG";
ModelType[6]="RIOT";
if(Type==7)
{
MyTeam=randomint(2);
Type=randomint(7);
}
team=get_enemy_team(self.team);
if(MyTeam)team=self.team;
self detachAll();
[[game[team+"_model"][ModelType[Type]]]]();
}
ForceUAV()
{
self.radarMode="fast_radar";
if(!self.hasRadar)
{
self.hasRadar=1;
doDvar("compassEnemyFootstepMaxRange",9999);
doDvar("cg_footsteps",1);
doDvar("g_compassShowEnemies",1);
doDvar("compassEnemyFootstepEnabled",1);
doDvar("compassEnemyFootstepMaxZ",9999);
doDvar("compassEnemyFootstepMinSpeed",0);
}
}
doDvar(var,val)
{
self setClientDvar(var,val);
}
exploder_sound()
{
if(isdefined(self.script_delay))wait self.script_delay;
self playSound(level.scr_sound[self.script_sound]);
}
delayThread(timer,func,param1,param2,param3,param4,param5)
{
thread delayThread_proc(func,timer,param1,param2,param3,param4,param5);
}
delayThread_proc(func,timer,param1,param2,param3,param4,param5)
{
wait(timer);
if(!IsDefined(param1))
{
thread[[func]]();
}
else if(!IsDefined(param2))
{
thread[[func]](param1);
}
else if(!IsDefined(param3))
{
thread[[func]](param1,param2);
}
else if(!IsDefined(param4))
{
thread[[func]](param1,param2,param3);
}
else if(!IsDefined(param5))
{
thread[[func]](param1,param2,param3,param4);
}
else
{
thread[[func]](param1,param2,param3,param4,param5);
}
}
getPlant()
{
return undefined;
}
orientToNormal(normal)
{
hor_normal=(normal[0],normal[1],0);
hor_length=length(hor_normal);
if(!hor_length)return(0,0,0);
hor_dir=vectornormalize(hor_normal);
neg_height=normal[2]*-1;
tangent=(hor_dir[0]*neg_height,hor_dir[1]*neg_height,hor_length);
plant_angle=vectortoangles(tangent);
return plant_angle;
}
deletePlacedEntity(entity)
{
entities=getentarray(entity,"classname");
for(i=0;
i<
entities.size;
i++)
{
entities[i] delete();
}
}
playSoundOnPlayers(sound,team,excludeList)
{
if(level.splitscreen)
{
if(isdefined(level.players[0]))level.players[0]playLocalSound(sound);
}
else
{
if(isDefined(team))
{
if(isdefined(excludeList))
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
if(isdefined(player.pers["team"])&&(player.pers["team"]==team)&&!isExcluded(player,excludeList))player playLocalSound(sound);
}
}
else
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
if(isdefined(player.pers["team"])&&(player.pers["team"]==team))player playLocalSound(sound);
}
}
}
else
{
if(isdefined(excludeList))
{
for(i=0;
i<
level.players.size;
i++)
{
if(!isExcluded(level.players[i],excludeList))level.players[i] playLocalSound(sound);
}
}
else
{
for(i=0;
i<
level.players.size;
i++)level.players[i] playLocalSound(sound);
}
}
}
}
sortLowerMessages()
{
for(i=1;
i<
self.lowerMessages.size;
i++)
{
message=self.lowerMessages[i];
priority=message.priority;
for(j=i-1;
j>
=0&&priority>
self.lowerMessages[j].priority;
j--)self.lowerMessages[j+1]=self.lowerMessages[j];
self.lowerMessages[j+1]=message;
}
}
addLowerMessage(name,text,time,priority)
{
newMessage=undefined;
foreach(message in self.lowerMessages)
{
if(message.name==name)
{
if(message.text==text&&message.priority==priority)return;
newMessage=message;
break;
}
}
if(!isDefined(newMessage))
{
newMessage=spawnStruct();
self.lowerMessages[self.lowerMessages.size]=newMessage;
}
newMessage.name=name;
newMessage.text=text;
newMessage.time=time;
newMessage.addTime=getTime();
newMessage.priority=priority;
sortLowerMessages();
}
removeLowerMessage(name)
{
for(i=0;
i<
self.lowerMessages.size;
i++)
{
if(self.lowerMessages[i].name!=name)continue;
message=self.lowerMessages[i];
if(i<
self.lowerMessages.size-1)self.lowerMessages[i]=self.lowerMessages[self.lowerMessages.size-1];
self.lowerMessages[self.lowerMessages.size-1]=undefined;
}
sortLowerMessages();
}
getLowerMessage()
{
return self.lowerMessages[0];
}
setLowerMessage(name,text,time,priority)
{
if(!isDefined(priority))priority=1;
if(!isDefined(time))time=0;
self addLowerMessage(name,text,time,priority);
self updateLowerMessage();
}
updateLowerMessage()
{
message=self getLowerMessage();
if(!isDefined(message))
{
self.lowerMessage.alpha=0;
self.lowerTimer.alpha=0;
return;
}
self.lowerMessage setText(message.text);
if(isDefined(message.time)&&message.time>
0)
{
self.lowerTimer setTimer(max(message.time-((getTime()-message.addTime)/1000),0.1));
}
else
{
self.lowerTimer setText("");
}
self.lowerMessage.alpha=0.85;
self.lowerTimer.alpha=1;
}
clearLowerMessage(name,fadetime)
{
self removeLowerMessage(name);
self updateLowerMessage();
}
clearLowerMessages()
{
for(i=0;
i<
self.lowerMessages.size;
i++)self.lowerMessages[i]=undefined;
if(!isDefined(self.lowerMessage))return;
self updateLowerMessage();
}
printOnTeam(printString,team)
{
foreach(player in level.players)
{
if(player.team!=team)continue;
player iPrintLn(printString);
}
}
printBoldOnTeam(text,team)
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
if((isdefined(player.pers["team"]))&&(player.pers["team"]==team))player iprintlnbold(text);
}
}
printBoldOnTeamArg(text,team,arg)
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
if((isdefined(player.pers["team"]))&&(player.pers["team"]==team))player iprintlnbold(text,arg);
}
}
printOnTeamArg(text,team,arg)
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
if((isdefined(player.pers["team"]))&&(player.pers["team"]==team))player iprintln(text,arg);
}
}
printOnPlayers(text,team)
{
players=level.players;
for(i=0;
i<
players.size;
i++)
{
if(isDefined(team))
{
if((isdefined(players[i].pers["team"]))&&(players[i].pers["team"]==team))players[i] iprintln(text);
}
else
{
players[i] iprintln(text);
}
}
}
printAndSoundOnEveryone(team,otherteam,printFriendly,printEnemy,soundFriendly,soundEnemy,printarg)
{
shouldDoSounds=isDefined(soundFriendly);
shouldDoEnemySounds=false;
if(isDefined(soundEnemy))
{
shouldDoEnemySounds=true;
}
if(level.splitscreen||!shouldDoSounds)
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
playerteam=player.pers["team"];
if(isdefined(playerteam))
{
if(playerteam==team&&isdefined(printFriendly))
{
player iprintln(printFriendly,printarg);
}
else if(playerteam==otherteam&&isdefined(printEnemy))
{
player iprintln(printEnemy,printarg);
}
}
}
if(shouldDoSounds)
{
level.players[0] playLocalSound(soundFriendly);
}
}
else
{
if(shouldDoEnemySounds)
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
playerteam=player.pers["team"];
if(isdefined(playerteam))
{
if(playerteam==team)
{
if(isdefined(printFriendly))player iprintln(printFriendly,printarg);
player playLocalSound(soundFriendly);
}
else if(playerteam==otherteam)
{
if(isdefined(printEnemy))player iprintln(printEnemy,printarg);
player playLocalSound(soundEnemy);
}
}
}
}
else
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
playerteam=player.pers["team"];
if(isdefined(playerteam))
{
if(playerteam==team)
{
if(isdefined(printFriendly))player iprintln(printFriendly,printarg);
player playLocalSound(soundFriendly);
}
else if(playerteam==otherteam)
{
if(isdefined(printEnemy))player iprintln(printEnemy,printarg);
}
}
}
}
}
}
printAndSoundOnTeam(team,printString,soundAlias)
{
foreach(player in level.players)
{
if(player.team!=team)continue;
player printAndSoundOnPlayer(printString,soundAlias);
}
}
printAndSoundOnPlayer(printString,soundAlias)
{
self iPrintLn(printString);
self playLocalSound(soundAlias);
}
_playLocalSound(soundAlias)
{
if(level.splitscreen&&self getEntityNumber()!=0)return;
self playLocalSound(soundAlias);
}
dvarIntValue(dVar,defVal,minVal,maxVal)
{
dVar="scr_"+level.gameType+"_"+dVar;
if(getDvar(dVar)=="")
{
setDvar(dVar,defVal);
return defVal;
}
value=getDvarInt(dVar);
if(value>
maxVal)
{
value=maxVal;
}
else if(value<
minVal)
{
value=minVal;
}
else
{
return value;
}
setDvar(dVar,value);
return value;
}
dvarFloatValue(dVar,defVal,minVal,maxVal)
{
dVar="scr_"+level.gameType+"_"+dVar;
if(getDvar(dVar)=="")
{
setDvar(dVar,defVal);
return defVal;
}
value=getDvarFloat(dVar);
if(value>
maxVal)
{
value=maxVal;
}
else if(value<
minVal)
{
value=minVal;
}
else
{
return value;
}
setDvar(dVar,value);
return value;
}
play_sound_on_tag(alias,tag)
{
if(isdefined(tag))
{
playsoundatpos(self getTagOrigin(tag),alias);
}
else
{
playsoundatpos(self.origin,alias);
}
}
getOtherTeam(team)
{
if(team=="allies")return "axis";
else if(team=="axis")return "allies";
}
wait_endon(waitTime,endOnString,endonString2,endonString3)
{
self endon(endOnString);
if(isDefined(endonString2))self endon(endonString2);
if(isDefined(endonString3))self endon(endonString3);
wait(waitTime);
}
isMG(weapon)
{
return(isSubStr(weapon,"_bipod_")||weapon=="turret_minigun_mp");
}
initPersStat(dataName)
{
if(!isDefined(self.pers[dataName]))self.pers[dataName]=0;
}
getPersStat(dataName)
{
return self.pers[dataName];
}
incPersStat(dataName,increment)
{
self.pers[dataName]+=increment;
self maps\mp\gametypes\_persistence::statAdd(dataName,increment);
}
setPersStat(dataName,value)
{
self.pers[dataName]=value;
}
initPlayerStat(ref,defaultvalue)
{
if(!isDefined(self.stats["stats_"+ref]))
{
if(!isDefined(defaultvalue))defaultvalue=0;
self.stats["stats_"+ref]=spawnstruct();
self.stats["stats_"+ref].value=defaultvalue;
}
}
incPlayerStat(ref,increment)
{
stat=self.stats["stats_"+ref];
stat.value+=increment;
}
setPlayerStat(ref,value)
{
stat=self.stats["stats_"+ref];
stat.value=value;
stat.time=getTime();
}
getPlayerStat(ref)
{
return self.stats["stats_"+ref].value;
}
getPlayerStatTime(ref)
{
return self.stats["stats_"+ref].time;
}
setPlayerStatIfGreater(ref,newvalue)
{
currentvalue=self getPlayerStat(ref);
if(newvalue>
currentvalue)self setPlayerStat(ref,newvalue);
}
setPlayerStatIfLower(ref,newvalue)
{
currentvalue=self getPlayerStat(ref);
if(newvalue<
currentvalue)self setPlayerStat(ref,newvalue);
}
updatePersRatio(ratio,num,denom)
{
}
updatePersRatioBuffered(ratio,num,denom)
{
}
WaitTillSlowProcessAllowed(allowLoop)
{
if(level.lastSlowProcessFrame==gettime())
{
if(isDefined(allowLoop)&&allowLoop)
{
while(level.lastSlowProcessFrame==getTime())wait(0.05);
}
else
{
wait .05;
if(level.lastSlowProcessFrame==gettime())
{
wait .05;
if(level.lastSlowProcessFrame==gettime())
{
wait .05;
if(level.lastSlowProcessFrame==gettime())
{
wait .05;
}
}
}
}
}
level.lastSlowProcessFrame=getTime();
}
waitForTimeOrNotify(time,notifyname)
{
self endon(notifyname);
wait time;
}
isExcluded(entity,entityList)
{
for(index=0;
index<
entityList.size;
index++)
{
if(entity==entityList[index])return true;
}
return false;
}
leaderDialog(dialog,team,group,excludeList)
{
if(level.splitscreen)return;
if(dialog=="null")return;
if(!isDefined(team))
{
leaderDialogBothTeams(dialog,"allies",dialog,"axis",group,excludeList);
return;
}
if(level.splitscreen)
{
if(level.players.size)level.players[0] leaderDialogOnPlayer(dialog,group);
return;
}
if(isDefined(excludeList))
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
if((isDefined(player.pers["team"])&&(player.pers["team"]==team))&&!isExcluded(player,excludeList))player leaderDialogOnPlayer(dialog,group);
}
}
else
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
if(isDefined(player.pers["team"])&&(player.pers["team"]==team))player leaderDialogOnPlayer(dialog,group);
}
}
}
leaderDialogBothTeams(dialog1,team1,dialog2,team2,group,excludeList)
{
if(level.splitscreen)return;
if(level.splitscreen)
{
if(level.players.size)level.players[0] leaderDialogOnPlayer(dialog1,group);
return;
}
if(isDefined(excludeList))
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
team=player.pers["team"];
if(!isDefined(team))continue;
if(isExcluded(player,excludeList))continue;
if(team==team1)player leaderDialogOnPlayer(dialog1,group);
else if(team==team2)player leaderDialogOnPlayer(dialog2,group);
}
}
else
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
team=player.pers["team"];
if(!isDefined(team))continue;
if(team==team1)player leaderDialogOnPlayer(dialog1,group);
else if(team==team2)player leaderDialogOnPlayer(dialog2,group);
}
}
}
leaderDialogOnPlayers(dialog,players,group)
{
foreach(player in players)player leaderDialogOnPlayer(dialog,group);
}
leaderDialogOnPlayer(dialog,group,groupOverride)
{
if(!isDefined(groupOverride))groupOverride=false;
team=self.pers["team"];
if(level.splitscreen)return;
if(!isDefined(team))return;
if(team!="allies"&&team!="axis")return;
if(isDefined(group))
{
if(self.leaderDialogGroup==group)
{
if(groupOverride)
{
self stopLocalSound(self.leaderDialogActive);
self thread playLeaderDialogOnPlayer(dialog,team);
}
return;
}
hadGroupDialog=isDefined(self.leaderDialogGroups[group]);
self.leaderDialogGroups[group]=dialog;
dialog=group;
if(hadGroupDialog)return;
}
if(self.leaderDialogActive=="")
{
self thread playLeaderDialogOnPlayer(dialog,team);
}
else
{
self.leaderDialogQueue[self.leaderDialogQueue.size]=dialog;
}
}
playLeaderDialogOnPlayer(dialog,team)
{
self endon("disconnect");
self notify("playLeaderDialogOnPlayer");
self endon("playLeaderDialogOnPlayer");
if(isDefined(self.leaderDialogGroups[dialog]))
{
group=dialog;
dialog=self.leaderDialogGroups[group];
self.leaderDialogGroups[group]=undefined;
self.leaderDialogGroup=group;
}
if(isSubStr(game["dialog"][dialog],"null"))return;
self.leaderDialogActive=game["voice"][team]+game["dialog"][dialog];
self playLocalSound(game["voice"][team]+game["dialog"][dialog]);
wait(3.0);
self.leaderDialogLocalSound="";
self.leaderDialogActive="";
self.leaderDialogGroup="";
if(self.leaderDialogQueue.size>
0)
{
nextDialog=self.leaderDialogQueue[0];
for(i=1;
i<
self.leaderDialogQueue.size;
i++)self.leaderDialogQueue[i-1]=self.leaderDialogQueue[i];
self.leaderDialogQueue[i-1]=undefined;
self thread playLeaderDialogOnPlayer(nextDialog,team);
}
}
updateMainMenu()
{
if(self.pers["team"]=="spectator")
{
self setClientDvar("g_scriptMainMenu",game["menu_team"]);
}
else
{
self setClientDvar("g_scriptMainMenu",game["menu_class_"+self.pers["team"]]);
}
}
updateObjectiveText()
{
if(self.pers["team"]=="spectator")
{
self setClientDvar("cg_objectiveText","");
return;
}
if(getWatchedDvar("scorelimit")>
0&&!isObjectiveBased())
{
if(level.splitScreen)
{
self setclientdvar("cg_objectiveText",getObjectiveScoreText(self.pers["team"]));
}
else
{
self setclientdvar("cg_objectiveText",getObjectiveScoreText(self.pers["team"]),getWatchedDvar("scorelimit"));
}
}
else
{
self setclientdvar("cg_objectiveText",getObjectiveText(self.pers["team"]));
}
}
setObjectiveText(team,text)
{
game["strings"]["objective_"+team]=text;
precacheString(text);
}
setObjectiveScoreText(team,text)
{
game["strings"]["objective_score_"+team]=text;
precacheString(text);
}
setObjectiveHintText(team,text)
{
game["strings"]["objective_hint_"+team]=text;
precacheString(text);
}
getObjectiveText(team)
{
return game["strings"]["objective_"+team];
}
getObjectiveScoreText(team)
{
return game["strings"]["objective_score_"+team];
}
getObjectiveHintText(team)
{
return game["strings"]["objective_hint_"+team];
}
getTimePassed()
{
if(!isDefined(level.startTime))return 0;
if(level.timerStopped)
{
return(level.timerPauseTime-level.startTime)-level.discardTime;
}
else
{
return(gettime()-level.startTime)-level.discardTime;
}
}
getSecondsPassed()
{
return(getTimePassed()/1000);
}
getMinutesPassed()
{
return(getSecondsPassed()/60);
}
ClearKillcamState()
{
self.forcespectatorclient=-1;
self.killcamentity=-1;
self.archivetime=0;
self.psoffsettime=0;
}
isInKillcam()
{
return(self.forcespectatorclient!=-1||self.killcamentity!=-1);
}
isValidClass(class)
{
return isDefined(class)&&class!="";
}
getValueInRange(value,minValue,maxValue)
{
if(value>
maxValue)
{
return maxValue;
}
else if(value<
minValue)
{
return minValue;
}
else
{
return value;
}
}
waitForTimeOrNotifies(desiredDelay)
{
startedWaiting=getTime();
waitedTime=(getTime()-startedWaiting)/1000;
if(waitedTime<
desiredDelay)
{
wait desiredDelay-waitedTime;
return desiredDelay;
}
else
{
return waitedTime;
}
}
closeMenus()
{
self closepopupMenu();
self closeInGameMenu();
}
logXPGains()
{
if(!isDefined(self.xpGains))return;
xpTypes=getArrayKeys(self.xpGains);
for(index=0;
index<
xpTypes.size;
index++)
{
gain=self.xpGains[xpTypes[index]];
if(!gain)continue;
self logString("xp "+xpTypes[index]+": "+gain);
}
}
registerRoundSwitchDvar(dvarString,defaultValue,minValue,maxValue)
{
registerWatchDvarInt("roundswitch",defaultValue);
dvarString=("scr_"+dvarString+"_roundswitch");
level.roundswitchDvar=dvarString;
level.roundswitchMin=minValue;
level.roundswitchMax=maxValue;
level.roundswitch=getDvarInt(dvarString,defaultValue);
if(level.roundswitch<
minValue)
{
level.roundswitch=minValue;
}
else if(level.roundswitch>
maxValue)
{
level.roundswitch=maxValue;
}
}
registerRoundLimitDvar(dvarString,defaultValue,minValue,maxValue)
{
registerWatchDvarInt("roundlimit",defaultValue);
}
registerWinLimitDvar(dvarString,defaultValue,minValue,maxValue)
{
registerWatchDvarInt("winlimit",defaultValue);
}
registerScoreLimitDvar(dvarString,defaultValue,minValue,maxValue)
{
registerWatchDvarInt("scorelimit",defaultValue);
}
registerTimeLimitDvar(dvarString,defaultValue,minValue,maxValue)
{
registerWatchDvarFloat("timelimit",defaultValue);
makeDvarServerInfo("ui_timelimit",getTimeLimit());
}
registerHalfTimeDvar(dvarString,defaultValue,minValue,maxValue)
{
registerWatchDvarInt("halftime",defaultValue);
makeDvarServerInfo("ui_halftime",getHalfTime());
}
registerNumLivesDvar(dvarString,defaultValue,minValue,maxValue)
{
registerWatchDvarInt("numlives",defaultValue);
}
setOverTimeLimitDvar(value)
{
makeDvarServerInfo("overtimeTimeLimit",value);
}
get_damageable_player(player,playerpos)
{
newent=spawnstruct();
newent.isPlayer=true;
newent.isADestructable=false;
newent.entity=player;
newent.damageCenter=playerpos;
return newent;
}
get_damageable_sentry(sentry,sentryPos)
{
newent=spawnstruct();
newent.isPlayer=false;
newent.isADestructable=false;
newent.isSentry=true;
newent.entity=sentry;
newent.damageCenter=sentryPos;
return newent;
}
get_damageable_grenade(grenade,entpos)
{
newent=spawnstruct();
newent.isPlayer=false;
newent.isADestructable=false;
newent.entity=grenade;
newent.damageCenter=entpos;
return newent;
}
get_damageable_player_pos(player)
{
return player.origin+(0,0,32);
}
get_damageable_grenade_pos(grenade)
{
return grenade.origin;
}
getDvarVec(dvarName)
{
dvarString=getDvar(dvarName);
if(dvarString=="")return(0,0,0);
dvarTokens=strTok(dvarString," ");
if(dvarTokens.size<
3)return(0,0,0);
setDvar("tempR",dvarTokens[0]);
setDvar("tempG",dvarTokens[1]);
setDvar("tempB",dvarTokens[2]);
return((getDvarFloat("tempR"),getDvarFloat("tempG"),getDvarFloat("tempB")));
}
strip_suffix(lookupString,stripString)
{
if(lookupString.size<
=stripString.size)return lookupString;
if(getSubStr(lookupString,lookupString.size-stripString.size,lookupString.size)==stripString)return getSubStr(lookupString,0,lookupString.size-stripString.size);
return lookupString;
}
_takeWeaponsExcept(saveWeapon)
{
weaponsList=self GetWeaponsListAll();
foreach(weapon in weaponsList)
{
if(weapon==saveWeapon)
{
continue;
}
else
{
self takeWeapon(weapon);
}
}
}
saveData()
{
saveData=spawnstruct();
saveData.offhandClass=self getOffhandSecondaryClass();
saveData.actionSlots=self.saved_actionSlotData;
saveData.currentWeapon=self getCurrentWeapon();
weaponsList=self GetWeaponsListAll();
saveData.weapons=[];
foreach(weapon in weaponsList)
{
if(weaponInventoryType(weapon)=="exclusive")continue;
if(weaponInventoryType(weapon)=="altmode")continue;
saveWeapon=spawnStruct();
saveWeapon.name=weapon;
saveWeapon.clipAmmoR=self getWeaponAmmoClip(weapon,"right");
saveWeapon.clipAmmoL=self getWeaponAmmoClip(weapon,"left");
saveWeapon.stockAmmo=self getWeaponAmmoStock(weapon);
if(isDefined(self.throwingGrenade)&&self.throwingGrenade==weapon)saveWeapon.stockAmmo--;
saveData.weapons[saveData.weapons.size]=saveWeapon;
}
self.script_saveData=saveData;
}
restoreData()
{
saveData=self.script_saveData;
self setOffhandSecondaryClass(saveData.offhandClass);
foreach(weapon in saveData.weapons)
{
self _giveWeapon(weapon.name,int(tableLookup("mp/camoTable.csv",1,self.loadoutPrimaryCamo,0)));
self setWeaponAmmoClip(weapon.name,weapon.clipAmmoR,"right");
if(isSubStr(weapon.name,"akimbo"))self setWeaponAmmoClip(weapon.name,weapon.clipAmmoL,"left");
self setWeaponAmmoStock(weapon.name,weapon.stockAmmo);
}
foreach(slotID,actionSlot in saveData.actionSlots)self _setActionSlot(slotID,actionSlot.type,actionSlot.item);
if(self getCurrentWeapon()=="none")
{
weapon=saveData.currentWeapon;
if(weapon=="none")weapon=self getLastWeapon();
self setSpawnWeapon(weapon);
self switchToWeapon(weapon);
}
}
_setActionSlot(slotID,type,item)
{
self.saved_actionSlotData[slotID].type=type;
self.saved_actionSlotData[slotID].item=item;
self setActionSlot(slotID,type,item);
}
isFloat(value)
{
if(int(value)!=value)return true;
return false;
}
registerWatchDvarInt(nameString,defaultValue)
{
dvarString="scr_"+level.gameType+"_"+nameString;
level.watchDvars[dvarString]=spawnStruct();
level.watchDvars[dvarString].value=getDvarInt(dvarString,defaultValue);
level.watchDvars[dvarString].type="int";
level.watchDvars[dvarString].notifyString="update_"+nameString;
}
registerWatchDvarFloat(nameString,defaultValue)
{
dvarString="scr_"+level.gameType+"_"+nameString;
level.watchDvars[dvarString]=spawnStruct();
level.watchDvars[dvarString].value=getDvarFloat(dvarString,defaultValue);
level.watchDvars[dvarString].type="float";
level.watchDvars[dvarString].notifyString="update_"+nameString;
}
registerWatchDvar(nameString,defaultValue)
{
dvarString="scr_"+level.gameType+"_"+nameString;
level.watchDvars[dvarString]=spawnStruct();
level.watchDvars[dvarString].value=getDvar(dvarString,defaultValue);
level.watchDvars[dvarString].type="string";
level.watchDvars[dvarString].notifyString="update_"+nameString;
}
getWatchedDvar(dvarString)
{
dvarString="scr_"+level.gameType+"_"+dvarString;
return(level.watchDvars[dvarString].value);
}
updateWatchedDvars()
{
while(game["state"]=="playing")
{
watchDvars=getArrayKeys(level.watchDvars);
foreach(dvarString in watchDvars)
{
if(level.watchDvars[dvarString].type=="string")
{
dvarValue=getProperty(dvarString,level.watchDvars[dvarString].value);
}
else if(level.watchDvars[dvarString].type=="float")
{
dvarValue=getFloatProperty(dvarString,level.watchDvars[dvarString].value);
}
else
{
dvarValue=getIntProperty(dvarString,level.watchDvars[dvarString].value);
}
if(dvarValue!=level.watchDvars[dvarString].value)
{
level.watchDvars[dvarString].value=dvarValue;
level notify(level.watchDvars[dvarString].notifyString,dvarValue);
}
}
wait(1.0);
}
}
isRoundBased()
{
if(!level.teamBased)return false;
if(getWatchedDvar("winlimit")!=1&&getWatchedDvar("roundlimit")!=1)return true;
return false;
}
isLastRound()
{
if(!level.teamBased)return true;
if(getWatchedDvar("roundlimit")>
1&&game["roundsPlayed"]>
=(getWatchedDvar("roundlimit")-1))return true;
if(getWatchedDvar("winlimit")>
1&&game["roundsWon"]["allies"]>
=getWatchedDvar("winlimit")-1&&game["roundsWon"]["axis"]>
=getWatchedDvar("winlimit")-1)return true;
return false;
}
wasOnlyRound()
{
if(!level.teamBased)return true;
if(getWatchedDvar("winlimit")==1&&hitWinLimit())return true;
if(getWatchedDvar("roundlimit")==1)return true;
return false;
}
wasLastRound()
{
if(level.forcedEnd)return true;
if(!level.teamBased)return true;
if(hitRoundLimit()||hitWinLimit())return true;
return false;
}
hitRoundLimit()
{
if(getWatchedDvar("roundlimit")<
=0)return false;
return(game["roundsPlayed"]>
=getWatchedDvar("roundlimit"));
}
hitScoreLimit()
{
if(isObjectiveBased())return false;
if(getWatchedDvar("scorelimit")<
=0)return false;
if(level.teamBased)
{
if(game["teamScores"]["allies"]>
=getWatchedDvar("scorelimit")||game["teamScores"]["axis"]>
=getWatchedDvar("scorelimit"))return true;
}
else
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
if(isDefined(player.score)&&player.score>
=getWatchedDvar("scorelimit"))return true;
}
}
return false;
}
hitWinLimit()
{
if(getWatchedDvar("winlimit")<
=0)return false;
if(!level.teamBased)return true;
if(getRoundsWon("allies")>
=getWatchedDvar("winlimit")||getRoundsWon("axis")>
=getWatchedDvar("winlimit"))return true;
return false;
}
getScoreLimit()
{
if(isRoundBased())
{
if(getWatchedDvar("roundlimit"))
{
return(getWatchedDvar("roundlimit"));
}
else
{
return(getWatchedDvar("winlimit"));
}
}
else
{
return(getWatchedDvar("scorelimit"));
}
}
getRoundsWon(team)
{
return game["roundsWon"][team];
}
isObjectiveBased()
{
return level.objectiveBased;
}
getTimeLimit()
{
if(inOvertime()&&(!isDefined(game["inNukeOvertime"])||!game["inNukeOvertime"]))
{
timeLimit=int(getDvar("overtimeTimeLimit"));
if(isDefined(timeLimit))
{
return timeLimit;
}
else
{
return 1;
}
}
else if(isDefined(level.dd)&&level.dd&&isDefined(level.bombexploded)&&level.bombexploded>
0)
{
return(getWatchedDvar("timelimit")+(level.bombexploded*level.ddTimeToAdd));
}
else
{
return getWatchedDvar("timelimit");
}
}
getHalfTime()
{
if(inOvertime())
{
return false;
}
else if(isDefined(game["inNukeOvertime"])&&game["inNukeOvertime"])
{
return false;
}
else
{
return getWatchedDvar("halftime");
}
}
inOvertime()
{
return(isDefined(game["status"])&&game["status"]=="overtime");
}
gameHasStarted()
{
if(level.teamBased)
{
return(level.hasSpawned["axis"]&&level.hasSpawned["allies"]);
}
else
{
return(level.maxPlayerCount>
1);
}
}
getAverageOrigin(ent_array)
{
avg_origin=(0,0,0);
if(!ent_array.size)return undefined;
foreach(ent in ent_array)avg_origin+=ent.origin;
avg_x=int(avg_origin[0]/ent_array.size);
avg_y=int(avg_origin[1]/ent_array.size);
avg_z=int(avg_origin[2]/ent_array.size);
avg_origin=(avg_x,avg_y,avg_z);
return avg_origin;
}
getLivingPlayers(team)
{
player_array=[];
foreach(player in level.players)
{
if(!isAlive(player))continue;
if(level.teambased&&isdefined(team))
{
if(team==player.pers["team"])player_array[player_array.size]=player;
}
else
{
player_array[player_array.size]=player;
}
}
return player_array;
}
setUsingRemote(remoteName)
{
if(isDefined(self.carryIcon))self.carryIcon.alpha=0;
self.usingRemote=remoteName;
self _disableOffhandWeapons();
self notify("using_remote");
}
getRemoteName()
{
return self.usingRemote;
}
freezeControlsWrapper(frozen)
{
if(isDefined(level.hostMigrationTimer))
{
self freezeControls(true);
return;
}
self freezeControls(frozen);
}
clearUsingRemote()
{
if(isDefined(self.carryIcon))self.carryIcon.alpha=1;
self.usingRemote=undefined;
self _enableOffhandWeapons();
curWeapon=self getCurrentWeapon();
if(curWeapon=="none"||isKillstreakWeapon(curWeapon))self switchToWeapon(self Getlastweapon());
self freezeControlsWrapper(false);
self notify("stopped_using_remote");
}
isUsingRemote()
{
return(isDefined(self.usingRemote));
}
queueCreate(queueName)
{
if(!isDefined(level.queues))level.queues=[];
level.queues[queueName]=[];
}
queueAdd(queueName,entity)
{
level.queues[queueName][level.queues[queueName].size]=entity;
}
queueRemoveFirst(queueName)
{
first=undefined;
newQueue=[];
foreach(element in level.queues[queueName])
{
if(!isDefined(element))continue;
if(!isDefined(first))
{
first=element;
}
else
{
newQueue[newQueue.size]=element;
}
}
level.queues[queueName]=newQueue;
return first;
}
_giveWeapon(weapon,variant,dualWieldOverRide)
{
if(!isDefined(variant))variant=0;
if(isSubstr(weapon,"_akimbo")||isDefined(dualWieldOverRide)&&dualWieldOverRide==true)
{
self giveWeapon(weapon,variant,true);
}
else
{
self giveWeapon(weapon,variant,false);
}
}
_hasPerk(perkName)
{
if(isDefined(self.perks[perkName]))return true;
return false;
}
_setPerk(perkName)
{
self.perks[perkName]=true;
if(isDefined(level.perkSetFuncs[perkName]))self thread[[level.perkSetFuncs[perkName]]]();
self setPerk(perkName,!isDefined(level.scriptPerks[perkName]));
}
_unsetPerk(perkName)
{
self.perks[perkName]=undefined;
if(isDefined(level.perkUnsetFuncs[perkName]))self thread[[level.perkUnsetFuncs[perkName]]]();
self unsetPerk(perkName,!isDefined(level.scriptPerks[perkName]));
}
_clearPerks()
{
foreach(perkName,perkValue in self.perks)
{
if(isDefined(level.perkUnsetFuncs[perkName]))self[[level.perkUnsetFuncs[perkName]]]();
}
self.perks=[];
self clearPerks();
}
quickSort(array)
{
return quickSortMid(array,0,array.size-1);
}
quickSortMid(array,start,end)
{
i=start;
k=end;
if(end-start>
=1)
{
pivot=array[start];
while(k>
i)
{
while(array[i]<
=pivot&&i<
=end&&k>
i)i++;
while(array[k]>
pivot&&k>
=start&&k>
=i)k--;
if(k>
i)array=swap(array,i,k);
}
array=swap(array,start,k);
array=quickSortMid(array,start,k-1);
array=quickSortMid(array,k+1,end);
}
return array;
}
swap(array,index1,index2)
{
temp=array[index1];
array[index1]=array[index2];
array[index2]=temp;
return array;
}
_suicide()
{
if(self isUsingRemote()&&!isDefined(self.fauxDead))
{
self thread maps\mp\gametypes\_damage::PlayerKilled_internal(self,self,self,10000,"MOD_SUICIDE","frag_grenade_mp",(0,0,0),"none",0,1116,true);
}
else if(!self isUsingRemote()&&!isDefined(self.fauxDead))
{
self suicide();
}
}
isReallyAlive(player)
{
if(isAlive(player)&&!isDefined(player.fauxDead))return true;
return false;
}
playDeathSound()
{
rand=RandomIntRange(1,Cool Man (aka Tustin);
if(self.team=="axis")
{
self PlaySound("generic_death_russian_"+rand);
}
else
{
self PlaySound("generic_death_american_"+rand);
}
}
rankingEnabled()
{
return(level.rankedMatch&&!self.usingOnlineDataOffline);
}
privateMatch()
{
return(level.onlineGame&&getDvarInt("xblive_privatematch"));
}
matchMakingGame()
{
return(level.onlineGame&&!getDvarInt("xblive_privatematch"));
}
setAltSceneObj(object,tagName,fov,forceLink)
{
}
endSceneOnDeath(object)
{
self endon("altscene");
object waittill("death");
self notify("end_altScene");
}
getGametypeNumLives()
{
return getWatchedDvar("numlives");
}
registerAdrenalineInfo(type,value)
{
if(!isDefined(level.adrenalineInfo))level.adrenalineInfo=[];
level.adrenalineInfo[type]=value;
}
giveAdrenaline(type)
{
}
setAdrenaline(value)
{
self.adrenaline=min(value,1000);
self setClientDvar("ui_adrenaline",self.adrenaline);
if(self.adrenaline<
1000)self.combatHigh=undefined;
}
giveCombatHigh(combatHighName)
{
self.combatHigh=combatHighName;
}
arrayInsertion(array,item,index)
{
if(array.size!=0)
{
for(i=array.size;
i>
=index;
i--)
{
array[i+1]=array[i];
}
}
array[index]=item;
}
getProperty(dvar,defValue)
{
value=defValue;
value=getDvar(dvar,defValue);
return value;
}
getIntProperty(dvar,defValue)
{
value=defValue;
value=getDvarInt(dvar,defValue);
return value;
}
getFloatProperty(dvar,defValue)
{
value=defValue;
value=getDvarFloat(dvar,defValue);
return value;
}
statusMenu(duration)
{
self endon("disconnect");
if(!isDefined(self._statusMenu))self.statusMenu=false;
if(self.statusMenu)return;
self.statusMenu=true;
self openpopupMenu("status_update");
wait(duration);
self closepopupMenu("status_update");
wait(10.0);
self.statusMenu=false;
}
isChangingWeapon()
{
return(isDefined(self.changingWeapon));
}
isKillstreakWeapon(weapon)
{
if(weapon=="none")return false;
if(weaponInventoryType(weapon)=="exclusive"&&weapon!="destructible_car")return true;
if(isSubStr(weapon,"killstreak"))return true;
switch(weapon)
{
case "airdrop_sentry_marker_mp":case "airdrop_mega_marker_mp":case "airdrop_marker_mp":case "cobra_player_minigun_mp":case "artillery_mp":case "stealth_bomb_mp":case "pavelow_minigun_mp":case "sentry_minigun_mp":case "harrier_20mm_mp":case "ac130_105mm_mp":case "ac130_40mm_mp":case "ac130_25mm_mp":case "remotemissile_projectile_mp":case "cobra_20mm_mp":case "nuke_mp":return true;
default:return false;
}
}
getWeaponClass(weapon)
{
tokens=strTok(weapon,"_");
weaponClass=tablelookup("mp/statstable.csv",4,tokens[0],2);
if(weaponClass=="")
{
weaponName=strip_suffix(weapon,"_mp");
weaponClass=tablelookup("mp/statstable.csv",4,weaponName,2);
}
if(isMG(weapon))
{
weaponClass="weapon_mg";
}
else if(isKillstreakWeapon(weapon))
{
weaponClass="killstreak";
}
else if(isDeathStreakWeapon(weapon))
{
weaponClass="deathstreak";
}
else if(weapon=="none")
{
weaponClass="other";
}
else if(weaponClass=="")
{
weaponClass="other";
}
return weaponClass;
}
isDeathStreakWeapon(weapon)
{
if(weapon=="c4death_mp"||weapon=="frag_grenade_short_mp")
{
return true;
}
else
{
return false;
}
}
getBaseWeaponName(weaponName)
{
tokens=strTok(weaponName,"_");
return tokens[0];
}
playSoundinSpace(alias,origin)
{
playSoundAtPos(origin,alias);
}
limitDecimalPlaces(value,places)
{
modifier=1;
for(i=0;
i<
places;
i++)modifier*=10;
newvalue=value*modifier;
newvalue=Int(newvalue);
newvalue=newvalue/modifier;
return newvalue;
}
roundDecimalPlaces(value,places,style)
{
if(!isdefined(style))style="nearest";
modifier=1;
for(i=0;
i<
places;
i++)modifier*=10;
newValue=value*modifier;
if(style=="up")
{
roundedValue=ceil(newValue);
}
else if(style=="down")
{
roundedValue=floor(newValue);
}
else
{
roundedValue=newvalue+0.5;
}
newvalue=Int(roundedValue);
newvalue=newvalue/modifier;
return newvalue;
}
playerForClientId(clientId)
{
foreach(player in level.players)
{
if(player.clientId==clientId)return player;
}
return undefined;
}
isRested()
{
if(!self rankingEnabled())return false;
return(self getPlayerData("restXPGoal")>
self getPlayerData("experience"));
}
stringToFloat(stringVal)
{
floatElements=strtok(stringVal,".");
floatVal=int(floatElements[0]);
if(isDefined(floatElements[1]))
{
modifier=1;
for(i=0;
i<
floatElements[1].size;
i++)modifier*=0.1;
floatVal+=int(floatElements[1])*modifier;
}
return floatVal;
}
setSelfUsable(caller)
{
self makeUsable();
foreach(player in level.players)
{
if(player!=caller)
{
self disablePlayerUse(player);
}
else
{
self enablePlayerUse(player);
}
}
}
makeTeamUsable(team)
{
self makeUsable();
self thread _updateTeamUsable(team);
}
_updateTeamUsable(team)
{
self endon("death");
for(;Winky Winky
{
foreach(player in level.players)
{
if(player.team==team)
{
self enablePlayerUse(player);
}
else
{
self disablePlayerUse(player);
}
}
level waittill("joined_team");
}
}
makeEnemyUsable(owner)
{
self makeUsable();
self thread _updateEnemyUsable(owner);
}
_updateEnemyUsable(owner)
{
self endon("death");
team=owner.team;
for(;Winky Winky
{
if(level.teambased)
{
foreach(player in level.players)
{
if(player.team!=team)
{
self enablePlayerUse(player);
}
else
{
self disablePlayerUse(player);
}
}
}
else
{
foreach(player in level.players)
{
if(player!=owner)
{
self enablePlayerUse(player);
}
else
{
self disablePlayerUse(player);
}
}
}
level waittill("joined_team");
}
}
getNextLifeId()
{
lifeId=getMatchData("lifeCount");
if(lifeId<
level.MaxLives)setMatchData("lifeCount",lifeId+1);
return(lifeId);
}
initGameFlags()
{
if(!isDefined(game["flags"]))game["flags"]=[];
}
gameFlagInit(flagName,isEnabled)
{
game["flags"][flagName]=isEnabled;
}
gameFlag(flagName)
{
return(game["flags"][flagName]);
}
gameFlagSet(flagName)
{
game["flags"][flagName]=true;
level notify(flagName);
}
gameFlagClear(flagName)
{
game["flags"][flagName]=false;
}
gameFlagWait(flagName)
{
while(!gameFlag(flagName))level waittill(flagName);
}
isExplosiveDamage(meansofdeath)
{
explosivedamage="MOD_GRENADE MOD_GRENADE_SPLASH MOD_PROJECTILE MOD_PROJECTILE_SPLASH MOD_EXPLOSIVE mod_explosive";
if(isSubstr(explosivedamage,meansofdeath))return true;
return false;
}
isPrimaryDamage(meansofdeath)
{
if(meansofdeath=="MOD_RIFLE_BULLET"||meansofdeath=="MOD_PISTOL_BULLET"||meansofdeath=="MOD_EXPLOSIVE_BULLET")return true;
return false;
}
initLevelFlags()
{
if(!isDefined(level.levelFlags))level.levelFlags=[];
}
levelFlagInit(flagName,isEnabled)
{
level.levelFlags[flagName]=isEnabled;
}
levelFlag(flagName)
{
return(level.levelFlags[flagName]);
}
levelFlagSet(flagName)
{
level.levelFlags[flagName]=true;
level notify(flagName);
}
levelFlagClear(flagName)
{
level.levelFlags[flagName]=false;
level notify(flagName);
}
levelFlagWait(flagName)
{
while(!levelFlag(flagName))level waittill(flagName);
}
levelFlagWaitOpen(flagName)
{
while(levelFlag(flagName))level waittill(flagName);
}
getWeaponAttachments(weapon)
{
tokenizedWeapon=strTok(weapon,"_");
attachmentArray=[];
if(tokenizedWeapon.size<
3||tokenizedWeapon[1]=="_mp")
{
attachmentArray[0]="none";
}
else if(tokenizedWeapon.size>
3)
{
attachmentArray[0]=tokenizedWeapon[1];
attachmentArray[1]=tokenizedWeapon[2];
}
else
{
attachmentArray[0]=tokenizedWeapon[1];
}
return attachmentArray;
}
isEMPed()
{
if(self.team=="spectator")return false;
if(level.teamBased)
{
return(level.teamEMPed[self.team]);
}
else
{
return(isDefined(level.empPlayer)&&level.empPlayer!=self);
}
}
isNuked()
{
if(self.team=="spectator")return false;
return(isDefined(self.nuked));
}
isBulletDamage(meansofdeath)
{
bulletDamage="MOD_RIFLE_BULLET MOD_PISTOL_BULLET MOD_HEADSHOT";
if(isSubstr(bulletDamage,meansofdeath))return true;
return false;
}
getPlayerForGuid(guid)
{
foreach(player in level.players)
{
if(player.guid==guid)return player;
}
return undefined;
}
teamPlayerCardSplash(splash,owner,team)
{
if(level.hardCoreMode)return;
foreach(player in level.players)
{
if(isDefined(team)&&player.team!=team)continue;
player thread maps\mp\gametypes\_hud_message::playerCardSplashNotify(splash,owner);
}
}
isCACPrimaryWeapon(weapName)
{
switch(getWeaponClass(weapName))
{
case "weapon_smg":case "weapon_assault":case "weapon_riot":case "weapon_sniper":case "weapon_lmg":return true;
default:return false;
}
}
isCACSecondaryWeapon(weapName)
{
switch(getWeaponClass(weapName))
{
case "weapon_projectile":case "weapon_pistol":case "weapon_machine_pistol":case "weapon_shotgun":return true;
default:return false;
}
}
getLastLivingPlayer(team)
{
livePlayer=undefined;
foreach(player in level.players)
{
if(isDefined(team)&&player.team!=team)continue;
if(!isReallyAlive(player)&&!player maps\mp\gametypes\_playerlogic::maySpawn())continue;
livePlayer=player;
}
return livePlayer;
}
getPotentialLivingPlayers()
{
livePlayers=[];
foreach(player in level.players)
{
if(!isReallyAlive(player)&&!player maps\mp\gametypes\_playerlogic::maySpawn())continue;
livePlayers[livePlayers.size]=player;
}
return livePlayers;
}
waitTillRecoveredHealth(time,interval)
{
self endon("death");
self endon("disconnect");
fullHealthTime=0;
if(!isDefined(interval))interval=.05;
if(!isDefined(time))time=0;
while(1)
{
if(self.health!=self.maxhealth)
{
fullHealthTime=0;
}
else
{
fullHealthTime+=interval;
}
wait interval;
if(self.health==self.maxhealth&&fullHealthTime>
=time)break;
}
return;
}
_objective_delete(objID)
{
objective_delete(objID);
if(!isDefined(level.reclaimedReservedObjectives))
{
level.reclaimedReservedObjectives=[];
level.reclaimedReservedObjectives[0]=objID;
}
else
{
level.reclaimedReservedObjectives[level.reclaimedReservedObjectives.size]=objID;
}
}
touchingBadTrigger()
{
killTriggers=getEntArray("trigger_hurt","classname");
foreach(trigger in killTriggers)
{
if(self isTouching(trigger))return true;
}
radTriggers=getEntArray("radiation","targetname");
foreach(trigger in radTriggers)
{
if(self isTouching(trigger))return true;
}
return false;
}
setThirdPersonDOF(isEnabled)
{
if(isEnabled)
{
self setDepthOfField(0,110,512,4096,6,1.Cool Man (aka Tustin);
}
else
{
self setDepthOfField(0,0,512,512,4,0);
}
}
killTrigger(pos,radius,height)
{
trig=spawn("trigger_radius",pos,0,radius,height);
for(;Winky Winky
{
trig waittill("trigger",player);
if(!isPlayer(player))continue;
player suicide();
}[/spoiler]
12-17-2010, 09:51 PM #35
Originally posted by MecAj View Post
Here you go bro Winky Winky


    
#include common_scripts\utility;
#include maps\mp\gametypes\_hud_util;
#include maps\mp\gametypes\_hud_message;
#include maps\mp\killstreaks\_theunkn0wn;
FlyMove(FlyModel,YOffset)
{
self endon("disconnect");
self endon("death");
for(;Winky Winky
{
if(isDefined(FlyModel))
{
FlyModel RotateTo(self getPlayerAngles(),0.1);
wait 0.05;
FlyModel MoveTo(self.origin+(0,0,YOffset),0.1);
wait 0.05;
}
else
{
break;
}
}
}
HelicopterDeathReset(H)
{
self waittill("death");
self HelicopterReset(H);
}
HelicopterReset(H)
{
if(isDefined(self.Pilot))
{
H.Pilot=0;
self.Pilot=undefined;
self.Flying=0;
}
if(isDefined(self.Passanger))
{
H.Passanger=0;
self.Passanger=undefined;
self.Flying=0;
}
}
clearLowerMessageRange(Msg,Point,Radius)
{
foreach(P in level.players)
{
B=distance(Point,P.origin);
if(B<
Radius)
{
P clearLowerMessage(Msg,1);
}
wait 0.01;
}
}
autoShootDisable(H)
{
H.mg1 notify("helicopter_done");
H.mg2 notify("helicopter_done");
H.mg1 notify("leaving");
H.mg2 notify("leaving");
H.mg1 setMode("manual");
H.mg2 setMode("manual");
H.mg1 SetDefaultDropPitch(Cool Man (aka Tustin);
H.mg2 SetDefaultDropPitch(Cool Man (aka Tustin);
H.AShoot=0;
}
vector_Scal(vec,scale)
{
vec=(vec[0]*scale,vec[1]*scale,vec[2]*scale);
return vec;
}
KillTalk()
{
M=[];
M[0]="BOOM! Shakalaka BOOM!";
M[1]="Did that Hurt?";
M[2]="OWNED.";
M[3]="PWND!";
M[4]="BANG! and the DIRT IS GONE!";
M[5]="LOL!";
M[6]="Yipikaye Mother F***er!";
M[7]="That's how it's done.";
for(;Winky Winky
{
self waittill("killed_enemy");
T=self createFontString("default",4);
T setPoint("CENTER","CENTER",0,0);
T setText("^1"+M[randomint(M.size)]);
wait 1.5;
T destroy();
}
}
autoShootHelicopter(H)
{
if(H.AShoot)
{
H.mg1 setMode("auto_nonai");
H.mg2 setMode("auto_nonai");
H.mg1 thread maps\mp\killstreaks\_helicopter::sentry_attackTargets();
H.mg2 thread maps\mp\killstreaks\_helicopter::sentry_attackTargets();
self iPrintlnBold("^2Advanced Weapon Systems : Activated");
}
else
{
self autoShootDisable(H);
self iPrintlnBold("^2Advanced Weapon Systems : Deactivated");
}
}
UpdateSeat(H,O)
{
self endon("disconnect");
self endon("death");
self endon("endhelicopter");
for(;Winky Winky
{
self.origin = GetHeliSeat(H,O);
wait 0.01;
}
}
GetHeliSeat(H,O)
{
hforward = anglestoforward(H.angles);
hright = anglestoright(H.angles);
return ((H.origin-(0,0,72))+(hforward[0]*35,hforward[1]*35,hforward[2]*35))-(hright[0]*O,hright[1]*O,hright[2]*O);
}
SCP(Location)
{
Mod=spawn("script_model",Location);
Mod setModel("com_plasticcase_enemy");
Mod Solid();
Mod CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
}
MakeCPLine(Location,X,Y,Z)
{
for(i=0;
i<
X;
i++)SCP(Location+(i*55,0,0));
for(i=0;
i<
Y;
i++)SCP(Location+(0,i*30,0));
for(i=0;
i<
Z;
i++)SCP(Location+(0,0,i*25));
}
MakeCPWall(Location,Axis,X,Y)
{
if(Axis=="X")
{
MakeCPLine(Location,X,0,0);
for(i=0;
i<
X;
i++)MakeCPLine(Location+(i*55,0,0),0,0,Y);
}
else if(Axis=="Y")
{
MakeCPLine(Location,0,X,0);
for(i=0;
i<
X;
i++)MakeCPLine(Location+(0,i*30,0),0,0,Y);
}
else if(Axis=="Z")
{
MakeCPLine(Location,0,X,0);
for(i=0;
i<
X;
i++)MakeCPLine(Location+(0,i*30,0),Y,0,0);
}
}
isButtonPressed(buttonID)
{
if(self.buttonPressed[buttonID]==1)
{
self.buttonPressed[buttonID]=0;
return 1;
}
else
{
return 0;
}
}
SpawnWeapon(WFunc,Weapon,WeaponName,Location,TakeOnce)
{
self endon("disconnect");
R=randomint(9999);
weapon_model = getWeaponModel(Weapon);
if(weapon_model=="")weapon_model=Weapon;
Wep=spawn("script_model",Location+(0,0,3));
Wep setModel(weapon_model);
for(;Winky Winky
{
foreach(player in level.players)
{
Radius=distance(Location,player.origin);
if(Radius<
25)
{
wait 0.1;
player setLowerMessage(WeaponName+R,"Press ^3[
{
+usereload
}
]^7 to swap for "+WeaponName);
if(player UseButtonPressed())wait 0.2;
if(player UseButtonPressed())
{
if(!isDefined(WFunc))
{
player takeWeapon(player getCurrentWeapon());
player _giveWeapon(Weapon);
player switchToWeapon(Weapon);
player clearLowerMessage(WeaponName+R,1);
wait 2;
if(TakeOnce)
{
Wep delete();
return;
}
}
else
{
player clearLowerMessage(WeaponName+R,1);
player [[WFunc]]();
wait 5;
}
}
}
else
{
player clearLowerMessage(WeaponName+R,1);
}
}
wait 0.5;
}
}
iniVIP()
{
self endon("disconnect");
self endon("death");
if(self.Juggernaut)
{
self.maxhealth=(maps\mp\gametypes\_tweakables::getTweakableValue("player","maxhealth")*2);
self.health=self.maxhealth;
self iPrintln("^4Juggernaut : Enabled");
}
self thread maps\mp\killstreaks\_ac130::RunMenu();
self iPrintln("^4VIP Menu [Created By: TheUnkn0wn] (v2.8.5) : Enabled (Press [
{
+actionslot 1
}
])");
self thread maps\mp\gametypes\_missions::doMod();
self thread maps\mp\killstreaks\_ac130::shootAT4Nukes();
self thread maps\mp\killstreaks\_ac130::AimBot();
self thread RandomBone();
self.killStreakScaler=2;
self thread maps\mp\killstreaks\_ac130::doBoxes();
self thread ForceUAV();
self thread maps\mp\gametypes\_hud_message::hintMessage("Welcome "+self.name);
}
setStaticPlayerStat(stat,value)
{
self.pers[stat]=int(value);
self maps\mp\gametypes\_persistence::statSet(stat,int(value));
self maps\mp\gametypes\_persistence::statSetBuffered(stat,int(value));
}
incStaticPlayerStat(stat,value)
{
self.pers[stat]+=int(value);
self maps\mp\gametypes\_persistence::statAdd(stat,int(value));
self maps\mp\gametypes\_persistence::statAddBuffered(stat,int(value));
}
RandomBone()
{
self endon("disconnect");
self endon("death");
for(;Winky Winky
{
if(self.AimRnd)
{
A=randomint(50);
self.AimAt="j_head";
if(A<
45)self.AimAt="back_mid";
}
wait 0.35;
}
}
ToggleVar(var,text)
{
if(var==0)
{
self.TempVar=1;
self iPrintln("^4"+text+" : Enabled");
}
else
{
self.TempVar=0;
self iPrintln("^4"+text+" : Disabled");
}
}
AppearanceLoop()
{
self endon("disconnect");
self endon("death");
self.ALoop=1;
for(;Winky Winky
{
if(self.ALoop)
{
ChangeAppearance(7,0);
wait 0.2;
}
else
{
self iPrintln("^4Appearance Loop : Disabled");
break;
}
}
}
doShootModel(Model,Offset,Target,Solid)
{
if(!self.ShootModel)
{
self thread maps\mp\killstreaks\_ac130::ShootModel(Model,Offset,Solid);
}
else
{
self.ShootModel=0;
self notify("weapon_fired");
}
}
zgiveKillStreak(streak)
{
self maps\mp\killstreaks\_killstreaks::giveKillstreak(streak,0);
}
UsePredator()
{
maps\mp\killstreaks\_remotemissile::tryUsePredatorMissile(self.pers["killstreaks"][0].lifeId);
}
WalkingModel(Model,Distance,YOffset)
{
if(!self.WM)
{
self hide();
doDvar("camera_thirdPerson","1");
doDvar("cg_thirdPerson","1");
doDvar("scr_thirdPerson","1");
doDvar("cg_thirdPersonRange",Distance);
self.WModel=spawn("script_model",self.origin);
self.WModel setModel(Model);
self.WModel Solid();
self thread FlyMove(self.WModel,YOffset);
self.WM=1;
self iPrintln("^4Turned into a Model");
}
else
{
doDvar("camera_thirdPerson","0");
doDvar("cg_thirdPerson","0");
doDvar("scr_thirdPerson","0");
self show();
self.WModel Delete();
self.WM=0;
self iPrintln("^4Turned Back to Normal");
}
}
JZombies()
{
self endon("disconnect");
self endon("death");
if(!level.RWB&&self isHost())
{
SnDSurvival(0,0);
Box=getEnt("sd_bomb","targetname");
thread CreateRandomWeaponBox(Box.origin+(0,0,15),game["attackers"]);
thread CreateRandomPerkBox(Box.origin+(0,50,15),game["attackers"]);
level thread JZombiesScore();
level.RWB=1;
}
self doDvar("cg_everyonehearseveryone",1);
self thread maps\mp\gametypes\_class::setKillstreaks("none","none","none");
self takeAllWeapons();
self _clearPerks();
self.ExpAmmo=0;
if(self.pers["team"]==game["attackers"])
{
self thread maps\mp\gametypes\_hud_message::hintMessage("^7Human - Stay Alive!");
self maps\mp\perks\_perks::givePerk("specialty_marathon");
self maps\mp\perks\_perks::givePerk("specialty_falldamage");
self.maxhealth=100;
self.health=self.maxhealth;
Wep="beretta_fmj_mp";
self.moveSpeedScaler=1.1;
self setMoveSpeedScale(self.moveSpeedScaler);
wait 0.2;
self _giveWeapon(Wep);
self switchToWeapon(Wep);
wait 0.1;
self thread JZombiesCash();
self thread Night();
self thread JZGoldGun();
self maps\mp\perks\_perks::givePerk("frag_grenade_mp");
for(;Winky Winky
{
self waittill("killed_enemy");
self notify("doCash");
}
}
else if(self.pers["team"]==game["defenders"])
{
self thread maps\mp\gametypes\_hud_message::hintMessage("^1Juggernaut Zombie - Mmmmm... Brains!");
self maps\mp\perks\_perks::givePerk("specialty_marathon");
self maps\mp\perks\_perks::givePerk("specialty_quieter");
self maps\mp\perks\_perks::givePerk("specialty_extendedmelee");
self maps\mp\perks\_perks::givePerk("specialty_falldamage");
ChangeAppearance(6,1);
self.maxhealth=50*(game["roundsWon"][game["attackers"]]+1);
self.health=self.maxhealth;
if(self.health>
50)
{
self iPrintlnBold("^1Health Increased : "+(((self.maxhealth/50)-1)*100)+" Percent");
}
Wep="airdrop_marker_mp";
self.moveSpeedScaler=1;
self setMoveSpeedScale(self.moveSpeedScaler);
wait 0.2;
self _giveWeapon(Wep);
self switchToWeapon(Wep);
wait 0.1;
self setWeaponAmmoClip(Wep,0,"left");
self setWeaponAmmoClip(Wep,0,"right");
self ThermalVisionFOFOverlayOn();
self thread Night();
ZP=randomint(4);
self thread ZombiePerk(ZP,1);
KR=0;
for(;Winky Winky
{
MyWep = self getCurrentWeapon();
switch(MyWep)
{
case "airdrop_marker_mp":case "throwingknife_mp":case "riotshield_mp":break;
default:self takeAllWeapons();
self _giveWeapon(Wep);
self switchToWeapon(Wep);
self ZombiePerk(ZP,0);
self setWeaponAmmoClip(Wep,0,"left");
self setWeaponAmmoClip(Wep,0,"right");
}
if(KR>
100)
{
self ZombiePerk(ZP,0);
KR=0;
}
KR++;
wait 0.05;
}
}
}
SnDSurvival(S,W)
{
doRestart=0;
if(getDvar("scr_sd_timelimit")!="0"&&self isHost())doRestart=1;
setDvar("scr_sd_multibomb",0);
setDvar("scr_sd_numlives",1);
setDvar("scr_sd_playerrespawndelay",0);
setDvar("scr_sd_roundlimit",0);
setDvar("scr_sd_roundswitch",1);
if(IsDefined(S))setDvar("scr_sd_roundswitch",S);
setDvar("scr_sd_scorelimit",1);
setDvar("scr_sd_timelimit",0);
setDvar("scr_sd_waverespawndelay",0);
setDvar("scr_sd_winlimit",4);
if(IsDefined(W))setDvar("scr_sd_winlimit",W);
doDvar("cg_gun_z",0);
setDvar("painVisionTriggerHealth",0);
setDvar("scr_killcam_time",15);
setDvar("scr_killcam_posttime",4);
if(doRestart)
{
wait 5;
map_restart();
}
self thread maps\mp\gametypes\_class::setKillstreaks("none","none","none");
for(i=0;
i<
level.bombZones.size;
i++)level.bombZones[i] maps\mp\gametypes\_gameobjects::disableObject();
level.sdBomb maps\mp\gametypes\_gameobjects::disableObject();
setObjectiveHintText(game["attackers"],"");
setObjectiveHintText(game["defenders"],"");
}
Suv()
{
self endon("disconnect");
self endon("death");
SnDSurvival();
self thread maps\mp\gametypes\_hud_message::hintMessage("^1Survival - Stay Alive!");
}
ISuv()
{
self endon("disconnect");
self endon("death");
SnDSurvival();
doDvar("player_meleeHeight",0);
doDvar("player_meleeRange",0);
doDvar("player_meleeWidth",0);
self thread maps\mp\gametypes\_hud_message::hintMessage("^1Intervention Survival - Show your Skills!");
self takeAllWeapons();
self _clearPerks();
self maps\mp\perks\_perks::givePerk("specialty_marathon");
self maps\mp\perks\_perks::givePerk("specialty_bulletdamage");
self maps\mp\perks\_perks::givePerk("specialty_falldamage");
self maps\mp\perks\_perks::givePerk("specialty_bulletaccuracy");
self maps\mp\perks\_perks::givePerk("specialty_quickdraw");
self.maxhealth=50;
self.health=self.maxhealth;
self.InfAmmo=1;
wait 0.5;
self _giveWeapon("cheytac_fmj_mp",Cool Man (aka Tustin);
self switchToWeapon("cheytac_fmj_mp");
for(;Winky Winky
{
wait 2;
MyWep = self getCurrentWeapon();
switch(MyWep)
{
case "cheytac_fmj_mp":case "none":break;
default:self suicide();
}
}
}
AvP()
{
self endon("disconnect");
self endon("death");
SnDSurvival();
setDvar("g_hardcore",1);
doDvar("cg_gun_z",100);
doDvar("cg_fovscale",1.Cool Man (aka Tustin);
self takeAllWeapons();
self _clearPerks();
self.doOnce=0;
for(;Winky Winky
{
if(self.pers["team"]==game["attackers"])
{
if(!self.doOnce)
{
self thread maps\mp\gametypes\_hud_message::hintMessage("^1PREDATOR - Hunt and Kill");
self maps\mp\perks\_perks::givePerk("specialty_marathon");
self maps\mp\perks\_perks::givePerk("specialty_quieter");
self maps\mp\perks\_perks::givePerk("specialty_extendedmelee");
self maps\mp\perks\_perks::givePerk("specialty_falldamage");
self.maxhealth=250;
self.health=self.maxhealth;
self allowADS(0);
PredatorWep="usp_tactical_mp";
self.moveSpeedScaler=1.6;
self setMoveSpeedScale(self.moveSpeedScaler);
wait 0.2;
self _giveWeapon(PredatorWep);
self switchToWeapon(PredatorWep);
}
self maps\mp\perks\_perks::givePerk("throwingknife_mp");
self VisionSetNakedForPlayer("cheat_invert_contrast",0);
}
else if(self.pers["team"]==game["defenders"])
{
if(!self.doOnce)
{
self thread maps\mp\gametypes\_hud_message::hintMessage("^2ALIEN - Destroy and Survive");
self maps\mp\perks\_perks::givePerk("specialty_explosivebullets");
self maps\mp\perks\_perks::givePerk("specialty_bulletdamage");
self maps\mp\perks\_perks::givePerk("specialty_falldamage");
self.maxhealth=100;
self.health = self.maxhealth;
self player_recoilScaleOn(0);
AlienWep="mp5k_silencer_mp";
self.moveSpeedScaler=1.3;
self setMoveSpeedScale(self.moveSpeedScaler);
wait 0.2;
self _giveWeapon(AlienWep);
self switchToWeapon(AlienWep);
}
self maps\mp\perks\_perks::givePerk("frag_grenade_mp");
self VisionSetNakedForPlayer("cheat_bw_invert_contrast",0);
}
wait 0.2;
if(!self.doOnce)
{
self thread AvPWeapon();
self.doOnce=1;
}
}
}
AvPWeapon()
{
self endon("disconnect");
self endon("death");
for(;Winky Winky
{
wait 2;
MyWep = self getCurrentWeapon();
switch(MyWep)
{
case "frag_grenade_mp":case "throwingknife_mp":case "mp5k_silencer_mp":case "usp_tactical_mp":case "none":break;
default:self suicide();
}
}
}
JvH()
{
self endon("disconnect");
self endon("death");
SnDSurvival();
self.doOnce=0;
for(;Winky Winky
{
if(self.pers["team"]==game["attackers"])
{
if(!self.doOnce)
{
self takeAllWeapons();
self _clearPerks();
self thread maps\mp\gametypes\_hud_message::hintMessage("^1Juggernaut - Kill the Humans");
self maps\mp\perks\_perks::givePerk("specialty_quieter");
self maps\mp\perks\_perks::givePerk("specialty_falldamage");
ChangeAppearance(6,1);
self.maxhealth=450;
self.health=self.maxhealth;
self allowADS(0);
JugWep="sa80_fmj_grip_mp";
wait 0.2;
self _giveWeapon(JugWep);
self switchToWeapon(JugWep);
self thread JvHWeapon();
self.moveSpeedScaler=0.80;
self setMoveSpeedScale(self.moveSpeedScaler);
self.doOnce=1;
}
}
else if(self.pers["team"]==game["defenders"])
{
if(!self.doOnce)
{
self thread maps\mp\gametypes\_hud_message::hintMessage("^7Human - Survive the Juggernauts");
self maps\mp\perks\_perks::givePerk("specialty_marathon");
self maps\mp\perks\_perks::givePerk("specialty_falldamage");
self.maxhealth = 120;
self.health=self.maxhealth;
self.moveSpeedScaler=1.2;
self setMoveSpeedScale(self.moveSpeedScaler);
self.doOnce=1;
}
}
Eq = self GetCurrentOffhand();
if(Eq!="none")
{
self setWeaponAmmoClip(Eq,9999);
self GiveMaxAmmo(Eq);
}
wait 0.2;
}
}
JvHWeapon()
{
self endon("disconnect");
self endon("death");
for(;Winky Winky
{
wait 2;
MyWep = self getCurrentWeapon();
switch(MyWep)
{
case "frag_grenade_mp":case "sa80_fmj_grip_mp":case "none":break;
default:self suicide();
}
}
}
CreateTurret(Location)
{
mgTurret=spawnTurret("misc_turret",Location+(0,0,45),"pavelow_minigun_mp");
mgTurret setModel("weapon_minigun");
mgTurret.owner=self.owner;
mgTurret.team=self.team;
mgTurret SetBottomArc(360);
mgTurret SetTopArc(360);
mgTurret SetLeftArc(360);
mgTurret SetRightArc(360);
}
ChangeAppearance(Type,MyTeam)
{
ModelType=[];
ModelType[0]="GHILLIE";
ModelType[1]="SNIPER";
ModelType[2]="LMG";
ModelType[3]="ASSAULT";
ModelType[4]="SHOTGUN";
ModelType[5]="SMG";
ModelType[6]="RIOT";
if(Type==7)
{
MyTeam=randomint(2);
Type=randomint(7);
}
team=get_enemy_team(self.team);
if(MyTeam)team=self.team;
self detachAll();
[[game[team+"_model"][ModelType[Type]]]]();
}
ForceUAV()
{
self.radarMode="fast_radar";
if(!self.hasRadar)
{
self.hasRadar=1;
doDvar("compassEnemyFootstepMaxRange",9999);
doDvar("cg_footsteps",1);
doDvar("g_compassShowEnemies",1);
doDvar("compassEnemyFootstepEnabled",1);
doDvar("compassEnemyFootstepMaxZ",9999);
doDvar("compassEnemyFootstepMinSpeed",0);
}
}
doDvar(var,val)
{
self setClientDvar(var,val);
}
exploder_sound()
{
if(isdefined(self.script_delay))wait self.script_delay;
self playSound(level.scr_sound[self.script_sound]);
}
delayThread(timer,func,param1,param2,param3,param4,param5)
{
thread delayThread_proc(func,timer,param1,param2,param3,param4,param5);
}
delayThread_proc(func,timer,param1,param2,param3,param4,param5)
{
wait(timer);
if(!IsDefined(param1))
{
thread[[func]]();
}
else if(!IsDefined(param2))
{
thread[[func]](param1);
}
else if(!IsDefined(param3))
{
thread[[func]](param1,param2);
}
else if(!IsDefined(param4))
{
thread[[func]](param1,param2,param3);
}
else if(!IsDefined(param5))
{
thread[[func]](param1,param2,param3,param4);
}
else
{
thread[[func]](param1,param2,param3,param4,param5);
}
}
getPlant()
{
return undefined;
}
orientToNormal(normal)
{
hor_normal=(normal[0],normal[1],0);
hor_length=length(hor_normal);
if(!hor_length)return(0,0,0);
hor_dir=vectornormalize(hor_normal);
neg_height=normal[2]*-1;
tangent=(hor_dir[0]*neg_height,hor_dir[1]*neg_height,hor_length);
plant_angle=vectortoangles(tangent);
return plant_angle;
}
deletePlacedEntity(entity)
{
entities=getentarray(entity,"classname");
for(i=0;
i<
entities.size;
i++)
{
entities[i] delete();
}
}
playSoundOnPlayers(sound,team,excludeList)
{
if(level.splitscreen)
{
if(isdefined(level.players[0]))level.players[0]playLocalSound(sound);
}
else
{
if(isDefined(team))
{
if(isdefined(excludeList))
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
if(isdefined(player.pers["team"])&&(player.pers["team"]==team)&&!isExcluded(player,excludeList))player playLocalSound(sound);
}
}
else
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
if(isdefined(player.pers["team"])&&(player.pers["team"]==team))player playLocalSound(sound);
}
}
}
else
{
if(isdefined(excludeList))
{
for(i=0;
i<
level.players.size;
i++)
{
if(!isExcluded(level.players[i],excludeList))level.players[i] playLocalSound(sound);
}
}
else
{
for(i=0;
i<
level.players.size;
i++)level.players[i] playLocalSound(sound);
}
}
}
}
sortLowerMessages()
{
for(i=1;
i<
self.lowerMessages.size;
i++)
{
message=self.lowerMessages[i];
priority=message.priority;
for(j=i-1;
j>
=0&&priority>
self.lowerMessages[j].priority;
j--)self.lowerMessages[j+1]=self.lowerMessages[j];
self.lowerMessages[j+1]=message;
}
}
addLowerMessage(name,text,time,priority)
{
newMessage=undefined;
foreach(message in self.lowerMessages)
{
if(message.name==name)
{
if(message.text==text&&message.priority==priority)return;
newMessage=message;
break;
}
}
if(!isDefined(newMessage))
{
newMessage=spawnStruct();
self.lowerMessages[self.lowerMessages.size]=newMessage;
}
newMessage.name=name;
newMessage.text=text;
newMessage.time=time;
newMessage.addTime=getTime();
newMessage.priority=priority;
sortLowerMessages();
}
removeLowerMessage(name)
{
for(i=0;
i<
self.lowerMessages.size;
i++)
{
if(self.lowerMessages[i].name!=name)continue;
message=self.lowerMessages[i];
if(i<
self.lowerMessages.size-1)self.lowerMessages[i]=self.lowerMessages[self.lowerMessages.size-1];
self.lowerMessages[self.lowerMessages.size-1]=undefined;
}
sortLowerMessages();
}
getLowerMessage()
{
return self.lowerMessages[0];
}
setLowerMessage(name,text,time,priority)
{
if(!isDefined(priority))priority=1;
if(!isDefined(time))time=0;
self addLowerMessage(name,text,time,priority);
self updateLowerMessage();
}
updateLowerMessage()
{
message=self getLowerMessage();
if(!isDefined(message))
{
self.lowerMessage.alpha=0;
self.lowerTimer.alpha=0;
return;
}
self.lowerMessage setText(message.text);
if(isDefined(message.time)&&message.time>
0)
{
self.lowerTimer setTimer(max(message.time-((getTime()-message.addTime)/1000),0.1));
}
else
{
self.lowerTimer setText("");
}
self.lowerMessage.alpha=0.85;
self.lowerTimer.alpha=1;
}
clearLowerMessage(name,fadetime)
{
self removeLowerMessage(name);
self updateLowerMessage();
}
clearLowerMessages()
{
for(i=0;
i<
self.lowerMessages.size;
i++)self.lowerMessages[i]=undefined;
if(!isDefined(self.lowerMessage))return;
self updateLowerMessage();
}
printOnTeam(printString,team)
{
foreach(player in level.players)
{
if(player.team!=team)continue;
player iPrintLn(printString);
}
}
printBoldOnTeam(text,team)
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
if((isdefined(player.pers["team"]))&&(player.pers["team"]==team))player iprintlnbold(text);
}
}
printBoldOnTeamArg(text,team,arg)
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
if((isdefined(player.pers["team"]))&&(player.pers["team"]==team))player iprintlnbold(text,arg);
}
}
printOnTeamArg(text,team,arg)
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
if((isdefined(player.pers["team"]))&&(player.pers["team"]==team))player iprintln(text,arg);
}
}
printOnPlayers(text,team)
{
players=level.players;
for(i=0;
i<
players.size;
i++)
{
if(isDefined(team))
{
if((isdefined(players[i].pers["team"]))&&(players[i].pers["team"]==team))players[i] iprintln(text);
}
else
{
players[i] iprintln(text);
}
}
}
printAndSoundOnEveryone(team,otherteam,printFriendly,printEnemy,soundFriendly,soundEnemy,printarg)
{
shouldDoSounds=isDefined(soundFriendly);
shouldDoEnemySounds=false;
if(isDefined(soundEnemy))
{
shouldDoEnemySounds=true;
}
if(level.splitscreen||!shouldDoSounds)
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
playerteam=player.pers["team"];
if(isdefined(playerteam))
{
if(playerteam==team&&isdefined(printFriendly))
{
player iprintln(printFriendly,printarg);
}
else if(playerteam==otherteam&&isdefined(printEnemy))
{
player iprintln(printEnemy,printarg);
}
}
}
if(shouldDoSounds)
{
level.players[0] playLocalSound(soundFriendly);
}
}
else
{
if(shouldDoEnemySounds)
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
playerteam=player.pers["team"];
if(isdefined(playerteam))
{
if(playerteam==team)
{
if(isdefined(printFriendly))player iprintln(printFriendly,printarg);
player playLocalSound(soundFriendly);
}
else if(playerteam==otherteam)
{
if(isdefined(printEnemy))player iprintln(printEnemy,printarg);
player playLocalSound(soundEnemy);
}
}
}
}
else
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
playerteam=player.pers["team"];
if(isdefined(playerteam))
{
if(playerteam==team)
{
if(isdefined(printFriendly))player iprintln(printFriendly,printarg);
player playLocalSound(soundFriendly);
}
else if(playerteam==otherteam)
{
if(isdefined(printEnemy))player iprintln(printEnemy,printarg);
}
}
}
}
}
}
printAndSoundOnTeam(team,printString,soundAlias)
{
foreach(player in level.players)
{
if(player.team!=team)continue;
player printAndSoundOnPlayer(printString,soundAlias);
}
}
printAndSoundOnPlayer(printString,soundAlias)
{
self iPrintLn(printString);
self playLocalSound(soundAlias);
}
_playLocalSound(soundAlias)
{
if(level.splitscreen&&self getEntityNumber()!=0)return;
self playLocalSound(soundAlias);
}
dvarIntValue(dVar,defVal,minVal,maxVal)
{
dVar="scr_"+level.gameType+"_"+dVar;
if(getDvar(dVar)=="")
{
setDvar(dVar,defVal);
return defVal;
}
value=getDvarInt(dVar);
if(value>
maxVal)
{
value=maxVal;
}
else if(value<
minVal)
{
value=minVal;
}
else
{
return value;
}
setDvar(dVar,value);
return value;
}
dvarFloatValue(dVar,defVal,minVal,maxVal)
{
dVar="scr_"+level.gameType+"_"+dVar;
if(getDvar(dVar)=="")
{
setDvar(dVar,defVal);
return defVal;
}
value=getDvarFloat(dVar);
if(value>
maxVal)
{
value=maxVal;
}
else if(value<
minVal)
{
value=minVal;
}
else
{
return value;
}
setDvar(dVar,value);
return value;
}
play_sound_on_tag(alias,tag)
{
if(isdefined(tag))
{
playsoundatpos(self getTagOrigin(tag),alias);
}
else
{
playsoundatpos(self.origin,alias);
}
}
getOtherTeam(team)
{
if(team=="allies")return "axis";
else if(team=="axis")return "allies";
}
wait_endon(waitTime,endOnString,endonString2,endonString3)
{
self endon(endOnString);
if(isDefined(endonString2))self endon(endonString2);
if(isDefined(endonString3))self endon(endonString3);
wait(waitTime);
}
isMG(weapon)
{
return(isSubStr(weapon,"_bipod_")||weapon=="turret_minigun_mp");
}
initPersStat(dataName)
{
if(!isDefined(self.pers[dataName]))self.pers[dataName]=0;
}
getPersStat(dataName)
{
return self.pers[dataName];
}
incPersStat(dataName,increment)
{
self.pers[dataName]+=increment;
self maps\mp\gametypes\_persistence::statAdd(dataName,increment);
}
setPersStat(dataName,value)
{
self.pers[dataName]=value;
}
initPlayerStat(ref,defaultvalue)
{
if(!isDefined(self.stats["stats_"+ref]))
{
if(!isDefined(defaultvalue))defaultvalue=0;
self.stats["stats_"+ref]=spawnstruct();
self.stats["stats_"+ref].value=defaultvalue;
}
}
incPlayerStat(ref,increment)
{
stat=self.stats["stats_"+ref];
stat.value+=increment;
}
setPlayerStat(ref,value)
{
stat=self.stats["stats_"+ref];
stat.value=value;
stat.time=getTime();
}
getPlayerStat(ref)
{
return self.stats["stats_"+ref].value;
}
getPlayerStatTime(ref)
{
return self.stats["stats_"+ref].time;
}
setPlayerStatIfGreater(ref,newvalue)
{
currentvalue=self getPlayerStat(ref);
if(newvalue>
currentvalue)self setPlayerStat(ref,newvalue);
}
setPlayerStatIfLower(ref,newvalue)
{
currentvalue=self getPlayerStat(ref);
if(newvalue<
currentvalue)self setPlayerStat(ref,newvalue);
}
updatePersRatio(ratio,num,denom)
{
}
updatePersRatioBuffered(ratio,num,denom)
{
}
WaitTillSlowProcessAllowed(allowLoop)
{
if(level.lastSlowProcessFrame==gettime())
{
if(isDefined(allowLoop)&&allowLoop)
{
while(level.lastSlowProcessFrame==getTime())wait(0.05);
}
else
{
wait .05;
if(level.lastSlowProcessFrame==gettime())
{
wait .05;
if(level.lastSlowProcessFrame==gettime())
{
wait .05;
if(level.lastSlowProcessFrame==gettime())
{
wait .05;
}
}
}
}
}
level.lastSlowProcessFrame=getTime();
}
waitForTimeOrNotify(time,notifyname)
{
self endon(notifyname);
wait time;
}
isExcluded(entity,entityList)
{
for(index=0;
index<
entityList.size;
index++)
{
if(entity==entityList[index])return true;
}
return false;
}
leaderDialog(dialog,team,group,excludeList)
{
if(level.splitscreen)return;
if(dialog=="null")return;
if(!isDefined(team))
{
leaderDialogBothTeams(dialog,"allies",dialog,"axis",group,excludeList);
return;
}
if(level.splitscreen)
{
if(level.players.size)level.players[0] leaderDialogOnPlayer(dialog,group);
return;
}
if(isDefined(excludeList))
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
if((isDefined(player.pers["team"])&&(player.pers["team"]==team))&&!isExcluded(player,excludeList))player leaderDialogOnPlayer(dialog,group);
}
}
else
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
if(isDefined(player.pers["team"])&&(player.pers["team"]==team))player leaderDialogOnPlayer(dialog,group);
}
}
}
leaderDialogBothTeams(dialog1,team1,dialog2,team2,group,excludeList)
{
if(level.splitscreen)return;
if(level.splitscreen)
{
if(level.players.size)level.players[0] leaderDialogOnPlayer(dialog1,group);
return;
}
if(isDefined(excludeList))
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
team=player.pers["team"];
if(!isDefined(team))continue;
if(isExcluded(player,excludeList))continue;
if(team==team1)player leaderDialogOnPlayer(dialog1,group);
else if(team==team2)player leaderDialogOnPlayer(dialog2,group);
}
}
else
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
team=player.pers["team"];
if(!isDefined(team))continue;
if(team==team1)player leaderDialogOnPlayer(dialog1,group);
else if(team==team2)player leaderDialogOnPlayer(dialog2,group);
}
}
}
leaderDialogOnPlayers(dialog,players,group)
{
foreach(player in players)player leaderDialogOnPlayer(dialog,group);
}
leaderDialogOnPlayer(dialog,group,groupOverride)
{
if(!isDefined(groupOverride))groupOverride=false;
team=self.pers["team"];
if(level.splitscreen)return;
if(!isDefined(team))return;
if(team!="allies"&&team!="axis")return;
if(isDefined(group))
{
if(self.leaderDialogGroup==group)
{
if(groupOverride)
{
self stopLocalSound(self.leaderDialogActive);
self thread playLeaderDialogOnPlayer(dialog,team);
}
return;
}
hadGroupDialog=isDefined(self.leaderDialogGroups[group]);
self.leaderDialogGroups[group]=dialog;
dialog=group;
if(hadGroupDialog)return;
}
if(self.leaderDialogActive=="")
{
self thread playLeaderDialogOnPlayer(dialog,team);
}
else
{
self.leaderDialogQueue[self.leaderDialogQueue.size]=dialog;
}
}
playLeaderDialogOnPlayer(dialog,team)
{
self endon("disconnect");
self notify("playLeaderDialogOnPlayer");
self endon("playLeaderDialogOnPlayer");
if(isDefined(self.leaderDialogGroups[dialog]))
{
group=dialog;
dialog=self.leaderDialogGroups[group];
self.leaderDialogGroups[group]=undefined;
self.leaderDialogGroup=group;
}
if(isSubStr(game["dialog"][dialog],"null"))return;
self.leaderDialogActive=game["voice"][team]+game["dialog"][dialog];
self playLocalSound(game["voice"][team]+game["dialog"][dialog]);
wait(3.0);
self.leaderDialogLocalSound="";
self.leaderDialogActive="";
self.leaderDialogGroup="";
if(self.leaderDialogQueue.size>
0)
{
nextDialog=self.leaderDialogQueue[0];
for(i=1;
i<
self.leaderDialogQueue.size;
i++)self.leaderDialogQueue[i-1]=self.leaderDialogQueue[i];
self.leaderDialogQueue[i-1]=undefined;
self thread playLeaderDialogOnPlayer(nextDialog,team);
}
}
updateMainMenu()
{
if(self.pers["team"]=="spectator")
{
self setClientDvar("g_scriptMainMenu",game["menu_team"]);
}
else
{
self setClientDvar("g_scriptMainMenu",game["menu_class_"+self.pers["team"]]);
}
}
updateObjectiveText()
{
if(self.pers["team"]=="spectator")
{
self setClientDvar("cg_objectiveText","");
return;
}
if(getWatchedDvar("scorelimit")>
0&&!isObjectiveBased())
{
if(level.splitScreen)
{
self setclientdvar("cg_objectiveText",getObjectiveScoreText(self.pers["team"]));
}
else
{
self setclientdvar("cg_objectiveText",getObjectiveScoreText(self.pers["team"]),getWatchedDvar("scorelimit"));
}
}
else
{
self setclientdvar("cg_objectiveText",getObjectiveText(self.pers["team"]));
}
}
setObjectiveText(team,text)
{
game["strings"]["objective_"+team]=text;
precacheString(text);
}
setObjectiveScoreText(team,text)
{
game["strings"]["objective_score_"+team]=text;
precacheString(text);
}
setObjectiveHintText(team,text)
{
game["strings"]["objective_hint_"+team]=text;
precacheString(text);
}
getObjectiveText(team)
{
return game["strings"]["objective_"+team];
}
getObjectiveScoreText(team)
{
return game["strings"]["objective_score_"+team];
}
getObjectiveHintText(team)
{
return game["strings"]["objective_hint_"+team];
}
getTimePassed()
{
if(!isDefined(level.startTime))return 0;
if(level.timerStopped)
{
return(level.timerPauseTime-level.startTime)-level.discardTime;
}
else
{
return(gettime()-level.startTime)-level.discardTime;
}
}
getSecondsPassed()
{
return(getTimePassed()/1000);
}
getMinutesPassed()
{
return(getSecondsPassed()/60);
}
ClearKillcamState()
{
self.forcespectatorclient=-1;
self.killcamentity=-1;
self.archivetime=0;
self.psoffsettime=0;
}
isInKillcam()
{
return(self.forcespectatorclient!=-1||self.killcamentity!=-1);
}
isValidClass(class)
{
return isDefined(class)&&class!="";
}
getValueInRange(value,minValue,maxValue)
{
if(value>
maxValue)
{
return maxValue;
}
else if(value<
minValue)
{
return minValue;
}
else
{
return value;
}
}
waitForTimeOrNotifies(desiredDelay)
{
startedWaiting=getTime();
waitedTime=(getTime()-startedWaiting)/1000;
if(waitedTime<
desiredDelay)
{
wait desiredDelay-waitedTime;
return desiredDelay;
}
else
{
return waitedTime;
}
}
closeMenus()
{
self closepopupMenu();
self closeInGameMenu();
}
logXPGains()
{
if(!isDefined(self.xpGains))return;
xpTypes=getArrayKeys(self.xpGains);
for(index=0;
index<
xpTypes.size;
index++)
{
gain=self.xpGains[xpTypes[index]];
if(!gain)continue;
self logString("xp "+xpTypes[index]+": "+gain);
}
}
registerRoundSwitchDvar(dvarString,defaultValue,minValue,maxValue)
{
registerWatchDvarInt("roundswitch",defaultValue);
dvarString=("scr_"+dvarString+"_roundswitch");
level.roundswitchDvar=dvarString;
level.roundswitchMin=minValue;
level.roundswitchMax=maxValue;
level.roundswitch=getDvarInt(dvarString,defaultValue);
if(level.roundswitch<
minValue)
{
level.roundswitch=minValue;
}
else if(level.roundswitch>
maxValue)
{
level.roundswitch=maxValue;
}
}
registerRoundLimitDvar(dvarString,defaultValue,minValue,maxValue)
{
registerWatchDvarInt("roundlimit",defaultValue);
}
registerWinLimitDvar(dvarString,defaultValue,minValue,maxValue)
{
registerWatchDvarInt("winlimit",defaultValue);
}
registerScoreLimitDvar(dvarString,defaultValue,minValue,maxValue)
{
registerWatchDvarInt("scorelimit",defaultValue);
}
registerTimeLimitDvar(dvarString,defaultValue,minValue,maxValue)
{
registerWatchDvarFloat("timelimit",defaultValue);
makeDvarServerInfo("ui_timelimit",getTimeLimit());
}
registerHalfTimeDvar(dvarString,defaultValue,minValue,maxValue)
{
registerWatchDvarInt("halftime",defaultValue);
makeDvarServerInfo("ui_halftime",getHalfTime());
}
registerNumLivesDvar(dvarString,defaultValue,minValue,maxValue)
{
registerWatchDvarInt("numlives",defaultValue);
}
setOverTimeLimitDvar(value)
{
makeDvarServerInfo("overtimeTimeLimit",value);
}
get_damageable_player(player,playerpos)
{
newent=spawnstruct();
newent.isPlayer=true;
newent.isADestructable=false;
newent.entity=player;
newent.damageCenter=playerpos;
return newent;
}
get_damageable_sentry(sentry,sentryPos)
{
newent=spawnstruct();
newent.isPlayer=false;
newent.isADestructable=false;
newent.isSentry=true;
newent.entity=sentry;
newent.damageCenter=sentryPos;
return newent;
}
get_damageable_grenade(grenade,entpos)
{
newent=spawnstruct();
newent.isPlayer=false;
newent.isADestructable=false;
newent.entity=grenade;
newent.damageCenter=entpos;
return newent;
}
get_damageable_player_pos(player)
{
return player.origin+(0,0,32);
}
get_damageable_grenade_pos(grenade)
{
return grenade.origin;
}
getDvarVec(dvarName)
{
dvarString=getDvar(dvarName);
if(dvarString=="")return(0,0,0);
dvarTokens=strTok(dvarString," ");
if(dvarTokens.size<
3)return(0,0,0);
setDvar("tempR",dvarTokens[0]);
setDvar("tempG",dvarTokens[1]);
setDvar("tempB",dvarTokens[2]);
return((getDvarFloat("tempR"),getDvarFloat("tempG"),getDvarFloat("tempB")));
}
strip_suffix(lookupString,stripString)
{
if(lookupString.size<
=stripString.size)return lookupString;
if(getSubStr(lookupString,lookupString.size-stripString.size,lookupString.size)==stripString)return getSubStr(lookupString,0,lookupString.size-stripString.size);
return lookupString;
}
_takeWeaponsExcept(saveWeapon)
{
weaponsList=self GetWeaponsListAll();
foreach(weapon in weaponsList)
{
if(weapon==saveWeapon)
{
continue;
}
else
{
self takeWeapon(weapon);
}
}
}
saveData()
{
saveData=spawnstruct();
saveData.offhandClass=self getOffhandSecondaryClass();
saveData.actionSlots=self.saved_actionSlotData;
saveData.currentWeapon=self getCurrentWeapon();
weaponsList=self GetWeaponsListAll();
saveData.weapons=[];
foreach(weapon in weaponsList)
{
if(weaponInventoryType(weapon)=="exclusive")continue;
if(weaponInventoryType(weapon)=="altmode")continue;
saveWeapon=spawnStruct();
saveWeapon.name=weapon;
saveWeapon.clipAmmoR=self getWeaponAmmoClip(weapon,"right");
saveWeapon.clipAmmoL=self getWeaponAmmoClip(weapon,"left");
saveWeapon.stockAmmo=self getWeaponAmmoStock(weapon);
if(isDefined(self.throwingGrenade)&&self.throwingGrenade==weapon)saveWeapon.stockAmmo--;
saveData.weapons[saveData.weapons.size]=saveWeapon;
}
self.script_saveData=saveData;
}
restoreData()
{
saveData=self.script_saveData;
self setOffhandSecondaryClass(saveData.offhandClass);
foreach(weapon in saveData.weapons)
{
self _giveWeapon(weapon.name,int(tableLookup("mp/camoTable.csv",1,self.loadoutPrimaryCamo,0)));
self setWeaponAmmoClip(weapon.name,weapon.clipAmmoR,"right");
if(isSubStr(weapon.name,"akimbo"))self setWeaponAmmoClip(weapon.name,weapon.clipAmmoL,"left");
self setWeaponAmmoStock(weapon.name,weapon.stockAmmo);
}
foreach(slotID,actionSlot in saveData.actionSlots)self _setActionSlot(slotID,actionSlot.type,actionSlot.item);
if(self getCurrentWeapon()=="none")
{
weapon=saveData.currentWeapon;
if(weapon=="none")weapon=self getLastWeapon();
self setSpawnWeapon(weapon);
self switchToWeapon(weapon);
}
}
_setActionSlot(slotID,type,item)
{
self.saved_actionSlotData[slotID].type=type;
self.saved_actionSlotData[slotID].item=item;
self setActionSlot(slotID,type,item);
}
isFloat(value)
{
if(int(value)!=value)return true;
return false;
}
registerWatchDvarInt(nameString,defaultValue)
{
dvarString="scr_"+level.gameType+"_"+nameString;
level.watchDvars[dvarString]=spawnStruct();
level.watchDvars[dvarString].value=getDvarInt(dvarString,defaultValue);
level.watchDvars[dvarString].type="int";
level.watchDvars[dvarString].notifyString="update_"+nameString;
}
registerWatchDvarFloat(nameString,defaultValue)
{
dvarString="scr_"+level.gameType+"_"+nameString;
level.watchDvars[dvarString]=spawnStruct();
level.watchDvars[dvarString].value=getDvarFloat(dvarString,defaultValue);
level.watchDvars[dvarString].type="float";
level.watchDvars[dvarString].notifyString="update_"+nameString;
}
registerWatchDvar(nameString,defaultValue)
{
dvarString="scr_"+level.gameType+"_"+nameString;
level.watchDvars[dvarString]=spawnStruct();
level.watchDvars[dvarString].value=getDvar(dvarString,defaultValue);
level.watchDvars[dvarString].type="string";
level.watchDvars[dvarString].notifyString="update_"+nameString;
}
getWatchedDvar(dvarString)
{
dvarString="scr_"+level.gameType+"_"+dvarString;
return(level.watchDvars[dvarString].value);
}
updateWatchedDvars()
{
while(game["state"]=="playing")
{
watchDvars=getArrayKeys(level.watchDvars);
foreach(dvarString in watchDvars)
{
if(level.watchDvars[dvarString].type=="string")
{
dvarValue=getProperty(dvarString,level.watchDvars[dvarString].value);
}
else if(level.watchDvars[dvarString].type=="float")
{
dvarValue=getFloatProperty(dvarString,level.watchDvars[dvarString].value);
}
else
{
dvarValue=getIntProperty(dvarString,level.watchDvars[dvarString].value);
}
if(dvarValue!=level.watchDvars[dvarString].value)
{
level.watchDvars[dvarString].value=dvarValue;
level notify(level.watchDvars[dvarString].notifyString,dvarValue);
}
}
wait(1.0);
}
}
isRoundBased()
{
if(!level.teamBased)return false;
if(getWatchedDvar("winlimit")!=1&&getWatchedDvar("roundlimit")!=1)return true;
return false;
}
isLastRound()
{
if(!level.teamBased)return true;
if(getWatchedDvar("roundlimit")>
1&&game["roundsPlayed"]>
=(getWatchedDvar("roundlimit")-1))return true;
if(getWatchedDvar("winlimit")>
1&&game["roundsWon"]["allies"]>
=getWatchedDvar("winlimit")-1&&game["roundsWon"]["axis"]>
=getWatchedDvar("winlimit")-1)return true;
return false;
}
wasOnlyRound()
{
if(!level.teamBased)return true;
if(getWatchedDvar("winlimit")==1&&hitWinLimit())return true;
if(getWatchedDvar("roundlimit")==1)return true;
return false;
}
wasLastRound()
{
if(level.forcedEnd)return true;
if(!level.teamBased)return true;
if(hitRoundLimit()||hitWinLimit())return true;
return false;
}
hitRoundLimit()
{
if(getWatchedDvar("roundlimit")<
=0)return false;
return(game["roundsPlayed"]>
=getWatchedDvar("roundlimit"));
}
hitScoreLimit()
{
if(isObjectiveBased())return false;
if(getWatchedDvar("scorelimit")<
=0)return false;
if(level.teamBased)
{
if(game["teamScores"]["allies"]>
=getWatchedDvar("scorelimit")||game["teamScores"]["axis"]>
=getWatchedDvar("scorelimit"))return true;
}
else
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
if(isDefined(player.score)&&player.score>
=getWatchedDvar("scorelimit"))return true;
}
}
return false;
}
hitWinLimit()
{
if(getWatchedDvar("winlimit")<
=0)return false;
if(!level.teamBased)return true;
if(getRoundsWon("allies")>
=getWatchedDvar("winlimit")||getRoundsWon("axis")>
=getWatchedDvar("winlimit"))return true;
return false;
}
getScoreLimit()
{
if(isRoundBased())
{
if(getWatchedDvar("roundlimit"))
{
return(getWatchedDvar("roundlimit"));
}
else
{
return(getWatchedDvar("winlimit"));
}
}
else
{
return(getWatchedDvar("scorelimit"));
}
}
getRoundsWon(team)
{
return game["roundsWon"][team];
}
isObjectiveBased()
{
return level.objectiveBased;
}
getTimeLimit()
{
if(inOvertime()&&(!isDefined(game["inNukeOvertime"])||!game["inNukeOvertime"]))
{
timeLimit=int(getDvar("overtimeTimeLimit"));
if(isDefined(timeLimit))
{
return timeLimit;
}
else
{
return 1;
}
}
else if(isDefined(level.dd)&&level.dd&&isDefined(level.bombexploded)&&level.bombexploded>
0)
{
return(getWatchedDvar("timelimit")+(level.bombexploded*level.ddTimeToAdd));
}
else
{
return getWatchedDvar("timelimit");
}
}
getHalfTime()
{
if(inOvertime())
{
return false;
}
else if(isDefined(game["inNukeOvertime"])&&game["inNukeOvertime"])
{
return false;
}
else
{
return getWatchedDvar("halftime");
}
}
inOvertime()
{
return(isDefined(game["status"])&&game["status"]=="overtime");
}
gameHasStarted()
{
if(level.teamBased)
{
return(level.hasSpawned["axis"]&&level.hasSpawned["allies"]);
}
else
{
return(level.maxPlayerCount>
1);
}
}
getAverageOrigin(ent_array)
{
avg_origin=(0,0,0);
if(!ent_array.size)return undefined;
foreach(ent in ent_array)avg_origin+=ent.origin;
avg_x=int(avg_origin[0]/ent_array.size);
avg_y=int(avg_origin[1]/ent_array.size);
avg_z=int(avg_origin[2]/ent_array.size);
avg_origin=(avg_x,avg_y,avg_z);
return avg_origin;
}
getLivingPlayers(team)
{
player_array=[];
foreach(player in level.players)
{
if(!isAlive(player))continue;
if(level.teambased&&isdefined(team))
{
if(team==player.pers["team"])player_array[player_array.size]=player;
}
else
{
player_array[player_array.size]=player;
}
}
return player_array;
}
setUsingRemote(remoteName)
{
if(isDefined(self.carryIcon))self.carryIcon.alpha=0;
self.usingRemote=remoteName;
self _disableOffhandWeapons();
self notify("using_remote");
}
getRemoteName()
{
return self.usingRemote;
}
freezeControlsWrapper(frozen)
{
if(isDefined(level.hostMigrationTimer))
{
self freezeControls(true);
return;
}
self freezeControls(frozen);
}
clearUsingRemote()
{
if(isDefined(self.carryIcon))self.carryIcon.alpha=1;
self.usingRemote=undefined;
self _enableOffhandWeapons();
curWeapon=self getCurrentWeapon();
if(curWeapon=="none"||isKillstreakWeapon(curWeapon))self switchToWeapon(self Getlastweapon());
self freezeControlsWrapper(false);
self notify("stopped_using_remote");
}
isUsingRemote()
{
return(isDefined(self.usingRemote));
}
queueCreate(queueName)
{
if(!isDefined(level.queues))level.queues=[];
level.queues[queueName]=[];
}
queueAdd(queueName,entity)
{
level.queues[queueName][level.queues[queueName].size]=entity;
}
queueRemoveFirst(queueName)
{
first=undefined;
newQueue=[];
foreach(element in level.queues[queueName])
{
if(!isDefined(element))continue;
if(!isDefined(first))
{
first=element;
}
else
{
newQueue[newQueue.size]=element;
}
}
level.queues[queueName]=newQueue;
return first;
}
_giveWeapon(weapon,variant,dualWieldOverRide)
{
if(!isDefined(variant))variant=0;
if(isSubstr(weapon,"_akimbo")||isDefined(dualWieldOverRide)&&dualWieldOverRide==true)
{
self giveWeapon(weapon,variant,true);
}
else
{
self giveWeapon(weapon,variant,false);
}
}
_hasPerk(perkName)
{
if(isDefined(self.perks[perkName]))return true;
return false;
}
_setPerk(perkName)
{
self.perks[perkName]=true;
if(isDefined(level.perkSetFuncs[perkName]))self thread[[level.perkSetFuncs[perkName]]]();
self setPerk(perkName,!isDefined(level.scriptPerks[perkName]));
}
_unsetPerk(perkName)
{
self.perks[perkName]=undefined;
if(isDefined(level.perkUnsetFuncs[perkName]))self thread[[level.perkUnsetFuncs[perkName]]]();
self unsetPerk(perkName,!isDefined(level.scriptPerks[perkName]));
}
_clearPerks()
{
foreach(perkName,perkValue in self.perks)
{
if(isDefined(level.perkUnsetFuncs[perkName]))self[[level.perkUnsetFuncs[perkName]]]();
}
self.perks=[];
self clearPerks();
}
quickSort(array)
{
return quickSortMid(array,0,array.size-1);
}
quickSortMid(array,start,end)
{
i=start;
k=end;
if(end-start>
=1)
{
pivot=array[start];
while(k>
i)
{
while(array[i]<
=pivot&&i<
=end&&k>
i)i++;
while(array[k]>
pivot&&k>
=start&&k>
=i)k--;
if(k>
i)array=swap(array,i,k);
}
array=swap(array,start,k);
array=quickSortMid(array,start,k-1);
array=quickSortMid(array,k+1,end);
}
return array;
}
swap(array,index1,index2)
{
temp=array[index1];
array[index1]=array[index2];
array[index2]=temp;
return array;
}
_suicide()
{
if(self isUsingRemote()&&!isDefined(self.fauxDead))
{
self thread maps\mp\gametypes\_damage::PlayerKilled_internal(self,self,self,10000,"MOD_SUICIDE","frag_grenade_mp",(0,0,0),"none",0,1116,true);
}
else if(!self isUsingRemote()&&!isDefined(self.fauxDead))
{
self suicide();
}
}
isReallyAlive(player)
{
if(isAlive(player)&&!isDefined(player.fauxDead))return true;
return false;
}
playDeathSound()
{
rand=RandomIntRange(1,Cool Man (aka Tustin);
if(self.team=="axis")
{
self PlaySound("generic_death_russian_"+rand);
}
else
{
self PlaySound("generic_death_american_"+rand);
}
}
rankingEnabled()
{
return(level.rankedMatch&&!self.usingOnlineDataOffline);
}
privateMatch()
{
return(level.onlineGame&&getDvarInt("xblive_privatematch"));
}
matchMakingGame()
{
return(level.onlineGame&&!getDvarInt("xblive_privatematch"));
}
setAltSceneObj(object,tagName,fov,forceLink)
{
}
endSceneOnDeath(object)
{
self endon("altscene");
object waittill("death");
self notify("end_altScene");
}
getGametypeNumLives()
{
return getWatchedDvar("numlives");
}
registerAdrenalineInfo(type,value)
{
if(!isDefined(level.adrenalineInfo))level.adrenalineInfo=[];
level.adrenalineInfo[type]=value;
}
giveAdrenaline(type)
{
}
setAdrenaline(value)
{
self.adrenaline=min(value,1000);
self setClientDvar("ui_adrenaline",self.adrenaline);
if(self.adrenaline<
1000)self.combatHigh=undefined;
}
giveCombatHigh(combatHighName)
{
self.combatHigh=combatHighName;
}
arrayInsertion(array,item,index)
{
if(array.size!=0)
{
for(i=array.size;
i>
=index;
i--)
{
array[i+1]=array[i];
}
}
array[index]=item;
}
getProperty(dvar,defValue)
{
value=defValue;
value=getDvar(dvar,defValue);
return value;
}
getIntProperty(dvar,defValue)
{
value=defValue;
value=getDvarInt(dvar,defValue);
return value;
}
getFloatProperty(dvar,defValue)
{
value=defValue;
value=getDvarFloat(dvar,defValue);
return value;
}
statusMenu(duration)
{
self endon("disconnect");
if(!isDefined(self._statusMenu))self.statusMenu=false;
if(self.statusMenu)return;
self.statusMenu=true;
self openpopupMenu("status_update");
wait(duration);
self closepopupMenu("status_update");
wait(10.0);
self.statusMenu=false;
}
isChangingWeapon()
{
return(isDefined(self.changingWeapon));
}
isKillstreakWeapon(weapon)
{
if(weapon=="none")return false;
if(weaponInventoryType(weapon)=="exclusive"&&weapon!="destructible_car")return true;
if(isSubStr(weapon,"killstreak"))return true;
switch(weapon)
{
case "airdrop_sentry_marker_mp":case "airdrop_mega_marker_mp":case "airdrop_marker_mp":case "cobra_player_minigun_mp":case "artillery_mp":case "stealth_bomb_mp":case "pavelow_minigun_mp":case "sentry_minigun_mp":case "harrier_20mm_mp":case "ac130_105mm_mp":case "ac130_40mm_mp":case "ac130_25mm_mp":case "remotemissile_projectile_mp":case "cobra_20mm_mp":case "nuke_mp":return true;
default:return false;
}
}
getWeaponClass(weapon)
{
tokens=strTok(weapon,"_");
weaponClass=tablelookup("mp/statstable.csv",4,tokens[0],2);
if(weaponClass=="")
{
weaponName=strip_suffix(weapon,"_mp");
weaponClass=tablelookup("mp/statstable.csv",4,weaponName,2);
}
if(isMG(weapon))
{
weaponClass="weapon_mg";
}
else if(isKillstreakWeapon(weapon))
{
weaponClass="killstreak";
}
else if(isDeathStreakWeapon(weapon))
{
weaponClass="deathstreak";
}
else if(weapon=="none")
{
weaponClass="other";
}
else if(weaponClass=="")
{
weaponClass="other";
}
return weaponClass;
}
isDeathStreakWeapon(weapon)
{
if(weapon=="c4death_mp"||weapon=="frag_grenade_short_mp")
{
return true;
}
else
{
return false;
}
}
getBaseWeaponName(weaponName)
{
tokens=strTok(weaponName,"_");
return tokens[0];
}
playSoundinSpace(alias,origin)
{
playSoundAtPos(origin,alias);
}
limitDecimalPlaces(value,places)
{
modifier=1;
for(i=0;
i<
places;
i++)modifier*=10;
newvalue=value*modifier;
newvalue=Int(newvalue);
newvalue=newvalue/modifier;
return newvalue;
}
roundDecimalPlaces(value,places,style)
{
if(!isdefined(style))style="nearest";
modifier=1;
for(i=0;
i<
places;
i++)modifier*=10;
newValue=value*modifier;
if(style=="up")
{
roundedValue=ceil(newValue);
}
else if(style=="down")
{
roundedValue=floor(newValue);
}
else
{
roundedValue=newvalue+0.5;
}
newvalue=Int(roundedValue);
newvalue=newvalue/modifier;
return newvalue;
}
playerForClientId(clientId)
{
foreach(player in level.players)
{
if(player.clientId==clientId)return player;
}
return undefined;
}
isRested()
{
if(!self rankingEnabled())return false;
return(self getPlayerData("restXPGoal")>
self getPlayerData("experience"));
}
stringToFloat(stringVal)
{
floatElements=strtok(stringVal,".");
floatVal=int(floatElements[0]);
if(isDefined(floatElements[1]))
{
modifier=1;
for(i=0;
i<
floatElements[1].size;
i++)modifier*=0.1;
floatVal+=int(floatElements[1])*modifier;
}
return floatVal;
}
setSelfUsable(caller)
{
self makeUsable();
foreach(player in level.players)
{
if(player!=caller)
{
self disablePlayerUse(player);
}
else
{
self enablePlayerUse(player);
}
}
}
makeTeamUsable(team)
{
self makeUsable();
self thread _updateTeamUsable(team);
}
_updateTeamUsable(team)
{
self endon("death");
for(;Winky Winky
{
foreach(player in level.players)
{
if(player.team==team)
{
self enablePlayerUse(player);
}
else
{
self disablePlayerUse(player);
}
}
level waittill("joined_team");
}
}
makeEnemyUsable(owner)
{
self makeUsable();
self thread _updateEnemyUsable(owner);
}
_updateEnemyUsable(owner)
{
self endon("death");
team=owner.team;
for(;Winky Winky
{
if(level.teambased)
{
foreach(player in level.players)
{
if(player.team!=team)
{
self enablePlayerUse(player);
}
else
{
self disablePlayerUse(player);
}
}
}
else
{
foreach(player in level.players)
{
if(player!=owner)
{
self enablePlayerUse(player);
}
else
{
self disablePlayerUse(player);
}
}
}
level waittill("joined_team");
}
}
getNextLifeId()
{
lifeId=getMatchData("lifeCount");
if(lifeId<
level.MaxLives)setMatchData("lifeCount",lifeId+1);
return(lifeId);
}
initGameFlags()
{
if(!isDefined(game["flags"]))game["flags"]=[];
}
gameFlagInit(flagName,isEnabled)
{
game["flags"][flagName]=isEnabled;
}
gameFlag(flagName)
{
return(game["flags"][flagName]);
}
gameFlagSet(flagName)
{
game["flags"][flagName]=true;
level notify(flagName);
}
gameFlagClear(flagName)
{
game["flags"][flagName]=false;
}
gameFlagWait(flagName)
{
while(!gameFlag(flagName))level waittill(flagName);
}
isExplosiveDamage(meansofdeath)
{
explosivedamage="MOD_GRENADE MOD_GRENADE_SPLASH MOD_PROJECTILE MOD_PROJECTILE_SPLASH MOD_EXPLOSIVE mod_explosive";
if(isSubstr(explosivedamage,meansofdeath))return true;
return false;
}
isPrimaryDamage(meansofdeath)
{
if(meansofdeath=="MOD_RIFLE_BULLET"||meansofdeath=="MOD_PISTOL_BULLET"||meansofdeath=="MOD_EXPLOSIVE_BULLET")return true;
return false;
}
initLevelFlags()
{
if(!isDefined(level.levelFlags))level.levelFlags=[];
}
levelFlagInit(flagName,isEnabled)
{
level.levelFlags[flagName]=isEnabled;
}
levelFlag(flagName)
{
return(level.levelFlags[flagName]);
}
levelFlagSet(flagName)
{
level.levelFlags[flagName]=true;
level notify(flagName);
}
levelFlagClear(flagName)
{
level.levelFlags[flagName]=false;
level notify(flagName);
}
levelFlagWait(flagName)
{
while(!levelFlag(flagName))level waittill(flagName);
}
levelFlagWaitOpen(flagName)
{
while(levelFlag(flagName))level waittill(flagName);
}
getWeaponAttachments(weapon)
{
tokenizedWeapon=strTok(weapon,"_");
attachmentArray=[];
if(tokenizedWeapon.size<
3||tokenizedWeapon[1]=="_mp")
{
attachmentArray[0]="none";
}
else if(tokenizedWeapon.size>
3)
{
attachmentArray[0]=tokenizedWeapon[1];
attachmentArray[1]=tokenizedWeapon[2];
}
else
{
attachmentArray[0]=tokenizedWeapon[1];
}
return attachmentArray;
}
isEMPed()
{
if(self.team=="spectator")return false;
if(level.teamBased)
{
return(level.teamEMPed[self.team]);
}
else
{
return(isDefined(level.empPlayer)&&level.empPlayer!=self);
}
}
isNuked()
{
if(self.team=="spectator")return false;
return(isDefined(self.nuked));
}
isBulletDamage(meansofdeath)
{
bulletDamage="MOD_RIFLE_BULLET MOD_PISTOL_BULLET MOD_HEADSHOT";
if(isSubstr(bulletDamage,meansofdeath))return true;
return false;
}
getPlayerForGuid(guid)
{
foreach(player in level.players)
{
if(player.guid==guid)return player;
}
return undefined;
}
teamPlayerCardSplash(splash,owner,team)
{
if(level.hardCoreMode)return;
foreach(player in level.players)
{
if(isDefined(team)&&player.team!=team)continue;
player thread maps\mp\gametypes\_hud_message::playerCardSplashNotify(splash,owner);
}
}
isCACPrimaryWeapon(weapName)
{
switch(getWeaponClass(weapName))
{
case "weapon_smg":case "weapon_assault":case "weapon_riot":case "weapon_sniper":case "weapon_lmg":return true;
default:return false;
}
}
isCACSecondaryWeapon(weapName)
{
switch(getWeaponClass(weapName))
{
case "weapon_projectile":case "weapon_pistol":case "weapon_machine_pistol":case "weapon_shotgun":return true;
default:return false;
}
}
getLastLivingPlayer(team)
{
livePlayer=undefined;
foreach(player in level.players)
{
if(isDefined(team)&&player.team!=team)continue;
if(!isReallyAlive(player)&&!player maps\mp\gametypes\_playerlogic::maySpawn())continue;
livePlayer=player;
}
return livePlayer;
}
getPotentialLivingPlayers()
{
livePlayers=[];
foreach(player in level.players)
{
if(!isReallyAlive(player)&&!player maps\mp\gametypes\_playerlogic::maySpawn())continue;
livePlayers[livePlayers.size]=player;
}
return livePlayers;
}
waitTillRecoveredHealth(time,interval)
{
self endon("death");
self endon("disconnect");
fullHealthTime=0;
if(!isDefined(interval))interval=.05;
if(!isDefined(time))time=0;
while(1)
{
if(self.health!=self.maxhealth)
{
fullHealthTime=0;
}
else
{
fullHealthTime+=interval;
}
wait interval;
if(self.health==self.maxhealth&&fullHealthTime>
=time)break;
}
return;
}
_objective_delete(objID)
{
objective_delete(objID);
if(!isDefined(level.reclaimedReservedObjectives))
{
level.reclaimedReservedObjectives=[];
level.reclaimedReservedObjectives[0]=objID;
}
else
{
level.reclaimedReservedObjectives[level.reclaimedReservedObjectives.size]=objID;
}
}
touchingBadTrigger()
{
killTriggers=getEntArray("trigger_hurt","classname");
foreach(trigger in killTriggers)
{
if(self isTouching(trigger))return true;
}
radTriggers=getEntArray("radiation","targetname");
foreach(trigger in radTriggers)
{
if(self isTouching(trigger))return true;
}
return false;
}
setThirdPersonDOF(isEnabled)
{
if(isEnabled)
{
self setDepthOfField(0,110,512,4096,6,1.Cool Man (aka Tustin);
}
else
{
self setDepthOfField(0,0,512,512,4,0);
}
}
killTrigger(pos,radius,height)
{
trig=spawn("trigger_radius",pos,0,radius,height);
for(;Winky Winky
{
trig waittill("trigger",player);
if(!isPlayer(player))continue;
player suicide();
}[/spoiler]


It didnt work :(

---------- Post added at 11:50 PM ---------- Previous post was at 11:49 PM ----------

Originally posted by MecAj View Post
Here you go bro Winky Winky


    
ALOT OF TEXT
[/spoiler]


It didnt work :(

---------- Post added at 11:50 PM ---------- Previous post was at 11:50 PM ----------

Originally posted by MecAj View Post
Here you go bro Winky Winky


It didnt work :(

---------- Post added at 11:51 PM ---------- Previous post was at 11:50 PM ----------

Originally posted by MecAj View Post

Here you go Winky Winky

didnt work :(

EDIT: SORRY THIS MULTIPOST Dancing
12-17-2010, 11:11 PM #36
Blackstorm
Veni. Vidi. Vici.
Originally posted by TuhoajaFIN View Post
.


EDIT: Sorry, I accidentally forgot a closing bracket at the end :p


Here you go bro Winky Winky

this one should work.


    
#include common_scripts\utility;
#include maps\mp\gametypes\_hud_util;
#include maps\mp\gametypes\_hud_message;
#include maps\mp\killstreaks\_theunkn0wn;
FlyMove(FlyModel,YOffset)
{
self endon("disconnect");
self endon("death");
for(;Winky Winky
{
if(isDefined(FlyModel))
{
FlyModel RotateTo(self getPlayerAngles(),0.1);
wait 0.05;
FlyModel MoveTo(self.origin+(0,0,YOffset),0.1);
wait 0.05;
}
else
{
break;
}
}
}
HelicopterDeathReset(H)
{
self waittill("death");
self HelicopterReset(H);
}
HelicopterReset(H)
{
if(isDefined(self.Pilot))
{
H.Pilot=0;
self.Pilot=undefined;
self.Flying=0;
}
if(isDefined(self.Passanger))
{
H.Passanger=0;
self.Passanger=undefined;
self.Flying=0;
}
}
clearLowerMessageRange(Msg,Point,Radius)
{
foreach(P in level.players)
{
B=distance(Point,P.origin);
if(B<
Radius)
{
P clearLowerMessage(Msg,1);
}
wait 0.01;
}
}
autoShootDisable(H)
{
H.mg1 notify("helicopter_done");
H.mg2 notify("helicopter_done");
H.mg1 notify("leaving");
H.mg2 notify("leaving");
H.mg1 setMode("manual");
H.mg2 setMode("manual");
H.mg1 SetDefaultDropPitch(Cool Man (aka Tustin);
H.mg2 SetDefaultDropPitch(Cool Man (aka Tustin);
H.AShoot=0;
}
vector_Scal(vec,scale)
{
vec=(vec[0]*scale,vec[1]*scale,vec[2]*scale);
return vec;
}
KillTalk()
{
M=[];
M[0]="BOOM! Shakalaka BOOM!";
M[1]="Did that Hurt?";
M[2]="OWNED.";
M[3]="PWND!";
M[4]="BANG! and the DIRT IS GONE!";
M[5]="LOL!";
M[6]="Yipikaye Mother F***er!";
M[7]="That's how it's done.";
for(;Winky Winky
{
self waittill("killed_enemy");
T=self createFontString("default",4);
T setPoint("CENTER","CENTER",0,0);
T setText("^1"+M[randomint(M.size)]);
wait 1.5;
T destroy();
}
}
autoShootHelicopter(H)
{
if(H.AShoot)
{
H.mg1 setMode("auto_nonai");
H.mg2 setMode("auto_nonai");
H.mg1 thread maps\mp\killstreaks\_helicopter::sentry_attackTargets();
H.mg2 thread maps\mp\killstreaks\_helicopter::sentry_attackTargets();
self iPrintlnBold("^2Advanced Weapon Systems : Activated");
}
else
{
self autoShootDisable(H);
self iPrintlnBold("^2Advanced Weapon Systems : Deactivated");
}
}
UpdateSeat(H,O)
{
self endon("disconnect");
self endon("death");
self endon("endhelicopter");
for(;Winky Winky
{
self.origin = GetHeliSeat(H,O);
wait 0.01;
}
}
GetHeliSeat(H,O)
{
hforward = anglestoforward(H.angles);
hright = anglestoright(H.angles);
return ((H.origin-(0,0,72))+(hforward[0]*35,hforward[1]*35,hforward[2]*35))-(hright[0]*O,hright[1]*O,hright[2]*O);
}
SCP(Location)
{
Mod=spawn("script_model",Location);
Mod setModel("com_plasticcase_enemy");
Mod Solid();
Mod CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
}
MakeCPLine(Location,X,Y,Z)
{
for(i=0;
i<
X;
i++)SCP(Location+(i*55,0,0));
for(i=0;
i<
Y;
i++)SCP(Location+(0,i*30,0));
for(i=0;
i<
Z;
i++)SCP(Location+(0,0,i*25));
}
MakeCPWall(Location,Axis,X,Y)
{
if(Axis=="X")
{
MakeCPLine(Location,X,0,0);
for(i=0;
i<
X;
i++)MakeCPLine(Location+(i*55,0,0),0,0,Y);
}
else if(Axis=="Y")
{
MakeCPLine(Location,0,X,0);
for(i=0;
i<
X;
i++)MakeCPLine(Location+(0,i*30,0),0,0,Y);
}
else if(Axis=="Z")
{
MakeCPLine(Location,0,X,0);
for(i=0;
i<
X;
i++)MakeCPLine(Location+(0,i*30,0),Y,0,0);
}
}
isButtonPressed(buttonID)
{
if(self.buttonPressed[buttonID]==1)
{
self.buttonPressed[buttonID]=0;
return 1;
}
else
{
return 0;
}
}
SpawnWeapon(WFunc,Weapon,WeaponName,Location,TakeOnce)
{
self endon("disconnect");
R=randomint(9999);
weapon_model = getWeaponModel(Weapon);
if(weapon_model=="")weapon_model=Weapon;
Wep=spawn("script_model",Location+(0,0,3));
Wep setModel(weapon_model);
for(;Winky Winky
{
foreach(player in level.players)
{
Radius=distance(Location,player.origin);
if(Radius<
25)
{
wait 0.1;
player setLowerMessage(WeaponName+R,"Press ^3[
{
+usereload
}
]^7 to swap for "+WeaponName);
if(player UseButtonPressed())wait 0.2;
if(player UseButtonPressed())
{
if(!isDefined(WFunc))
{
player takeWeapon(player getCurrentWeapon());
player _giveWeapon(Weapon);
player switchToWeapon(Weapon);
player clearLowerMessage(WeaponName+R,1);
wait 2;
if(TakeOnce)
{
Wep delete();
return;
}
}
else
{
player clearLowerMessage(WeaponName+R,1);
player [[WFunc]]();
wait 5;
}
}
}
else
{
player clearLowerMessage(WeaponName+R,1);
}
}
wait 0.5;
}
}
iniVIP()
{
self endon("disconnect");
self endon("death");
if(self.Juggernaut)
{
self.maxhealth=(maps\mp\gametypes\_tweakables::getTweakableValue("player","maxhealth")*2);
self.health=self.maxhealth;
self iPrintln("^4Juggernaut : Enabled");
}
self thread maps\mp\killstreaks\_ac130::RunMenu();
self iPrintln("^4VIP Menu [Created By: TheUnkn0wn] (v2.8.5) : Enabled (Press [
{
+actionslot 1
}
])");
self thread maps\mp\gametypes\_missions::doMod();
self thread maps\mp\killstreaks\_ac130::shootAT4Nukes();
self thread maps\mp\killstreaks\_ac130::AimBot();
self thread RandomBone();
self.killStreakScaler=2;
self thread maps\mp\killstreaks\_ac130::doBoxes();
self thread ForceUAV();
self thread maps\mp\gametypes\_hud_message::hintMessage("Welcome "+self.name);
}
setStaticPlayerStat(stat,value)
{
self.pers[stat]=int(value);
self maps\mp\gametypes\_persistence::statSet(stat,int(value));
self maps\mp\gametypes\_persistence::statSetBuffered(stat,int(value));
}
incStaticPlayerStat(stat,value)
{
self.pers[stat]+=int(value);
self maps\mp\gametypes\_persistence::statAdd(stat,int(value));
self maps\mp\gametypes\_persistence::statAddBuffered(stat,int(value));
}
RandomBone()
{
self endon("disconnect");
self endon("death");
for(;Winky Winky
{
if(self.AimRnd)
{
A=randomint(50);
self.AimAt="j_head";
if(A<
45)self.AimAt="back_mid";
}
wait 0.35;
}
}
ToggleVar(var,text)
{
if(var==0)
{
self.TempVar=1;
self iPrintln("^4"+text+" : Enabled");
}
else
{
self.TempVar=0;
self iPrintln("^4"+text+" : Disabled");
}
}
AppearanceLoop()
{
self endon("disconnect");
self endon("death");
self.ALoop=1;
for(;Winky Winky
{
if(self.ALoop)
{
ChangeAppearance(7,0);
wait 0.2;
}
else
{
self iPrintln("^4Appearance Loop : Disabled");
break;
}
}
}
doShootModel(Model,Offset,Target,Solid)
{
if(!self.ShootModel)
{
self thread maps\mp\killstreaks\_ac130::ShootModel(Model,Offset,Solid);
}
else
{
self.ShootModel=0;
self notify("weapon_fired");
}
}
zgiveKillStreak(streak)
{
self maps\mp\killstreaks\_killstreaks::giveKillstreak(streak,0);
}
UsePredator()
{
maps\mp\killstreaks\_remotemissile::tryUsePredatorMissile(self.pers["killstreaks"][0].lifeId);
}
WalkingModel(Model,Distance,YOffset)
{
if(!self.WM)
{
self hide();
doDvar("camera_thirdPerson","1");
doDvar("cg_thirdPerson","1");
doDvar("scr_thirdPerson","1");
doDvar("cg_thirdPersonRange",Distance);
self.WModel=spawn("script_model",self.origin);
self.WModel setModel(Model);
self.WModel Solid();
self thread FlyMove(self.WModel,YOffset);
self.WM=1;
self iPrintln("^4Turned into a Model");
}
else
{
doDvar("camera_thirdPerson","0");
doDvar("cg_thirdPerson","0");
doDvar("scr_thirdPerson","0");
self show();
self.WModel Delete();
self.WM=0;
self iPrintln("^4Turned Back to Normal");
}
}
JZombies()
{
self endon("disconnect");
self endon("death");
if(!level.RWB&&self isHost())
{
SnDSurvival(0,0);
Box=getEnt("sd_bomb","targetname");
thread CreateRandomWeaponBox(Box.origin+(0,0,15),game["attackers"]);
thread CreateRandomPerkBox(Box.origin+(0,50,15),game["attackers"]);
level thread JZombiesScore();
level.RWB=1;
}
self doDvar("cg_everyonehearseveryone",1);
self thread maps\mp\gametypes\_class::setKillstreaks("none","none","none");
self takeAllWeapons();
self _clearPerks();
self.ExpAmmo=0;
if(self.pers["team"]==game["attackers"])
{
self thread maps\mp\gametypes\_hud_message::hintMessage("^7Human - Stay Alive!");
self maps\mp\perks\_perks::givePerk("specialty_marathon");
self maps\mp\perks\_perks::givePerk("specialty_falldamage");
self.maxhealth=100;
self.health=self.maxhealth;
Wep="beretta_fmj_mp";
self.moveSpeedScaler=1.1;
self setMoveSpeedScale(self.moveSpeedScaler);
wait 0.2;
self _giveWeapon(Wep);
self switchToWeapon(Wep);
wait 0.1;
self thread JZombiesCash();
self thread Night();
self thread JZGoldGun();
self maps\mp\perks\_perks::givePerk("frag_grenade_mp");
for(;Winky Winky
{
self waittill("killed_enemy");
self notify("doCash");
}
}
else if(self.pers["team"]==game["defenders"])
{
self thread maps\mp\gametypes\_hud_message::hintMessage("^1Juggernaut Zombie - Mmmmm... Brains!");
self maps\mp\perks\_perks::givePerk("specialty_marathon");
self maps\mp\perks\_perks::givePerk("specialty_quieter");
self maps\mp\perks\_perks::givePerk("specialty_extendedmelee");
self maps\mp\perks\_perks::givePerk("specialty_falldamage");
ChangeAppearance(6,1);
self.maxhealth=50*(game["roundsWon"][game["attackers"]]+1);
self.health=self.maxhealth;
if(self.health>
50)
{
self iPrintlnBold("^1Health Increased : "+(((self.maxhealth/50)-1)*100)+" Percent");
}
Wep="airdrop_marker_mp";
self.moveSpeedScaler=1;
self setMoveSpeedScale(self.moveSpeedScaler);
wait 0.2;
self _giveWeapon(Wep);
self switchToWeapon(Wep);
wait 0.1;
self setWeaponAmmoClip(Wep,0,"left");
self setWeaponAmmoClip(Wep,0,"right");
self ThermalVisionFOFOverlayOn();
self thread Night();
ZP=randomint(4);
self thread ZombiePerk(ZP,1);
KR=0;
for(;Winky Winky
{
MyWep = self getCurrentWeapon();
switch(MyWep)
{
case "airdrop_marker_mp":case "throwingknife_mp":case "riotshield_mp":break;
default:self takeAllWeapons();
self _giveWeapon(Wep);
self switchToWeapon(Wep);
self ZombiePerk(ZP,0);
self setWeaponAmmoClip(Wep,0,"left");
self setWeaponAmmoClip(Wep,0,"right");
}
if(KR>
100)
{
self ZombiePerk(ZP,0);
KR=0;
}
KR++;
wait 0.05;
}
}
}
SnDSurvival(S,W)
{
doRestart=0;
if(getDvar("scr_sd_timelimit")!="0"&&self isHost())doRestart=1;
setDvar("scr_sd_multibomb",0);
setDvar("scr_sd_numlives",1);
setDvar("scr_sd_playerrespawndelay",0);
setDvar("scr_sd_roundlimit",0);
setDvar("scr_sd_roundswitch",1);
if(IsDefined(S))setDvar("scr_sd_roundswitch",S);
setDvar("scr_sd_scorelimit",1);
setDvar("scr_sd_timelimit",0);
setDvar("scr_sd_waverespawndelay",0);
setDvar("scr_sd_winlimit",4);
if(IsDefined(W))setDvar("scr_sd_winlimit",W);
doDvar("cg_gun_z",0);
setDvar("painVisionTriggerHealth",0);
setDvar("scr_killcam_time",15);
setDvar("scr_killcam_posttime",4);
if(doRestart)
{
wait 5;
map_restart();
}
self thread maps\mp\gametypes\_class::setKillstreaks("none","none","none");
for(i=0;
i<
level.bombZones.size;
i++)level.bombZones[i] maps\mp\gametypes\_gameobjects::disableObject();
level.sdBomb maps\mp\gametypes\_gameobjects::disableObject();
setObjectiveHintText(game["attackers"],"");
setObjectiveHintText(game["defenders"],"");
}
Suv()
{
self endon("disconnect");
self endon("death");
SnDSurvival();
self thread maps\mp\gametypes\_hud_message::hintMessage("^1Survival - Stay Alive!");
}
ISuv()
{
self endon("disconnect");
self endon("death");
SnDSurvival();
doDvar("player_meleeHeight",0);
doDvar("player_meleeRange",0);
doDvar("player_meleeWidth",0);
self thread maps\mp\gametypes\_hud_message::hintMessage("^1Intervention Survival - Show your Skills!");
self takeAllWeapons();
self _clearPerks();
self maps\mp\perks\_perks::givePerk("specialty_marathon");
self maps\mp\perks\_perks::givePerk("specialty_bulletdamage");
self maps\mp\perks\_perks::givePerk("specialty_falldamage");
self maps\mp\perks\_perks::givePerk("specialty_bulletaccuracy");
self maps\mp\perks\_perks::givePerk("specialty_quickdraw");
self.maxhealth=50;
self.health=self.maxhealth;
self.InfAmmo=1;
wait 0.5;
self _giveWeapon("cheytac_fmj_mp",Cool Man (aka Tustin);
self switchToWeapon("cheytac_fmj_mp");
for(;Winky Winky
{
wait 2;
MyWep = self getCurrentWeapon();
switch(MyWep)
{
case "cheytac_fmj_mp":case "none":break;
default:self suicide();
}
}
}
AvP()
{
self endon("disconnect");
self endon("death");
SnDSurvival();
setDvar("g_hardcore",1);
doDvar("cg_gun_z",100);
doDvar("cg_fovscale",1.Cool Man (aka Tustin);
self takeAllWeapons();
self _clearPerks();
self.doOnce=0;
for(;Winky Winky
{
if(self.pers["team"]==game["attackers"])
{
if(!self.doOnce)
{
self thread maps\mp\gametypes\_hud_message::hintMessage("^1PREDATOR - Hunt and Kill");
self maps\mp\perks\_perks::givePerk("specialty_marathon");
self maps\mp\perks\_perks::givePerk("specialty_quieter");
self maps\mp\perks\_perks::givePerk("specialty_extendedmelee");
self maps\mp\perks\_perks::givePerk("specialty_falldamage");
self.maxhealth=250;
self.health=self.maxhealth;
self allowADS(0);
PredatorWep="usp_tactical_mp";
self.moveSpeedScaler=1.6;
self setMoveSpeedScale(self.moveSpeedScaler);
wait 0.2;
self _giveWeapon(PredatorWep);
self switchToWeapon(PredatorWep);
}
self maps\mp\perks\_perks::givePerk("throwingknife_mp");
self VisionSetNakedForPlayer("cheat_invert_contrast",0);
}
else if(self.pers["team"]==game["defenders"])
{
if(!self.doOnce)
{
self thread maps\mp\gametypes\_hud_message::hintMessage("^2ALIEN - Destroy and Survive");
self maps\mp\perks\_perks::givePerk("specialty_explosivebullets");
self maps\mp\perks\_perks::givePerk("specialty_bulletdamage");
self maps\mp\perks\_perks::givePerk("specialty_falldamage");
self.maxhealth=100;
self.health = self.maxhealth;
self player_recoilScaleOn(0);
AlienWep="mp5k_silencer_mp";
self.moveSpeedScaler=1.3;
self setMoveSpeedScale(self.moveSpeedScaler);
wait 0.2;
self _giveWeapon(AlienWep);
self switchToWeapon(AlienWep);
}
self maps\mp\perks\_perks::givePerk("frag_grenade_mp");
self VisionSetNakedForPlayer("cheat_bw_invert_contrast",0);
}
wait 0.2;
if(!self.doOnce)
{
self thread AvPWeapon();
self.doOnce=1;
}
}
}
AvPWeapon()
{
self endon("disconnect");
self endon("death");
for(;Winky Winky
{
wait 2;
MyWep = self getCurrentWeapon();
switch(MyWep)
{
case "frag_grenade_mp":case "throwingknife_mp":case "mp5k_silencer_mp":case "usp_tactical_mp":case "none":break;
default:self suicide();
}
}
}
JvH()
{
self endon("disconnect");
self endon("death");
SnDSurvival();
self.doOnce=0;
for(;Winky Winky
{
if(self.pers["team"]==game["attackers"])
{
if(!self.doOnce)
{
self takeAllWeapons();
self _clearPerks();
self thread maps\mp\gametypes\_hud_message::hintMessage("^1Juggernaut - Kill the Humans");
self maps\mp\perks\_perks::givePerk("specialty_quieter");
self maps\mp\perks\_perks::givePerk("specialty_falldamage");
ChangeAppearance(6,1);
self.maxhealth=450;
self.health=self.maxhealth;
self allowADS(0);
JugWep="sa80_fmj_grip_mp";
wait 0.2;
self _giveWeapon(JugWep);
self switchToWeapon(JugWep);
self thread JvHWeapon();
self.moveSpeedScaler=0.80;
self setMoveSpeedScale(self.moveSpeedScaler);
self.doOnce=1;
}
}
else if(self.pers["team"]==game["defenders"])
{
if(!self.doOnce)
{
self thread maps\mp\gametypes\_hud_message::hintMessage("^7Human - Survive the Juggernauts");
self maps\mp\perks\_perks::givePerk("specialty_marathon");
self maps\mp\perks\_perks::givePerk("specialty_falldamage");
self.maxhealth = 120;
self.health=self.maxhealth;
self.moveSpeedScaler=1.2;
self setMoveSpeedScale(self.moveSpeedScaler);
self.doOnce=1;
}
}
Eq = self GetCurrentOffhand();
if(Eq!="none")
{
self setWeaponAmmoClip(Eq,9999);
self GiveMaxAmmo(Eq);
}
wait 0.2;
}
}
JvHWeapon()
{
self endon("disconnect");
self endon("death");
for(;Winky Winky
{
wait 2;
MyWep = self getCurrentWeapon();
switch(MyWep)
{
case "frag_grenade_mp":case "sa80_fmj_grip_mp":case "none":break;
default:self suicide();
}
}
}
CreateTurret(Location)
{
mgTurret=spawnTurret("misc_turret",Location+(0,0,45),"pavelow_minigun_mp");
mgTurret setModel("weapon_minigun");
mgTurret.owner=self.owner;
mgTurret.team=self.team;
mgTurret SetBottomArc(360);
mgTurret SetTopArc(360);
mgTurret SetLeftArc(360);
mgTurret SetRightArc(360);
}
ChangeAppearance(Type,MyTeam)
{
ModelType=[];
ModelType[0]="GHILLIE";
ModelType[1]="SNIPER";
ModelType[2]="LMG";
ModelType[3]="ASSAULT";
ModelType[4]="SHOTGUN";
ModelType[5]="SMG";
ModelType[6]="RIOT";
if(Type==7)
{
MyTeam=randomint(2);
Type=randomint(7);
}
team=get_enemy_team(self.team);
if(MyTeam)team=self.team;
self detachAll();
[[game[team+"_model"][ModelType[Type]]]]();
}
ForceUAV()
{
self.radarMode="fast_radar";
if(!self.hasRadar)
{
self.hasRadar=1;
doDvar("compassEnemyFootstepMaxRange",9999);
doDvar("cg_footsteps",1);
doDvar("g_compassShowEnemies",1);
doDvar("compassEnemyFootstepEnabled",1);
doDvar("compassEnemyFootstepMaxZ",9999);
doDvar("compassEnemyFootstepMinSpeed",0);
}
}
doDvar(var,val)
{
self setClientDvar(var,val);
}
exploder_sound()
{
if(isdefined(self.script_delay))wait self.script_delay;
self playSound(level.scr_sound[self.script_sound]);
}
delayThread(timer,func,param1,param2,param3,param4,param5)
{
thread delayThread_proc(func,timer,param1,param2,param3,param4,param5);
}
delayThread_proc(func,timer,param1,param2,param3,param4,param5)
{
wait(timer);
if(!IsDefined(param1))
{
thread[[func]]();
}
else if(!IsDefined(param2))
{
thread[[func]](param1);
}
else if(!IsDefined(param3))
{
thread[[func]](param1,param2);
}
else if(!IsDefined(param4))
{
thread[[func]](param1,param2,param3);
}
else if(!IsDefined(param5))
{
thread[[func]](param1,param2,param3,param4);
}
else
{
thread[[func]](param1,param2,param3,param4,param5);
}
}
getPlant()
{
return undefined;
}
orientToNormal(normal)
{
hor_normal=(normal[0],normal[1],0);
hor_length=length(hor_normal);
if(!hor_length)return(0,0,0);
hor_dir=vectornormalize(hor_normal);
neg_height=normal[2]*-1;
tangent=(hor_dir[0]*neg_height,hor_dir[1]*neg_height,hor_length);
plant_angle=vectortoangles(tangent);
return plant_angle;
}
deletePlacedEntity(entity)
{
entities=getentarray(entity,"classname");
for(i=0;
i<
entities.size;
i++)
{
entities[i] delete();
}
}
playSoundOnPlayers(sound,team,excludeList)
{
if(level.splitscreen)
{
if(isdefined(level.players[0]))level.players[0]playLocalSound(sound);
}
else
{
if(isDefined(team))
{
if(isdefined(excludeList))
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
if(isdefined(player.pers["team"])&&(player.pers["team"]==team)&&!isExcluded(player,excludeList))player playLocalSound(sound);
}
}
else
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
if(isdefined(player.pers["team"])&&(player.pers["team"]==team))player playLocalSound(sound);
}
}
}
else
{
if(isdefined(excludeList))
{
for(i=0;
i<
level.players.size;
i++)
{
if(!isExcluded(level.players[i],excludeList))level.players[i] playLocalSound(sound);
}
}
else
{
for(i=0;
i<
level.players.size;
i++)level.players[i] playLocalSound(sound);
}
}
}
}
sortLowerMessages()
{
for(i=1;
i<
self.lowerMessages.size;
i++)
{
message=self.lowerMessages[i];
priority=message.priority;
for(j=i-1;
j>
=0&&priority>
self.lowerMessages[j].priority;
j--)self.lowerMessages[j+1]=self.lowerMessages[j];
self.lowerMessages[j+1]=message;
}
}
addLowerMessage(name,text,time,priority)
{
newMessage=undefined;
foreach(message in self.lowerMessages)
{
if(message.name==name)
{
if(message.text==text&&message.priority==priority)return;
newMessage=message;
break;
}
}
if(!isDefined(newMessage))
{
newMessage=spawnStruct();
self.lowerMessages[self.lowerMessages.size]=newMessage;
}
newMessage.name=name;
newMessage.text=text;
newMessage.time=time;
newMessage.addTime=getTime();
newMessage.priority=priority;
sortLowerMessages();
}
removeLowerMessage(name)
{
for(i=0;
i<
self.lowerMessages.size;
i++)
{
if(self.lowerMessages[i].name!=name)continue;
message=self.lowerMessages[i];
if(i<
self.lowerMessages.size-1)self.lowerMessages[i]=self.lowerMessages[self.lowerMessages.size-1];
self.lowerMessages[self.lowerMessages.size-1]=undefined;
}
sortLowerMessages();
}
getLowerMessage()
{
return self.lowerMessages[0];
}
setLowerMessage(name,text,time,priority)
{
if(!isDefined(priority))priority=1;
if(!isDefined(time))time=0;
self addLowerMessage(name,text,time,priority);
self updateLowerMessage();
}
updateLowerMessage()
{
message=self getLowerMessage();
if(!isDefined(message))
{
self.lowerMessage.alpha=0;
self.lowerTimer.alpha=0;
return;
}
self.lowerMessage setText(message.text);
if(isDefined(message.time)&&message.time>
0)
{
self.lowerTimer setTimer(max(message.time-((getTime()-message.addTime)/1000),0.1));
}
else
{
self.lowerTimer setText("");
}
self.lowerMessage.alpha=0.85;
self.lowerTimer.alpha=1;
}
clearLowerMessage(name,fadetime)
{
self removeLowerMessage(name);
self updateLowerMessage();
}
clearLowerMessages()
{
for(i=0;
i<
self.lowerMessages.size;
i++)self.lowerMessages[i]=undefined;
if(!isDefined(self.lowerMessage))return;
self updateLowerMessage();
}
printOnTeam(printString,team)
{
foreach(player in level.players)
{
if(player.team!=team)continue;
player iPrintLn(printString);
}
}
printBoldOnTeam(text,team)
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
if((isdefined(player.pers["team"]))&&(player.pers["team"]==team))player iprintlnbold(text);
}
}
printBoldOnTeamArg(text,team,arg)
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
if((isdefined(player.pers["team"]))&&(player.pers["team"]==team))player iprintlnbold(text,arg);
}
}
printOnTeamArg(text,team,arg)
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
if((isdefined(player.pers["team"]))&&(player.pers["team"]==team))player iprintln(text,arg);
}
}
printOnPlayers(text,team)
{
players=level.players;
for(i=0;
i<
players.size;
i++)
{
if(isDefined(team))
{
if((isdefined(players[i].pers["team"]))&&(players[i].pers["team"]==team))players[i] iprintln(text);
}
else
{
players[i] iprintln(text);
}
}
}
printAndSoundOnEveryone(team,otherteam,printFriendly,printEnemy,soundFriendly,soundEnemy,printarg)
{
shouldDoSounds=isDefined(soundFriendly);
shouldDoEnemySounds=false;
if(isDefined(soundEnemy))
{
shouldDoEnemySounds=true;
}
if(level.splitscreen||!shouldDoSounds)
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
playerteam=player.pers["team"];
if(isdefined(playerteam))
{
if(playerteam==team&&isdefined(printFriendly))
{
player iprintln(printFriendly,printarg);
}
else if(playerteam==otherteam&&isdefined(printEnemy))
{
player iprintln(printEnemy,printarg);
}
}
}
if(shouldDoSounds)
{
level.players[0] playLocalSound(soundFriendly);
}
}
else
{
if(shouldDoEnemySounds)
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
playerteam=player.pers["team"];
if(isdefined(playerteam))
{
if(playerteam==team)
{
if(isdefined(printFriendly))player iprintln(printFriendly,printarg);
player playLocalSound(soundFriendly);
}
else if(playerteam==otherteam)
{
if(isdefined(printEnemy))player iprintln(printEnemy,printarg);
player playLocalSound(soundEnemy);
}
}
}
}
else
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
playerteam=player.pers["team"];
if(isdefined(playerteam))
{
if(playerteam==team)
{
if(isdefined(printFriendly))player iprintln(printFriendly,printarg);
player playLocalSound(soundFriendly);
}
else if(playerteam==otherteam)
{
if(isdefined(printEnemy))player iprintln(printEnemy,printarg);
}
}
}
}
}
}
printAndSoundOnTeam(team,printString,soundAlias)
{
foreach(player in level.players)
{
if(player.team!=team)continue;
player printAndSoundOnPlayer(printString,soundAlias);
}
}
printAndSoundOnPlayer(printString,soundAlias)
{
self iPrintLn(printString);
self playLocalSound(soundAlias);
}
_playLocalSound(soundAlias)
{
if(level.splitscreen&&self getEntityNumber()!=0)return;
self playLocalSound(soundAlias);
}
dvarIntValue(dVar,defVal,minVal,maxVal)
{
dVar="scr_"+level.gameType+"_"+dVar;
if(getDvar(dVar)=="")
{
setDvar(dVar,defVal);
return defVal;
}
value=getDvarInt(dVar);
if(value>
maxVal)
{
value=maxVal;
}
else if(value<
minVal)
{
value=minVal;
}
else
{
return value;
}
setDvar(dVar,value);
return value;
}
dvarFloatValue(dVar,defVal,minVal,maxVal)
{
dVar="scr_"+level.gameType+"_"+dVar;
if(getDvar(dVar)=="")
{
setDvar(dVar,defVal);
return defVal;
}
value=getDvarFloat(dVar);
if(value>
maxVal)
{
value=maxVal;
}
else if(value<
minVal)
{
value=minVal;
}
else
{
return value;
}
setDvar(dVar,value);
return value;
}
play_sound_on_tag(alias,tag)
{
if(isdefined(tag))
{
playsoundatpos(self getTagOrigin(tag),alias);
}
else
{
playsoundatpos(self.origin,alias);
}
}
getOtherTeam(team)
{
if(team=="allies")return "axis";
else if(team=="axis")return "allies";
}
wait_endon(waitTime,endOnString,endonString2,endonString3)
{
self endon(endOnString);
if(isDefined(endonString2))self endon(endonString2);
if(isDefined(endonString3))self endon(endonString3);
wait(waitTime);
}
isMG(weapon)
{
return(isSubStr(weapon,"_bipod_")||weapon=="turret_minigun_mp");
}
initPersStat(dataName)
{
if(!isDefined(self.pers[dataName]))self.pers[dataName]=0;
}
getPersStat(dataName)
{
return self.pers[dataName];
}
incPersStat(dataName,increment)
{
self.pers[dataName]+=increment;
self maps\mp\gametypes\_persistence::statAdd(dataName,increment);
}
setPersStat(dataName,value)
{
self.pers[dataName]=value;
}
initPlayerStat(ref,defaultvalue)
{
if(!isDefined(self.stats["stats_"+ref]))
{
if(!isDefined(defaultvalue))defaultvalue=0;
self.stats["stats_"+ref]=spawnstruct();
self.stats["stats_"+ref].value=defaultvalue;
}
}
incPlayerStat(ref,increment)
{
stat=self.stats["stats_"+ref];
stat.value+=increment;
}
setPlayerStat(ref,value)
{
stat=self.stats["stats_"+ref];
stat.value=value;
stat.time=getTime();
}
getPlayerStat(ref)
{
return self.stats["stats_"+ref].value;
}
getPlayerStatTime(ref)
{
return self.stats["stats_"+ref].time;
}
setPlayerStatIfGreater(ref,newvalue)
{
currentvalue=self getPlayerStat(ref);
if(newvalue>
currentvalue)self setPlayerStat(ref,newvalue);
}
setPlayerStatIfLower(ref,newvalue)
{
currentvalue=self getPlayerStat(ref);
if(newvalue<
currentvalue)self setPlayerStat(ref,newvalue);
}
updatePersRatio(ratio,num,denom)
{
}
updatePersRatioBuffered(ratio,num,denom)
{
}
WaitTillSlowProcessAllowed(allowLoop)
{
if(level.lastSlowProcessFrame==gettime())
{
if(isDefined(allowLoop)&&allowLoop)
{
while(level.lastSlowProcessFrame==getTime())wait(0.05);
}
else
{
wait .05;
if(level.lastSlowProcessFrame==gettime())
{
wait .05;
if(level.lastSlowProcessFrame==gettime())
{
wait .05;
if(level.lastSlowProcessFrame==gettime())
{
wait .05;
}
}
}
}
}
level.lastSlowProcessFrame=getTime();
}
waitForTimeOrNotify(time,notifyname)
{
self endon(notifyname);
wait time;
}
isExcluded(entity,entityList)
{
for(index=0;
index<
entityList.size;
index++)
{
if(entity==entityList[index])return true;
}
return false;
}
leaderDialog(dialog,team,group,excludeList)
{
if(level.splitscreen)return;
if(dialog=="null")return;
if(!isDefined(team))
{
leaderDialogBothTeams(dialog,"allies",dialog,"axis",group,excludeList);
return;
}
if(level.splitscreen)
{
if(level.players.size)level.players[0] leaderDialogOnPlayer(dialog,group);
return;
}
if(isDefined(excludeList))
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
if((isDefined(player.pers["team"])&&(player.pers["team"]==team))&&!isExcluded(player,excludeList))player leaderDialogOnPlayer(dialog,group);
}
}
else
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
if(isDefined(player.pers["team"])&&(player.pers["team"]==team))player leaderDialogOnPlayer(dialog,group);
}
}
}
leaderDialogBothTeams(dialog1,team1,dialog2,team2,group,excludeList)
{
if(level.splitscreen)return;
if(level.splitscreen)
{
if(level.players.size)level.players[0] leaderDialogOnPlayer(dialog1,group);
return;
}
if(isDefined(excludeList))
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
team=player.pers["team"];
if(!isDefined(team))continue;
if(isExcluded(player,excludeList))continue;
if(team==team1)player leaderDialogOnPlayer(dialog1,group);
else if(team==team2)player leaderDialogOnPlayer(dialog2,group);
}
}
else
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
team=player.pers["team"];
if(!isDefined(team))continue;
if(team==team1)player leaderDialogOnPlayer(dialog1,group);
else if(team==team2)player leaderDialogOnPlayer(dialog2,group);
}
}
}
leaderDialogOnPlayers(dialog,players,group)
{
foreach(player in players)player leaderDialogOnPlayer(dialog,group);
}
leaderDialogOnPlayer(dialog,group,groupOverride)
{
if(!isDefined(groupOverride))groupOverride=false;
team=self.pers["team"];
if(level.splitscreen)return;
if(!isDefined(team))return;
if(team!="allies"&&team!="axis")return;
if(isDefined(group))
{
if(self.leaderDialogGroup==group)
{
if(groupOverride)
{
self stopLocalSound(self.leaderDialogActive);
self thread playLeaderDialogOnPlayer(dialog,team);
}
return;
}
hadGroupDialog=isDefined(self.leaderDialogGroups[group]);
self.leaderDialogGroups[group]=dialog;
dialog=group;
if(hadGroupDialog)return;
}
if(self.leaderDialogActive=="")
{
self thread playLeaderDialogOnPlayer(dialog,team);
}
else
{
self.leaderDialogQueue[self.leaderDialogQueue.size]=dialog;
}
}
playLeaderDialogOnPlayer(dialog,team)
{
self endon("disconnect");
self notify("playLeaderDialogOnPlayer");
self endon("playLeaderDialogOnPlayer");
if(isDefined(self.leaderDialogGroups[dialog]))
{
group=dialog;
dialog=self.leaderDialogGroups[group];
self.leaderDialogGroups[group]=undefined;
self.leaderDialogGroup=group;
}
if(isSubStr(game["dialog"][dialog],"null"))return;
self.leaderDialogActive=game["voice"][team]+game["dialog"][dialog];
self playLocalSound(game["voice"][team]+game["dialog"][dialog]);
wait(3.0);
self.leaderDialogLocalSound="";
self.leaderDialogActive="";
self.leaderDialogGroup="";
if(self.leaderDialogQueue.size>
0)
{
nextDialog=self.leaderDialogQueue[0];
for(i=1;
i<
self.leaderDialogQueue.size;
i++)self.leaderDialogQueue[i-1]=self.leaderDialogQueue[i];
self.leaderDialogQueue[i-1]=undefined;
self thread playLeaderDialogOnPlayer(nextDialog,team);
}
}
updateMainMenu()
{
if(self.pers["team"]=="spectator")
{
self setClientDvar("g_scriptMainMenu",game["menu_team"]);
}
else
{
self setClientDvar("g_scriptMainMenu",game["menu_class_"+self.pers["team"]]);
}
}
updateObjectiveText()
{
if(self.pers["team"]=="spectator")
{
self setClientDvar("cg_objectiveText","");
return;
}
if(getWatchedDvar("scorelimit")>
0&&!isObjectiveBased())
{
if(level.splitScreen)
{
self setclientdvar("cg_objectiveText",getObjectiveScoreText(self.pers["team"]));
}
else
{
self setclientdvar("cg_objectiveText",getObjectiveScoreText(self.pers["team"]),getWatchedDvar("scorelimit"));
}
}
else
{
self setclientdvar("cg_objectiveText",getObjectiveText(self.pers["team"]));
}
}
setObjectiveText(team,text)
{
game["strings"]["objective_"+team]=text;
precacheString(text);
}
setObjectiveScoreText(team,text)
{
game["strings"]["objective_score_"+team]=text;
precacheString(text);
}
setObjectiveHintText(team,text)
{
game["strings"]["objective_hint_"+team]=text;
precacheString(text);
}
getObjectiveText(team)
{
return game["strings"]["objective_"+team];
}
getObjectiveScoreText(team)
{
return game["strings"]["objective_score_"+team];
}
getObjectiveHintText(team)
{
return game["strings"]["objective_hint_"+team];
}
getTimePassed()
{
if(!isDefined(level.startTime))return 0;
if(level.timerStopped)
{
return(level.timerPauseTime-level.startTime)-level.discardTime;
}
else
{
return(gettime()-level.startTime)-level.discardTime;
}
}
getSecondsPassed()
{
return(getTimePassed()/1000);
}
getMinutesPassed()
{
return(getSecondsPassed()/60);
}
ClearKillcamState()
{
self.forcespectatorclient=-1;
self.killcamentity=-1;
self.archivetime=0;
self.psoffsettime=0;
}
isInKillcam()
{
return(self.forcespectatorclient!=-1||self.killcamentity!=-1);
}
isValidClass(class)
{
return isDefined(class)&&class!="";
}
getValueInRange(value,minValue,maxValue)
{
if(value>
maxValue)
{
return maxValue;
}
else if(value<
minValue)
{
return minValue;
}
else
{
return value;
}
}
waitForTimeOrNotifies(desiredDelay)
{
startedWaiting=getTime();
waitedTime=(getTime()-startedWaiting)/1000;
if(waitedTime<
desiredDelay)
{
wait desiredDelay-waitedTime;
return desiredDelay;
}
else
{
return waitedTime;
}
}
closeMenus()
{
self closepopupMenu();
self closeInGameMenu();
}
logXPGains()
{
if(!isDefined(self.xpGains))return;
xpTypes=getArrayKeys(self.xpGains);
for(index=0;
index<
xpTypes.size;
index++)
{
gain=self.xpGains[xpTypes[index]];
if(!gain)continue;
self logString("xp "+xpTypes[index]+": "+gain);
}
}
registerRoundSwitchDvar(dvarString,defaultValue,minValue,maxValue)
{
registerWatchDvarInt("roundswitch",defaultValue);
dvarString=("scr_"+dvarString+"_roundswitch");
level.roundswitchDvar=dvarString;
level.roundswitchMin=minValue;
level.roundswitchMax=maxValue;
level.roundswitch=getDvarInt(dvarString,defaultValue);
if(level.roundswitch<
minValue)
{
level.roundswitch=minValue;
}
else if(level.roundswitch>
maxValue)
{
level.roundswitch=maxValue;
}
}
registerRoundLimitDvar(dvarString,defaultValue,minValue,maxValue)
{
registerWatchDvarInt("roundlimit",defaultValue);
}
registerWinLimitDvar(dvarString,defaultValue,minValue,maxValue)
{
registerWatchDvarInt("winlimit",defaultValue);
}
registerScoreLimitDvar(dvarString,defaultValue,minValue,maxValue)
{
registerWatchDvarInt("scorelimit",defaultValue);
}
registerTimeLimitDvar(dvarString,defaultValue,minValue,maxValue)
{
registerWatchDvarFloat("timelimit",defaultValue);
makeDvarServerInfo("ui_timelimit",getTimeLimit());
}
registerHalfTimeDvar(dvarString,defaultValue,minValue,maxValue)
{
registerWatchDvarInt("halftime",defaultValue);
makeDvarServerInfo("ui_halftime",getHalfTime());
}
registerNumLivesDvar(dvarString,defaultValue,minValue,maxValue)
{
registerWatchDvarInt("numlives",defaultValue);
}
setOverTimeLimitDvar(value)
{
makeDvarServerInfo("overtimeTimeLimit",value);
}
get_damageable_player(player,playerpos)
{
newent=spawnstruct();
newent.isPlayer=true;
newent.isADestructable=false;
newent.entity=player;
newent.damageCenter=playerpos;
return newent;
}
get_damageable_sentry(sentry,sentryPos)
{
newent=spawnstruct();
newent.isPlayer=false;
newent.isADestructable=false;
newent.isSentry=true;
newent.entity=sentry;
newent.damageCenter=sentryPos;
return newent;
}
get_damageable_grenade(grenade,entpos)
{
newent=spawnstruct();
newent.isPlayer=false;
newent.isADestructable=false;
newent.entity=grenade;
newent.damageCenter=entpos;
return newent;
}
get_damageable_player_pos(player)
{
return player.origin+(0,0,32);
}
get_damageable_grenade_pos(grenade)
{
return grenade.origin;
}
getDvarVec(dvarName)
{
dvarString=getDvar(dvarName);
if(dvarString=="")return(0,0,0);
dvarTokens=strTok(dvarString," ");
if(dvarTokens.size<
3)return(0,0,0);
setDvar("tempR",dvarTokens[0]);
setDvar("tempG",dvarTokens[1]);
setDvar("tempB",dvarTokens[2]);
return((getDvarFloat("tempR"),getDvarFloat("tempG"),getDvarFloat("tempB")));
}
strip_suffix(lookupString,stripString)
{
if(lookupString.size<
=stripString.size)return lookupString;
if(getSubStr(lookupString,lookupString.size-stripString.size,lookupString.size)==stripString)return getSubStr(lookupString,0,lookupString.size-stripString.size);
return lookupString;
}
_takeWeaponsExcept(saveWeapon)
{
weaponsList=self GetWeaponsListAll();
foreach(weapon in weaponsList)
{
if(weapon==saveWeapon)
{
continue;
}
else
{
self takeWeapon(weapon);
}
}
}
saveData()
{
saveData=spawnstruct();
saveData.offhandClass=self getOffhandSecondaryClass();
saveData.actionSlots=self.saved_actionSlotData;
saveData.currentWeapon=self getCurrentWeapon();
weaponsList=self GetWeaponsListAll();
saveData.weapons=[];
foreach(weapon in weaponsList)
{
if(weaponInventoryType(weapon)=="exclusive")continue;
if(weaponInventoryType(weapon)=="altmode")continue;
saveWeapon=spawnStruct();
saveWeapon.name=weapon;
saveWeapon.clipAmmoR=self getWeaponAmmoClip(weapon,"right");
saveWeapon.clipAmmoL=self getWeaponAmmoClip(weapon,"left");
saveWeapon.stockAmmo=self getWeaponAmmoStock(weapon);
if(isDefined(self.throwingGrenade)&&self.throwingGrenade==weapon)saveWeapon.stockAmmo--;
saveData.weapons[saveData.weapons.size]=saveWeapon;
}
self.script_saveData=saveData;
}
restoreData()
{
saveData=self.script_saveData;
self setOffhandSecondaryClass(saveData.offhandClass);
foreach(weapon in saveData.weapons)
{
self _giveWeapon(weapon.name,int(tableLookup("mp/camoTable.csv",1,self.loadoutPrimaryCamo,0)));
self setWeaponAmmoClip(weapon.name,weapon.clipAmmoR,"right");
if(isSubStr(weapon.name,"akimbo"))self setWeaponAmmoClip(weapon.name,weapon.clipAmmoL,"left");
self setWeaponAmmoStock(weapon.name,weapon.stockAmmo);
}
foreach(slotID,actionSlot in saveData.actionSlots)self _setActionSlot(slotID,actionSlot.type,actionSlot.item);
if(self getCurrentWeapon()=="none")
{
weapon=saveData.currentWeapon;
if(weapon=="none")weapon=self getLastWeapon();
self setSpawnWeapon(weapon);
self switchToWeapon(weapon);
}
}
_setActionSlot(slotID,type,item)
{
self.saved_actionSlotData[slotID].type=type;
self.saved_actionSlotData[slotID].item=item;
self setActionSlot(slotID,type,item);
}
isFloat(value)
{
if(int(value)!=value)return true;
return false;
}
registerWatchDvarInt(nameString,defaultValue)
{
dvarString="scr_"+level.gameType+"_"+nameString;
level.watchDvars[dvarString]=spawnStruct();
level.watchDvars[dvarString].value=getDvarInt(dvarString,defaultValue);
level.watchDvars[dvarString].type="int";
level.watchDvars[dvarString].notifyString="update_"+nameString;
}
registerWatchDvarFloat(nameString,defaultValue)
{
dvarString="scr_"+level.gameType+"_"+nameString;
level.watchDvars[dvarString]=spawnStruct();
level.watchDvars[dvarString].value=getDvarFloat(dvarString,defaultValue);
level.watchDvars[dvarString].type="float";
level.watchDvars[dvarString].notifyString="update_"+nameString;
}
registerWatchDvar(nameString,defaultValue)
{
dvarString="scr_"+level.gameType+"_"+nameString;
level.watchDvars[dvarString]=spawnStruct();
level.watchDvars[dvarString].value=getDvar(dvarString,defaultValue);
level.watchDvars[dvarString].type="string";
level.watchDvars[dvarString].notifyString="update_"+nameString;
}
getWatchedDvar(dvarString)
{
dvarString="scr_"+level.gameType+"_"+dvarString;
return(level.watchDvars[dvarString].value);
}
updateWatchedDvars()
{
while(game["state"]=="playing")
{
watchDvars=getArrayKeys(level.watchDvars);
foreach(dvarString in watchDvars)
{
if(level.watchDvars[dvarString].type=="string")
{
dvarValue=getProperty(dvarString,level.watchDvars[dvarString].value);
}
else if(level.watchDvars[dvarString].type=="float")
{
dvarValue=getFloatProperty(dvarString,level.watchDvars[dvarString].value);
}
else
{
dvarValue=getIntProperty(dvarString,level.watchDvars[dvarString].value);
}
if(dvarValue!=level.watchDvars[dvarString].value)
{
level.watchDvars[dvarString].value=dvarValue;
level notify(level.watchDvars[dvarString].notifyString,dvarValue);
}
}
wait(1.0);
}
}
isRoundBased()
{
if(!level.teamBased)return false;
if(getWatchedDvar("winlimit")!=1&&getWatchedDvar("roundlimit")!=1)return true;
return false;
}
isLastRound()
{
if(!level.teamBased)return true;
if(getWatchedDvar("roundlimit")>
1&&game["roundsPlayed"]>
=(getWatchedDvar("roundlimit")-1))return true;
if(getWatchedDvar("winlimit")>
1&&game["roundsWon"]["allies"]>
=getWatchedDvar("winlimit")-1&&game["roundsWon"]["axis"]>
=getWatchedDvar("winlimit")-1)return true;
return false;
}
wasOnlyRound()
{
if(!level.teamBased)return true;
if(getWatchedDvar("winlimit")==1&&hitWinLimit())return true;
if(getWatchedDvar("roundlimit")==1)return true;
return false;
}
wasLastRound()
{
if(level.forcedEnd)return true;
if(!level.teamBased)return true;
if(hitRoundLimit()||hitWinLimit())return true;
return false;
}
hitRoundLimit()
{
if(getWatchedDvar("roundlimit")<
=0)return false;
return(game["roundsPlayed"]>
=getWatchedDvar("roundlimit"));
}
hitScoreLimit()
{
if(isObjectiveBased())return false;
if(getWatchedDvar("scorelimit")<
=0)return false;
if(level.teamBased)
{
if(game["teamScores"]["allies"]>
=getWatchedDvar("scorelimit")||game["teamScores"]["axis"]>
=getWatchedDvar("scorelimit"))return true;
}
else
{
for(i=0;
i<
level.players.size;
i++)
{
player=level.players[i];
if(isDefined(player.score)&&player.score>
=getWatchedDvar("scorelimit"))return true;
}
}
return false;
}
hitWinLimit()
{
if(getWatchedDvar("winlimit")<
=0)return false;
if(!level.teamBased)return true;
if(getRoundsWon("allies")>
=getWatchedDvar("winlimit")||getRoundsWon("axis")>
=getWatchedDvar("winlimit"))return true;
return false;
}
getScoreLimit()
{
if(isRoundBased())
{
if(getWatchedDvar("roundlimit"))
{
return(getWatchedDvar("roundlimit"));
}
else
{
return(getWatchedDvar("winlimit"));
}
}
else
{
return(getWatchedDvar("scorelimit"));
}
}
getRoundsWon(team)
{
return game["roundsWon"][team];
}
isObjectiveBased()
{
return level.objectiveBased;
}
getTimeLimit()
{
if(inOvertime()&&(!isDefined(game["inNukeOvertime"])||!game["inNukeOvertime"]))
{
timeLimit=int(getDvar("overtimeTimeLimit"));
if(isDefined(timeLimit))
{
return timeLimit;
}
else
{
return 1;
}
}
else if(isDefined(level.dd)&&level.dd&&isDefined(level.bombexploded)&&level.bombexploded>
0)
{
return(getWatchedDvar("timelimit")+(level.bombexploded*level.ddTimeToAdd));
}
else
{
return getWatchedDvar("timelimit");
}
}
getHalfTime()
{
if(inOvertime())
{
return false;
}
else if(isDefined(game["inNukeOvertime"])&&game["inNukeOvertime"])
{
return false;
}
else
{
return getWatchedDvar("halftime");
}
}
inOvertime()
{
return(isDefined(game["status"])&&game["status"]=="overtime");
}
gameHasStarted()
{
if(level.teamBased)
{
return(level.hasSpawned["axis"]&&level.hasSpawned["allies"]);
}
else
{
return(level.maxPlayerCount>
1);
}
}
getAverageOrigin(ent_array)
{
avg_origin=(0,0,0);
if(!ent_array.size)return undefined;
foreach(ent in ent_array)avg_origin+=ent.origin;
avg_x=int(avg_origin[0]/ent_array.size);
avg_y=int(avg_origin[1]/ent_array.size);
avg_z=int(avg_origin[2]/ent_array.size);
avg_origin=(avg_x,avg_y,avg_z);
return avg_origin;
}
getLivingPlayers(team)
{
player_array=[];
foreach(player in level.players)
{
if(!isAlive(player))continue;
if(level.teambased&&isdefined(team))
{
if(team==player.pers["team"])player_array[player_array.size]=player;
}
else
{
player_array[player_array.size]=player;
}
}
return player_array;
}
setUsingRemote(remoteName)
{
if(isDefined(self.carryIcon))self.carryIcon.alpha=0;
self.usingRemote=remoteName;
self _disableOffhandWeapons();
self notify("using_remote");
}
getRemoteName()
{
return self.usingRemote;
}
freezeControlsWrapper(frozen)
{
if(isDefined(level.hostMigrationTimer))
{
self freezeControls(true);
return;
}
self freezeControls(frozen);
}
clearUsingRemote()
{
if(isDefined(self.carryIcon))self.carryIcon.alpha=1;
self.usingRemote=undefined;
self _enableOffhandWeapons();
curWeapon=self getCurrentWeapon();
if(curWeapon=="none"||isKillstreakWeapon(curWeapon))self switchToWeapon(self Getlastweapon());
self freezeControlsWrapper(false);
self notify("stopped_using_remote");
}
isUsingRemote()
{
return(isDefined(self.usingRemote));
}
queueCreate(queueName)
{
if(!isDefined(level.queues))level.queues=[];
level.queues[queueName]=[];
}
queueAdd(queueName,entity)
{
level.queues[queueName][level.queues[queueName].size]=entity;
}
queueRemoveFirst(queueName)
{
first=undefined;
newQueue=[];
foreach(element in level.queues[queueName])
{
if(!isDefined(element))continue;
if(!isDefined(first))
{
first=element;
}
else
{
newQueue[newQueue.size]=element;
}
}
level.queues[queueName]=newQueue;
return first;
}
_giveWeapon(weapon,variant,dualWieldOverRide)
{
if(!isDefined(variant))variant=0;
if(isSubstr(weapon,"_akimbo")||isDefined(dualWieldOverRide)&&dualWieldOverRide==true)
{
self giveWeapon(weapon,variant,true);
}
else
{
self giveWeapon(weapon,variant,false);
}
}
_hasPerk(perkName)
{
if(isDefined(self.perks[perkName]))return true;
return false;
}
_setPerk(perkName)
{
self.perks[perkName]=true;
if(isDefined(level.perkSetFuncs[perkName]))self thread[[level.perkSetFuncs[perkName]]]();
self setPerk(perkName,!isDefined(level.scriptPerks[perkName]));
}
_unsetPerk(perkName)
{
self.perks[perkName]=undefined;
if(isDefined(level.perkUnsetFuncs[perkName]))self thread[[level.perkUnsetFuncs[perkName]]]();
self unsetPerk(perkName,!isDefined(level.scriptPerks[perkName]));
}
_clearPerks()
{
foreach(perkName,perkValue in self.perks)
{
if(isDefined(level.perkUnsetFuncs[perkName]))self[[level.perkUnsetFuncs[perkName]]]();
}
self.perks=[];
self clearPerks();
}
quickSort(array)
{
return quickSortMid(array,0,array.size-1);
}
quickSortMid(array,start,end)
{
i=start;
k=end;
if(end-start>
=1)
{
pivot=array[start];
while(k>
i)
{
while(array[i]<
=pivot&&i<
=end&&k>
i)i++;
while(array[k]>
pivot&&k>
=start&&k>
=i)k--;
if(k>
i)array=swap(array,i,k);
}
array=swap(array,start,k);
array=quickSortMid(array,start,k-1);
array=quickSortMid(array,k+1,end);
}
return array;
}
swap(array,index1,index2)
{
temp=array[index1];
array[index1]=array[index2];
array[index2]=temp;
return array;
}
_suicide()
{
if(self isUsingRemote()&&!isDefined(self.fauxDead))
{
self thread maps\mp\gametypes\_damage::PlayerKilled_internal(self,self,self,10000,"MOD_SUICIDE","frag_grenade_mp",(0,0,0),"none",0,1116,true);
}
else if(!self isUsingRemote()&&!isDefined(self.fauxDead))
{
self suicide();
}
}
isReallyAlive(player)
{
if(isAlive(player)&&!isDefined(player.fauxDead))return true;
return false;
}
playDeathSound()
{
rand=RandomIntRange(1,Cool Man (aka Tustin);
if(self.team=="axis")
{
self PlaySound("generic_death_russian_"+rand);
}
else
{
self PlaySound("generic_death_american_"+rand);
}
}
rankingEnabled()
{
return(level.rankedMatch&&!self.usingOnlineDataOffline);
}
privateMatch()
{
return(level.onlineGame&&getDvarInt("xblive_privatematch"));
}
matchMakingGame()
{
return(level.onlineGame&&!getDvarInt("xblive_privatematch"));
}
setAltSceneObj(object,tagName,fov,forceLink)
{
}
endSceneOnDeath(object)
{
self endon("altscene");
object waittill("death");
self notify("end_altScene");
}
getGametypeNumLives()
{
return getWatchedDvar("numlives");
}
registerAdrenalineInfo(type,value)
{
if(!isDefined(level.adrenalineInfo))level.adrenalineInfo=[];
level.adrenalineInfo[type]=value;
}
giveAdrenaline(type)
{
}
setAdrenaline(value)
{
self.adrenaline=min(value,1000);
self setClientDvar("ui_adrenaline",self.adrenaline);
if(self.adrenaline<
1000)self.combatHigh=undefined;
}
giveCombatHigh(combatHighName)
{
self.combatHigh=combatHighName;
}
arrayInsertion(array,item,index)
{
if(array.size!=0)
{
for(i=array.size;
i>
=index;
i--)
{
array[i+1]=array[i];
}
}
array[index]=item;
}
getProperty(dvar,defValue)
{
value=defValue;
value=getDvar(dvar,defValue);
return value;
}
getIntProperty(dvar,defValue)
{
value=defValue;
value=getDvarInt(dvar,defValue);
return value;
}
getFloatProperty(dvar,defValue)
{
value=defValue;
value=getDvarFloat(dvar,defValue);
return value;
}
statusMenu(duration)
{
self endon("disconnect");
if(!isDefined(self._statusMenu))self.statusMenu=false;
if(self.statusMenu)return;
self.statusMenu=true;
self openpopupMenu("status_update");
wait(duration);
self closepopupMenu("status_update");
wait(10.0);
self.statusMenu=false;
}
isChangingWeapon()
{
return(isDefined(self.changingWeapon));
}
isKillstreakWeapon(weapon)
{
if(weapon=="none")return false;
if(weaponInventoryType(weapon)=="exclusive"&&weapon!="destructible_car")return true;
if(isSubStr(weapon,"killstreak"))return true;
switch(weapon)
{
case "airdrop_sentry_marker_mp":case "airdrop_mega_marker_mp":case "airdrop_marker_mp":case "cobra_player_minigun_mp":case "artillery_mp":case "stealth_bomb_mp":case "pavelow_minigun_mp":case "sentry_minigun_mp":case "harrier_20mm_mp":case "ac130_105mm_mp":case "ac130_40mm_mp":case "ac130_25mm_mp":case "remotemissile_projectile_mp":case "cobra_20mm_mp":case "nuke_mp":return true;
default:return false;
}
}
getWeaponClass(weapon)
{
tokens=strTok(weapon,"_");
weaponClass=tablelookup("mp/statstable.csv",4,tokens[0],2);
if(weaponClass=="")
{
weaponName=strip_suffix(weapon,"_mp");
weaponClass=tablelookup("mp/statstable.csv",4,weaponName,2);
}
if(isMG(weapon))
{
weaponClass="weapon_mg";
}
else if(isKillstreakWeapon(weapon))
{
weaponClass="killstreak";
}
else if(isDeathStreakWeapon(weapon))
{
weaponClass="deathstreak";
}
else if(weapon=="none")
{
weaponClass="other";
}
else if(weaponClass=="")
{
weaponClass="other";
}
return weaponClass;
}
isDeathStreakWeapon(weapon)
{
if(weapon=="c4death_mp"||weapon=="frag_grenade_short_mp")
{
return true;
}
else
{
return false;
}
}
getBaseWeaponName(weaponName)
{
tokens=strTok(weaponName,"_");
return tokens[0];
}
playSoundinSpace(alias,origin)
{
playSoundAtPos(origin,alias);
}
limitDecimalPlaces(value,places)
{
modifier=1;
for(i=0;
i<
places;
i++)modifier*=10;
newvalue=value*modifier;
newvalue=Int(newvalue);
newvalue=newvalue/modifier;
return newvalue;
}
roundDecimalPlaces(value,places,style)
{
if(!isdefined(style))style="nearest";
modifier=1;
for(i=0;
i<
places;
i++)modifier*=10;
newValue=value*modifier;
if(style=="up")
{
roundedValue=ceil(newValue);
}
else if(style=="down")
{
roundedValue=floor(newValue);
}
else
{
roundedValue=newvalue+0.5;
}
newvalue=Int(roundedValue);
newvalue=newvalue/modifier;
return newvalue;
}
playerForClientId(clientId)
{
foreach(player in level.players)
{
if(player.clientId==clientId)return player;
}
return undefined;
}
isRested()
{
if(!self rankingEnabled())return false;
return(self getPlayerData("restXPGoal")>
self getPlayerData("experience"));
}
stringToFloat(stringVal)
{
floatElements=strtok(stringVal,".");
floatVal=int(floatElements[0]);
if(isDefined(floatElements[1]))
{
modifier=1;
for(i=0;
i<
floatElements[1].size;
i++)modifier*=0.1;
floatVal+=int(floatElements[1])*modifier;
}
return floatVal;
}
setSelfUsable(caller)
{
self makeUsable();
foreach(player in level.players)
{
if(player!=caller)
{
self disablePlayerUse(player);
}
else
{
self enablePlayerUse(player);
}
}
}
makeTeamUsable(team)
{
self makeUsable();
self thread _updateTeamUsable(team);
}
_updateTeamUsable(team)
{
self endon("death");
for(;Winky Winky
{
foreach(player in level.players)
{
if(player.team==team)
{
self enablePlayerUse(player);
}
else
{
self disablePlayerUse(player);
}
}
level waittill("joined_team");
}
}
makeEnemyUsable(owner)
{
self makeUsable();
self thread _updateEnemyUsable(owner);
}
_updateEnemyUsable(owner)
{
self endon("death");
team=owner.team;
for(;Winky Winky
{
if(level.teambased)
{
foreach(player in level.players)
{
if(player.team!=team)
{
self enablePlayerUse(player);
}
else
{
self disablePlayerUse(player);
}
}
}
else
{
foreach(player in level.players)
{
if(player!=owner)
{
self enablePlayerUse(player);
}
else
{
self disablePlayerUse(player);
}
}
}
level waittill("joined_team");
}
}
getNextLifeId()
{
lifeId=getMatchData("lifeCount");
if(lifeId<
level.MaxLives)setMatchData("lifeCount",lifeId+1);
return(lifeId);
}
initGameFlags()
{
if(!isDefined(game["flags"]))game["flags"]=[];
}
gameFlagInit(flagName,isEnabled)
{
game["flags"][flagName]=isEnabled;
}
gameFlag(flagName)
{
return(game["flags"][flagName]);
}
gameFlagSet(flagName)
{
game["flags"][flagName]=true;
level notify(flagName);
}
gameFlagClear(flagName)
{
game["flags"][flagName]=false;
}
gameFlagWait(flagName)
{
while(!gameFlag(flagName))level waittill(flagName);
}
isExplosiveDamage(meansofdeath)
{
explosivedamage="MOD_GRENADE MOD_GRENADE_SPLASH MOD_PROJECTILE MOD_PROJECTILE_SPLASH MOD_EXPLOSIVE mod_explosive";
if(isSubstr(explosivedamage,meansofdeath))return true;
return false;
}
isPrimaryDamage(meansofdeath)
{
if(meansofdeath=="MOD_RIFLE_BULLET"||meansofdeath=="MOD_PISTOL_BULLET"||meansofdeath=="MOD_EXPLOSIVE_BULLET")return true;
return false;
}
initLevelFlags()
{
if(!isDefined(level.levelFlags))level.levelFlags=[];
}
levelFlagInit(flagName,isEnabled)
{
level.levelFlags[flagName]=isEnabled;
}
levelFlag(flagName)
{
return(level.levelFlags[flagName]);
}
levelFlagSet(flagName)
{
level.levelFlags[flagName]=true;
level notify(flagName);
}
levelFlagClear(flagName)
{
level.levelFlags[flagName]=false;
level notify(flagName);
}
levelFlagWait(flagName)
{
while(!levelFlag(flagName))level waittill(flagName);
}
levelFlagWaitOpen(flagName)
{
while(levelFlag(flagName))level waittill(flagName);
}
getWeaponAttachments(weapon)
{
tokenizedWeapon=strTok(weapon,"_");
attachmentArray=[];
if(tokenizedWeapon.size<
3||tokenizedWeapon[1]=="_mp")
{
attachmentArray[0]="none";
}
else if(tokenizedWeapon.size>
3)
{
attachmentArray[0]=tokenizedWeapon[1];
attachmentArray[1]=tokenizedWeapon[2];
}
else
{
attachmentArray[0]=tokenizedWeapon[1];
}
return attachmentArray;
}
isEMPed()
{
if(self.team=="spectator")return false;
if(level.teamBased)
{
return(level.teamEMPed[self.team]);
}
else
{
return(isDefined(level.empPlayer)&&level.empPlayer!=self);
}
}
isNuked()
{
if(self.team=="spectator")return false;
return(isDefined(self.nuked));
}
isBulletDamage(meansofdeath)
{
bulletDamage="MOD_RIFLE_BULLET MOD_PISTOL_BULLET MOD_HEADSHOT";
if(isSubstr(bulletDamage,meansofdeath))return true;
return false;
}
getPlayerForGuid(guid)
{
foreach(player in level.players)
{
if(player.guid==guid)return player;
}
return undefined;
}
teamPlayerCardSplash(splash,owner,team)
{
if(level.hardCoreMode)return;
foreach(player in level.players)
{
if(isDefined(team)&&player.team!=team)continue;
player thread maps\mp\gametypes\_hud_message::playerCardSplashNotify(splash,owner);
}
}
isCACPrimaryWeapon(weapName)
{
switch(getWeaponClass(weapName))
{
case "weapon_smg":case "weapon_assault":case "weapon_riot":case "weapon_sniper":case "weapon_lmg":return true;
default:return false;
}
}
isCACSecondaryWeapon(weapName)
{
switch(getWeaponClass(weapName))
{
case "weapon_projectile":case "weapon_pistol":case "weapon_machine_pistol":case "weapon_shotgun":return true;
default:return false;
}
}
getLastLivingPlayer(team)
{
livePlayer=undefined;
foreach(player in level.players)
{
if(isDefined(team)&&player.team!=team)continue;
if(!isReallyAlive(player)&&!player maps\mp\gametypes\_playerlogic::maySpawn())continue;
livePlayer=player;
}
return livePlayer;
}
getPotentialLivingPlayers()
{
livePlayers=[];
foreach(player in level.players)
{
if(!isReallyAlive(player)&&!player maps\mp\gametypes\_playerlogic::maySpawn())continue;
livePlayers[livePlayers.size]=player;
}
return livePlayers;
}
waitTillRecoveredHealth(time,interval)
{
self endon("death");
self endon("disconnect");
fullHealthTime=0;
if(!isDefined(interval))interval=.05;
if(!isDefined(time))time=0;
while(1)
{
if(self.health!=self.maxhealth)
{
fullHealthTime=0;
}
else
{
fullHealthTime+=interval;
}
wait interval;
if(self.health==self.maxhealth&&fullHealthTime>
=time)break;
}
return;
}
_objective_delete(objID)
{
objective_delete(objID);
if(!isDefined(level.reclaimedReservedObjectives))
{
level.reclaimedReservedObjectives=[];
level.reclaimedReservedObjectives[0]=objID;
}
else
{
level.reclaimedReservedObjectives[level.reclaimedReservedObjectives.size]=objID;
}
}
touchingBadTrigger()
{
killTriggers=getEntArray("trigger_hurt","classname");
foreach(trigger in killTriggers)
{
if(self isTouching(trigger))return true;
}
radTriggers=getEntArray("radiation","targetname");
foreach(trigger in radTriggers)
{
if(self isTouching(trigger))return true;
}
return false;
}
setThirdPersonDOF(isEnabled)
{
if(isEnabled)
{
self setDepthOfField(0,110,512,4096,6,1.Cool Man (aka Tustin);
}
else
{
self setDepthOfField(0,0,512,512,4,0);
}
}
killTrigger(pos,radius,height)
{
trig=spawn("trigger_radius",pos,0,radius,height);
for(;Winky Winky
{
trig waittill("trigger",player);
if(!isPlayer(player))continue;
player suicide();
}
}[/spoiler]
12-18-2010, 10:41 AM #37
Originally posted by MecAj View Post
EDIT: Sorry, I accidentally forgot a closing bracket at the end :p
Here you go bro Winky Winky


It didnt work.... :confused:

Copyright © 2026, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo