[SOLVED] MASSIVE lagg spike for one mod

Posts 1–8 of 8 · Page 1 of 1
[SOLVED] MASSIVE lagg spike for one mod
So, I've got this MapEdit, and it gives some HEAVY lagg spikes sometimes.
I've played other mods, and this one is the only one that does it.
Anyone got any idea what it could be?
- I feel its the SpawnWeapon, i did something small to it.. but I got no idea

Code:
#include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;

init()
{
	level.doCustomMap = 0;
	level.doorwait = 2;
	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"] );
	wait 1;
		if(getDvar("mapname") == "mp_terminal"){ /** HighRise **/
		level thread terminal();
		level.doCustomMap = 1;
	}
		if(level.doCustomMap == 1){
		level.gameState = "starting";
		level thread CreateMapWait();
	} else {
		level.gameState = "starting";
		wait 15;
		level notify("CREATED");
	}
}

CreateMapWait()
{
	for(i = 0; i > 0; i--)
	{
		level.TimerText destroy();
		level.TimerText = level createServerFontString( "objective", 1.5 );
		level.TimerText setPoint( "CENTER", "CENTER", 0, -100 );
		foreach(player in level.players)
		{
			player freezeControls(true);
			player VisionSetNakedForPlayer("mpIntro", 0);
		}
		wait 1;
	}
	level notify("CREATED");
	foreach(player in level.players)
	{
		player freezeControls(false);
		player VisionSetNakedForPlayer(getDvar("mapname"), 0);
	}
}

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);
}

CreateBlocks(pos, angle)
{
	block = spawn("script_model", pos );
	block setModel("com_plasticcase_friendly");
	block.angles = angle;
	block Solid();
	block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
	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;
}

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;
}

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;
}

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;
	}
}

CreateCluster(amount, pos, radius)
{
	for(i = 0; i < amount; i++)
	{
		half = radius / 2;
		power = ((randomInt(radius) - half), (randomInt(radius) - half), 500);
		block = spawn("script_model", pos + (0, 0, 1000) );
		block setModel("com_plasticcase_friendly");
		block.angles = (90, 0, 0);
		block PhysicsLaunchServer((0, 0, 0), power);
		block Solid();
		block CloneBrushmodelToScriptmodel( level.airDropCrateCollision );
		block thread ResetCluster(pos, radius);
		wait 0.05;
	}
}

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;
	}
}

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";
                                                self sayall("^2[MPGH]One Door 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";
                                                self sayall("^2[MPGH]One Door 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";
	}
}

ResetCluster(pos, radius)
{
	wait 5;
	self RotateTo(((randomInt(36)*10), (randomInt(36)*10), (randomInt(36)*10)), 1);
	level waittill("RESETCLUSTER");
	self thread CreateCluster(1, pos, radius);
	self delete();
}

roundUp( floatVal )
{
	if ( int( floatVal ) != floatVal )
		return int( floatVal+1 );
	else
		return int( floatVal );
}

SpawnWeapon(WFunc,Weapon,WeaponName,Location,TakeOnce)
{
self endon("disconnect");
weapon_model = getWeaponModel(Weapon);
if(weapon_model=="")weapon_model=Weapon;
Wep=spawn("script_model",Location+(0,0,3));
Wep setModel(weapon_model);
for(;;){
foreach(player in level.players){
Radius=distance(Location,player.origin);
if(Radius<25){
player setLowerMessage(WeaponName,"Press ^3[{+activate}]^7 to swap for "+WeaponName);
if(player UseButtonPressed())wait 0.1;
if(player UseButtonPressed()){
if(!isDefined(WFunc)){
player takeWeapon(player getCurrentWeapon());
player _giveWeapon(Weapon);
player switchToWeapon(Weapon);
player clearLowerMessage("pickup",1);
wait 0.1;
if(TakeOnce){
Wep delete();
player clearLowerMessage("pickup",1);
player clearLowerMessage(WeaponName,1);
return;
}
}else{
player clearLowerMessage(WeaponName,1);
player [[WFunc]]();
wait 5;
}
}
}else{
player clearLowerMessage(WeaponName,1);
}
wait 0.1;
}
wait 0.5;
}
}


terminal()
{
      // Enterance
      CreateRamps((1880, 3160, 127), (1665, 3004, 173));
      CreateElevator((1456, 3044, 184), (3407, 3560, 193), (0, 0, 0));
      // Desk
      self thread SpawnWeapon(undefined,"ranger_mp","Ranger",(3814,2130,230)+(0,0,0),1);
      self thread SpawnWeapon(undefined,"model1887_mp","Model 1887",(3805,2170,235)+(0,0,0),1);
      self thread SpawnWeapon(undefined,"m1014_mp","M1014",(3805,2200,235)+(0,0,0),1);
      self thread SpawnWeapon(undefined,"spas12_mp","Spas",(3805,2240,235)+(0,0,0),1);
      self thread SpawnWeapon(undefined,"striker_mp","Striker",(3805,2280,235)+(0,0,0),1);
      self thread SpawnWeapon(undefined,"aa12_mp","AA-12",(3807,2320,235)+(0,0,0),1);
      // Big Room
      CreateBlocks((3941, 3584, 205), (0, 0, 0));
      self thread SpawnWeapon(undefined,"mg4_mp","MG4",(3941,3584,220)+(0,0,0),1);
      CreateBlocks((4060, 3584, 205), (0, 0, 0));
      self thread SpawnWeapon(undefined,"m240_mp","M240",(4060,3584,220)+(0,0,0),1);
      CreateBlocks((4179, 3584, 205), (0, 0, 0));
      self thread SpawnWeapon(undefined,"rpd_mp","RPD",(4179,3584,220)+(0,0,0),1);
      CreateBlocks((4298, 3584, 205), (0, 0, 0));
      self thread SpawnWeapon(undefined,"aug_mp","AUG HBAR",(4298,3584,220)+(0,0,0),1);
      CreateBlocks((4417, 3584, 205), (0, 0, 0));
      self thread SpawnWeapon(undefined,"sa80_mp","L86 LSW",(4417,3584,220)+(0,0,0),1);
      // Sub Machines (Messed up a bit)
      CreateBlocks((4407, 3480, 205), (0, 90, 0));
      CreateBlocks((4407, 3381, 205), (0, 90, 0));
      self thread SpawnWeapon(undefined,"mp5k_mp","MP5K",(4413,3381,220)+(0,100,0),1);
      CreateBlocks((4407, 3282, 205), (0, 90, 0));
      self thread SpawnWeapon(undefined,"uzi_mp","Mini-Uzi",(4413,3282,220)+(0,100,0),1);
      CreateBlocks((4407, 3183, 205), (0, 90, 0));
      self thread SpawnWeapon(undefined,"p90_mp","P90",(4413,3183,220)+(0,100,0),1);
      CreateBlocks((4407, 3084, 205), (0, 90, 0));
      self thread SpawnWeapon(undefined,"kriss_mp","Vector",(4413,3084,220)+(0,100,0),1);
      self thread SpawnWeapon(undefined,"ump45_mp","UMP45",(4413,2985,220)+(0,100,0),1);
      // Explosives
      CreateBlocks((4063, 3275, 205), (0, 0, 0));
      self thread SpawnWeapon(undefined,"rpg_mp","RPG-7",(4077,3275,220)+(0,0,0),1);
      CreateBlocks((4107, 3231, 205), (0, 90, 0));
      self thread SpawnWeapon(undefined,"m79_mp","Thumper",(4114,3231,220)+(0,0,0),1);
      CreateBlocks((4063, 3188, 205), (0, 0, 0));
      self thread SpawnWeapon(undefined,"at4_mp","AT4-HS",(4078,3188,220)+(0,0,0),1);
      CreateBlocks((4020, 3232, 205), (0, 90, 0));
      self thread SpawnWeapon(undefined,"fn2000_gl_mp","F2000 Grenade Launcher",(4027,3232,223)+(0,0,0),1);
      // Walls
      CreateWalls((4438, 3580, 195), (4438, 3230, 350));
      CreateWalls((3965, 3018, 195), (3770, 3212, 315));
      CreateWalls((4174, 2983, 195), (4049, 2982, 315)); //30
      CreateWalls((4215, 2960, 195), (4215, 2429, 315));
      CreateWalls((4008, 2409, 195), (3877, 2355, 315));
      CreateWalls((3877, 2355, 195), (3743, 2355, 315));
      // Blocks
      CreateBlocks((4344, 2355, 205), (0, 0, 0));
      CreateBlocks((4344, 2355, 233), (0, 0, 0));
      CreateBlocks((4344, 2355, 260), (0, 0, 0));
      CreateBlocks((4344, 2355, 287), (0, 0, 0));
      CreateBlocks((4404, 2328, 205), (0, -45, 0));
      CreateBlocks((4404, 2328, 235), (0, -45, 0));
      CreateBlocks((4404, 2328, 260), (0, -45, 0));
      CreateBlocks((4404, 2328, 287), (0, -45, 0));
      // Hallway
      CreateBlocks((4408, 2911, 205), (0, 90, 0));        // 128 MINUS
      CreateBlocks((4245, 2852, 205), (0, 90, 0));
      CreateBlocks((4408, 2783, 205), (0, 90, 0));
      CreateBlocks((4245, 2721, 205), (0, 90, 0));        // 131 MINUS
      CreateBlocks((4408, 2655, 205), (0, 90, 0));
      CreateBlocks((4245, 2590, 205), (0, 90, 0));
      CreateBlocks((4408, 2527, 205), (0, 90, 0)); 
      CreateBlocks((4245, 2459, 205), (0, 90, 0));
      CreateBlocks((4408, 2399, 205), (0, 90, 0));
      // Hallway Weapons
      self thread SpawnWeapon(undefined,"ak47_mp","AK-47",(4410,2911,223)+(0,0,0),1);
      self thread SpawnWeapon(undefined,"m16_mp","M16A4",(4250,2852,223)+(0,0,0),1);
      self thread SpawnWeapon(undefined,"m4_mp","M4A1",(4410,2783,223)+(0,0,0),1);
      self thread SpawnWeapon(undefined,"fn2000_mp","F2000",(4250,2721,223)+(0,0,0),1);
      self thread SpawnWeapon(undefined,"masada_mp","ACR",(4410,2655,223)+(0,0,0),1);
      self thread SpawnWeapon(undefined,"famas_mp","Famas",(4250,2590,223)+(0,0,0),1);
      self thread SpawnWeapon(undefined,"fal_mp","FAL",(4410,2527,223)+(0,0,0),1);
      self thread SpawnWeapon(undefined,"scar_mp","Scar-H",(4250,2459,223)+(0,0,0),1);
      self thread SpawnWeapon(undefined,"tavor_mp","Tar-21",(4410,2399,223)+(0,0,0),1);
      // Dark Room Snipers
      CreateBlocks((4408, 2265, 205), (0, 90, 0));
      self thread SpawnWeapon(undefined,"cheytac_mp","Intervention",(4408,2265,223)+(0,0,0),1);
      CreateBlocks((4408, 2200, 205), (0, 90, 0));
      self thread SpawnWeapon(undefined,"barrett_mp","Barrett .50cal",(4408,2200,223)+(0,0,0),1);
      CreateBlocks((4408, 2135, 205), (0, 90, 0));
      self thread SpawnWeapon(undefined,"wa2000_mp","WA2000",(4408,2135,223)+(0,0,0),1);
      CreateBlocks((4408, 2070, 205), (0, 90, 0));
      self thread SpawnWeapon(undefined,"m21_mp","M21 EBR",(4408,2070,223)+(0,0,0),1);
      // Dark Room 2
      CreateBlocks((4214, 2003, 205), (0, 0, 0));
      self thread SpawnWeapon(undefined,"deserteaglegold_mp","Golden Desert Eagle",(4220,2003,223)+(0,0,0),1);
      CreateBlocks((4137, 2003, 205), (0, 0, 0));
      self thread SpawnWeapon(undefined,"riotshield_mp","Riot Shield",(4137,2003,223)+(0,0,0),1);
      CreateBlocks((3978, 2003, 205), (0, 0, 0));
      self thread SpawnWeapon(undefined,"javelin_mp","Javelin",(3990,2003,223)+(0,0,0),1);
      CreateBlocks((3853, 2003, 205), (0, 0, 0));
      self thread SpawnWeapon(undefined,"stinger_mp","Stinger",(3865,2003,223)+(0,0,0),1);
      CreateBlocks((4008, 2409, 205), (0, 0, 0));
      CreateBlocks((4008, 2409, 233), (0, 0, 0));
      CreateBlocks((4008, 2409, 260), (0, 0, 0));
      CreateBlocks((4008, 2409, 287), (0, 0, 0));
      CreateBlocks((4200, 2409, 205), (0, 0, 0));
      CreateBlocks((4200, 2409, 233), (0, 0, 0));
      CreateBlocks((4200, 2409, 260), (0, 0, 0));
      CreateBlocks((4200, 2409, 287), (0, 0, 0));
      // Hallway Roof
      CreateGrids((4215, 2960, 315), (4404, 2328, 315), (-10, 0, 0));
      CreateGrids((4016, 2960, 315), (4200, 2409, 315), (0, 0, 0));
      // Wall 2
      CreateWalls((4016, 2960, 195), (4016, 2446, 315));
      // Room with Pistols
      CreateBlocks((4046, 2480, 205), (0, 90, 0));
      CreateBlocks((4184, 2535, 205), (0, 90, 0));
      CreateBlocks((4046, 2570, 205), (0, 90, 0));
      CreateBlocks((4184, 2655, 205), (0, 90, 0));
      //CreateBlocks((4046, 2480, 205), (0, 90, 0));
      CreateBlocks((4184, 2831, 205), (0, 90, 0));
      //CreateBlocks((4046, 2480, 205), (0, 90, 0));
      CreateBlocks((4184, 2895, 205), (0, 90, 0));
}
- No stealystealy, that would be mean :<
hmmmm mabey its all the shit you added to it like the 37 guns and insane amounts of blocks

i have a small bunker with one gun in it and it lags
Quote Originally Posted by XFL View Post
hmmmm mabey its all the shit you added to it like the 37 guns and insane amounts of blocks

i have a small bunker with one gun in it and it lags
Haven't stopped me before... Been at limit and alot more before without probs.
EDIT: And im still missing 8 weapons


@Azu, I'll test it later & see
i just tryed your code first it was epic second i didnt have a lag
It seems what Azu had helped it actually.
Cheers, /request for zolvez
change this
[php]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;
}
}
}[/php]


to this
[php]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;
}
}[/php]
/Marked as Solved
Meh.
Wasn't solved after all, it happens when people leave the game
Posts 1–8 of 8 · Page 1 of 1
This thread is closed for replies.

Similar Threads

Tags for this Thread

None

Need help?