Hello,
I decided I would contribute my latest work....
Its a Unique elevator code calucating for
6 different stops on each stage of the level.
Unlike most which just stop at 1 set place...

Mine uses buttons...
* Now it is not perfect by any means!
There is a flaw when going down:
It occurs instantly rather than gradual
like going up.
Anyways here it is:
Code:
////////////////////////////////
var 1current;
var 2current;
var 3current;
var 4current;
var 5current;
var 6current;
entity* elevator_pnt; // pointer to the elevator
entity* button_6; // pointer to button6
entity* button_5; // pointer to button5
entity* button_4; // pointer to button4
entity* button_3; // pointer to button3
entity* button_2; // pointer to button2
entity* button_1; // pointer to button1
////////////////////////////////////////////////////////
function to_6() // called from button 6 being hit
{
if(event_type == event_impact && you == player)
{
exclusive_global;
button_6.ENABLE_IMPACT = Off; //disables player impact
button_6.ENABLE_PUSH = Off;
my.ambient = 0;
6current =1;
TD_6_ele();
}
}
ACTION button6 // push me to go to stage 6 ///////////
//////////////// the position defined in this line//////////
/////////////// elevator_pnt.z= 4010.667 ;/////////////////
////////////// located in :TD_6_ele(); /////////////////
{
button_6 =me;
while (6current ==1){my.passable=on;} // so its not possible to re- trigger
while (5current ==1){my.passable=on;} // while we are moving
while (4current ==1){my.passable=on;} // as a re-trigger during move could
while (3current ==1){my.passable=on;} // cause a elevator malfunction
while (2current ==1){my.passable=on;}
while (1current ==1){my.passable=on;}
my.ENABLE_IMPACT = on;
my.ENABLE_PUSH = On;
my.event = to_6;
my.ambient = 100;
}
function TD_6_ele() // I'm the function that moves the elevator
{
elevator_pnt._speed = 2; // does nothing not implemented
exclusive_global;
while(6current ==1) // Use while here or platform only moves 1 click
{
player.x=-32.000; // We once again ensure buttons cant be re-triggered
player.y= 674.000; // because now as long as I'm moving
//beep(); // the player will be in the center of elevator
wait(1);
IF (player.x > -32.000) {player.x=-32.000;} // to abosutely make sure
IF (player.x < -32.000) {player.x=-32.000;} // player is where we want
IF (player.y > 674.000) {player.y= 674.000;} // him for the duration
IF (player.y < 674.000) {player.y= 674.000;} // of elevator movement
elevator_pnt.z= 4010.667 ; // This is where the elevator is going
elevator_pnt.z = player.z - (player.max_z - player.min_z) / 2; // keep the player onboard
if (elevator_pnt.z >= 4010.667) {elevator_pnt.z =4010.667;6current =0; //don't pass target
player.z = elevator_pnt.z + (player.max_z - player.min_z) / 2;
button_6.ENABLE_IMPACT = on;
button_6.ENABLE_PUSH = On;
}
}
6current =0;
}
//elevator_pnt.z= 4010.667 ;
//////////////////////////////////////////////
function to_5()
{
if(event_type == event_impact && you == player)
{
exclusive_global;
button_5.ENABLE_IMPACT = Off; //disables player impact
button_5.ENABLE_PUSH = Off;
my.ambient = 0;
5current =1;
TD_5_ele();
}
}
ACTION button5
{
button_5 =me;
while (6current ==1){my.passable=on;}
while (5current ==1){my.passable=on;}
while (4current ==1){my.passable=on;}
while (3current ==1){my.passable=on;}
while (2current ==1){my.passable=on;}
while (1current ==1){my.passable=on;}
MY.ENABLE_IMPACT = on;
MY.ENABLE_PUSH = On;
my.event = to_5;
my.ambient = 100;
}
function TD_5_ele()
{
elevator_pnt._speed = 2;
exclusive_global;
while(5current ==1)
{
player.x=-32.000;
player.y= 674.000;
//beep();
wait(1);
IF (player.x > -32.000) {player.x=-32.000;}
IF (player.x < -32.000) {player.x=-32.000;}
IF (player.y > 674.000) {player.y= 674.000;}
IF (player.y < 674.000) {player.y= 674.000;}
elevator_pnt.z= 3169.667;
elevator_pnt.z = player.z - (player.max_z - player.min_z) / 2; // keep the player onboard
if (elevator_pnt.z >= 3169.667) {elevator_pnt.z =3169.667;5current =0;
player.z = elevator_pnt.z + (player.max_z - player.min_z) / 2;
button_5.ENABLE_IMPACT = on;
button_5.ENABLE_PUSH = On;
}
}
5current =0;
}
//elevator_pnt.z= 3161.667 ;
/////////////////////////////////////////////
function to_4()
{
if(event_type == event_impact && you == player)
{
exclusive_global;
button_4.ENABLE_IMPACT = Off; //disables player impact
button_4.ENABLE_PUSH = Off;
my.ambient = 0;
4current =1;
TD_4_ele();
}
}
ACTION button4
{
button_4 =me;
while (6current ==1){my.passable=on;}
while (5current ==1){my.passable=on;}
while (4current ==1){my.passable=on;}
while (3current ==1){my.passable=on;}
while (2current ==1){my.passable=on;}
while (1current ==1){my.passable=on;}
MY.ENABLE_IMPACT = on;
MY.ENABLE_PUSH = On;
my.event = to_4;
my.ambient = 100;
}
function TD_4_ele()
{
elevator_pnt._speed = 2;
exclusive_global;
while(4current ==1)
{
player.x=-32.000;
player.y= 674.000;
//beep();
wait(1);
IF (player.x > -32.000) {player.x=-32.000;}
IF (player.x < -32.000) {player.x=-32.000;}
IF (player.y > 674.000) {player.y= 674.000;}
IF (player.y < 674.000) {player.y= 674.000;}
elevator_pnt.z= 2326.667 ;
elevator_pnt.z = player.z - (player.max_z - player.min_z) / 2; // keep the player onboard
if (elevator_pnt.z >= 2326.667) {elevator_pnt.z =2326.667;4current =0;
player.z = elevator_pnt.z + (player.max_z - player.min_z) / 2;
button_4.ENABLE_IMPACT = on;
button_4.ENABLE_PUSH = On;
}
}
4current =0;
}
//elevator_pnt.z= 2318.667;
////////////////////////////////////////////
function to_3()
{
if(event_type == event_impact && you == player)
{
exclusive_global;
button_3.ENABLE_IMPACT = Off; //disables player impact
button_3.ENABLE_PUSH = Off;
my.ambient = 0;
3current =1;
TD_3_ele();
}
}
ACTION button3
{
button_3 =me;
while (6current ==1){my.passable=on;}
while (5current ==1){my.passable=on;}
while (4current ==1){my.passable=on;}
while (3current ==1){my.passable=on;}
while (2current ==1){my.passable=on;}
while (1current ==1){my.passable=on;}
my.ENABLE_IMPACT = on;
my.ENABLE_PUSH = On;
my.event = to_3;
my.ambient = 100;
}
function TD_3_ele()
{
elevator_pnt._speed = 2;
exclusive_global;
while(3current ==1)
{
player.x=-32.000;
player.y= 674.000;
//beep();
wait(1);
IF (player.x > -32.000) {player.x=-32.000;}
IF (player.x < -32.000) {player.x=-32.000;}
IF (player.y > 674.000) {player.y= 674.000;}
IF (player.y < 674.000) {player.y= 674.000;}
elevator_pnt.z= 1482.667 ;
elevator_pnt.z = player.z - (player.max_z - player.min_z) / 2; // keep the player onboard
if (elevator_pnt.z >= 1482.667) {elevator_pnt.z =1482.667;3current =0;
player.z = elevator_pnt.z + (player.max_z - player.min_z) / 2;
button_3.ENABLE_IMPACT = on;
button_3.ENABLE_PUSH = On;
}
}
3current =0;
}
//elevator_pnt.z= 1474.667;
/////////////////////////////////////
function to_2()
{
if(event_type == event_impact && you == player)
{
exclusive_global;
button_2.ENABLE_IMPACT = Off; //disables player impact
button_2.ENABLE_PUSH = Off;
my.ambient = 0;
2current =1;
TD_2_ele();
}
}
ACTION button2
{
button_2 =me;
while (6current ==1){my.passable=on;}
while (5current ==1){my.passable=on;}
while (4current ==1){my.passable=on;}
while (3current ==1){my.passable=on;}
while (2current ==1){my.passable=on;}
while (1current ==1){my.passable=on;}
my.ENABLE_IMPACT = on;
my.ENABLE_PUSH = On;
my.event = to_2;
my.ambient = 100;
}
function TD_2_ele()
{
elevator_pnt._speed = 2;
exclusive_global;
while(2current ==1)
{
player.x=-32.000;
player.y= 674.000;
//beep();
wait(1);
IF (player.x > -32.000) {player.x=-32.000;}
IF (player.x < -32.000) {player.x=-32.000;}
IF (player.y > 674.000) {player.y= 674.000;}
IF (player.y < 674.000) {player.y= 674.000;}
elevator_pnt.z= 639.667 ;
elevator_pnt.z = player.z - (player.max_z - player.min_z) / 2; // keep the player onboard
if (elevator_pnt.z >= 639.667) {elevator_pnt.z =639.667;2current =0; // don't pass target
player.z = elevator_pnt.z + (player.max_z - player.min_z) / 2;
button_2.ENABLE_IMPACT = on;
button_2.ENABLE_PUSH = On;
}
}
2current =0;
}
//elevator_pnt.z= 631.667;
/////////////////////////////////////////////////////////////
function to_1()
{
if(event_type == event_impact && you == player)
{
exclusive_global;
button_1.ENABLE_IMPACT = Off; //disables player impact
button_1.ENABLE_PUSH = Off;
my.ambient = 0;
1current =1;
TD_1_ele();
}
}
ACTION button1
{
button_1 =me;
while (6current ==1){my.passable=on;}
while (5current ==1){my.passable=on;}
while (4current ==1){my.passable=on;}
while (3current ==1){my.passable=on;}
while (2current ==1){my.passable=on;}
while (1current ==1){my.passable=on;}
MY.ENABLE_IMPACT = on;
MY.ENABLE_PUSH = On;
my.event = to_1;
my.ambient = 100;
}
function TD_1_ele()
{
elevator_pnt._speed = 2;
exclusive_global;
while(1current ==1)
{
player.x=-32.000;
player.y= 674.000;
//beep();
wait(1);
IF (player.x > -32.000) {player.x=-32.000;}
IF (player.x < -32.000) {player.x=-32.000;}
IF (player.y > 674.000) {player.y= 674.000;}
IF (player.y < 674.000) {player.y= 674.000;}
elevator_pnt.z= -204.333;
elevator_pnt.z = player.z - (player.max_z - player.min_z) / 2; // keep the player onboard up
player.z = elevator_pnt.z + (player.max_z - player.min_z) / 2;
if (elevator_pnt.z >= -204.333) {elevator_pnt.z =-204.333;1current =0;
player.z = elevator_pnt.z + (player.max_z - player.min_z) / 2;
button_1.ENABLE_IMPACT = on;
button_1.ENABLE_PUSH = On;
}
}
}
//elevator_pnt.z= -212.333;
////////////////////////
///////////////////////////////////////////////////////////////
Action TD_elevator
{
elevator_pnt =me;
//elevator_pnt.z = MY.Z + (0.9*(MY.MAX_Z - MY.MIN_Z));
}
////////////////////////////////
Hopefully it will help somebody out.
Now you will have to figure your own positions/stops.
( change this value: elevator_pnt.z=
2326.667 ;
Look for TD_1_ele()- TD_6_ele()
change the corresponding value to the floor your
working on.
any questions or comments feel free.
*** Teutonic Darkness ***