Skip to content
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Donate
Collapse

Plutonium

  1. Home
  2. MW3 Modding Releases & Resources
  3. [Release] [GSC] MapEdit

[Release] [GSC] MapEdit

Scheduled Pinned Locked Moved MW3 Modding Releases & Resources
12 Posts 9 Posters 2.0k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Emosewajundefined Offline
    Emosewajundefined Offline
    Emosewaj
    VIP
    wrote on last edited by
    #3

    That's pretty pog

    1 Reply Last reply
    0
    • luigistyleundefined Offline
      luigistyleundefined Offline
      luigistyle
      Plutonium Staff
      wrote on last edited by
      #4

      Nice release 🙂

      1 Reply Last reply
      0
      • Mr. Androidundefined Offline
        Mr. Androidundefined Offline
        Mr. Android
        Plutonium Admin
        wrote on last edited by
        #5

        Actually cool as fuck. Nice one OP.

        1 Reply Last reply
        0
        • Chaseundefined Offline
          Chaseundefined Offline
          Chase
          wrote on last edited by
          #6

          Very neat!:)

          1 Reply Last reply
          0
          • S3VDITOundefined S3VDITO

            Simple MapEdit, don't wait for anything more, for now...

            Special thanks to TTV_WIZEQC for the motivation to do this XD
            This script worked without problems on servers:

            • TF-Infected TP #1
            • TF-Infected TP #2

            I use GSC functions for rotate crates, script not using fields for modification angles

            UPDATED: Rewrited on GSC
            Source (notepad++ bad formating code 😞 )

            // #include maps\mp\gametypes\_teams; // error
            
            init()
            {
                switch(GetDvar("mapname"))
                {
                    case "mp_rust":
                        CreateFloor((0, 0, 0), (512, 512, 0), false);
            			
            			createElevator((0, 0, 0), 512, (0, 0, 0));
                        break;
            		case "mp_paris":
            			thread createJumpZone((-1036.623, -739.0071, 145.1301), (0, 0, 1250));
            			thread createJumpZone((-1888.126, 632.3943, 289.125), (-250, 0, 1150));
            			break;
            		case "mp_dome":
            			thread createTeleportFlagPressedButton((0,0,-350), (500,0,900));
            			thread createTeleportFlag((0,125,-350), (500,0,1500));
            			break;
                }
            }
            
            createFloor(corner1, corner2, isInvisible)
            {
                width = corner1[0] - corner2[0];
                if (width < 0) 
                {
                    width = width * -1;
                }
                    
                length = corner1[1] - corner2[1];
                    
                if (length < 0) 
                {
                    length = length * -1;
                }
                        
                bwide = floor(width / 50);
                blength = floor(length / 30);
                C = (corner2[0] - corner1[0], corner2[1] - corner1[1], corner2[2] - corner1[2]);
                A = (C[0] / bwide, C[1] / blength, 0);
             
                for (i = 0; i < bwide; ++i)
                {
                    for (j = 0; j < blength; ++j)
                    {
                        crate = spawn("script_model", (corner1[0] + A[0] * i, corner1[1] + A[1] * j, corner1[2]));
                        crate setModel("com_plasticcase_friendly");
                        crate CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
                        
                        if(isInvisible)
                        {
                            crate hide();
                        }
                    }
                }
            }
            
            createRamp(top, bottom, isInvisible) 
            {
                distance = distance(top, bottom);
                blocks = ceil(distance / 30) + 1;
                
                A = ((top[0] - bottom[0]) / blocks, (top[1] - bottom[1]) / blocks, (top[2] - bottom[2]) / blocks);
                temp = vectorToAngles((top[0] - bottom[0], top[1] - bottom[1], top[2] - bottom[2]));
                BA = (temp[2], temp[1] + 90, temp[0]);
             
                
                for (b = 0; b <= blocks; ++b) {
                    crate = spawn("script_model", (bottom[0] + A[0] * b, bottom[1] + A[1] * b, bottom[2] + A[2] * b));
                    crate setModel("com_plasticcase_friendly");
                    crate CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
                    crate.angles = BA;
                    
                    if(isInvisible)
                    {
                        crate Hide();
                    }
                }
            }
            
            createWall(start, end, isInvisible)
            {
                D = Distance2D(start, end);
                H = Distance((0, 0, start[2]), (0, 0, end[2]));
                blocks = Ceil(D / 60);
                height = Ceil(H / 30);
             
                C = (end[0] - start[0], end[1] - start[1], end[2] - start[2]);
                A = (C[0] / blocks, C[1] / blocks, C[2] / height);
                TXA = A[0] / 4;
                TYA = A[1] / 4;
                angle = vectorToAngles(C);
                angle = (0, angle[1], 90);
             
                for (h = 0; h < height; ++h)
                {
                    crate = spawn("script_model", (start[0] + TXA, start[1] + TYA, start[2] + 15 + A[2] * h));
                    crate setModel("com_plasticcase_friendly");
                    crate CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
            		crate.angles = angle;
                    
                    if(isInvisible)
                    {
                        crate Hide();
                    }
             
                    for (i = 0; i < blocks; ++i)
                    {
                        crate = spawn("script_model", (start[0] + A[0] * i, start[1] + A[1] * i, start[2] + 15 + A[2] * h));
                        crate setModel("com_plasticcase_friendly");
            			crate CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
            			crate.angles = angle;
                        
                        if(isInvisible)
                        {
                            crate Hide();
                        }
                    }
             
                    crate = spawn("script_model", (start[0] + TXA * -1, start[1] + TYA * -1, start[2] + 15 + A[2] * h));
                    crate setModel("com_plasticcase_friendly");
                    crate CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
            		crate.angles = angle;
                    
                    if(isInvisible)
                    {
                        crate Hide();
                    }
                }
            }
            
            createJumpZone(position, impulse)
            {
            	level endon("game_ended");
            	
            	zone = spawn("script_model", position);
            	zone setModel("weapon_c4_bombsquad");
            	zone setCursorHint("HINT_NOICON");
            	zone setHintString("Press and hold ^1[{+activate}] ^7for jump");
            	zone makeUsable();
            	
            	for (;;)
            	{
            		wait (.25);
            		
            		foreach (player in level.players)
            		{
            			dist = distance(player.origin, position);
            			if (dist < 75 && player isOnGround() && player useButtonPressed())
            			{
            				player setVelocity(impulse);
            			}
            		}
            	}
            }
            
            createTeleportFlagPressedButton(startOrigin, endOrigin)
            {
            	level endon("game_ended");
            	
            	flagEnter = spawn("script_model", startOrigin);
                flagEnter setModel(getTeamFlagModel("allieschar"));
            	flagEnter setCursorHint("HINT_NOICON");
            	flagEnter setHintString("Press and hold ^1[{+activate}] ^7for teleported");
            	flagEnter makeUsable();
            	
                flagExit = spawn("script_model", endOrigin);
                flagExit setModel(getTeamFlagModel("axischar"));
            	flagExit setCursorHint("HINT_NOICON");
            	flagExit setHintString("Press and hold ^1[{+activate}] ^7for go back");
            	flagExit makeUsable();
            	
            	curObjID = maps\mp\gametypes\_gameobjects::getNextObjID();
            	objective_add(curObjID, "active");
            	objective_position(curObjID, startOrigin);
            	objective_icon(curObjID, "compass_waypoint_bomb");
            
            	for (;;)
            	{
            		wait (.5);
            		foreach (player in level.players)
            		{
            			distEnter = distance(player.origin, startOrigin);
            			if (distEnter < 75 && player isOnGround() && player useButtonPressed())
            			{
            				player setOrigin(flagExit.origin);
            				continue;
            			}
            			
            			distExit = distance(player.origin, endOrigin);
            			if (distExit < 75 && player isOnGround() && player useButtonPressed())
            			{
            				player setOrigin(flagEnter.origin);
            				continue;
            			}
            		}
            	}
            }
            
            createTeleportFlag(startOrigin, endOrigin)
            {
            	level endon("game_ended");
            	
            	flagEnter = spawn("script_model", startOrigin);
                flagEnter setModel(getTeamFlagModel("allieschar"));
            	
                flagExit = spawn("script_model", endOrigin);
                flagExit setModel(getTeamFlagModel("axischar"));
            	
            	curObjID = maps\mp\gametypes\_gameobjects::getNextObjID();
            	objective_add(curObjID, "active");
            	objective_position(curObjID, startOrigin);
            	objective_icon(curObjID, "compass_waypoint_bomb");
            
            	for (;;)
            	{
            		wait (.25);
            		foreach (player in level.players)
            		{
            			dist = distance(player.origin, startOrigin);
            			if (dist < 75)
            			{
            				player setOrigin(endOrigin);
            			}
            		}
            	}
            }
            
            createElevator(start, Z, angle)
            {
            	floors = [];
            	
            	origin = spawn("script_origin", start + (0, 0, 45));
            	
            	floor = spawn("script_model", start);
                floor setModel("com_plasticcase_enemy");
            	floor solid();
            	floor SetContents(1);
                floor CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
            	floor.angles = angle;
            	
            	floor linkTo(origin);
            	
            	for (i = 0; i < 4; i++)
            	{
            		offset = (0, 0, 0);
            		
            		if (i == 0)
            			offset = (28, 30, 0);
            		else if (i == 1)
            			offset = (-28, 30, 0);
            		else if (i == 2)
            			offset = (28, -30, 0);
            		else if (i == 3)
            			offset = (-28, -30, 0);
            		
                    floor = spawn("script_model", start + offset);
                    floor setModel("com_plasticcase_enemy");
                    floor CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
            		floor.angles = angle;
            		floors[i] = floor;
            		floor linkTo(origin);
            	}
            	
            	for (;;)
            	{
            		wait (10);
            		origin moveZ(Z, 5);
            		foreach (player in level.players)
            		{
            			dist = distance(player.origin, origin.origin);
            			if (dist < 125)
            			{
            				player playerLinkTo(origin);
            				player playerLinkedOffsetEnable();
            			}
            		}
            		
            		wait (5);
            		foreach (player in level.players)
            		{
            			dist = distance(player.origin, origin.origin);
            			if (dist < 125)
            			{
            				player setOrigin(player.origin + (0, 0, 10));
            				player unLink();
            			}
            		}
            		
            		wait (10);
            		origin moveZ(-1 * Z, 5);
            		foreach (player in level.players)
            		{
            			dist = distance(player.origin, origin.origin);
            			if (dist < 125)
            			{
            				player playerLinkTo(origin);
            				player playerLinkedOffsetEnable();
            			}
            		}
            		
            		wait (5);
            		foreach (player in level.players)
            		{
            			dist = distance(player.origin, origin.origin);
            			if (dist < 125)
            			{
            				player setOrigin(player.origin + (0, 0, 10));
            				player unLink();
            			}
            		}
            	}
            }
            
            getTeamFlagModel(teamChar)
            {
            	return tableLookup("mp/factionTable.csv", 0, getMapCustom(teamChar), 10);
            }
            

            You can test script now on maps: Resistance(jump zones, tree lunge), Rust (center map), Dome(flags teleporter)

            CreateRamp(topOrigin, bottomOrigin, isInvisible);
            CreateFloor(originA, originB, isInvisible);
            CreateWall(originA, originB, isInvisible);
            
            Origins - is vector type
            [X, Y, Z]
            
            isInvisible - is bool type, false - visible, true - hide
            

            Screenshots from servers
            1.png 2.png 4.png 3.png

            Video
            https://www.youtube.com/watch?v=BJI4NqyLoxM

            TheHyperundefined Offline
            TheHyperundefined Offline
            TheHyper
            wrote on last edited by
            #7

            S3VDITO amazing work bro, well thought.

            1 Reply Last reply
            0
            • S3VDITOundefined Offline
              S3VDITOundefined Offline
              S3VDITO
              wrote on last edited by
              #8

              updated: Rewritten from Chai to GSC

              1 Reply Last reply
              1
              • S3VDITOundefined Offline
                S3VDITOundefined Offline
                S3VDITO
                wrote on last edited by S3VDITO
                #9

                Added Elevator and Flag teleporter (telopter to/from by button)

                // #include maps\mp\gametypes\_teams; // error
                
                init()
                {
                    switch(GetDvar("mapname"))
                    {
                        case "mp_rust":
                            CreateFloor((0, 0, 0), (512, 512, 0), false);
                			
                			createElevator((0, 0, 0), 512, (0, 0, 0));
                            break;
                		case "mp_paris":
                			thread createJumpZone((-1036.623, -739.0071, 145.1301), (0, 0, 1250));
                			thread createJumpZone((-1888.126, 632.3943, 289.125), (-250, 0, 1150));
                			break;
                		case "mp_dome":
                			thread createTeleportFlagPressedButton((0,0,-350), (500,0,900));
                			thread createTeleportFlag((0,125,-350), (500,0,1500));
                			break;
                    }
                }
                
                createFloor(corner1, corner2, isInvisible)
                {
                    width = corner1[0] - corner2[0];
                    if (width < 0) 
                    {
                        width = width * -1;
                    }
                        
                    length = corner1[1] - corner2[1];
                        
                    if (length < 0) 
                    {
                        length = length * -1;
                    }
                            
                    bwide = floor(width / 50);
                    blength = floor(length / 30);
                    C = (corner2[0] - corner1[0], corner2[1] - corner1[1], corner2[2] - corner1[2]);
                    A = (C[0] / bwide, C[1] / blength, 0);
                 
                    for (i = 0; i < bwide; ++i)
                    {
                        for (j = 0; j < blength; ++j)
                        {
                            crate = spawn("script_model", (corner1[0] + A[0] * i, corner1[1] + A[1] * j, corner1[2]));
                            crate setModel("com_plasticcase_friendly");
                            crate CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
                            
                            if(isInvisible)
                            {
                                crate hide();
                            }
                        }
                    }
                }
                
                createRamp(top, bottom, isInvisible) 
                {
                    distance = distance(top, bottom);
                    blocks = ceil(distance / 30) + 1;
                    
                    A = ((top[0] - bottom[0]) / blocks, (top[1] - bottom[1]) / blocks, (top[2] - bottom[2]) / blocks);
                    temp = vectorToAngles((top[0] - bottom[0], top[1] - bottom[1], top[2] - bottom[2]));
                    BA = (temp[2], temp[1] + 90, temp[0]);
                 
                    
                    for (b = 0; b <= blocks; ++b) {
                        crate = spawn("script_model", (bottom[0] + A[0] * b, bottom[1] + A[1] * b, bottom[2] + A[2] * b));
                        crate setModel("com_plasticcase_friendly");
                        crate CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
                        crate.angles = BA;
                        
                        if(isInvisible)
                        {
                            crate Hide();
                        }
                    }
                }
                
                createWall(start, end, isInvisible)
                {
                    D = Distance2D(start, end);
                    H = Distance((0, 0, start[2]), (0, 0, end[2]));
                    blocks = Ceil(D / 60);
                    height = Ceil(H / 30);
                 
                    C = (end[0] - start[0], end[1] - start[1], end[2] - start[2]);
                    A = (C[0] / blocks, C[1] / blocks, C[2] / height);
                    TXA = A[0] / 4;
                    TYA = A[1] / 4;
                    angle = vectorToAngles(C);
                    angle = (0, angle[1], 90);
                 
                    for (h = 0; h < height; ++h)
                    {
                        crate = spawn("script_model", (start[0] + TXA, start[1] + TYA, start[2] + 15 + A[2] * h));
                        crate setModel("com_plasticcase_friendly");
                        crate CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
                		crate.angles = angle;
                        
                        if(isInvisible)
                        {
                            crate Hide();
                        }
                 
                        for (i = 0; i < blocks; ++i)
                        {
                            crate = spawn("script_model", (start[0] + A[0] * i, start[1] + A[1] * i, start[2] + 15 + A[2] * h));
                            crate setModel("com_plasticcase_friendly");
                			crate CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
                			crate.angles = angle;
                            
                            if(isInvisible)
                            {
                                crate Hide();
                            }
                        }
                 
                        crate = spawn("script_model", (start[0] + TXA * -1, start[1] + TYA * -1, start[2] + 15 + A[2] * h));
                        crate setModel("com_plasticcase_friendly");
                        crate CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
                		crate.angles = angle;
                        
                        if(isInvisible)
                        {
                            crate Hide();
                        }
                    }
                }
                
                createJumpZone(position, impulse)
                {
                	level endon("game_ended");
                	
                	zone = spawn("script_model", position);
                	zone setModel("weapon_c4_bombsquad");
                	zone setCursorHint("HINT_NOICON");
                	zone setHintString("Press and hold ^1[{+activate}] ^7for jump");
                	zone makeUsable();
                	
                	for (;;)
                	{
                		wait (.25);
                		
                		foreach (player in level.players)
                		{
                			dist = distance(player.origin, position);
                			if (dist < 75 && player isOnGround() && player useButtonPressed())
                			{
                				player setVelocity(impulse);
                			}
                		}
                	}
                }
                
                createTeleportFlagPressedButton(startOrigin, endOrigin)
                {
                	level endon("game_ended");
                	
                	flagEnter = spawn("script_model", startOrigin);
                    flagEnter setModel(getTeamFlagModel("allieschar"));
                	flagEnter setCursorHint("HINT_NOICON");
                	flagEnter setHintString("Press and hold ^1[{+activate}] ^7for teleported");
                	flagEnter makeUsable();
                	
                    flagExit = spawn("script_model", endOrigin);
                    flagExit setModel(getTeamFlagModel("axischar"));
                	flagExit setCursorHint("HINT_NOICON");
                	flagExit setHintString("Press and hold ^1[{+activate}] ^7for go back");
                	flagExit makeUsable();
                	
                	curObjID = maps\mp\gametypes\_gameobjects::getNextObjID();
                	objective_add(curObjID, "active");
                	objective_position(curObjID, startOrigin);
                	objective_icon(curObjID, "compass_waypoint_bomb");
                
                	for (;;)
                	{
                		wait (.5);
                		foreach (player in level.players)
                		{
                			distEnter = distance(player.origin, startOrigin);
                			if (distEnter < 75 && player isOnGround() && player useButtonPressed())
                			{
                				player setOrigin(flagExit.origin);
                				continue;
                			}
                			
                			distExit = distance(player.origin, endOrigin);
                			if (distExit < 75 && player isOnGround() && player useButtonPressed())
                			{
                				player setOrigin(flagEnter.origin);
                				continue;
                			}
                		}
                	}
                }
                
                createTeleportFlag(startOrigin, endOrigin)
                {
                	level endon("game_ended");
                	
                	flagEnter = spawn("script_model", startOrigin);
                    flagEnter setModel(getTeamFlagModel("allieschar"));
                	
                    flagExit = spawn("script_model", endOrigin);
                    flagExit setModel(getTeamFlagModel("axischar"));
                	
                	curObjID = maps\mp\gametypes\_gameobjects::getNextObjID();
                	objective_add(curObjID, "active");
                	objective_position(curObjID, startOrigin);
                	objective_icon(curObjID, "compass_waypoint_bomb");
                
                	for (;;)
                	{
                		wait (.25);
                		foreach (player in level.players)
                		{
                			dist = distance(player.origin, startOrigin);
                			if (dist < 75)
                			{
                				player setOrigin(endOrigin);
                			}
                		}
                	}
                }
                
                createElevator(start, Z, angle)
                {
                	floors = [];
                	
                	origin = spawn("script_origin", start + (0, 0, 45));
                	
                	floor = spawn("script_model", start);
                    floor setModel("com_plasticcase_enemy");
                	floor solid();
                	floor SetContents(1);
                    floor CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
                	floor.angles = angle;
                	
                	floor linkTo(origin);
                	
                	for (i = 0; i < 4; i++)
                	{
                		offset = (0, 0, 0);
                		
                		if (i == 0)
                			offset = (28, 30, 0);
                		else if (i == 1)
                			offset = (-28, 30, 0);
                		else if (i == 2)
                			offset = (28, -30, 0);
                		else if (i == 3)
                			offset = (-28, -30, 0);
                		
                        floor = spawn("script_model", start + offset);
                        floor setModel("com_plasticcase_enemy");
                        floor CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
                	floor.angles = angle;
                	floors[i] = floor;
                	floor linkTo(origin);
                	}
                	
                	for (;;)
                	{
                		wait (10);
                		origin moveZ(Z, 5);
                		foreach (player in level.players)
                		{
                			dist = distance(player.origin, origin.origin);
                			if (dist < 125)
                			{
                				player playerLinkTo(origin);
                				player playerLinkedOffsetEnable();
                			}
                		}
                		
                		wait (5);
                		foreach (player in level.players)
                		{
                			dist = distance(player.origin, origin.origin);
                			if (dist < 125)
                			{
                				player setOrigin(player.origin + (0, 0, 10));
                				player unLink();
                			}
                		}
                		
                		wait (10);
                		origin moveZ(-1 * Z, 5);
                		foreach (player in level.players)
                		{
                			dist = distance(player.origin, origin.origin);
                			if (dist < 125)
                			{
                				player playerLinkTo(origin);
                				player playerLinkedOffsetEnable();
                			}
                		}
                		
                		wait (5);
                		foreach (player in level.players)
                		{
                			dist = distance(player.origin, origin.origin);
                			if (dist < 125)
                			{
                				player setOrigin(player.origin + (0, 0, 10));
                				player unLink();
                			}
                		}
                	}
                }
                
                getTeamFlagModel(teamChar)
                {
                	return tableLookup("mp/factionTable.csv", 0, getMapCustom(teamChar), 10);
                }
                

                https://www.youtube.com/watch?v=a1tqJ_n29pA

                Kalitosundefined 1 Reply Last reply
                2
                • S3VDITOundefined S3VDITO

                  Added Elevator and Flag teleporter (telopter to/from by button)

                  // #include maps\mp\gametypes\_teams; // error
                  
                  init()
                  {
                      switch(GetDvar("mapname"))
                      {
                          case "mp_rust":
                              CreateFloor((0, 0, 0), (512, 512, 0), false);
                  			
                  			createElevator((0, 0, 0), 512, (0, 0, 0));
                              break;
                  		case "mp_paris":
                  			thread createJumpZone((-1036.623, -739.0071, 145.1301), (0, 0, 1250));
                  			thread createJumpZone((-1888.126, 632.3943, 289.125), (-250, 0, 1150));
                  			break;
                  		case "mp_dome":
                  			thread createTeleportFlagPressedButton((0,0,-350), (500,0,900));
                  			thread createTeleportFlag((0,125,-350), (500,0,1500));
                  			break;
                      }
                  }
                  
                  createFloor(corner1, corner2, isInvisible)
                  {
                      width = corner1[0] - corner2[0];
                      if (width < 0) 
                      {
                          width = width * -1;
                      }
                          
                      length = corner1[1] - corner2[1];
                          
                      if (length < 0) 
                      {
                          length = length * -1;
                      }
                              
                      bwide = floor(width / 50);
                      blength = floor(length / 30);
                      C = (corner2[0] - corner1[0], corner2[1] - corner1[1], corner2[2] - corner1[2]);
                      A = (C[0] / bwide, C[1] / blength, 0);
                   
                      for (i = 0; i < bwide; ++i)
                      {
                          for (j = 0; j < blength; ++j)
                          {
                              crate = spawn("script_model", (corner1[0] + A[0] * i, corner1[1] + A[1] * j, corner1[2]));
                              crate setModel("com_plasticcase_friendly");
                              crate CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
                              
                              if(isInvisible)
                              {
                                  crate hide();
                              }
                          }
                      }
                  }
                  
                  createRamp(top, bottom, isInvisible) 
                  {
                      distance = distance(top, bottom);
                      blocks = ceil(distance / 30) + 1;
                      
                      A = ((top[0] - bottom[0]) / blocks, (top[1] - bottom[1]) / blocks, (top[2] - bottom[2]) / blocks);
                      temp = vectorToAngles((top[0] - bottom[0], top[1] - bottom[1], top[2] - bottom[2]));
                      BA = (temp[2], temp[1] + 90, temp[0]);
                   
                      
                      for (b = 0; b <= blocks; ++b) {
                          crate = spawn("script_model", (bottom[0] + A[0] * b, bottom[1] + A[1] * b, bottom[2] + A[2] * b));
                          crate setModel("com_plasticcase_friendly");
                          crate CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
                          crate.angles = BA;
                          
                          if(isInvisible)
                          {
                              crate Hide();
                          }
                      }
                  }
                  
                  createWall(start, end, isInvisible)
                  {
                      D = Distance2D(start, end);
                      H = Distance((0, 0, start[2]), (0, 0, end[2]));
                      blocks = Ceil(D / 60);
                      height = Ceil(H / 30);
                   
                      C = (end[0] - start[0], end[1] - start[1], end[2] - start[2]);
                      A = (C[0] / blocks, C[1] / blocks, C[2] / height);
                      TXA = A[0] / 4;
                      TYA = A[1] / 4;
                      angle = vectorToAngles(C);
                      angle = (0, angle[1], 90);
                   
                      for (h = 0; h < height; ++h)
                      {
                          crate = spawn("script_model", (start[0] + TXA, start[1] + TYA, start[2] + 15 + A[2] * h));
                          crate setModel("com_plasticcase_friendly");
                          crate CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
                  		crate.angles = angle;
                          
                          if(isInvisible)
                          {
                              crate Hide();
                          }
                   
                          for (i = 0; i < blocks; ++i)
                          {
                              crate = spawn("script_model", (start[0] + A[0] * i, start[1] + A[1] * i, start[2] + 15 + A[2] * h));
                              crate setModel("com_plasticcase_friendly");
                  			crate CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
                  			crate.angles = angle;
                              
                              if(isInvisible)
                              {
                                  crate Hide();
                              }
                          }
                   
                          crate = spawn("script_model", (start[0] + TXA * -1, start[1] + TYA * -1, start[2] + 15 + A[2] * h));
                          crate setModel("com_plasticcase_friendly");
                          crate CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
                  		crate.angles = angle;
                          
                          if(isInvisible)
                          {
                              crate Hide();
                          }
                      }
                  }
                  
                  createJumpZone(position, impulse)
                  {
                  	level endon("game_ended");
                  	
                  	zone = spawn("script_model", position);
                  	zone setModel("weapon_c4_bombsquad");
                  	zone setCursorHint("HINT_NOICON");
                  	zone setHintString("Press and hold ^1[{+activate}] ^7for jump");
                  	zone makeUsable();
                  	
                  	for (;;)
                  	{
                  		wait (.25);
                  		
                  		foreach (player in level.players)
                  		{
                  			dist = distance(player.origin, position);
                  			if (dist < 75 && player isOnGround() && player useButtonPressed())
                  			{
                  				player setVelocity(impulse);
                  			}
                  		}
                  	}
                  }
                  
                  createTeleportFlagPressedButton(startOrigin, endOrigin)
                  {
                  	level endon("game_ended");
                  	
                  	flagEnter = spawn("script_model", startOrigin);
                      flagEnter setModel(getTeamFlagModel("allieschar"));
                  	flagEnter setCursorHint("HINT_NOICON");
                  	flagEnter setHintString("Press and hold ^1[{+activate}] ^7for teleported");
                  	flagEnter makeUsable();
                  	
                      flagExit = spawn("script_model", endOrigin);
                      flagExit setModel(getTeamFlagModel("axischar"));
                  	flagExit setCursorHint("HINT_NOICON");
                  	flagExit setHintString("Press and hold ^1[{+activate}] ^7for go back");
                  	flagExit makeUsable();
                  	
                  	curObjID = maps\mp\gametypes\_gameobjects::getNextObjID();
                  	objective_add(curObjID, "active");
                  	objective_position(curObjID, startOrigin);
                  	objective_icon(curObjID, "compass_waypoint_bomb");
                  
                  	for (;;)
                  	{
                  		wait (.5);
                  		foreach (player in level.players)
                  		{
                  			distEnter = distance(player.origin, startOrigin);
                  			if (distEnter < 75 && player isOnGround() && player useButtonPressed())
                  			{
                  				player setOrigin(flagExit.origin);
                  				continue;
                  			}
                  			
                  			distExit = distance(player.origin, endOrigin);
                  			if (distExit < 75 && player isOnGround() && player useButtonPressed())
                  			{
                  				player setOrigin(flagEnter.origin);
                  				continue;
                  			}
                  		}
                  	}
                  }
                  
                  createTeleportFlag(startOrigin, endOrigin)
                  {
                  	level endon("game_ended");
                  	
                  	flagEnter = spawn("script_model", startOrigin);
                      flagEnter setModel(getTeamFlagModel("allieschar"));
                  	
                      flagExit = spawn("script_model", endOrigin);
                      flagExit setModel(getTeamFlagModel("axischar"));
                  	
                  	curObjID = maps\mp\gametypes\_gameobjects::getNextObjID();
                  	objective_add(curObjID, "active");
                  	objective_position(curObjID, startOrigin);
                  	objective_icon(curObjID, "compass_waypoint_bomb");
                  
                  	for (;;)
                  	{
                  		wait (.25);
                  		foreach (player in level.players)
                  		{
                  			dist = distance(player.origin, startOrigin);
                  			if (dist < 75)
                  			{
                  				player setOrigin(endOrigin);
                  			}
                  		}
                  	}
                  }
                  
                  createElevator(start, Z, angle)
                  {
                  	floors = [];
                  	
                  	origin = spawn("script_origin", start + (0, 0, 45));
                  	
                  	floor = spawn("script_model", start);
                      floor setModel("com_plasticcase_enemy");
                  	floor solid();
                  	floor SetContents(1);
                      floor CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
                  	floor.angles = angle;
                  	
                  	floor linkTo(origin);
                  	
                  	for (i = 0; i < 4; i++)
                  	{
                  		offset = (0, 0, 0);
                  		
                  		if (i == 0)
                  			offset = (28, 30, 0);
                  		else if (i == 1)
                  			offset = (-28, 30, 0);
                  		else if (i == 2)
                  			offset = (28, -30, 0);
                  		else if (i == 3)
                  			offset = (-28, -30, 0);
                  		
                          floor = spawn("script_model", start + offset);
                          floor setModel("com_plasticcase_enemy");
                          floor CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
                  	floor.angles = angle;
                  	floors[i] = floor;
                  	floor linkTo(origin);
                  	}
                  	
                  	for (;;)
                  	{
                  		wait (10);
                  		origin moveZ(Z, 5);
                  		foreach (player in level.players)
                  		{
                  			dist = distance(player.origin, origin.origin);
                  			if (dist < 125)
                  			{
                  				player playerLinkTo(origin);
                  				player playerLinkedOffsetEnable();
                  			}
                  		}
                  		
                  		wait (5);
                  		foreach (player in level.players)
                  		{
                  			dist = distance(player.origin, origin.origin);
                  			if (dist < 125)
                  			{
                  				player setOrigin(player.origin + (0, 0, 10));
                  				player unLink();
                  			}
                  		}
                  		
                  		wait (10);
                  		origin moveZ(-1 * Z, 5);
                  		foreach (player in level.players)
                  		{
                  			dist = distance(player.origin, origin.origin);
                  			if (dist < 125)
                  			{
                  				player playerLinkTo(origin);
                  				player playerLinkedOffsetEnable();
                  			}
                  		}
                  		
                  		wait (5);
                  		foreach (player in level.players)
                  		{
                  			dist = distance(player.origin, origin.origin);
                  			if (dist < 125)
                  			{
                  				player setOrigin(player.origin + (0, 0, 10));
                  				player unLink();
                  			}
                  		}
                  	}
                  }
                  
                  getTeamFlagModel(teamChar)
                  {
                  	return tableLookup("mp/factionTable.csv", 0, getMapCustom(teamChar), 10);
                  }
                  

                  https://www.youtube.com/watch?v=a1tqJ_n29pA

                  Kalitosundefined Offline
                  Kalitosundefined Offline
                  Kalitos
                  wrote on last edited by
                  #10

                  S3VDITO Correct me if I'm wrong but I think the elevators should run it in a separate thread. Such that:

                  thread createElevator((0, 0, 0), 512, (0, 0, 0));
                  
                  S3VDITOundefined 1 Reply Last reply
                  1
                  • Kalitosundefined Kalitos

                    S3VDITO Correct me if I'm wrong but I think the elevators should run it in a separate thread. Such that:

                    thread createElevator((0, 0, 0), 512, (0, 0, 0));
                    
                    S3VDITOundefined Offline
                    S3VDITOundefined Offline
                    S3VDITO
                    wrote on last edited by S3VDITO
                    #11

                    Kalitos oh, yes, because of the cycles inside the elevator, thread must be created, thanks

                    1 Reply Last reply
                    0
                    • S3VDITOundefined S3VDITO

                      Simple MapEdit, don't wait for anything more, for now...

                      Special thanks to TTV_WIZEQC for the motivation to do this XD
                      This script worked without problems on servers:

                      • TF-Infected TP #1
                      • TF-Infected TP #2

                      I use GSC functions for rotate crates, script not using fields for modification angles

                      UPDATED: Rewrited on GSC
                      Source (notepad++ bad formating code 😞 )

                      // #include maps\mp\gametypes\_teams; // error
                      
                      init()
                      {
                          switch(GetDvar("mapname"))
                          {
                              case "mp_rust":
                                  CreateFloor((0, 0, 0), (512, 512, 0), false);
                      			
                      			createElevator((0, 0, 0), 512, (0, 0, 0));
                                  break;
                      		case "mp_paris":
                      			thread createJumpZone((-1036.623, -739.0071, 145.1301), (0, 0, 1250));
                      			thread createJumpZone((-1888.126, 632.3943, 289.125), (-250, 0, 1150));
                      			break;
                      		case "mp_dome":
                      			thread createTeleportFlagPressedButton((0,0,-350), (500,0,900));
                      			thread createTeleportFlag((0,125,-350), (500,0,1500));
                      			break;
                          }
                      }
                      
                      createFloor(corner1, corner2, isInvisible)
                      {
                          width = corner1[0] - corner2[0];
                          if (width < 0) 
                          {
                              width = width * -1;
                          }
                              
                          length = corner1[1] - corner2[1];
                              
                          if (length < 0) 
                          {
                              length = length * -1;
                          }
                                  
                          bwide = floor(width / 50);
                          blength = floor(length / 30);
                          C = (corner2[0] - corner1[0], corner2[1] - corner1[1], corner2[2] - corner1[2]);
                          A = (C[0] / bwide, C[1] / blength, 0);
                       
                          for (i = 0; i < bwide; ++i)
                          {
                              for (j = 0; j < blength; ++j)
                              {
                                  crate = spawn("script_model", (corner1[0] + A[0] * i, corner1[1] + A[1] * j, corner1[2]));
                                  crate setModel("com_plasticcase_friendly");
                                  crate CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
                                  
                                  if(isInvisible)
                                  {
                                      crate hide();
                                  }
                              }
                          }
                      }
                      
                      createRamp(top, bottom, isInvisible) 
                      {
                          distance = distance(top, bottom);
                          blocks = ceil(distance / 30) + 1;
                          
                          A = ((top[0] - bottom[0]) / blocks, (top[1] - bottom[1]) / blocks, (top[2] - bottom[2]) / blocks);
                          temp = vectorToAngles((top[0] - bottom[0], top[1] - bottom[1], top[2] - bottom[2]));
                          BA = (temp[2], temp[1] + 90, temp[0]);
                       
                          
                          for (b = 0; b <= blocks; ++b) {
                              crate = spawn("script_model", (bottom[0] + A[0] * b, bottom[1] + A[1] * b, bottom[2] + A[2] * b));
                              crate setModel("com_plasticcase_friendly");
                              crate CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
                              crate.angles = BA;
                              
                              if(isInvisible)
                              {
                                  crate Hide();
                              }
                          }
                      }
                      
                      createWall(start, end, isInvisible)
                      {
                          D = Distance2D(start, end);
                          H = Distance((0, 0, start[2]), (0, 0, end[2]));
                          blocks = Ceil(D / 60);
                          height = Ceil(H / 30);
                       
                          C = (end[0] - start[0], end[1] - start[1], end[2] - start[2]);
                          A = (C[0] / blocks, C[1] / blocks, C[2] / height);
                          TXA = A[0] / 4;
                          TYA = A[1] / 4;
                          angle = vectorToAngles(C);
                          angle = (0, angle[1], 90);
                       
                          for (h = 0; h < height; ++h)
                          {
                              crate = spawn("script_model", (start[0] + TXA, start[1] + TYA, start[2] + 15 + A[2] * h));
                              crate setModel("com_plasticcase_friendly");
                              crate CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
                      		crate.angles = angle;
                              
                              if(isInvisible)
                              {
                                  crate Hide();
                              }
                       
                              for (i = 0; i < blocks; ++i)
                              {
                                  crate = spawn("script_model", (start[0] + A[0] * i, start[1] + A[1] * i, start[2] + 15 + A[2] * h));
                                  crate setModel("com_plasticcase_friendly");
                      			crate CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
                      			crate.angles = angle;
                                  
                                  if(isInvisible)
                                  {
                                      crate Hide();
                                  }
                              }
                       
                              crate = spawn("script_model", (start[0] + TXA * -1, start[1] + TYA * -1, start[2] + 15 + A[2] * h));
                              crate setModel("com_plasticcase_friendly");
                              crate CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
                      		crate.angles = angle;
                              
                              if(isInvisible)
                              {
                                  crate Hide();
                              }
                          }
                      }
                      
                      createJumpZone(position, impulse)
                      {
                      	level endon("game_ended");
                      	
                      	zone = spawn("script_model", position);
                      	zone setModel("weapon_c4_bombsquad");
                      	zone setCursorHint("HINT_NOICON");
                      	zone setHintString("Press and hold ^1[{+activate}] ^7for jump");
                      	zone makeUsable();
                      	
                      	for (;;)
                      	{
                      		wait (.25);
                      		
                      		foreach (player in level.players)
                      		{
                      			dist = distance(player.origin, position);
                      			if (dist < 75 && player isOnGround() && player useButtonPressed())
                      			{
                      				player setVelocity(impulse);
                      			}
                      		}
                      	}
                      }
                      
                      createTeleportFlagPressedButton(startOrigin, endOrigin)
                      {
                      	level endon("game_ended");
                      	
                      	flagEnter = spawn("script_model", startOrigin);
                          flagEnter setModel(getTeamFlagModel("allieschar"));
                      	flagEnter setCursorHint("HINT_NOICON");
                      	flagEnter setHintString("Press and hold ^1[{+activate}] ^7for teleported");
                      	flagEnter makeUsable();
                      	
                          flagExit = spawn("script_model", endOrigin);
                          flagExit setModel(getTeamFlagModel("axischar"));
                      	flagExit setCursorHint("HINT_NOICON");
                      	flagExit setHintString("Press and hold ^1[{+activate}] ^7for go back");
                      	flagExit makeUsable();
                      	
                      	curObjID = maps\mp\gametypes\_gameobjects::getNextObjID();
                      	objective_add(curObjID, "active");
                      	objective_position(curObjID, startOrigin);
                      	objective_icon(curObjID, "compass_waypoint_bomb");
                      
                      	for (;;)
                      	{
                      		wait (.5);
                      		foreach (player in level.players)
                      		{
                      			distEnter = distance(player.origin, startOrigin);
                      			if (distEnter < 75 && player isOnGround() && player useButtonPressed())
                      			{
                      				player setOrigin(flagExit.origin);
                      				continue;
                      			}
                      			
                      			distExit = distance(player.origin, endOrigin);
                      			if (distExit < 75 && player isOnGround() && player useButtonPressed())
                      			{
                      				player setOrigin(flagEnter.origin);
                      				continue;
                      			}
                      		}
                      	}
                      }
                      
                      createTeleportFlag(startOrigin, endOrigin)
                      {
                      	level endon("game_ended");
                      	
                      	flagEnter = spawn("script_model", startOrigin);
                          flagEnter setModel(getTeamFlagModel("allieschar"));
                      	
                          flagExit = spawn("script_model", endOrigin);
                          flagExit setModel(getTeamFlagModel("axischar"));
                      	
                      	curObjID = maps\mp\gametypes\_gameobjects::getNextObjID();
                      	objective_add(curObjID, "active");
                      	objective_position(curObjID, startOrigin);
                      	objective_icon(curObjID, "compass_waypoint_bomb");
                      
                      	for (;;)
                      	{
                      		wait (.25);
                      		foreach (player in level.players)
                      		{
                      			dist = distance(player.origin, startOrigin);
                      			if (dist < 75)
                      			{
                      				player setOrigin(endOrigin);
                      			}
                      		}
                      	}
                      }
                      
                      createElevator(start, Z, angle)
                      {
                      	floors = [];
                      	
                      	origin = spawn("script_origin", start + (0, 0, 45));
                      	
                      	floor = spawn("script_model", start);
                          floor setModel("com_plasticcase_enemy");
                      	floor solid();
                      	floor SetContents(1);
                          floor CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
                      	floor.angles = angle;
                      	
                      	floor linkTo(origin);
                      	
                      	for (i = 0; i < 4; i++)
                      	{
                      		offset = (0, 0, 0);
                      		
                      		if (i == 0)
                      			offset = (28, 30, 0);
                      		else if (i == 1)
                      			offset = (-28, 30, 0);
                      		else if (i == 2)
                      			offset = (28, -30, 0);
                      		else if (i == 3)
                      			offset = (-28, -30, 0);
                      		
                              floor = spawn("script_model", start + offset);
                              floor setModel("com_plasticcase_enemy");
                              floor CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
                      		floor.angles = angle;
                      		floors[i] = floor;
                      		floor linkTo(origin);
                      	}
                      	
                      	for (;;)
                      	{
                      		wait (10);
                      		origin moveZ(Z, 5);
                      		foreach (player in level.players)
                      		{
                      			dist = distance(player.origin, origin.origin);
                      			if (dist < 125)
                      			{
                      				player playerLinkTo(origin);
                      				player playerLinkedOffsetEnable();
                      			}
                      		}
                      		
                      		wait (5);
                      		foreach (player in level.players)
                      		{
                      			dist = distance(player.origin, origin.origin);
                      			if (dist < 125)
                      			{
                      				player setOrigin(player.origin + (0, 0, 10));
                      				player unLink();
                      			}
                      		}
                      		
                      		wait (10);
                      		origin moveZ(-1 * Z, 5);
                      		foreach (player in level.players)
                      		{
                      			dist = distance(player.origin, origin.origin);
                      			if (dist < 125)
                      			{
                      				player playerLinkTo(origin);
                      				player playerLinkedOffsetEnable();
                      			}
                      		}
                      		
                      		wait (5);
                      		foreach (player in level.players)
                      		{
                      			dist = distance(player.origin, origin.origin);
                      			if (dist < 125)
                      			{
                      				player setOrigin(player.origin + (0, 0, 10));
                      				player unLink();
                      			}
                      		}
                      	}
                      }
                      
                      getTeamFlagModel(teamChar)
                      {
                      	return tableLookup("mp/factionTable.csv", 0, getMapCustom(teamChar), 10);
                      }
                      

                      You can test script now on maps: Resistance(jump zones, tree lunge), Rust (center map), Dome(flags teleporter)

                      CreateRamp(topOrigin, bottomOrigin, isInvisible);
                      CreateFloor(originA, originB, isInvisible);
                      CreateWall(originA, originB, isInvisible);
                      
                      Origins - is vector type
                      [X, Y, Z]
                      
                      isInvisible - is bool type, false - visible, true - hide
                      

                      Screenshots from servers
                      1.png 2.png 4.png 3.png

                      Video
                      https://www.youtube.com/watch?v=BJI4NqyLoxM

                      EDP445-v2undefined Offline
                      EDP445-v2undefined Offline
                      EDP445-v2
                      wrote on last edited by
                      #12

                      S3VDITO hey man not that known with code, i was able to change the position of the crates on rust to where i want, but i am unable to figure out how to make them smaller or bigger, or how to make multiple ones on the same map.

                      1 Reply Last reply
                      0
                      • LastDemon99undefined LastDemon99 referenced this topic on
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Donate