Quite a lot of people have been asking me how I did the elevator in Rise, so I decided to share the script. (Note: You'll need to figure out the Radiant part yourself, I currently do not have time to make a complete tutorial. I did however comment all entities in the script. You'll also have to add a call for the script in your mapname.gsc.)
//================================================================================================ // Rise Elevator Script // By JR-Imagine //================================================================================================ #include maps\_utility; #include common_scripts\utility; #include maps\_zombiemode_utility; init() { self.status = "bottom"; self.movestatus = "idle"; elev_panel_trig = getEnt("elev_panel_trig","targetname"); // Elevator Panel Trigger (trigger_use) elev_panel_trig setHintString("Take the Elevator [Cost: 250]"); elev_panel_trig setCursorHint( "HINT_NOICON" ); thread elev_bottom_door(); thread elevator(); } elev_bottom_door() { door = getEnt("elev_bottom_door_out","targetname"); // Elevator Door (script -> brushmodel) elev_door = getEnt("elev_door","targetname"); // Outside door (bottom) (script -> brushmodel) flag_wait("electricity_on"); door MoveZ (128, 3); elev_door MoveZ (128, 3); } elevator() { interest_point = getEnt("interest","targetname"); // Point of Interest (script -> origin) elev = getEnt("elev","targetname"); // Main Elevator (script -> brushmodel) elev_panel = getEnt("elev_panel","targetname"); // Elevator Panel (scipt -> model) elev_door = getEnt("elev_door","targetname"); // Elevator Door (script -> brushmodel) elev_panel_trig = getEnt("elev_panel_trig","targetname"); // Elevator Panel Trigger (trigger_use) door_bottom = getEnt("elev_bottom_door_out","targetname"); // Bottom Door (script -> brushmodel) door_top = getEnt("elev_top_door_out","targetname"); // Top Door (script -> brushmodel) elev_nojump = getEnt("elevator_nojump","targetname"); // No Jump Area (trigger_multiple) elev_panel enablelinkto(); elev_panel linkto (elev); elev_panel_trig enablelinkto(); elev_panel_trig linkto (elev); elev_nojump enablelinkto(); elev_nojump linkto (elev); player = undefined; elev_panel_trig waittill("trigger", player); if(player.score > 249 && !(self.movestatus == "moving") && !(self.status == "cooldown")) { player maps\_zombiemode_score::minus_to_player_score(250); player playsound("steam_effect"); if(self.status == "bottom") { interest_point create_zombie_point_of_interest( 1536, 96, 10000, true ); thread movestatus(); door_bottom MoveZ (-128, 3); elev_door MoveZ (-128, 3); wait 3.5; players = getplayers(); for(i=0;i<players.size;i++) { if(players[i] isTouching(elev_nojump)) { players[i] AllowJump(false); wait 0.5; } } elev MoveZ (640, 5); elev_door MoveZ (640, 5); wait 5.5; for(i=0;i<players.size;i++) { if(players[i] isTouching(elev_nojump)) { players[i] AllowJump(true); wait 0.5; } } door_top MoveZ (128, 3); elev_door MoveZ (128, 3); wait 3.5; interest_point create_zombie_point_of_interest( 0, 0, 0, true ); thread elev_cooldown(); } else { interest_point create_zombie_point_of_interest( 1536, 96, 10000, true ); thread movestatus(); door_top MoveZ (-128, 3); elev_door MoveZ (-128, 3); wait 3.5; players = getplayers(); for(i=0;i<players.size;i++) { if(players[i] isTouching(elev_nojump)) { players[i] AllowJump(false); wait 0.5; } } elev MoveZ (-640, 5); elev_door MoveZ (-640, 5); wait 5.5; for(i=0;i<players.size;i++) { if(players[i] isTouching(elev_nojump)) { players[i] AllowJump(true); wait 0.5; } } door_bottom MoveZ (128, 3); elev_door MoveZ (128, 3); wait 3.5; interest_point create_zombie_point_of_interest( 0, 0, 0, true ); thread elev_cooldown(); } } thread elevator(); } elev_cooldown() { elev_panel_trig = getEnt("elev_panel_trig","targetname"); if(self.status == "bottom") { self.status = "cooldown"; elev_panel_trig setHintString("Elevator is Cooling Down"); wait 20; self.status = "top"; self.movestatus = "idle"; elev_panel_trig setHintString("Take the Elevator [Cost: 250]"); } else { self.status = "cooldown"; elev_panel_trig setHintString("Elevator is Cooling Down"); wait 20; self.status = "bottom"; self.movestatus = "idle"; elev_panel_trig setHintString("Take the Elevator [Cost: 250]"); } } movestatus() { elev_panel_trig = getEnt("elev_panel_trig","targetname"); self.movestatus = "moving"; elev_panel_trig setHintString("Elevator is Moving"); }