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

Plutonium

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

[Release] [GSC] MapEdit

Scheduled Pinned Locked Moved MW3 Modding Releases & Resources
12 Posts 9 Posters 2.0k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • 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
                          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