This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

OSSL Teleporter
#1
Opensim Teleporter mit OSSL Befehl

Das folgende Script dient als Teleporter nur innerhalb Opensim.
Es nutzt OSSL Befehle die auf dem Grid freigeschalten sein müssen.

Der Teleporter funktioniert dann für beliebige User, und frägt vor dem Teleport nicht nach.
Als Optionen kann die Aktivierung des Teleports per Berührung (Click) oder per Kollision mit dem Ava ausgelöst werden.

Teleports funktionieren im eigenen Grid , aber auch in fremde Grids hinein.
Details zur Einstellung stehen im Script.

Code:
// P504 Teleport bei Berührung oder Kollision    V1.0 by Tron
// Damit dies Script funktioniert müssen OSSL Befehle im Grid freigesschalten sein!


// gewünschte Modi einstellen
integer Beruehrungs_Teleporter  = TRUE;    // TRUE / FALSE je nach Wunsch
integer Kollisions_Teleporter   = TRUE;    // TRUE / FALSE je nach Wunsch

// Teleport Ziel einstellen
// string Zielsim = "Isla Bonita";          // vereinfachte Zielsim Eingabe, geht nur wenn Ziel im gleichen Grid liegt
string Zielsim = "135.181.6.163:9000:Isla Bonita";  // Zielsim Eingabe über GRID IP. Geht wenn Ziel im gleichen Grid oder fremden Grid liegt
// string Zielsim = "Virtualafrica.spdns.org:9000:Isla Bonita";   // Zielsim Eingabe über Domänene Namen. Geht wenn Ziel im gleichen Grid oder fremden Grid liegt


vector Landepunkt = <128,128,50>;         // X,Y,Z Landepunkt des Avatars auf Zielsim
vector Blickrichtung = <0,0,0>;         // Blickrichtung des Avas nach dem Teleport

// ENDE BENUTZER PARAMETER

key    avatar;

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

    state_entry()
    {
        if ( Beruehrungs_Teleporter) llVolumeDetect(TRUE); // Startet llVolumeDetect für Kollisions Erkennung
        else llVolumeDetect(FALSE);
    }

    // Teleport bei Kollision mit dem Objekt.
    collision_start(integer total_number)
    {
        if ( Kollisions_Teleporter )
        {
            avatar = llDetectedKey(0);
            llInstantMessage(avatar, "Teleportiere dich nach : "+Zielsim);
            osTeleportAgent(avatar, Zielsim, Landepunkt, Blickrichtung);
        }
    }

    // Oder Teleport bei Berührung
    touch_start(integer total_num)
    {
        avatar = llDetectedKey(0);
        llInstantMessage(avatar, "Teleportiere dich nach : "+Zielsim);
        osTeleportAgent(avatar, Zielsim, Landepunkt, Blickrichtung);
    }
}


Wie immer ist das Script schlank gehalten und dokumentiert damit es als Basis für eure eigenen Entwicklungen dienen kann.

Viel Spaß

Tron
Zitieren
#2
Danke Tron, ich werde das Script auf jeden Fall in unserem Grid testen. Dabei suche ich mir die entsprechenden Funktionen in der OSSL.ini (ausgelagert) mal heraus. Yes
Es freut mich, wenn man ein ernsthaftes Interesse am Forum hat.

Ich selbst nutze in unserem Grid seit langer Zeit dieses Script. Es funktioniert super von Region zu Region. Ein Teleport von Grid zu Grid (wenn nicht gesperrt) geht auch prima.

Code:
// Example osTeleportAgent Script
//
// Set Destination as described below, There are a Few Options depending on Application:
// IN GRID Teleport
// Destination = "1000,1000"; = Using In-Grid Map XXXX,YYYY coordinates
// Destination = "RegionName"; = Using RegionName
// HyperGrid Teleport (region must be HG Enabled)
// Destination = "TcpIpAddr:Port:RegionName"; = Using the Target/Destination IP Address
// Destination = "DNSname:Port:RegionName"; = Using the Target/Detination DNSname
// Note: RegionName is Optionally Specified to deliver Avatar to specific region in an instance.
//
// ========================================================================================
// === SET DESTINATION INFO HERE ===
//
string Destination = "Name der Zielregion"; // your target destination here (SEE NEXT LINES) Can Be
vector LandingPoint = <95,82,22>; // X,Y,Z landing point for avatar to arrive at
vector LookAt = <1,1,1>; // which way they look at when arriving
//
default
{
on_rez(integer start_param)
{
llResetScript();
}
changed(integer change) // something changed, take action
{
if(change & CHANGED_OWNER)
{
llResetScript();
}
else if (change & 256) // that bit is set during a region restart
{
llResetScript();
}
}

state_entry()
{
llWhisper(0, "Teleportal Active");
}

touch_start(integer num_detected)
{
key avatar = llDetectedKey(0);
llInstantMessage(avatar, "Teleporting you to : "+Destination);
osTeleportAgent(avatar, Destination, LandingPoint, LookAt);
}
}
All done!
Zitieren
#3
hab kurz reingesehen.

Ja tut fast das Gleiche.

Was fehlt ist die Option für Kollisions Teleporte wenn du dagegen läufst. Letzteres kann man mit unsichtbaren Prims gut für inner Sim Sprünge nutzen. Ich habe sowas im Schloß in Blindtüren eingebaut, um dich in die Skybox - oder wieder zurück zu teleportieren. Auch ein Labyrinth läßt sich damit machen.

Zum Lernen würde ich aber eine strukturiertere Codedarstellung und Kommentare in Landesprache bevorzugen.

Viele Grüße Tron
Zitieren


Gehe zu:


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