1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Bitte schaltet eure Ad Blocker aus. SLinfo kann nur betrieben werden, wenn es durch Werbung Einnahmen erzielt. Vielen Dank!!
    Information ausblenden
  3. 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.
    Information ausblenden

Animieren anderer Avatare

Dieses Thema im Forum "Scripting" wurde erstellt von Johanna Burnstein, 18. September 2015.

  1. Johanna Burnstein

    Johanna Burnstein Freund/in des Forums

    Beiträge:
    749
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    ...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: 18. September 2015
  2. Jan Hird

    Jan Hird Aktiver Nutzer

    Beiträge:
    358
    Zustimmungen:
    90
    Punkte für Erfolge:
    28
    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
     
  3. Johanna Burnstein

    Johanna Burnstein Freund/in des Forums

    Beiträge:
    749
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    War meine Vermutung doch Richtig.

    Danke für den Tip.

    :)
     
  4. Dianna Loxely

    Dianna Loxely Superstar

    Beiträge:
    1.625
    Zustimmungen:
    2
    Punkte für Erfolge:
    0
    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