• 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.

Animation automatisch starten

Frankie Miles

Aktiver Nutzer
Hm wie drück ichs aus ...

habe eine Animation erstellt und in ein Objekt gepackt - wenn ich es "anziehe" (als Attachment) soll es automatisch die Animation starten, OHNE Fragemenü, wo der jeneige gefragt wird, ob sein Ava animiert werden soll oder nicht... die Animation soll jedoch nur einmal durchgespielt werden und dann automatisch wieder aufhören

wenn nun noch folgendes gehen würde - animation hört auf und somit verschwindet das Attachment wieder automatisch im Inventar ... (detach)

den letzten Teil hab ich soweit schon, denke ich o_O

default
{

on_rez( integer param )
{
llResetScript();
}

state_entry()
{
llRequestPermissions(llGetOwner(), PERMISSION_ATTACH);
}

touch_start(integer total_number)
{
llDetachFromAvatar();
}
}


Hilfe wär nicht schlecht ...
 
Animation und Script müssen im Mainprim sein und dann kannst du auch mit

llRequestPermission(llGetOwner(),PERMISSION_TRIGGER_ANIMATION);

die Rechte zum Animieren holen ohne das Nachfrage-Fenster. Bedingung ist allerdings, dass die Berechtigung im Mainprim abgefragt wird, sonst hat es bei meinem HUD auch nie geklappt.

Calyn
 
Code:
key owner;

default
{

on_rez( integer param )
{
llResetScript();
}

state_entry()
{
owner=llGetOwner();
llRequestPermissions(owner, PERMISSION_ATTACH | PERMISSION_TRIGGER_ANIMATION);
llStartAnimation("meine_animation"); //Hier den Namen der Ani einfügen. Muss im Inhalt des Objekts sein
}

touch_start(integer total_number)
{
if (owner==llDetectedKey(0)) llDetachFromAvatar();
}
}

Beim Anlegen startet die Animation. Wenn Du das Attachments anklickst, geht es zurück ins Inv. Dabei stoppt auch die Animation.
 
so habs ausprobiert - klappt nicht :(

Syntaxfehler



key owner;

default
{

on_rez( integer param )
{
llResetScript();
}

state_entry()
{
owner=llGetOwner();
llRequestPermissions(owner, PERMISSION_ATTACH | PERMISSION_TRIGGER_ANIMATION);
llStartAnimation("cream") //Hier den Namen der Ani einfügen. Muss im Inhalt des Objekts sein
}

touch_start(integer total_number)
{
if (owner==llDetectedKey(0)) llDetachFromAvatar();
}
}




Animation hat genau den namen und liegt im Objekt ... wo ist der Fehler? Zeile 15?
 
yeah jetzt klapps - JUUUhhhuUUuuu *_* ist das geil :p

*big hug @ Sylvie*


EDIT: bin am überlegen, wenn jemand ne AO trägt ... gibts noch ne Zeile die "über" der AO des user steht so dass die ani primär vor der AO ausgeführt wird????
 
gibts noch ne Zeile die "über" der AO des user steht so dass die ani primär vor der AO ausgeführt wird?
Kaum möglich, da das vom AO selbst UND der Priorität der jeweiligen Animation abhängig ist. Auf letzteres hat man nur Zugriff, wenn man die Animation selbst gestaltet hat.
Mein eigener AO enthält daher eigentlich nur einen Walk und einen Groundsit, in 99% aller Fälle muss ich ihn daher auch nicht ausschalten.
 
wenn nun noch folgendes gehen würde - animation hört auf und somit verschwindet das Attachment wieder automatisch im Inventar ... (detach)

wie würde das Script aussehen ? Geht sowas denn ? Also ohne "touch" Befehl nach Animationsende automatischer "detach" des Objektes
 
Hier als Beispiel das "5-Sekunden-Attachment"

Code:
default
{

on_rez( integer param )
{
llResetScript();
}

state_entry()
{
llRequestPermissions(llGetOwner(), PERMISSION_ATTACH | PERMISSION_TRIGGER_ANIMATION);
llStartAnimation("meine_animation"); //Hier den Namen der Ani einfügen. Muss im Inhalt des Objekts sein
llSetTimerEvent(5); //Nach 5 Sekunden wird das Attachment wieder entfernt
}

timer()
{
llDetachFromAvatar();
}
}
 
Da es nicht unbedingt erwünscht ist wenn die Animation noch fröhlich weiterläuft sollte man sie allerdings vorm detach wieder anhalten ;)
- setzt in diesem Fall natürlich eine Animation mit einer Länge kleiner 5 Sek voraus, sonst muß die Zeit im Timer erhöht werden.

Sylvie Munro schrieb:
Hier als Beispiel das "5-Sekunden-Attachment"

Code:
default
{

on_rez( integer param )
{
llResetScript();
}

state_entry()
{
llRequestPermissions(llGetOwner(), PERMISSION_ATTACH | PERMISSION_TRIGGER_ANIMATION);
llStartAnimation("meine_animation"); //Hier den Namen der Ani einfügen. Muss im Inhalt des Objekts sein
llSetTimerEvent(5); //Nach 5 Sekunden wird das Attachment wieder entfernt
}

timer()
{
llStopAnimation("meine_animation");
llDetachFromAvatar();
}
}
 
@ Noctua Janus

das ist gar nicht nötig, ich habe es gestern ausprobiert - sobald das Attachment weg ist hört sofort die Ani auf - was eigentlich nicht so laufen sollte oder? Ich meine da fehlt ein Zusatzbefehl, welche der Animation sagt, sie soll weitermachen bis sie zuende ist, auch ohne dem Prim...
 
Das bringt mich auf eine weitere Idee, wenn ich die mal kurz anfügen darf. Ich habe mal gesehen, wenn jemand Busy ist, dass dann eine "ich bin grad am telefonieren-Animation"und eine Handy am Ohr gerezt wird. Wie würde denn das script aussehen, wenn ich mich BUsy schalte, dass dann die Animation startet und das Telefon an der Hand Hand erscheint. Beende ich den Busy-Modus soll die Animation stoppen und das Handy verschwinden.Als Belohnung für das Script gibts die fertige Sache dann komplett. :lol:

Als Anreiz habe ich mal die Animation als kurzes Video abgelegt.http://lassdas.ath.cx/~randy/OhneTitel.mpg
 
Das Script könnte ungefähr so aussehen, allerdings wird nix gerezzed, sondern nur das Prim unsichtbar gemacht bzw. sichtbar gemacht.

Code:
string ANIMATION = "sit";
key owner;
integer anirunning;

default{
    on_rez(integer egal){
        llResetScript();                                            // Script resetten 
    }
    state_entry(){
        llSetTimerEvent(1);                                         // timer zum überprüfen was agent macht
        owner = llGetOwner();                                       // ownerkey speichern
        llRequestPermissions(owner,PERMISSION_TRIGGER_ANIMATION);   // Berechtigung zum animieren einholen
        if(llGetInventoryNumber(INVENTORY_ANIMATION) == 0){         // animation(en) im content
            llWhisper(0,"Error: No animation found. Cannot pose."); // keine Anigefunden Meldung auswerfen
            ANIMATION = "sit";                                      // und standardsit nehmen
        }else{                                                      // ani gefunden
            ANIMATION = llGetInventoryName(INVENTORY_ANIMATION,0);  // name von erster gefundener Ani holen
        }
    }
    timer(){
        integer info = llGetAgentInfo(owner);                       // infos über Agent holen(walk, busy, away, etc)
        if(info & AGENT_BUSY){                                      // Avi ist busy
            if(anirunning == 0){                                    // läuft die ani schon ?
                anirunning = 1;                                     // hilfsvaribale zum testen ob ani läuft oder nicht
                integer perm = llGetPermissions();
                if(perm & PERMISSION_TRIGGER_ANIMATION){            // dürfen wir den Agent animieren ?
                    llStartAnimation(ANIMATION);                    // animation starten
                }
                llSetAlpha(1,ALL_SIDES);                            // Pr¡m sichtbar machen
                llMessageLinked(-1,0,"show",NULL_KEY);              // nur nötig falls mehrere Pr¡ms unsichtbar/sichtbar werden sollen
            }
        }else{
            if(anirunning == 1){                                    // ani läuft
                anirunning = 0;                                     //
                integer perm = llGetPermissions();
                if(perm & PERMISSION_TRIGGER_ANIMATION){            // dürfen wir den Agent animieren ?
                    llStopAnimation(ANIMATION);                     // animation stoppen
                }
                llSetAlpha(0,ALL_SIDES);                            // Pr¡m unsichtbar machen
                llMessageLinked(-1,0,"hide",NULL_KEY);              // nur nötig falls mehrere Pr¡ms unsichtbar/sichtbar werden sollen
            }
        }
    }
}

Falls mehrere Prims unsichtbar werden sollen, einfach folgendes Script in jedes weitere Prim packen:
Code:
default{
    link_message(integer sender_number, integer number, string message, key id){
        if(message == "hide"){
            llSetAlpha(0,ALL_SIDES);
        }else if(message == "show"){
            llSetAlpha(1,ALL_SIDES);
        }
    }
}
 
Fabelhaft. Funktioniert super. Nun schnür ich mal ein Paket und lass es zukommen;)) Wahlweise weibliche oder männliche Telefonieranimation( oja, die Unterschiede sind erheblich :wink:
 

Users who are viewing this thread

Zurück
Oben Unten