logo

Willkommen Gast! Um alle Funktionen zu aktivieren müssen Sie sich Anmelden.Neue Registrierungen sind deaktiviert.

Mitteilung

Icon
Error

Einloggen


Beitrag melden
Geschrieben von: MartinRJ Fayray Offline Geschrieben Montag, 2. März 2015 04:29:35(UTC)
Mit folgendem möglichst einfach gehaltenem Skript kann man ein einfaches Relay bauen, das Nachrichten in andere Regionen in Second Life umleitet.

Dazu gibt man das "Server"-Skript in ein Objekt in der Ziel-Region, und notiert sich die UUID die nach dem Abspeichern/Rezzen ausgegeben wird:

Server
Code:

integer iCh = 0; //Channel where emails are sent to in this region.


float fTime = 15.0;

string sMes = "New UUID of the chatrelay-server. Please use the format 'uuid At lsl.secondlife.com' to send messages. Replace 'uuid' with: ";
default
{
    state_entry()
    {
        llInstantMessage(llGetOwner(), sMes + (string)llGetKey());
        llSetTimerEvent(fTime);
    }
 
    timer()
    {
        llGetNextEmail("", "");
    }
 
    on_rez(integer start_param)
    {
        llResetScript();
    }

    email( string time, string address, string version, string message, integer num_left )
    {
        if (iCh == 0)
        {
                llShout(0, llDeleteSubString(message, 0, llSubStringIndex(message, "\n\n") + 1));
        }
        else
        {
                llRegionSay(iCh, llDeleteSubString(message, 0, llSubStringIndex(message, "\n\n") + 1));
        }
 
        if(num_left)
        {
                llGetNextEmail("","");
        }
    }
}


Die notierte UUID schreibt man dann in die Beschreibung des "Client"-Prims. Dieses kann man an den eigenen Avatar anhängen.

Client
Code:

integer iChannel = 3;
string sMsg = "Please enter your message or say your message in chat on channel 3.";

string sAdd = "@lsl.secondlife.com";
string sSubj = "Relay-message";
default
{
    state_entry()
    {
        llListen(iChannel, "", llGetOwner(), "");
    }
    changed(integer change)
    {
        if (change & CHANGED_OWNER)
        {
            llResetScript();
        }
    }
    listen(integer channel, string name, key id, string message)
    {
        llEmail(llGetObjectDesc() + sAdd, sSubj, message);
    }
    touch_start(integer total_number)
    {
        llTextBox(llGetOwner(), sMsg, iChannel);
    }
}


Um eine Nachricht zu senden klickt man auf das Client-Prim, und gibt die zu sendende Nachricht in das Dialogfeld (Textbox) die sich daraufhin öffnet ein.
Alternativ kann man die Nachricht auch auf Channel 3 eingeben.

Der Channel auf dem die Nachricht in der Ziel-Sim ausgegeben wird ist Channel 0 (lokaler Chat), man kann aber auch auf anderen Channels senden, indem man den Wert integer iCh = 0; in der ersten Zeile des Server-Skripts entsprechend ändert. Falls der Channel 0 ist, wird statt llRegionSay die llShout-Funktion verwendet, um in den lokalen Chat zu "schreien"!
Geben Sie den Meldetext hier ein.
Fett Kursiv Unterstrichen   Hervorheben Zitat Sprachauswahl für Syntax Highlighting Bild einfügen Link einfügen   Unsortierte Liste Sortierte Liste   Linksbündig Zentriert Rechtsbündig   Herausrücken Einrücken   Weitere BBCodes
Schriftfarbe: Schriftgröße:
Melden Abbruch

Powered by YAF.NET | YAF.NET © 2003-2019, Yet Another Forum.NET
Diese Seite wurde in 0.077 Sekunden generiert.

Datenschutzrichtlinie
Haftungsausschluss
Impressum
Datenschutzerklärung
AGB, ToS
Kontakt