• Bitte schaltet eure Ad Blocker aus. SLinfo kann nur betrieben werden, wenn es durch Werbung Einnahmen erzielt. Vielen Dank!!
  • Wir freuen uns, wenn du dich in unserem Forum anmeldest. Bitte beachte, dass die Freigabe per Hand durchgeführt wird (Schutz vor Spammer). Damit kann die Freigabe bis zu 24 Stunden dauern.
  • Wir verwenden Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und die Zugriffe auf unsere Website zu analysieren. Sie geben Einwilligung zu unseren Cookies, wenn Sie unsere Webseite weiterhin nutzen.

Animieren anderer Avatare

Johanna Burnstein

Freund/in des Forums
...ist eigentlich nicht so schwierig. Klappt im Grunde bei mir auch, nur mit der Verwaltung happert es, bzw. Ich versteh das System noch nicht so richtig.

llStartAnimation() nimmt ja nur den Namen der Animation und keinen Avatar Key. Deswegen fragt man den Avatar mit GetPermission() ob man darf und im runtime_permission_blah Event (oder irgendwann später, das geht auch) ruft man dann llStartAnimation() auf. Soweit so einfach.

Jetzt hab ich folgende Situation. Ich habe ein Attachment mit Script drinn. Drück ich drauf, kann ich, die Trägerin, tanzen. (Und auch wieder anhalten, was gleich aber zum Problem wird.)

Jetzt möchte ich jemanden Einladen. So wie oben beschrieben, klappt alles super. Der eingeladene Tanzt. Jetzt will ich anhalten. Uns beide. llStopAnimation() aufgerufen und was passiert? Der Eingeladen lümmelt wieder am Rand der Tanzfläche rum, ich hampel aber immer noch rum. (Das selbe wenn ich den Tanz wechseln will. Eingeladener tanzt den neuen, ich aber noch den alten.) Sieht so aus als ob Start/StopAnimation sich immer auf den, der als letztes das ok gegeben hat bezieht. Wenn ich alleine Tanze werde natürlich ich angehalten oder wechsel den Tanz.

Nun gibt es zig Tanzattachments die das hinkriegen. Nur ich krich das nicht hin. Also, was mach ich richtig, was die falsch machen? ...nee, umgekehrt! Warscheinlich brauche ich nur den kleine Hinweis, der das Verständnissproblem löst. :?

Kurze Übersicht wie das bei mir aussieht: Zwei States. Einer zum tanzen, einer zum nicht-tanzen. Am Anfang des Tanzen-States wird llStartAnimation aufgerufen und am Anfang des Nicht-tanzen-States llStopAnimation(). (Letzters wollte ich eigentlich in den state_exit() Event des Tanz-States packen, aber da ich den auch verlasse um ein Menü anzuzeigen wäre es blöd in dem Momment mit dem Tanzen aufzuhören. Ginge aber auch, wenn man mit irgendwelchen Flagvariabeln um sich wirft. Ist wenn man mit States arbeitet aber auch irgendwie Käse, bzw. fühlt sich nicht richtig.) Dazu im Tanzen-State das RequestPermission() für den Träger sowie zwei States für Menüs. Einen um den Tanz und einen um den Avatar, den man mittanzen lassen will, auszuwählen.

Wie gesagt, kein Implementierungproblem, sondern eher ein Verständnissproblem. Dieses Start-/StopAnimation ist Grütze. Aber irgendwie muss es ja gehen. :)

TIA


('tschuldigung für die blumige Sprache, vielleicht kann man trotzdem verstehen, wass ich will :D )
 
Zuletzt bearbeitet:
Ein Script kann nur einen Avatar animieren, den von dem er zuletzt die Permision bekommen hat. Willst du mehr als einen Ava animieren, brauchst du mehrere Scripte. Für jeden Ava einen eigenen.

bis denne
Jan
 
So, wie Jan sagt.

Aber mal ein Gedankenexperiment:

Nach dem llRequestPermissions(avatarkey), der einzigen Funktion, bei der man eine UUID zuweisen kann,
gibt es nur noch Funktionen, die davon ausgehen, das der Aufrufer der Funktion auch der Träger des Skripts ist.

Versuche gleich nach dem Permissions geben, eine Liste mit den animierten Avataren aufzubauen:
llGetPermissionKey()

Zum Anhalten oder Ändern des Animierens frage erneut mit llRequestPermissions(avatarkey) an
(llGetPermissions() nützt dir hier nichts, das hat die selben Beschränkungen wie Start/StopAnimation)
und führe im Runtimepermissions-Event dort den Stop oder die Änderung anhand des Keys-Vergleichs mit der Key-Liste aus

Das ist jetzt rein theoretisch durchgespielt!!!!



Einfacher und allgemein angwendet werden bei diesen Single-Animationsserver idR 40 gleiche Skripte,
Sobald das erste "besetzt" meldet, reicht es die Anforderung per Messagelink ans nächste Skript weiter.
Verwalten musst du dabei eine liste mit UUIDs und der zugehörigen Skriptindexnummer

Hier gibts das ganze OpenSource und kostenlos (eine von vielen)
http://wiki.secondlife.com/wiki/User:Kephra_Nurmi/lsDancemachine
 

Users who are viewing this thread

Zurück
Oben Unten