dazu möcht ich auch was anmerken *gg*
Auch ich beschäftige mich momentan aufs heftigste mit aufzügen, und mein script funktioniert jetzt endlich.
Ich stells mal einfach hier mit rein :-))
Die basisidee dabei war:
ich wollte mehrere aufzüge in einem level erstellen, und dabei easy im wed die aufzüge "einstellen".
Ich habs über den ansatz gemacht, den aufzügen und ihren dazugehörigen knöpfen ein paar skills zu geben, die ich im wed einstellen kann, so dass jeder knopf weiß zu welchem aufzug er gehört.
Mann muss hierbei nur eine einzige "Knopf entity" kreiren, und nur einen einzigen aufzug, alles ander machst du über wed.
Die besonderheit die ich gerade fertiggestellt hab, war die Knöpfe, die sich im aufzug befinden an der stelle festzumachen, an der sie sein sollen. *gg*
Schaus dir mal an, bei fragen gern PM
// Script Ele_movement.wdl
// Beinhaltet alle Bewegungsbefehle für den Aufzug
// sowie alle befehle für die Kontroll und Rufknöpfe
////////////////////////////////////////////////////////////////////////////
entity* elevator; // definition of elevator entity
entity* button_call;
entity* button_control;
////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
define Floor,SKILL1; // definition of Name Skill1
define Elevator_ID,Skill2; // definition of Name Skill2
define Elevator_call,Flag1; // definition of Name Flag1
define Elevator_controler, Flag2;
define Elevator_control_attached, Flag3;
//////////////////////////////////////////////////////////////
// uses Elevator_call,Floor,
function event_touch_click_call_button() // function of entity Button_call
{
if (event_type == event_touch)
{
my.ambient = 100;
}
if (event_type == event_release)
{
my.ambient = 0;
}
if (event_type == event_click) // if clicked, move button,and set elevator_call to 1
{
my.flag1 = on; // sets elevator_call to on
my.x -= 5;
sleep (0.5);
my.x +=5;
my.red = 255;
my.blue = 255;
my.green = 255;
}
}
//uses elevator_controler,
function event_touch_click_control_button() //function of elevator control button
{
if (event_type == event_touch)
{
my.ambient = 100;
}
if (event_type == event_release)
{
my.ambient = 0;
}
if (event_type == event_click)
{
my.flag2 = on;
my.x -= 5;
sleep (0.5);
my.x += 5;
my.red = 255;
my.blue = 255;
my.green = 255;
}
}
//uses elevator_controler,elevator_id,floor,
action elevator_calling
{
button_call = me;
my.enable_release = on;
my.enable_click = on;
my.enable_touch = on;
my.light = on;
my.lightrange = 0;
my.event = event_touch_click_call_button;
while(1)
{
you = ent_next(NULL);
while (you)
{
while(Your.flag2 == on) && (my.skill2 == your.skill2) && (my.skill1 == your.skill1)
{
my.flag1 = on;
my.red = 255;
my.blue = 255;
my.green = 255;
beep;
while((my.z < elevator.z || my.z > elevator.z)&& (my.flag1 == on))
{
wait(1);
}
your.flag2 = off;
your.red = 0;
your.green = 0;
your.blue = 0;
beep;
wait (1);
}
wait(1);
you = ent_next(you); //der hier hat nen error gebracht, weil in () nix drinn war glaub ich
}
you = ent_next(you);
wait (1);
}
}
action elevator_control
{
var control_button_height_var;
button_control = me;
my.enable_release = on;
my.enable_click = on;
my.enable_touch = on;
my.light = on;
my.lightrange = 0;
my.event = event_touch_click_control_button;
while(1)
{
you = ent_next(NULL);
while (you)
{
control_button_height_var = my.z - your.z;
while(Your.flag3 == on) && (my.skill2 == your.skill2)
{
my.z = your.z + control_button_height_var;
wait(1);
}
wait (1);
wait(1);
you = ent_next(you);
}
you = ent_next(you);
wait (1);
}
}
// uses elevator_id,elevator_call,floor,
action elevator_move
{
elevator = me;
while(1)
{
you = ent_next(NULL);
while (you)
{
If(Your.flag1 == on) && (my.skill2 == your.skill2) && (my.z < your.z)
{
while(my.z < you.z)
{
my.z +=1*time;
wait(1);
}
your.flag1 = 0;
your.red = 0;
your.green = 0;
your.blue = 0;
}
If(Your.flag1 == on) && (my.skill2 == your.skill2) && (my.z > your.z)
{
while(my.z > your.z)
{
my.z -=1*time;
wait(1);
}
your.flag1 = 0;
your.red = 0;
your.green = 0;
your.blue = 0;
}
wait (1);
you = ent_next(you);
}
you = ent_next(you);
wait(1);
}
}
Last edited by MikeS; 04/03/07 18:14.