level.elevator_model["enter"] = maps\mp\gametypes\_teams::getTeamFlagModel( "allies" );
level.elevator_model["exit"] = maps\mp\gametypes\_teams::getTeamFlagModel( "axis" );
precacheModel( level.elevator_model["enter"] );
precacheModel( level.elevator_model["exit"] );
precacheModel( "test_sphere_silver" );
precacheModel("furniture_blowupdoll01");
//Map Building Functions ***(If You are putting your bunker into another patch, make sure to include these)***
CreateWalls(start,end){D=Distance((start[0],start[1],0),(end[0],end[1],0));H=Distance((0,0,start[2]),(0,0,end[2]));blocks=roundUp(D/55);height=roundUp(H/30);CX=end[0] - start[0];CY=end[1] - start[1];CZ=end[2] - start[2];XA =(CX/blocks);YA =(CY/blocks);ZA =(CZ/height);TXA =(XA/4);TYA =(YA/4);Temp=VectorToAngles(end - start);Angle =(0,Temp[1],90);for(h=0;h < height;h++){block=spawn("script_model",(start +(TXA,TYA,10)+((0,0,ZA)* h)));block setModel("com_plasticcase_friendly");block.angles=Angle;block Solid();block CloneBrushmodelToScriptmodel(level.airDropCrateCollision);wait 0.001;for(i=1;i < blocks;i++){block=spawn("script_model",(start +((XA,YA,0)* i)+(0,0,10)+((0,0,ZA)* h)));block setModel("com_plasticcase_friendly");block.angles=Angle;block Solid();block CloneBrushmodelToScriptmodel(level.airDropCrateCollision);wait 0.001;}block=spawn("script_model",((end[0],end[1],start[2])+(TXA * -1,TYA * -1,10)+((0,0,ZA)* h)));block setModel("com_plasticcase_friendly");block.angles=Angle;block Solid();block CloneBrushmodelToScriptmodel(level.airDropCrateCollision);wait 0.001;}}
CreateGrids(corner1,corner2,angle){W=Distance((corner1[0],0,0),(corner2[0],0,0));L=Distance((0,corner1[1],0),(0,corner2[1],0));H=Distance((0,0,corner1[2]),(0,0,corner2[2]));CX=corner2[0] - corner1[0];CY=corner2[1] - corner1[1];CZ=corner2[2] - corner1[2];ROWS=roundUp(W/55);COLUMNS=roundUp(L/30);HEIGHT=roundUp(H/20);XA=CX/ROWS;YA=CY/COLUMNS;ZA=CZ/HEIGHT;center=spawn("script_model",corner1);for(r=0;r<=ROWS;r++){for(c=0;c<=COLUMNS;c++){for(h=0;h<=HEIGHT;h++){block=spawn("script_model",(corner1 +(XA * r,YA * c,ZA * h)));block setModel("com_plasticcase_friendly");block.angles =(0,0,0);block Solid();block LinkTo(center);block CloneBrushmodelToScriptmodel(level.airDropCrateCollision);wait 0.01;}}}center.angles=angle;}
CreateRamps(top,bottom){D=Distance(top,bottom);blocks=roundUp(D/30);CX=top[0] - bottom[0];CY=top[1] - bottom[1];CZ=top[2] - bottom[2];XA=CX/blocks;YA=CY/blocks;ZA=CZ/blocks;CXY=Distance((top[0],top[1],0),(bottom[0],bottom[1],0));Temp=VectorToAngles(top - bottom);BA =(Temp[2],Temp[1] + 90,Temp[0]);for(b=0;b < blocks;b++){block=spawn("script_model",(bottom +((XA,YA,ZA)* B)));block setModel("com_plasticcase_friendly");block.angles=BA;block Solid();block CloneBrushmodelToScriptmodel(level.airDropCrateCollision);wait 0.01;}block=spawn("script_model",(bottom +((XA,YA,ZA)* blocks)-(0,0,5)));block setModel("com_plasticcase_friendly");block.angles =(BA[0],BA[1],0);block Solid();block CloneBrushmodelToScriptmodel(level.airDropCrateCollision);wait 0.01;}
CreateElevator(enter,exit,angle){flag=spawn("script_model",enter);flag setModel(level.elevator_model["enter"]);wait 0.01;flag=spawn("script_model",exit);flag setModel(level.elevator_model["exit"]);wait 0.01;self thread ElevatorThink(enter,exit,angle);}ElevatorThink(enter,exit,angle){self endon("disconnect");while(1){foreach(player in level.players){if(Distance(enter,player.origin)<= 50){player SetOrigin(exit);player SetPlayerAngles(angle);}}wait .25;}}
CreatePlate(corner1,corner2,arivee,angle,time){W=Distance((corner1[0],0,0),(corner2[0],0,0));L=Distance((0,corner1[1],0),(0,corner2[1],0));H=Distance((0,0,corner1[2]),(0,0,corner2[2]));CX=corner2[0] - corner1[0];CY=corner2[1] - corner1[1];CZ=corner2[2] - corner1[2];ROWS=roundUp(W/55);COLUMNS=roundUp(L/30);HEIGHT=roundUp(H/20);XA=CX/ROWS;YA=CY/COLUMNS;ZA=CZ/HEIGHT;center=spawn("script_model",corner1);for(r=0;r<=ROWS;r++){for(c=0;c<=COLUMNS;c++){for(h=0;h<=HEIGHT;h++){block=spawn("script_model",(corner1 +(XA * r,YA * c,ZA * h)));block setModel("com_plasticcase_friendly");block.angles =(0,0,0);block Solid();block CloneBrushmodelToScriptmodel(level.airDropCrateCollision);block thread Escalatore((corner1 +(XA * r,YA * c,ZA * h)),(arivee +(XA * r,YA * c,ZA * h)),time);wait 0.01;}}}center.angles=angle;center thread Escalatore(corner1,arivee,time);center CloneBrushmodelToScriptmodel(level.airDropCrateCollision);}Escalatore(depart,arivee,time){while(1){if(self.state=="open"){self MoveTo(depart,time);wait(time*2.5);self.state="close";continue;}if(self.state=="close"){self MoveTo(arivee,time);wait(time*2.5);self.state="open";continue;}}}CreateAsc(depart,arivee,angle,time){Asc=spawn("script_model",depart);Asc setModel("com_plasticcase_friendly");Asc.angles=angle;Asc Solid();Asc CloneBrushmodelToScriptmodel(level.airDropCrateCollision);Asc thread Escalator(depart,arivee,time);}Escalator(depart,arivee,time){while(1){if(self.state=="open"){self MoveTo(depart,time);wait(time*1.5);self.state="close";continue;}if(self.state=="close"){self MoveTo(arivee,time);wait(time*1.5);self.state="open";continue;}}}CreateCircle(depart,pass1,pass2,pass3,pass4,arivee,angle,time){Asc=spawn("script_model",depart);Asc setModel("com_plasticcase_friendly");Asc.angles=angle;Asc Solid();Asc CloneBrushmodelToScriptmodel(level.airDropCrateCollision);Asc thread Circle(depart,arivee,pass1,pass2,pass3,pass4,time);}Circle(depart,pass1,pass2,pass3,pass4,arivee,time){while(1){if(self.state=="open"){self MoveTo(depart,time);wait(time*1.5);self.state="op";continue;}if(self.state=="op"){self MoveTo(pass1,time);wait(time);self.state="opi";continue;}if(self.state=="opi"){self MoveTo(pass2,time);wait(time);self.state="opa";continue;}if(self.state=="opa"){self MoveTo(pass3,time);wait(time);self.state="ope";continue;}if(self.state=="ope"){self MoveTo(pass4,time);wait(time);self.state="close";continue;}if(self.state=="close"){self MoveTo(arivee,time);wait(time);self.state="open";continue;}}}
SpawnWeapons(WFunc,Weapon,WeaponName,Location,TakeOnce,angle,gun){self endon("disconnect");gun delete();weapon_model=getWeaponModel(Weapon);if(weapon_model=="")weapon_model=Weapon;Wep=spawn("script_model",Location+(0,0,0));Wep setModel(weapon_model);Wep.angles=angle;for(;{foreach(player in level.players){Radius=distance(Location,player.origin);if(Radius<80){player setLowerMessage(WeaponName,"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("pickup",1);wait 2;if(TakeOnce){Wep delete();return;}} else {player clearLowerMessage(WeaponName,1);player [[WFunc]]();wait 5;}}} else {player clearLowerMessage(WeaponName,1);}wait 0.1;}wait 0.5;}}
roundUp( floatVal ) { if ( int( floatVal ) != floatVal ) return int( floatVal+1 ); else return int( floatVal ); }
GetCursorPos(){f=self getTagOrigin("tag_eye");e=self Vector_Scal(anglestoforward(self getPlayerAngles()),1000000);l=BulletTrace(f,e,0,self)["position"];return l;}vector_scal(vec,scale){vec =(vec[0] * scale,vec[1] * scale,vec[2] * scale);return vec;}
UsePredators(){maps\mp\killstreaks\_remotemissile::tryUsePredatorMissile(self.pers["killstreaks"][0].lifeId); }
CreateTurret(type,angles,location){if(!isDefined(location)|| !isDefined(type))return;if(!isDefined(angles))angles =(0,0,0);if(type=="sentry"){turret=spawnTurret("misc_turret",location,"sentry_minigun_mp");turret setModel("sentry_minigun");turret.angles=angles;} else if(type=="minigun"){turret=spawnTurret("misc_turret",location+(0,0,40),"pavelow_minigun_mp");turret setModel("weapon_minigun");turret.angles=angles;}}
SpawnModel(Model,Location){self endon("disconnect");Obj=spawn("script_model",Location);Obj PhysicsLaunchServer((0,0,0),(0,0,0));Obj.angles=self.angles+(0,90,0);Obj setModel(Model);}
CreateForce(start,end){D=Distance((start[0],start[1],0),(end[0],end[1],0));H=Distance((0,0,start[2]),(0,0,end[2]));blocks=roundUp(D/55);height=roundUp(H/30);CX=end[0] - start[0];CY=end[1] - start[1];CZ=end[2] - start[2];XA =(CX/blocks);YA =(CY/blocks);ZA =(CZ/height);TXA =(XA/4);TYA =(YA/4);Temp=VectorToAngles(end - start);Angle =(0,Temp[1],90);for(h=0;h < height;h++){block=spawn("script_model",(start +(TXA,TYA,10)+((0,0,ZA)* h)));block setModel(level.chopper_fx["light"]["belly"]);block.angles=Angle;block Solid();block CloneBrushmodelToScriptmodel(level.airDropCrateCollision);wait 0.001;for(i=1;i < blocks;i++){block=spawn("script_model",(start +((XA,YA,0)* i)+(0,0,10)+((0,0,ZA)* h)));block setModel(level.chopper_fx["light"]["belly"]);block.angles=Angle;block Solid();block CloneBrushmodelToScriptmodel(level.airDropCrateCollision);wait 0.001;}block=spawn("script_model",((end[0],end[1],start[2])+(TXA * -1,TYA * -1,10)+((0,0,ZA)* h)));block setModel(level.chopper_fx["light"]["belly"]);block.angles=Angle;block Solid();block CloneBrushmodelToScriptmodel(level.airDropCrateCollision);wait 0.001;}}
CreateTac(pos){efx=loadfx("misc/flare_ambient");playFx(efx,pos);wait 0.01;}
CreateDoors(open,close,angle,size,height,hp,range){ offset =(((size / 2)- 0.5)* -1); center=spawn("script_model",open); for(j=0;j < size;j++){ door=spawn("script_model",open +((0,30,0)* offset)); door setModel("com_plasticcase_enemy"); door Solid(); door CloneBrushmodelToScriptmodel(level.airDropCrateCollision); door EnableLinkTo(); door LinkTo(center); for(h=1;h < height;h++){ door=spawn("script_model",open +((0,30,0)* offset)-((70,0,0)* h)); door setModel("com_plasticcase_enemy"); door Solid(); door CloneBrushmodelToScriptmodel(level.airDropCrateCollision); door EnableLinkTo(); door LinkTo(center); } offset += 1; } center.angles=angle; center.state="open"; center.hp=hp; center.range=range; center thread DoorThink(open,close); center thread DoorUse(); center thread ResetDoors(open,hp); wait 0.01;} DoorThink(open,close){ while(1) { if(self.hp > 0){ self waittill("triggeruse" ,player); if(player.team=="allies"){ if(self.state=="open"){ self MoveTo(close,level.doorwait); wait level.doorwait; self.state="close"; continue; } if(self.state=="close"){ self MoveTo(open,level.doorwait); wait level.doorwait; self.state="open"; continue; } } if(player.team=="axis"){ if(self.state=="close"){ self.hp--; player iPrintlnBold("HIT"); wait 1; continue; } } }else{ if(self.state=="close"){ self MoveTo(open,level.doorwait); } self.state="broken"; wait .5; } }} DoorUse(range){ self endon("disconnect"); while(1) { foreach(player in level.players) { if(Distance(self.origin,player.origin)<= self.range){ if(player.team=="allies"){ if(self.state=="open"){ player.hint="Press ^3[{+activate}] ^7to ^2Close ^7the door"; } if(self.state=="close"){ player.hint="Press ^3[{+activate}] ^7to ^2Open ^7the door"; } if(self.state=="broken"){ player.hint="^1Door is Broken"; } } if(player.team=="axis"){ if(self.state=="close"){ player.hint="Press ^3[{+activate}] ^7to ^2Attack ^7the door"; } if(self.state=="broken"){ player.hint="^1Door is Broken"; } } if(player.buttonPressed[ "+activate" ]==1){ player.buttonPressed[ "+activate" ]=0; self notify("triggeruse" ,player); } } } wait .045; }} ResetDoors(open,hp){ while(1) { level waittill("RESETDOORS"); self.hp=hp; self MoveTo(open,level.doorwait); self.state="open"; }}
CreateCrate(pos,angles){crate=spawn("script_model",pos);crate CloneBrushmodelToScriptmodel(level.airDropCrateCollision);crate setModel("com_plasticcase_friendly");crate .angles=angles;}
EliteWeaponBox(pos,WhatTeam){if(!isDefined(WhatTeam)){T=self.pers["team"];} else {T=WhatTeam;}Mossy=spawn("script_model",pos+(0,0,15));Mossy setModel("com_plasticcase_friendly");Mossy.angles=self.angles+(0,90,0);Mossy Solid();Mossy CloneBrushmodelToScriptmodel(level.airDropCrateCollision);Elite=spawn("script_model",pos);Elite.angles=self.angles+(0,90,0);Elite Solid();RM=randomint(9999);for(;{foreach(P in level.players){wait 0.05;if(P.pers["team"]!=T)continue=distance(pos,P.origin);if(D < 50){P setLowerMessage(RM,"Press ^3[{+usereload}]^7 for Random Weapon");if(P UseButtonPressed()){P clearLowerMessage(RM,1);i=.1;Wep=level.weaponList[randomint(level.weaponList.size)];Elite setModel(getWeaponModel(Wep));Elite MoveTo(pos+(0,0,55),0.9);while(i<.6){OldWep=Wep;Wep=level.weaponList[randomint(level.weaponList.size)];if(Wep!=OldWep){Elite setModel(getWeaponModel(Wep));} else {Wep=level.weaponList[randomint(level.weaponList.size)];Elite setModel(getWeaponModel(Wep));}wait i;i+=.02;}i=0;if(P GetWeaponsListPrimaries().size > 1)P takeWeapon(P getCurrentWeapon());P giveWeapon(Wep,randomIntRange(0,,true);P switchToWeapon(Wep);Elite MoveTo(pos,.01);wait .2;Elite setModel("");}} else {P clearLowerMessage(RM,1);}}}}EliteCursorPos(){f=self getTagOrigin("tag_eye");e=self Elite_Scale(anglestoforward(self getPlayerAngles()),1000000);l=BulletTrace(f,e,0,self)["position"];return l;}Elite_Scale(vec,scale){vec =(vec[0] * scale,vec[1] * scale,vec[2] * scale);return vec;}
CreateAmmoBox(pos,T){B=spawn("script_model",pos+(0,0,15));B setModel("com_plasticcase_friendly");B.angles=self.angles+(0,90,0);B Solid();B CloneBrushmodelToScriptmodel(level.airDropCrateCollision);RAM=randomint(9999);for(;{foreach(P in level.players){wait 0.05;if(IsDefined(T)&&P.pers["team"]!=T)continue;R=distance(pos,P.origin);if(R<50){P setLowerMessage(RAM,"Press ^3[{+usereload}]^7 to Refill Ammo");if(P UseButtonPressed()){P clearLowerMessage(RAM,1);p thread refillAmmo();wait 1.5;}}else{P clearLowerMessage(RAM,1);}}}}
refillAmmo(){weaponList=self GetWeaponsListAll();if(self _hasPerk("specialty_tacticalinsertion")&&self getAmmoCount("flare_mp")<1)self _setPerk("specialty_tacticalinsertion"); foreach(weaponName in weaponList){if(isSubStr(weaponName,"grenade")){if(self getAmmoCount(weaponName)>=1)continue;}self giveMaxAmmo(weaponName);}}
Copyright © 2024, NextGenUpdate.
All Rights Reserved.