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 ***