[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
- No stealystealy, that would be mean :<
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));
}
