virtual-talk.de
Hypergrid, Grid oder SIM Teleporter - Druckversion

+- virtual-talk.de (http://virtual-talk.de)
+-- Forum: Programmierung (http://virtual-talk.de/forumdisplay.php?fid=15)
+--- Forum: Scripten (http://virtual-talk.de/forumdisplay.php?fid=16)
+--- Thema: Hypergrid, Grid oder SIM Teleporter (/showthread.php?tid=1158)



Hypergrid, Grid oder SIM Teleporter - Tron Mcp - 05.01.2019

Hier ein simples Script für Opensim das Teleportieren in einer Sim, im Grid oder im Hypergrid erlaubt.

Das Auslösen des Teleports erfolgt wahlweise (einstellbar) bei Berührung oder bei Kollision mit dem Avatar.

Die Ziele werden in den Uservariablen eingegeben.

- Zielname ist eine beliebige Bezeichnung. Sie wird in der wahlweise zuschaltbaren Textanzeige verwendet.

- Ziel ist in der für den Teleport Befehl benötigten Syntax einzugeben: 

zum Beispiel     "148.251.8.108:8002:VirtualDreams" oder "VirtualDreams.de:8002:VirtualDreams" als Hypergrid fähige Sprungmarke.

Oder wenn der Sprung nun im Grid erfolgen soll reicht auch der Simname "VirtualDreams".

Ich empfehle aber immer die erste Version zu verwenden da dann die Teleporter überall funktionieren.

- Landungspunkt

Innerhalb der Sim kann der gewünschte "Landungspunkt" angegeben werden. Dies funktioniert für Fremde nur wenn die Sim Einstellung freien Teleport zuläßt.

Am besten den eigenen Avatar auf den gewünschten Landepunkt stellen - die Koordinaten ablesen, und in der Höhe 1m, dazu geben.

Zum Beispiel <230,106,29> wenn der Avatar auf <230,106,28> steht.

- Blickrichtung:

Auch die Blickrichtung nach erfolgten Teleport läßt sich per Vector "Blickrichtung" einstellen. Die Mühe habe ich mit jedoch bisher nicht gemacht.

Code:
// P405 HG Teleport bei Berührung oder Kollision     V1.0 by Tron MCP 2019

// USERVARIABLEN

string Zielname = "zur Virtual Dreams Startsim";         // Frei wählbarer Name des Ziels
string Ziel     = "148.251.8.108:8002:VirtualDreams";    // Zielsim im HG
vector Landungspunkt = <230,106,29>;                     // X,Y,Z Landungs Punkt auf der Sim. zu Y 1 dazu geben.
vector Blickrichtung = <1,1,1>;                          // Gesichts Ausrichtung


// FUNKTIONSWAHL
integer Beruehrungs_Teleporter  = TRUE;             // TRUE / FALSE je nach Wunsch
integer Kollisions_Teleporter   = FALSE;            // TRUE / FALSE je nach Wunsch
integer textanzeige             = TRUE;             // TRUE / FALSE je nach Wunsch

// AB HIER MUSS NICHTS GEÄNDERT WERDEN

key    avatar;


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


   state_entry()
   {
     if ( Beruehrungs_Teleporter) llVolumeDetect(TRUE);
     else llVolumeDetect(FALSE);
     if(textanzeige) llSetText("Teleport " + Zielname,<1.0,1.0,1.0>,1.0);
     else llSetText("",<1.0,1.0,1.0>,0.0);
   }


   collision_end(integer total_number)
   {
       if ( Kollisions_Teleporter )
       {
           avatar = llDetectedKey(0);
           llInstantMessage(avatar, "Teleportiere dich nach : " + Zielname);
           osTeleportAgent(avatar, Ziel, Landungspunkt, Blickrichtung);
           llSleep(1.0);
       }
   }


   touch_end(integer total_num)
   {
           avatar = llDetectedKey(0);
           llInstantMessage(avatar, "Teleportiere dich nach : " + Zielname);
           osTeleportAgent(avatar, Ziel, Landungspunkt, Blickrichtung);
           llSleep(1.0);  
   }
}




Damit das Script funktioniert muss der Befehl osTeleportAgent() in der ossl.ini freigeschalten sein.

Zudem muss der Besitzer des Prims das dieses Script erhält, zur Gruppe der Berechtigten gehören - was in der gleichen Datei eingetragen wird




Viel Spaß


Tron