1
0
Fork 0
4Creative-Changes/Changelog.md

7.8 KiB

Änderung an der OpenSimulator Version

Es gibt einige Optionen, die sich von der Vanilla Version unterscheiden. Die meisten Änderungen sind Erleichterungen. Es gibt aber auch einige neue Funktionen. In der Regel sollte keiner dieser Änderungen offensichtlich in den normalen Betrieb eingreifen. Da diese aber doch einige Eigenheiten haben die bekannt sein sollten, hier eine Übersicht in chronologischer Reihenfolge der Einführung.

Version Name

Die Software hat eine Extra Versionsnummer bekommen: OpenSim 0.9.2.0.05 Yeti Dev Je höher um so aktueller. Dies hat nichts mit der Vanilla OpenSim Version zu tun.

CachedMapImageModule

  • Speichert das Map Image im OpenSim Ortner in einem Unterordner um es während dem Regionstart nicht immer neu Generieren zu müssen.
  • Es wird erst nach einem Monat neu generiert. Dies spart einiges an Zeit und RAM während dem Startvorgang.
    • Es kann auch die Region Position und Region Namen auf das Bild schreiben.
    • Es gibt einige Einstellungen, um dies zu steuern. Diese müssen in den [Map] Bereich.
    • enableDate == true/false | Zeigt das Datum der Generierung an.
    • enableName == true/false | Zeigt den Namen der Region an.
    • enablePosition == true/false | Zeigt die Position im Grid auf dem MapImage an.
    • RefreshEveryMonth == true/false | Schaltet das Neugenerieren an/aus.
    • enableHostedBy == true/false | Zeigt einen weiteren Text an.
    • HosterText == ".." | Der Text der angezeigt werden soll.

JPEG Converter Module

Disable AfK Physic

  • Deaktiviert die Physic und alle Scripte auf der Region, wenn diese leer ist.
  • Löscht alle NPCs von der Region wenn kein echter Besucher mehr vorhanden ist.
  • Verhindert einen Großen CPU verbrauch von Regionen, die nicht in Benutzung sind.
[Startup]
    RegionIdleMode = true
    IdleModeScripts = true
    IdleModePhysics = true

FullPerm

  • Setzt alle aufgestellten Objekte auf der Region auf FullPerm.
  • Beinflust nicht wie sich leute die Objekte nehmen können. Es muss weiterhin einzeln freigegeben werden ob sich leute die Objekte Kaufen oder Kopieren dürfen.
  • So ist es nicht mehr nötig sich Änderungsrechte oder ähnliches mit dem GodMode zu verschaffen. (Man hat eine Ausrede warum es fullPerm ist :D)
  • Objekte der Gruppe zu übertragen funktioniert so ohne Probleme.
  • Jeder mit entsprechenden Rechten in der Gruppe kann die Objekte bearbeiten.

Copy Fix

Aktuell gibt es einen Fehler in der OpenSim Software, dieser bewirgt dass neu erstellte Objekte, die auf "Jeder darf Kopieren" gestellt werden, nicht kopierbar sind. Dies ist übergangsweise gefixt bis OpenSim es richtig korregiert hat. ( http://opensimulator.org/mantis/view.php?id=8714 )

E-Mail Module

Damit die LSL funktionen llEMail und llGetNextEmail funktionieren braucht es ein funktionierendes E-Mail Module + E-Mail Server. Das Module ist jetzt dabei und muss nur noch eingerichtet werden.

Konfiguration in der OpenSim.ini:

[Startup]
    emailmodule = MailKitMailModule

[Mail]
    SMTP_SERVER_HOSTNAME = 127.0.0.1
    SMTP_SERVER_PORT = 25
    SMTP_SERVER_SSL = false
    SMTP_SERVER_TLS = false
    SMTP_SERVER_LOGIN = mail@mail.user
    SMTP_SERVER_PASSWORD = ...
    SMTP_SERVER_SENDER = domain.tld

    IMAP_SERVER_HOSTNAME = 127.0.0.1
    IMAP_SERVER_PORT = 143
    IMAP_SERVER_SSL = false
    IMAP_SERVER_TLS = false
    IMAP_SERVER_LOGIN = mail@mail.user
    IMAP_SERVER_PASSWORD = ...

Textur Fetcher

Dies ist ein kleiner Helfer der es ermögliches soll texturen von anderen Bauwerken zu benutzen. Es nimmt alle Texturen von einem Linkset und fügt sie dem Inventar des Root Prims hinzu. Diese können dann entnommen werden um diese weiter zu benutzen.

  • Dies geschieht nicht wenn das Root Prim ein Script enthält welches mit Texturen aus dem Inventar arbeitet.
  • Mit der Option TextureFetcherCheckAssets wird geprüft, ob die Textur im Asset Server exestiert. Dies Verzögert den Regionsstart um mehrere Minuten.

OpenSim.ini

[Startup]
    TextureFetcherCheckAssets = false

Skript Funktionen

DataValue

Diese Funktionen ermöglicht es Daten dauerhaft zu speichern.

  • Dies funktioniert auf der ganzen Region und unabhängig von Objekt/Eigentümer/Script.
  • Um eine gewisse Datensicherheit zu ermöglichen ist es nur möglich Daten zu teilen oder zu schreiben, wenn die Objekte dieselbe Gruppe haben. (Wenn das Objekt eine andere Gruppe bekommt, sind die Daten nicht mehr verfügar!)
  • Der Datenbestand wird nicht auf den Speicherverbrauch des Skriptes aufgerechnet.
  • Ein Scriptreset hat keine Auswirkungen auf den Datenbestand.
  • Die Daten werden auf dem Datenträger gespeichert. (Ordner DataScriptValue) und können dort auch ausgelesen und verändert werden.
  • Mehrere Regionen können die Daten nutzen.
  • Der Ordner wo die Daten gespeichert werden, kann in der OpenSim.ini unter [XEngine] Verändert werden.
  • DataValueStorageDirectory = "C:/.."
    string osGetDataValue(string key); //Gibt Daten aus dem Speicher aus.
    void osSetDataValue(string key, string value); //Fügt Daten in den Speicher ein.
    bool osCheckDataValue(string key); //Prüft ob für diesen Key Daten im Speicher verfügbar sind.
    void osDeleteDataValue(string key); //Löscht Daten aus dem Speicher.

Konfiguration in der OpenSim.ini:

[XEngine]
    DataValueStorageDirectory = true
    EnabledDataStorageRateLimit = true
    EnabledDataStorageCompressing = true

default
{
    state_entry()
    {
        osSetDataValue("test", "es funktioniert");
    }
    
    touch_start(integer i)
    {
        llOwnerSay(osGetDataValue("test"));   
    }
}

PathFinding

Diese Funktionen ermöglichen es die kürzeste Route über Wegpunkte einer Region zu finden. Zusätzlich zu diesen Funktionen benötigt es noch ein Script das diese Wegpunkte einfügt. Diese können entweder mit osSetPathPositionData einzeln für jeden Punkt auf der Region eingegeben werden oder mit osSetPathLineData in Form von Verbindungen zwischen 2 Punkten erfolgen.

PathFinding ist ein sehr aufwendiger vorgang und nimmt etwas Zeit in Anspruch. Deshalb arbeiten alle funktionen asynchron und geben die jeweiligen Resultate als link_message an das Script zurück.

osGetSearchableObjectList ist ein Hilfsmittel um den Weg einfacher zu finden. Diese Funktion erwartet den namen eines Objektes und gibt eine Liste mit UUID zurück von allen Objekten auf der Region mit diesen Namen.

	string osGeneratePathEnv(); 
	void osSetPathPositionData(string envID, Vector position, bool isWalkable, bool isTarget, bool isStart); 
	void osSetPathLineData(string envID, Vector startPosition, Vector ZielPosition, bool isWalkable); 
	string osGeneratePath(string envID); 
	list osGetSearchableObjectList(string query);
key m_request_env   =   NULL_KEY;
key m_request_path  =   NULL_KEY;

default
{
    touch_start(integer i)
    {
        m_request_env = osGeneratePathEnv();
    }
    
    link_message(integer sender_num, integer num, string msg, key id)
    { 
        if(m_request_env == id)
        {
            osSetPathPositionData((key)msg, llGetPos(), TRUE, FALSE, TRUE); 
            osSetPathLineData((key)msg, llGetPos(), llGetPos() + <0, 5, 0>, TRUE); 
            osSetPathPositionData((key)msg, llGetPos() + <0, 5, 0>, TRUE, TRUE, FALSE); 
            m_request_path = osGeneratePath((key)msg);
        }   
        
        if(m_request_path == id)
        {
            llOwnerSay(msg);
        }
    }
}