Launcher Modul API - Garados007/IlarosLauncher GitHub Wiki

Inhalt

  1. Allgemeines
  2. Schnittstellen
    1. Basisobjekt $
      1. $.Net
      2. $.Props
      3. $.Event(type, key, value)
      4. $.Load(file)
      5. $.Html(code)
      6. $.Log(text)
      7. $.Server(group, name)
      8. $.User(group, name)
    2. Netzwerkobjekt Net
      1. $.Net.Cookie
      2. $.Net.Error
      3. $.Net.Request
      4. $.Net.Response
      5. $.Net.Status
      6. $.Net.Timeout
      7. $.Net.Get(url)
      8. $.Net.Ping(url)
      9. $.Net.Post(url, values)
    3. Umgebungsvariablen Props
      1. $.Props.GameServerIP
      2. $.Props.Version

Allgemeines

Der Launcher bietet die Möglichkeit an diverse Module vom Server auszuführen, ohne dass die im Launcher implementiert sein müssen. Dabei erhalten sie eine vereinfachte aber mächtige Schnittstelle auf die Sicht der Dinge. Die Module werden in einem speziellen JavaScript Code geschrieben (kompatibel mit dem ECMA 5.1 Standard).

Jedes Modul wird in einem seperaten Ordner in der Asset.csf gepackt. Das Hauptscript lautet dabei immer main.js. Es können auch mehr Scripte vorhanden sein, aber die main.js dient dabei als Einstiegspunkt. Die Module haben keinen Zugriff auf den lokalen Computer und können da auch nichts bearbeiten. Ein Modul kann nur Daten (Scripte) aus dem eigenen Modul oder anderen Modulen lesend abfragen.

Ein Modul hat nur folgende Schnittstellen:

Art Beschreibung
Internet Abrufen von Webseiten (Http/Https) über GET und POST. Header und Cookies können manipuliert werden.
Launcher Signalisieren von Events, Änderung von Zustandsvariablen (z.B. Spielserver-IP)
Module Abruf von Scripten
Daten Permanente Speicherung von begrenzt Daten. Der Endnutzer kann selbst entscheiden, wie viel maximal möglich ist (maximale Speichermenge) und kann den Pool jederzeit löschen (Standard: 20MB pro Modul bei max. 200MB zusammen)

Schnittstellen

Hier werden alle Schnittstellen genau spezifiziert, die einem einzelnen Modul zur Verfügung stehen.

Basisobjekt $

Alle Schnittstelle befinden sich gekappselt in diesem Objekt.

Name Beschreibung
Parameter
Net Zugriff auf verschiedene Internetfunktionen
var result = $.Net.Get("google.de");
Props Liste aller Umgebungswerte vom Launcher
$.Props.GameServerIP = "127.0.0.1";
Methoden
Event(type, key, value) Signalisiert ein Event an dem Launcher. Die Oberfläche kann dann dieses Abrufen
  • type: String - Die Art des Events das nun ausgelöst werden soll
  • key: String - Ein spezieller Schlüssel zu diesem Event
  • value: Int, String, Bool, null - Der Wert zu diesem Event
$.Event("my-event1", newCount, 218);
$.Event("my-event2", newInfo, "apple");
Load(file) Lädt ein Script aus dem aktuellen Skriptordner und führt dieses sofort aus.
  • file: String - Der relative Pfad zur Scriptdatei
$.Load("utils.js");
Html(code) Erstellt aus dem HTML-Code einen durchsuchbaren Baum. Der Baum entspricht der Definition von der MaxLib Bibliothek.
  • code: String - Der HTML Code der verarbeitet werden soll.
var tree = $.Html(htmlCode);
Log(text) Protokolliert den angegebenen Text in der Logdatei unter Logs\Modules . Jedes Modul hat seine eigene Logdatei. Vor jedem Log wird automatisch ein Datumspräfix davor gesetzt und in einer neuen Zeile geschrieben.
Diese Methode funktioniert nur, wenn der Launcher in der Debug-Konfiguration erstellt wurde. Ansonsten macht diese Methode einfach nichts.
  • text: String - Der auszugebende Text.
var ping = $.Net.Ping("google.de");
$.Log("Ping to Google: " + ping + "ms");
Server(group, name) Ruft eine fest definierte Variable vom Server ab und gibt deren Wert zurück. Ein Schreibzugriff ist nicht möglich. Die Werte für diese Funktion stammen vom Updateserver.
  • group: String - Die Gruppe in der die Variable liegt.
  • name: String - Der Name in der die Variable liegt.
if ($.Server("events", "activate-easter-event"))
  //do some stuff
User(group, name) Ruft eine benutzerdefinierte Variable ab und gibt deren Wert zurück. Ein Schreibzugriff ist nicht möglich. Die Werte für diese Funktion werden durch die Oberfläche des Launchers definiert.
  • group: String - Die Gruppe in der die Variable liegt.
  • name: String - Der Name in der die Variable liegt.
var name = $.User("names", "default-user-name");

Netzwerkobjekt Net

Die Schnittstelle für den Internetzugriff. Alle Einstellungen, die hier vorgenommen werden, gelten nur für das aktuelle Modul. Andere Module werden davon nicht beeinflusst.

Name Beschreibung
Parameter
Cookie Dies ist eine Liste aller Cookies, die bei der nächsten Abfrage mit abgesendet werden. Dabei wird nicht unterschieden, welcher Host das nun genau ist, sondern es werden alle Cookies zu jedem Host übermittelt.
Neu vom Server gesetzte Cookies werden hier automatisch auch mit übernommen, dabei werden aber alle Restriktionen (Lebensdauer, Gültigkeitsbereich, etc.) ignoriert. Die Cookies bleiben solange erhalten wie das Modul arbeitet. Nach einem Neustart gehen alle verloren.
Diese Liste ist ein Dictionary<string, string> nach .NET.
$.Net.Cookie.Clear();
$.Net.Cookie["Access-Token"] = "0123456789abdef";
Error Bei einem Fehler, der durch einem Aufruf von get oder post ausgelöst wurde, steht hier die Nachricht (String) dazu drin. Wenn kein Fehler ausgelöst wird, so steht hier einfach null. Achtung: Ein erneuter Aufruf von get oder post setzt diesen Wert zurück auf den neuen Wert.
var result = $.Net.Get("google.de/not-existing-page");
if (result == null)
  handleException($.Net.Error);
Request Die Liste aller Header, die für die Anfrage genutzt wird. Die angegebenen Header werden zu den Standard-Headern hinzugefügt und überschreibt diese gegebenfalls. Diese Liste ist ein Dictionary<string, string> nach .NET.
if (!$.Net.Request.Contains("Pragma")) 
  $.Net.Request.Add("Pragma", "no-cache");
Response Die Liste aller Header, die der Server zurückgeschickt hat. Sie wird bei jedem Aufruf überschrieben und neu angelegt. Diese Liste ist ein Dictionary<string, string> nach .NET.
var expires = $.Net.Response.Contains("Expires") ? 
  new Date($.Net.Response.Expires) : null;
Status Der aktuelle Statuswert, der beim letzten Aufruf von get oder set vom Server zurückgegeben wurde. Es wird nur der Statuswert als int angegeben. Gab es einen Fehler, der aber nicht vom Server geliefert wurde, so steht der Wert auf 0.
var result = $.Net.Get("google.de/not-existing-page");
if (result == null && $.Net.Status == 404)
  //do something
Timeout Die Dauer in Millisekunden (int) bis ein Timeout bei einer Anfrage ausgelöst wird. Der Standardwert ist 100 Sekunden.
Im Normalfall wird die gesamte Zeitspanne abgewartet, bis ein Server als nicht erreichbar markiert wird.
$.Net.Timeout = 300 * 1000;
var result = $.Net.Get("slow-server.net");
Methoden
Get(url) Ruft den Quellcode unter der angegebenen URL mit den aktuellen Einstellungen als GET Aufruf auf. Bei Fehlern wird null zurückgegeben.
  • url: String - Die aufzurufende URL
var result = $.Net.Get("google.de");
Ping(url) Sendet einen Ping zu dem angegebenen Server über ICMP (Internet Control Message Protocol) und misst die Dauer in Millisekunden, bis es wieder zurückkommt. Im Fehlerfall und/oder eines Timeouts wird null zurückgegeben.
  • url: String - Die aufzurufende URL
if ($.Net.Ping("myserver.com") != null)
  handleOnlineServer();
Post(url, values) Ruft den Quellcode unter der angegebenen URL mit den aktuellen Einstellungen als POST Aufruf auf. Bei Fehlern wird null zurückgegeben.
  • url: String - Die aufzurufende URL
  • values: Object - Eine Liste mit zusätzlichen Werten
var result = $.Net.Post("example.com/login", {
  user: username,
  pw: password
});

Umgebungsvariablen Props

Die Schnittstelle für bestimmte Werte des Launchers.

Name Beschreibung
Parameter
GameServerIP Ein String, welcher die aktuelle IP des Spielservers angibt. Wenn der Spielserver noch nicht abgerufen wurde, dann ist der Wert null, ist er aber aktuell verfügbar (offline, oder IP lässt sich nicht abrufen) so ist der Wert "" (leerer String).
Wenn der Wert geändert wird, so wird auch gleichzeitig das passende Event ausgelöst.
if ($.Net.Ping(ip))
  $.Props.GameServerIP = ip;
else $.Props.GameServerIP = "";
Version Liefert einem die aktuelle Versionsnummer des gesamten Pakets als String im Format x.x.x. Diese Property ist nur lesbar.
var version = $.Props.Version; //z.B. "1.0.0"
Methoden
⚠️ **GitHub.com Fallback** ⚠️