Nicht nötig, habe schon fertig
Also das mit dem MoveTo funktionierte nicht so wie es sollte. Die Physik in os ist leider anders als in sl. Kriegt man sicherlich hin, ist aber wohl etwas aufwendig, zumal es sehr unterschiedliche Versionen, Forks u. Physik-Engines gibt. Da Du aber nicht scriptest wollte ich eine möglichst einfache, robuste Lösung, die sich leicht verarbeiten lässt. Habe daher llSetPos genommen.
Das hier ist das Aufzugscript, das muss ins Rootprim. Sollte bei Mesh die Kabine sein, bei Prims die Bodenplatte. Da man bei Setpos sitzen muss (die Sit- Animation wird aber gleich wieder gestoppt, dann klebt man stehend im Fahrstuhl), ist es sinnvoll das Sitz-Icon dort zu setzen.
Code:
// Moni Till 11.16 Public Domain
// Aufzug /Elevator
vector sitrot = <00,00,-90>; // Blickrichtung im Fahrstuhl
vector sitpos = <0.00000, 0.00000, 0.9>; // Position u. Standhöhe im Fahrstuhl
integer kanal=45680; // Jeder Aufzug ein eigener Kanal.
vector etage;
// Wichtig! Vor Betriebnahme erst gegen eigene Positionen tauschen
list etagenliste=[<109.66835, 123.50688, 74.33848>,<109.66835, 123.50688, 78.51722>,<109.66835, 123.50688, 81.92284>];
default
{
state_entry()
{
llListen( kanal, "", NULL_KEY, "" );
vector rot=sitrot*DEG_TO_RAD;
rotation finalrot=llEuler2Rot(rot);
llSitTarget(sitpos,finalrot);
}
listen( integer channel, string name, key id, string msg)
{
etage=llList2Vector(etagenliste,((integer)msg)-1 );
llSetPos(etage);
}
changed(integer change)
{
if (llAvatarOnSitTarget() != NULL_KEY)
llRequestPermissions(llAvatarOnSitTarget(), PERMISSION_TRIGGER_ANIMATION);
}
run_time_permissions(integer perm)
{
llStopAnimation("sit");
}
}
Und das hier ist das Schalterscript. Das kannst Du sowohl für die Schalter in der Kabine nehmen, wie auch für die Schalter zum Rufen des Fahrstuhls. Ich habe RegionSay genommen. Ist zwar heftig, aber die Etagen/Decks können recht weit auseinander liegen.
Code:
// Moni Till 11.16 Public Domain
// Aufzugschalter
integer kanal=45680; // Jeder Aufzug ein eigener Kanal.
string etage ="1"; // Die Etagennummer
default
{
touch_start(integer total_number)
{
llRegionSay(kanal,etage);
}
}
So, wenn Du die Scripte drin hast, NICHT DRÜCKEN, da noch meine Muster-Vektoren drin stehen. Du schiebst den Fahrstuhl von Hand in die gewünschte Etagenhöhe. Gehst ins Bearbeitungsfenster vom Objekt, kopierst die Position und ersetzt damit meine Vektoren in der Liste: „Etagenliste“ . Bei den Schaltern musst Du nur noch die Etagennummer bei „Etage“ angeben.
Erdgeschoss = 1, Erste Etage =2 usw. das wars.
Hier noch mal als Bild:
Wenn was klemmt, bitte melden...