Elevator with multiple floors?

Post your scripting questions / solutions here

Moderator: Moderators

Post Reply
killernoodle
Private
Posts: 3
Joined: Fri Nov 08, 2002 9:08 pm
Location: Charlotte, NC USA

Elevator with multiple floors?

Post by killernoodle »

How would it be possible to have an elevator with multiple floors that stops at each floor? Would it be possible to have this elevator move without triggers (just does it by itself) and make it do it with gates? This is probably some heavy scripting, but just to let you guys know, i have already constructed the basic elevator and script and they work fine.

This is just copied and pasted from AIC's elevator tut.

elevator_preparation:

$elevator moveto $waypoint_down

$elevator time 5

$elevatorgate_down time 1.5

$elevatorgate_up time 1.5

$elevatorgate_down playsound elevator_gate

$elevatorgate_down movedown 64

$elevatorgate_down waitmove



local.elepos = 0

goto elevator_standby



elevator_standby:



$elevator_button waittill trigger



wait 4 //time to get into the elevator



if (local.elepos == 0)

{

println "elevator down - moving up"

goto lift_move_up

}

else

if (local.elepos == 1)

{

println "elevator up - moving down"

goto lift_move_down

}



lift_move_up:



$elevatorgate_down playsound elevator_gate

$elevatorgate_down moveup 64

$elevatorgate_down waitmove



$elevator moveto $waypoint_up

$elevator playsound elevator_run

$elevator waitmove



$elevatorgate_up playsound elevator_gate

$elevatorgate_up movedown 64

$elevatorgate_up waitmove



local.elepos = 1

goto elevator_standby



lift_move_down:





$elevatorgate_up playsound elevator_gate

$elevatorgate_up moveup 64

$elevatorgate_up waitmove



$elevator moveto $waypoint_down

$elevator playsound elevator_run

$elevator waitmove



$elevatorgate_down playsound elevator_gate

$elevatorgate_down movedown 64

$elevatorgate_down waitmove



local.elepos = 0

goto elevator_standby



end
Last edited by killernoodle on Sun Nov 24, 2002 6:22 pm, edited 1 time in total.
jv_map
Site Admin
Posts: 6521
Joined: Tue Sep 03, 2002 2:53 pm
Location: The Netherlands
Contact:

Post by jv_map »

Perhaps you could post your basic elevator script here?
Image
Mirek
Colour Sergeant
Posts: 77
Joined: Mon Jul 08, 2002 2:12 am
Location: Melbourne, Australia
Contact:

Post by Mirek »

Hi,

I had a quick crack at it - have not tested it but from my own elevator work it should be right. (fingers crossed)


Let's say u have 4 floors - As u propably know, each floor will need an info_waypoint where the elevator will stop with an oppropriate targetname. eg floor1, floor2, floor3, floor4.
Each floor would also have a gate with an appropriate targetname - e.g. elevatorgate_floor1, $elevatorgate_floor2 etc
The elevator will stop on each floor on the way up and down and wait on each for a certain amount of time before moving on again.

So I guess that the script without a trigger would be a looping thread with sets of animations and a pause at each floor.
Come to think of it I don't really see the need of the 'elevator_standby' thread above, just the' $elevator_button waittill trigger' between each animation would have propably done.

Anyway, this is how I would do it.

Code: Select all

elevator_preparation: 

$elevator moveto $floor1 // reset the elevator for the trip
$elevator time 5 // set the elevetor speed

$elevatorgate_floor1 time 1.5 // set the speed of the doors on each level
$elevatorgate_floor2 time 1.5 
$elevatorgate_floor3 time 1.5 
$elevatorgate_floor4 time 1.5 

goto elevatorrun

end


elevatorrun:


// going up to the 2nd floor
$elevatorgate_floor1 playsound elevator_gate 
$elevatorgate_floor1 moveup 64 
$elevatorgate_floor1 waitmove 

$elevator moveto $floor2 
$elevator playsound elevator_run 
$elevator waitmove 

$elevatorgate_floor2 movedown 64 
$elevatorgate_floor2 waitmove 

// waitting on the floor - in seconds
wait 5

// going up to the 3rd floor
$elevatorgate_floor2 playsound elevator_gate 
$elevatorgate_floor2 moveup 64 
$elevatorgate_floor2 waitmove 

$elevator moveto $floor3 
$elevator playsound elevator_run 
$elevator waitmove 

$elevatorgate_floor3 movedown 64 
$elevatorgate_floor3 waitmove 

// waitting on the floor - in seconds
wait 5

// going up to the 4th floor
$elevatorgate_floor3 playsound elevator_gate 
$elevatorgate_floor3 moveup 64 
$elevatorgate_floor3 waitmove 

$elevator moveto $floor4 
$elevator playsound elevator_run 
$elevator waitmove 

$elevatorgate_floor4 movedown 64 
$elevatorgate_floor4 waitmove 

// waitting on the floor - in seconds
wait 5

// going back to the 3rd floor
$elevatorgate_floor4 playsound elevator_gate 
$elevatorgate_floor4 moveup 64 
$elevatorgate_floor4 waitmove 

$elevator moveto $floor3 
$elevator playsound elevator_run 
$elevator waitmove 

$elevatorgate_floor3 movedown 64 
$elevatorgate_floor3 waitmove 

// waitting on the floor - in seconds
wait 5

// going down to the 2nd floor
$elevatorgate_floor3 playsound elevator_gate 
$elevatorgate_floor3 moveup 64 
$elevatorgate_floor3 waitmove 

$elevator moveto $floor2 
$elevator playsound elevator_run 
$elevator waitmove 

$elevatorgate_floor2 movedown 64 
$elevatorgate_floor2 waitmove 

// waitting on the floor - in seconds
wait 5

// going down to the 1st floor
$elevatorgate_floor2 playsound elevator_gate 
$elevatorgate_floor2 moveup 64 
$elevatorgate_floor2 waitmove 

$elevator moveto $floor1 
$elevator playsound elevator_run 
$elevator waitmove 

$elevatorgate_floor1 movedown 64 
$elevatorgate_floor1 waitmove 

// waitting on the floor - in seconds
wait 5

// AND BACK UP AGAIN

goto elevatorrun

end
I hope it's of some use

Cheers
Mirek
Last edited by Mirek on Wed Nov 27, 2002 10:42 pm, edited 1 time in total.
Mapping !!! Who needs sleep anyway !?!?!?
Coublacka
Major
Posts: 298
Joined: Fri Nov 22, 2002 3:32 pm

Post by Coublacka »

good work bud
Mirek
Colour Sergeant
Posts: 77
Joined: Mon Jul 08, 2002 2:12 am
Location: Melbourne, Australia
Contact:

Post by Mirek »

Thanks CoUbLaCkA :lol:
Mapping !!! Who needs sleep anyway !?!?!?
Bdbodger

elevator script

Post by Bdbodger »

Here is my version of that scrip a little shorter but still should work as well

elevator_preparation:

level.elevatorpos = 0 // 1 st floor
level.elevatordir =1 //set the start direction

// create 4 inforwaypoints with the targetname $elevatorway
// 4 entities with same targetnames will form an array with numbers 0 to 3
// create the bottom one first then the next highest etc

$elevator moveto $elevatorway[level.elevator.pos] // start the elevator at 1 st floor

$elevator time 5 // set the elevetor speed

// create 4 script_objects with the targetname $elevatorgate

for (local.i = 0;local.i< ($elevatorgate.size +1);local.i++)
$elevatorgate[local.i] time 1.5 // set the speed of the doors on each level the same


thread elevatorrun

end


elevatorrun:
while(1) ////start of endless loop
{
$elevatorgate[level.elevatorpos] playsound elevator_gate
$elevatorgate[level.elevatorpos] moveup 64
$elevatorgate[level.elevatorpos] waitmove

if (level.elevatordir ==1)
level.elevatorpos++ // if elevator is going up add one floor
else
level.elevatorpos-- / if elevator is going down subtract one floor

$elevator moveto $elevatorway[level.elevatorpos]
$elevator playsound elevator_run
$elevator waitmove

$elevatorgate[level.elevatorpos] playsound elevator_gate
$elevatorgate[level.elevatorpos] movedown 64
$elevatorgate[level.elevatorpos] waitmove

// waitting on the floor - in seconds
wait 5


// check to see if elevator is at top
if(level.elevatorpos == elevatorway.size )
level.elevatordir=0

// check to see if elevator is at bottom
if(level.elevatorpos == 0 )
level.elevatordir=1

} // end of loop restarts at begining of loop

end
bdbodger

elevator script

Post by bdbodger »

Sorry guys been a while since I did this here is the corrected script

main:

elevator_preparation:

level.elevatorpos = 4 // 1 st floor
level.elevatordir = 0 //set the start direction

// create 4 inforwaypoints with the targetname $elevatorway
// 4 entities with same targetnames will form an array with numbers 1 to 4
// create the top one first then the next lowest etc first one created will
//end up being 4 last on will be 1

$elevator time 5 // set the elevetor speed
// start the elevator at 1 st floor gate down

$elevator moveto $elevatorway[level.elevatorpos]
$elevatorgate[level.elevatorpos] playsound elevator_gate
$elevatorgate[level.elevatorpos] movedown 64
$elevatorgate[level.elevatorpos] waitmove


// create 4 script_objects with the targetname $elevatorgate

for (local.i = 1;local.i < ($elevatorgate.size+1);local.i++)
$elevatorgate[local.i] time 1.5 // set the speed of the doors on each level the same

wait 5

thread elevatorrun

end


elevatorrun:
while(1) ////start of endless loop
{
$elevatorgate[level.elevatorpos] playsound elevator_gate
$elevatorgate[level.elevatorpos] moveup 64
$elevatorgate[level.elevatorpos] waitmove

if (level.elevatordir == 1 )
level.elevatorpos++ // if elevator is going up add one floor
else
level.elevatorpos-- // if elevator is going down subtract one floor

$elevator moveto $elevatorway[level.elevatorpos]
$elevator playsound elevator_run
$elevator waitmove

$elevatorgate[level.elevatorpos] playsound elevator_gate
$elevatorgate[level.elevatorpos] movedown 64
$elevatorgate[level.elevatorpos] waitmove

// waitting on the floor - in seconds
wait 5


// check to see if elevator is at bottom
if(level.elevatorpos == ($elevatorway.size ))
level.elevatordir=0

// check to see if elevator is at top
if(level.elevatorpos == 1 )
level.elevatordir=1

} // end of loop restarts at begining of loop

end

I tested it just to be sure so I know it works except that the last entity targetname created is 1 not the first created hmm seems bachward but I guess the game makes each one higher numbered every time you add an entity targetname to the array the last one being 1
Post Reply