Beiträge: 6.988
Themen: 772
Thanks Received: 1.308 in 642 posts
Thanks Given: 3.351
Registriert seit: Jul 2010
Hallo ;D
Ich brauch das Script wohl nicht so dringend zur Zeit, aber war halt neugierig, könnte ja sein das ich es doch mal brauchen könnte ;D Habs getestet, tja irgendwie funzt es nicht so *gg
Ok hier mal mein Versuchsaufbau.
Schalterprim --> unteres Script
Kabineprim --> oberes Script mit den entsprechendenen Cords
Rootprim --> oberes Script mit den entsprechendenen Cords ;D
Ok, hoch fährt die kabine, aber wie hole ich sie wieder runter ? Hab den Port von dem Rootprim Script geändert, der fuhr nämlich auch mit hoch *gg
Für Tips bin ich immer empfänglich ;D
Beiträge: 546
Themen: 57
Thanks Received: 0 in 0 posts
Thanks Given: 0
Registriert seit: Aug 2013
Huhu Bogus,
jede Etage muss als Vektor in der Liste „etagenliste“ stehen. Wenn das Ding am Boden steht, gehst du ins Baumenü und drückst die Kopiertaste bei den Positionen.
In der Zeile „list etagenliste=[] „ schmeißt du meine Vektoren raus und packst die kopierte Position rein. Die steht schon passend mit <xx,yy,zz> in der Zwischenablage. Dann schiebst du den Fahrstuhl in die erste Etage, kopierst wieder die Position, die dann mit Komma getrennt als nächstes in die Liste kommt. list etagenliste=[<x,y,z> , <x,y,z>] usw.
Die Schalter im Fahrstuhl bekommen dann bei string etage ="1" die Nummer der Etage. 1 ist in dem Fall die erste Position in der Liste, also Erdgeschoss. Für das erste Stockwerk kommt string etage ="2" für die zweite Position der Vektorenliste rein.
Drückst du nun auf den ersten Knopf geht’s ins Erdgeschoss, beim zweiten in das erste Stockwerk.
Bei den Aufzugruf- Tasten das gleiche. Im Erdgeschoss wird ein Knopf mit string etage ="1" an die Wand geklebt, im ersten Obergeschoss einer mit string etage ="2" usw.
Wichtig ist nur das Schalter u. Aufzugscript beim Fahrstuhl nicht in einem Verzeichnis sind. Das müssen getrennte Objekte sein, die miteinander verlinkt sind. Also passender Weise Fahrstuhl(-Boden) Rootprim und die Schalter beliebige Unterprims.
Degolburg:
24h online und ca. 10 % fertig
Taxi: 85.214.150.139:9000:Degolburg
Beiträge: 6.988
Themen: 772
Thanks Received: 1.308 in 642 posts
Thanks Given: 3.351
Registriert seit: Jul 2010
Also wenn ich auch nur ein 1 Etage hab, muss ich zweimal die Positionen kords kopieren richtig ? einmal für den Rootprim und dann nochmal für die kabine ? .. Muss aber in dem Rootprim auch die positionen von der 1. Etage stehen ?
Beiträge: 546
Themen: 57
Thanks Received: 0 in 0 posts
Thanks Given: 0
Registriert seit: Aug 2013
Mit Rootprim meine ich das Hauptprim vom Fahrstuhl. Also das Objekt was du beim verlinken nach dem „Kinder an Eltern“-Prinzip als letztes auswählst.
Du hast die Seiten, Decke, Schalter …. als letztes nimmst du den Boden dazu, wenn du es im Menü verbindest ist der Boden vom Fahrstuhl dein Rootprim. Und da sollte das Aufzugscript rein. Dann kopierst du vom verlinken Fahrstuhl die Erdgeschossposition und die Obergeschossposition. Diese beiden Vektoren kommen in die Liste.
Degolburg:
24h online und ca. 10 % fertig
Taxi: 85.214.150.139:9000:Degolburg
Beiträge: 778
Themen: 42
Thanks Received: 0 in 0 posts
Thanks Given: 0
Registriert seit: Jan 2016
danke moni. ska arbeitet derzeit an einer interessanten lösung. war bei den ersten tests dabei und es ist ein richtiges fahrgefühl aufgekommen. sprich der aufzug fährt tatsächlich langsam hoch. vielleicht kann man das ja kombinieren.
Beiträge: 546
Themen: 57
Thanks Received: 0 in 0 posts
Thanks Given: 0
Registriert seit: Aug 2013
Ein Timer dazwischen zu setzen wäre der nächste logische Schritt. Ich glaube die technische Grenze bei Opensim liegt bei 0.5 Sekunden Intervallen. Hmmm …. Schrittweite 0,5 m pro halbe Sekunde, wären das ca 3 Sekunden pro Etage, was in etwa einem normalen Fahrstuhl entspricht. Mal testen …
Allerdings sollte man die Anzahl von laufenden Timern immer im Auge behalten.
Degolburg:
24h online und ca. 10 % fertig
Taxi: 85.214.150.139:9000:Degolburg
Beiträge: 546
Themen: 57
Thanks Received: 0 in 0 posts
Thanks Given: 0
Registriert seit: Aug 2013
So, hier die Variante mit Timer
Der Timerintervall liegt scheinbar wirklich bei 0.5. Wenn man ihn tiefer setzt bringt es nichts.
Aber ein halber Meter Schrittweite ist ein recht guter Wert. Größer wird ruckelig, kleiner, dauert zu lange.
Code:
// Moni Till 11.16 Public Domain
// Aufzug /Elevator mit Timer
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;
float intervall= 0.4;
float schrittweite = 0.5;
// 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)
{
llSetTimerEvent(intervall);
etage=llList2Vector(etagenliste,((integer)msg)-1 );
}
changed(integer change)
{
if (llAvatarOnSitTarget() != NULL_KEY)
llRequestPermissions(llAvatarOnSitTarget(), PERMISSION_TRIGGER_ANIMATION);
}
run_time_permissions(integer perm)
{
llStopAnimation("sit");
}
timer()
{
vector jetztPos = llGetPos();
vector zielPos =jetztPos;
if (llFabs(jetztPos.z - etage.z) < 1)
{
llSetTimerEvent(0.0);
// Fahrstuhl ist angekommen, Timer aus.
llSetPos(etage);
}
else
{
if (jetztPos.z > etage.z)
{
zielPos.z =jetztPos.z-schrittweite;
llSetPos(zielPos);
}
else
{
zielPos.z =jetztPos.z+schrittweite;
llSetPos(zielPos);
}
}
}
}
Degolburg:
24h online und ca. 10 % fertig
Taxi: 85.214.150.139:9000:Degolburg