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

Scripten für Doofies: Wie kombiniert man zwei Scripte zu einem?

Dexx Magic

Superstar
Nach langer Zeit mal eine Frage - und wie man sicher sieht habe ich leider absolut NULL Ahnung vom Scripten und verwende nur vorgefertigte Scripts.

Ich will ein HUD basteln. Im HUD Prim sind Knöpfe (also verlinkte Child Prims) zum Anklicken und die lösen eine bestimmte Aktion aus. Hier z.B. einen Sound abspielen:

default
{
touch_start(integer num)
{
integer n = llGetInventoryNumber(INVENTORY_SOUND);
integer i = llFloor(llFrand(n));
llTriggerSound(llGetInventoryName(INVENTORY_SOUND, i), 0.5);
}
}

Jetzt soll aber beim Klicken auch noch die Textur wechseln, denn der Benutzer soll sehen welcher Knopf des HUDs gerade aktiv ist. Also konkret: Der eine Knopf hat eine Textur mit Beschriftung "Sound on" und die andere Textur heisst "Sound off".
Wie kombiniert man diese beiden Scripts zu einem Einzigen (das dann in jeweils in dem Child-Prim aktiv ist?

string texture1 = "UUID of texture 1";//UUID of texture 1 (or inventory name if in inventorY)
string texture2= "UUID of texture 2";//UUID of texture2
float time = 0.0;//time to sleep in seconds
integer side = ALL_SIDES;//which side to change texture on

{
llSetTexture(texture, side);
currentstate = ~currentstate;//swith states
llSleep(time);
}
default
{
touch_start(integer total_number)
{
if(currentstate)
switch(texture1);
else
switch(texture2);
}


Wenn man es ganz genau machen wollte, dann müsste das anklicken eines "neuen" Knopfes sogar noch die Textur vom vorher gedrückten Knopf auf "off" stellen - aber ich denke damit würde es viel zu kompliziert.
 
Also die beiden Scripts da, finde ich ja sehr spannend... :confundio1: Also da hat jemand seine ganz "besonderen" Wege zur Lösung erdacht.

Egal.

Ich würde es so machen:

Code:
integer schalter = FALSE;
string tex1 = "UUID1"; // die UUID der "on" Textur
string tex2 = "UUID2"; // die UUID der "off" Textur
integer face = ALL_SIDES;
// Oder statt "ALL_SIDES" die Face, die geändert werden soll. Bei einem HUD sollte man immer Face 4 vorne haben.

default
{

    on_rez(integer rezz)
    {
        llResetScript();
    }

    state_entry()
    {
        llSetTexture(tex2,face);
        schalter = FALSE;
        llStopSound();
    }
   
   
touch_start(integer total_number)
    {

        if(schalter == FALSE)
        {
            schalter = TRUE;
            // llTriggerSound(llGetInventoryName(INVENTORY_SOUND,0),1.0);
            llLoopSound(llGetInventoryName(INVENTORY_SOUND,0),1.0);
            llSetTexture(tex1,face);
            llMessageLinked(LINK_ALL_OTHERS,1,"","");
        }
       
        else if(schalter == TRUE)
        {
            schalter = FALSE;
            llStopSound();
            llSetTexture(tex2,face);
        }
       
    }
   

link_message(integer sender_num, integer num, string message, key id)
    {
        if (num == 1)
            {
                llSetTexture(tex2,face);
                schalter = FALSE;
                llStopSound();
            }
   }
   
}

llTriggerSound macht in dem Kontext, den Du beschreibst eigentlich keinen Sinn.
Ich vermute Du meinst der Sound soll bleiben und nicht nur 1x gespielt werden.
Also wäre es llLoopSound.
Sonst macht eine "Sound On" Textur wenig Sinn.

Das Script stellt alle "Sound"knöppe auf Off als Default. Wenn Du es anders brauchst, musst Du es ändern.

Du findest heraus wie. Ich empfehle: https://wiki.secondlife.com/wiki/User:Daemonika_Nightfire
 
Zuletzt bearbeitet:
Danke für die Antwort.

Der Sound soll bleiben, ja. Da sollen mehrere Sounds abgespielt per Zufall bis auf "STOP" geklickt wird (dafür habe ich ein Script). Und da es ein HUD ist muss die Funktion mit llTriggerSound aufgerufen werden, damit es auch andere Leute auf der Location hören.

Ich werde mal weiter basteln. Aber ich sehe voraus, dass dies vermutlich weit über meine Bastelfähigkeiten hinaus gehen wird :rolleyes:

Übrigens: Den Script Kurs von Dae habe ich sogar 1x besucht, hatte danach aber RL mässig keine Zeit mehr. Vielleicht sehe ich mir den Kurs jetzt nochmal an. Das Problem ist halt, dass ich nur alle paar Jahre mal EIN Script brauche - dafür extra alles zu lernen macht wenig Sinn. Ich überlege eher mal, einen Scripter zu bezahlen, wenn es preislich im Rahmen bleibt. Ich glaube das gibt mehr Sinn.
 
Danke. Ich muss mal sehen, wie ich das alles löse mit "null Ahnung vom Scripten". Am einfachsten wäre wohl ein vorgefertigtes HUD Script, das man mit Einfügen von (bei mir vorhandenen) Unterscripten anpassen kann. Für Texturchanger und andere Sachen gibt es sowas. Aber ich habe absolut nichts gefunden für meinen Zweck.

Ich schau mal weiter und melde mich ggfls. nochmal hier. Bin gerade wieder etwas im RL Stress.
 

Users who are viewing this thread

Zurück
Oben Unten