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 1.8k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S3VDITOundefined Offline
    S3VDITOundefined Offline
    S3VDITO
    wrote on last edited by S3VDITO
    #1

    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 EDP445-v2undefined 2 Replies Last reply
    5
    • Hamahundefined Offline
      Hamahundefined Offline
      Hamah
      wrote on last edited by
      #2

      Really nice! ❤

      1 Reply Last reply
      0
      • 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
              • TheHyperundefined Offline
                TheHyperundefined Offline
                TheHyper
                replied to S3VDITO 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
                    • Kalitosundefined Offline
                      Kalitosundefined Offline
                      Kalitos
                      replied to S3VDITO 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
                      • S3VDITOundefined Offline
                        S3VDITOundefined Offline
                        S3VDITO
                        replied to Kalitos 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
                        • EDP445-v2undefined Offline
                          EDP445-v2undefined Offline
                          EDP445-v2
                          replied to S3VDITO 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

                          • Login

                          • Don't have an account? Register

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