Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Tanz HUD für Veranstaltungen
#1
So, habe (erstmal)fertig Smile

[Bild: gruppentanzhud-01.jpg?m=1412613793]

(1) Ins Root-Prim mit Linknummer 1 muss dieses Script rein
Anpassen muss man hier nichts
Code:
// Dance HUD
// MoniTill 10.14 V1
// Lizenz: Gemeinfrei (Public Domain)

// Script für HUD   ***Hauptscript***
// Muss ins Root-Prim

default
{
on_rez(integer start_param)
    {
    
        llResetScript();
    }

  state_entry()
    {
     llSleep(5);
     llMessageLinked(LINK_ALL_OTHERS , 0, "LOESCHANIMS", NULL_KEY);

      string result;
      integer    n = llGetInventoryNumber(INVENTORY_ANIMATION)-1;
      integer a=-1;
      while(a < n)
        {
        result = llGetInventoryName(INVENTORY_ANIMATION, ++a) ;
  
       llMessageLinked(LINK_ALL_OTHERS , 0, "ANIMS"+result, NULL_KEY);


}
  llSay(0,"Dance HUD bereit!");  

    }

}



(2) In die Gruppenschalter muss dieses Script
Anpassen muss man hier für jeden Knopf „set“ -steht für Zeile (01- maximal 99)
und „gruppe“, was für Spalte steht. Möglich sind 01-09

Code:
// Dance HUD
// MoniTill 10.14 V1
// Lizenz: Gemeinfrei (Public Domain)

// Script für HUD um die Gruppen an/aus zu schalten


string set = "01";   // Zeile
string gruppe ="01";  //Knopfnummer





string anaus ="0";
integer linkNummer;
vector aus = <0.000, 0.196, 0.000>;
vector an = <0.616, 1.000, 0.616>;

default
{

  on_rez(integer start_param)
    {
    
        llResetScript();
    }


  state_entry()
    {

     linkNummer = llGetLinkNumber();
     llSetLinkColor(linkNummer,aus,ALL_SIDES);

}




   touch_start(integer total_number)
    {
        if(anaus == "0")
        {
          
  
          anaus = "1";
        
      llMessageLinked(LINK_ALL_OTHERS , 0, "grp"+set+gruppe+anaus, NULL_KEY);
      llSetLinkColor(linkNummer,an,ALL_SIDES);

}
        else
        {
        
          
          anaus = "0";
          
          
        llMessageLinked(LINK_ALL_OTHERS , 0, "grp"+set+gruppe+anaus, NULL_KEY);
        llSetLinkColor(linkNummer,aus,ALL_SIDES);
        
        }
    }
}

(3) In die Animationsknöpfe kommt dieses rein
Hier muss man nur „set“ anpassen
Code:
// Dance HUD
// MoniTill 10.14 V1
// Lizenz: Gemeinfrei (Public Domain)

// Script für HUD Animationsauswahl

string set = "01";   // Zeile



integer linkNummer;
integer animAnzahl;
list animliste;


integer menu_handler;
integer menu_channel;
menu(key user,string title,list buttons)
{
    llListenRemove(menu_handler);
    menu_channel = (integer)(llFrand(999999.0) * -1);
    menu_handler = llListen(menu_channel,"","","");
    llDialog(user,title,buttons,menu_channel);
    llSetTimerEvent(30);
}



default
{


      on_rez(integer start_param)
    {
    
        llResetScript();
    }




  state_entry()
    {


    
     linkNummer = llGetLinkNumber();

    
    
    
     }



   touch_start(integer total_number)
    {

      menu(llDetectedKey(0),"\nAnimation auswählen\n", animliste);

    }
  
     listen(integer channel,string name,key id,string msg)
    {
      llMessageLinked(LINK_ALL_OTHERS , 0, "AnimSet"+set+msg, NULL_KEY);
   }
    
   link_message(integer source,integer num,string msg,key id)
{




if (llGetSubString(msg, 0, 10)== "LOESCHANIMS")
    {
  
     animliste =[];
    }


if (llGetSubString(msg, 0, 4)== "ANIMS")
{
  
   animliste =animliste+llGetSubString(msg, 5, -1);

}
}
}

(4) Das schmale Prim unter dem Knopf zeigt den Text mit der Hover Funktion an. Auch hier muss „set“ angepasst werden
Code:
// Dance HUD
// MoniTill 10.14 V1
// Lizenz: Gemeinfrei (Public Domain)

// Script für Hovertext




string set ="01";


default
{
on_rez(integer start_param)
    {
    
        llResetScript();
    }


    state_entry()
    {
  
      llSetText("", <0,0,0>, 1);
      
    }

link_message(integer source,integer num,string msg,key id)
{

if (llGetSubString(msg, 0, 8)== "AnimSet"+set)
{
         llSetText(llGetSubString(msg, 9,-1), <0,0,0>, 1);
}
}


}

(5) Das letzte Teil vom HUD, ist der Set- starten/stoppen Knopf. Anpassen muss man hier „set“ und ganz wichtig einen eigenen Kanal für das Team, um unliebsamen Überraschungen vorzubeugen … Wink

Code:
// Dance HUD
// MoniTill 10.14 V1
// Lizenz: Gemeinfrei (Public Domain)

// Script für HUD Setschalter  an/aus

integer kanal =26871;
string set = "01";   // Zeile







string anaus ="0";

string setgruppen ="X000000000";
integer linkNummer;
string AktAnim;

vector aus = <0.553, 0.000, 0.000>;
vector an = <1.000, 0.671, 0.671>;

default
{
on_rez(integer start_param)
    {
    
        llResetScript();
    }

  state_entry()
    {

     linkNummer = llGetLinkNumber();
llSetLinkColor(linkNummer,aus,ALL_SIDES);
}


   touch_start(integer total_number)
    {
        if(anaus == "0")
        {
          if(AktAnim != "")
        {
                  anaus = "1";
            llSetLinkColor(linkNummer,an,ALL_SIDES);
llRegionSay(kanal,"set"+set+setgruppen+AktAnim);

            }
          

}
        else
        {
     anaus = "0";    
  llSetLinkColor(linkNummer,aus,ALL_SIDES);
llRegionSay(kanal,"set"+set+setgruppen+"stop");
}
}

    



link_message(integer source,integer num,string msg,key id)
{

if (llGetSubString(msg, 0, 4)== "grp"+set)
{
integer gruppe=(integer)llGetSubString(msg, 5, 6);
string
setgruppen1 =llGetSubString(setgruppen, 0, gruppe-1)+llGetSubString(msg, 7,-1)+llGetSubString(setgruppen, gruppe+1,-1);
setgruppen =setgruppen1;
}

if (llGetSubString(msg, 0, 8)== "AnimSet"+set)
{
    AktAnim=   llGetSubString( msg, 9,-1);
}

}



}



Zum Schluss noch ein Script zum animieren der Avas, was man sich zusammen mit den Animationen in ein beliebiges Objekt am Körper packt
Hier muss man den Kanal anpassen und die eigene Gruppe eintragen, zu der man gehört.
Code:
// Dance HUD
// MoniTill 10.14 V1
// Lizenz: Gemeinfrei (Public Domain)

// Script zum animieren des Avatars


integer kanal =26871;
integer eigeneGruppe= 1;





string lastSet ="";
string gruppen;
string animation ;
string xanimation ;
string aktiv ="0";
default
{
    state_entry()
    {
     integer handle = llListen( kanal, "", "", "" );


    }


    listen(integer RegContchannel, string name, key id, string msg)
    {

             if (llGetSubString(msg, 0, 2)== "set")
{

lastSet =llGetSubString(msg, 3, 4);
gruppen =llGetSubString(msg, 5, 14);
aktiv=llGetSubString(gruppen,eigeneGruppe,eigeneGruppe);

if (aktiv =="1")
{
xanimation=llGetSubString(msg, 15,-1);
key owner = llGetOwner();
          llRequestPermissions(owner, PERMISSION_TRIGGER_ANIMATION);
  
          
            list anims = llGetAnimationList(llGetPermissionsKey());      
            integer len = llGetListLength(anims);
            integer i;
            for (i = 0; i < len; ++i) llStopAnimation(llList2Key(anims, i));
            llStopAnimation(animation);
if (llGetSubString(xanimation, 0, 2)!= "stop")
{
       llStartAnimation(xanimation);
       animation=xanimation;
    }

    }


}
}


}

Das ganze funktioniert folgendermaßen, man packt alle für die Show benötigten Animationen ins HUD. Anschließend muss man es (Leider! - Da denke ich mir noch was besseres aus) erstmal wieder abnehmen u. erneut anziehen, weil die Titel nur beim rezzen an die Knöpfe übertragen werden. Deshalb startet das Hauptscript auch erst mit 5 Sekunden Verzögerung, damit die Knöpfe empfangsbereit sind Dann wählt man für die Sets die Tanzgruppen u. Tänze aus und startet das ganze wenn benötigt über den Set-Knopf

Jeder der im Team tanzt, trägt das Objekt mit dem Animationsscript u. den Animationen. Wenn man selbst mit tanzt braucht man es ebenfalls
Da ich auf exotische Funktionen verzichtet habe, sollte es überall, einschl. in SL laufen

PS. Wer so`n Teil gebrauchen kann, aber nicht basteln mag, kann es bei meiner DW Moni anfordern Smile
Zitieren
#2
Klasse Arbeit, Moni.Smile
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste