Rang: Ehrenmitglied
Mitglied seit: 05.09.2014(UTC) Beiträge: 84  Wohnort: Tulln und Rostock Dankte: 1 mal(e)
|
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: ServerCode:
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. ClientCode:
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"! Bearbeitet vom Benutzer Donnerstag, 26. März 2015 16:49:28(UTC)
| Grund: Nicht angegeben |
It is the mark of an educated mind to be able to entertain a thought without accepting it. |