03.04.2022, 16:44
Ich nutze folgendes Aufzugscript was auch prima funzt.
Für jeden Aufzug nutze ich ein verschiedenen Kanal.
So weit so gut.
Nun möchte ich an den Aufzugstationen (oben und unten, zwei Etagen) jeweils ein Aufzugrufknopf realisieren. Ich weis das es geht bekomme aber kein Script dafür hin, kann jemand helfen?
Aufzugscript:
Für jeden Aufzug nutze ich ein verschiedenen Kanal.
So weit so gut.
Nun möchte ich an den Aufzugstationen (oben und unten, zwei Etagen) jeweils ein Aufzugrufknopf realisieren. Ich weis das es geht bekomme aber kein Script dafür hin, kann jemand helfen?
Aufzugscript:
Code:
// Menu controled on sit. Can also be controlled with local chat eg: /33 Floor2
integer CHANNEL = 36; // dialog channel
list MENU_MAIN = ["down","up"]; // the main menu
float BOTTOM = 34.9; // set platform ground floor height
float FLOOR_HEIGHT = 19.0; // alter to suit floor spacing
float SPEED = 1;
float target;
string sound = "ba0101f0-e6da-43cc-a33b-61c172cbfebc";
default
{
state_entry()
{
llListen(CHANNEL, "", NULL_KEY, "");
llSitTarget(<-0.15, 0.0, 0.75>,ZERO_ROTATION);
llSetText("Sit",<0.05,0,0>,0.79);
target = BOTTOM;
llStopAnimation("sit");
llStopSound();
}
listen(integer channel, string name, key id, string message)
{
integer idx = llListFindList(MENU_MAIN, [message]);
if( idx!=-1 )
{
llLoopSound(sound, 1.0);
// llSay(0,"Elevator heading " + message + "." );
target = BOTTOM + (idx*FLOOR_HEIGHT);
state moving;
}
}
changed(integer change)
{
if (change & CHANGED_LINK)
{
key av = llAvatarOnSitTarget();
if (av !=NULL_KEY)
// if((llGetPermissions() & PERMISSION_TRIGGER_ANIMATION) && llGetPermissionsKey() == av)
{
// llStopAnimation("sit");
// llStartAnimation("vb stand_5arms up p2");
llPlaySound(sound, 1.0);
llDialog(av, "Where to?", MENU_MAIN, CHANNEL);
}
else
{
llStopSound();
// llRequestPermissions(av, PERMISSION_TRIGGER_ANIMATION);
}
}
}
}
state moving
{
state_entry()
{
llSetTimerEvent(0.1);
}
timer()
{
llSleep(0.25); // just to stop things happening instantly.
vector pos = llGetPos();
if( pos.z!=target )
{
if( pos.z>target )
{
pos.z = pos.z - SPEED;
}
else
{
pos.z = pos.z + SPEED;
}
}
if( llFabs(pos.z - target) < SPEED )
{
pos.z = target;
llSetTimerEvent(0);
llSetPos(pos);
// llSay(0,"Elevator has reached its target." );
state default;
}
llSetPos(pos);
}
}
Hypergrid : xenolandia.de:8002:Xenotown
Grid : xenolandia.de:8002
Erstelle dein Account im Xenolandia Grid
Page: https://Xenopolias.de
Grid : xenolandia.de:8002
Erstelle dein Account im Xenolandia Grid
Page: https://Xenopolias.de