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.8k 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.
  • 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
              • 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

                          Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                          Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                          With your input, this post could be even better 💗

                          Register Login
                          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