Elixr Mods - EM Framework

V 2.1.2 Mod für ECO

1
Downloads heute
10
Downloads gesamt
0
Kommentare

Beschreibung

Tretet der Eco Modding Community auf discord bei: https://discord.gg/5BdXErQ

Das Elixr Mods Framework wurde entwickelt, um das Modding für eco einfacher zu machen, Mods kompatibler zu machen und die Möglichkeiten des Servers zu erweitern.

Ab Version 2.1.0 gibt es einige große Änderungen und die hier gefundenen Informationen sind möglicherweise nicht ganz korrekt.
Für die gesamte Dokumentation zum Elixr Mods Framework besuchen Sie bitte diesen Link: https://elixrmods.com/docs/elixr-mods/intro

Der Dokumentationsbereich enthält eine linke Navigationsleiste für alle Bereiche, für die wir eine Dokumentation haben (ich bin noch nicht mit allem außerhalb des em-frameworks fertig, werde es aber tun, wenn ich mehr Dinge veröffentliche) und eine rechte Navigation, die normalerweise für die Seitennavigation verwendet wird, die einzige Ausnahme ist die Einführungsseite, die schnelle Links zu jedem Teil des Frameworks unter EM Framework Namespaces hat, der Rest sind Seitennavigationslinks

Die em-framework Dokumentation ist für Version 2.1.0 aufwärts.

Berechtigungssystem

Während sich unser Berechtigungssystem noch in der Entwicklung befindet, ist dies eine grundlegende Dokumentation zu dem, was wir bisher haben und wird aktualisiert, wenn wir weitere Funktionen hinzufügen:


Die Verwendung des EM-Berechtigungssystems ist einfach,

Was das EM-Berechtigungssystem Ihnen bietet, ist die Möglichkeit, neue Benutzergruppen zu erstellen und ihnen Zugriff auf Befehle zu geben, solange sie in dieser Gruppe sind,

Beispiel,

Joe hat für Ihren Server gespendet, Sie können die Gruppe "VIP" erstellen und Joe zu dieser Gruppe hinzufügen,

Sie können dann dieser Gruppe Befehle zuweisen, die Joe verwenden kann:

Angenommen, Sie haben Teleport-Befehle auf dem Server, dann können Sie den Teleport-Befehl zur Gruppe "VIP" hinzufügen, damit Joe den Teleport-Befehl verwenden kann,

Nutzung für Server-Admins:

Standardmäßig gibt es 2 Benutzergruppen, Admin und Standard, diese 2 Gruppen können nicht gelöscht werden

Wenn der Benutzer bereits ein Admin ist, muss er nicht zur Admin-Gruppe hinzugefügt werden, aber wenn der Benutzer kein Admin ist, können Sie ihn zur Admin-Gruppe hinzufügen und Ihren Admins bestimmte Befehle zuweisen, z.B. Kicken, Mod-basierte Befehle oder was immer Sie möchten

Hier ist eine Liste aller Befehle, die ein Admin/Besitzer im Server verwenden kann:

Befehle, um Gruppen Berechtigungen für Befehle zu geben

Code

"/CommandPermissions grant command, groupname " // Wird verwendet, um Gruppen das Recht zu geben, einen Befehl zu verwenden: Z. B.:
"/CommandPermissions grant fly, VIP" //Damit erhält die Gruppe VIP das Recht, den Befehl /fly zu verwenden
Sie können einem Befehl keine Shortcuts zuweisen, d.h.: ElixrMods Auto door hat einen Shotcut-Befehl: /ad-on
tun: "/CommandPermissions grant ad-on, VIP" wird nicht funktionieren

"/CommandPermissions revoke command, groupname" // Wird verwendet, um einer Gruppe die Berechtigung für einen Befehl zu entziehen: Z.B.:
"/CommandPermissions revoke fly, VIP" // Nimmt der VIP-Gruppe die Möglichkeit, den Befehl /fly zu verwenden
Sie können keine Shortcodes verwenden, wenn Sie einen Befehl widerrufen, z. B.: "/CommandPermissions revoke ad-on, VIP" wird nicht funktionieren

"/CommandPermissions setbehaviour admin/user, true/false" //Dies wird verwendet, um Admins oder Benutzern den Standardzugriff auf ihre Standardbefehle zu ermöglichen:
D.h.:
"/CommandPermissions setbehaviour admin, false" // bedeutet, dass jeder Benutzer, der zum Admin gemacht wurde, keinen Zugriff mehr auf Admin-Befehle hat und Sie müssen die Verwendung von Admin-Befehlen über eine Gruppe zuweisen, z. B.: Gruppe Admin.
"/CommandPermissions setbehaviour user, false" // bedeutet, dass jeder Benutzer, der nicht in einer Gruppe oder einem Admin ist, keinen Befehl verwenden kann, ohne in einer Gruppe zu sein

Mehr anzeigen

Shortcuts:

Code

"/Befehl erteilen, Gruppenname"
"/revoke-command Befehl, Gruppenname"
"/behaviour-command admin/user, true/false"

Das "Kommando" in den Befehlen ist jedes Kommando im eco-Spiel, egal ob es von einem Mod oder einem Core-Kommando registriert wurde!

Befehle zum Erstellen von Gruppen und Hinzufügen von Benutzern zu Gruppen

Code

"/groups addgroup groupname" // Wird verwendet, um eine neue Gruppe zu erstellen
"/groups deletegroup groupname" // wird verwendet, um eine erstellte Gruppe zu löschen
"/groups listgroups" // listet alle Gruppen auf, die Sie auf dem Server haben
"/groups grouppermissions groupname" // listet alle Berechtigungen der benannten Gruppe auf "/groups addusertogroup username, groupname" // fügt einen Benutzer zu einer ausgewählten Gruppe hinzu oder erstellt eine Gruppe und fügt den Benutzer dann zu dieser hinzu
"/groups removeuserfromgroup username, groupname" // entfernt einen Benutzer aus dieser Gruppe, wenn die Gruppe nicht existiert, wird dies angezeigt
"/groups forcesave" //zwingt das Gruppensystem, alles zu speichern, falls ein Speichern fehlschlägt

Alle Befehle, die einen Benutzernamen verwenden, unterscheiden zwischen Groß- und Kleinschreibung, also stellen Sie sicher, dass Ihre Namensgebung korrekt ist, sonst wird es sagen, dass der Benutzer nicht existiert

Kurzbefehle:

Code

"/grp-add groupname"
"/grp-del groupname"
"/grp-list"
"/grp-perms gruppenname"
"/grp-adduser benutzername, gruppenname"
"/grp-remuser benutzername, gruppenname"
"/grp-fs"

Struktur der Konfigurationsdatei - Wenn Sie diese Datei nicht bearbeiten möchten, verwenden Sie bitte einfach die Befehle im Spiel - zu finden in Configs/Mods

ElixrMods-GroupsDate.json

Code

{
  "Groups": [
    {
      "GroupName": "groupname", // Der Name der jeweiligen Gruppe
      "GroupUsers":  [
        {
          "Name": "Benutzername", // Der Benutzername der Person, die der Gruppe hinzugefügt wurde
          "SlgID": "slgid", // ihre slgid, falls vorhanden
          "SteamID": "steamid" // ihre Steamid, falls vorhanden
        }
      ], // Jeder Benutzer in dieser Gruppe
      "Permissions": [ //jeder Befehl, auf den diese Gruppe Zugriff hat
        {
          "$type": "Eco.EM.Permissions.ChatCommandAdapter, em-framework", //dies nicht bearbeiten
          "Bezeichner": "Command" //Befehlsname
        },
        {
          "$type": "Eco.EM.TP.TeleportConfig, em-tp-9", //Dies ist eine benutzerdefinierte Konfiguration für einen anderen Mod, der das Gruppensystem verwendet.
          "MaxTeleports": 30, // Konfigurationseinstellung
          "CalorieCost": 250, //Konfigurationseinstellung
          "CooldownSeconds": 15, // Konfig-Einstellung
          "Expiry": 15, //Konfigurationseinstellung
        }
      ]
    }
  ],
  "AllUsers": [ // Jeder Benutzer, der sich am Server anmeldet
    {
      "Name": "UserName", // Ihr Benutzername
      "SlgID": "slgid", //Seine SLG-ID - Kann leer sein, wenn slg id nicht vorhanden
      "SteamID": "steam64id", //Ihre Steam-ID - Kann leer sein, wenn steamid nicht vorhanden ist
    }
  ]
}

Mehr anzeigen

Für Modder:

Es gibt nicht viel, was Sie tun müssen, um unser Berechtigungssystem nutzen zu können,

Um die Verwendung des Berechtigungssystems zu erzwingen, können Sie Folgendes tun:

Beim Erstellen eines Chat-Befehls setzen Sie folgendes:

Code

[ChatBefehl("Beschreibung", "Shortcut", ChatAuthorizationLevel.Admin)]
[ChatSubCommand("Command Parent", "Description", "shortcut", ChatAuthorizationLevel.Admin)]

Durch das Einstellen der Befehle zur Verwendung durch Admins können Serverbesitzer diese Befehle jeder Gruppe zuweisen und den Benutzern in dieser Gruppe erlauben, diese Befehle zu verwenden, unabhängig davon, ob es sich um Befehle auf Admin-Ebene handelt. Das bedeutet auch, dass ein Benutzer in einer Gruppe sein muss, um diese Befehle zu verwenden

Wenn Sie sie wie folgt einstellen:

Code

[ChatBefehl("Beschreibung", "Abkürzung", ChatAuthorizationLevel.User oder Leer lassen)]
[ChatSubCommand("Command Parent", "Description", "shortcut", ChatAuthorizationLevel.User or Leave Blank)]

Jeder Benutzer kann dann den Befehl verwenden, es sei denn, der Eigentümer des Servers schaltet aus, dass Benutzer Benutzerbefehle verwenden können. Dies kann jedoch zu Problemen mit Benutzern führen, die den Befehl /? verwenden, um Hilfe bei einer Liste von grundlegenden Befehlen zu erhalten, die sie normalerweise verwenden könnten.

Erweiterbarkeit:

Modder können das Berechtigungssystem auch mit eigenen Befehlen für andere Funktionen erweitern. Dazu müssen Sie unsere em-framework.dll referenzieren und können damit einige der folgenden Dinge tun:

Code

namespace Eco.EM.Groups

[ChatSubCommand("CommandPermissions" //Damit wird Ihr Befehl zu einem Unterbefehl unseres Berechtigungssystems und kann verwendet werden: /permissions yourcommand,
"Ihre Befehlsbeschreibung", "Ihre Befehlsverknüpfung IE: Statt /CommandPermissions yourcommand können Sie /yourcommand verwenden", ChatAuthorizationLevel.Admin // dies erzwingt, dass der Befehl vom Berechtigungssystem verwendet werden kann und verhindert, dass nicht autorisierte Benutzer den Befehl verwenden, Admins erhalten standardmäßig Zugriff darauf)]


Zusätzliche Informationen

Dies ist der verwendende Haken.

using Eco.EM.Groups;

Code

GroupsManager.API.GetGroup(string group, bool true/false); //Dies liefert eine Gruppe, wenn sie nicht existiert, geben Sie an, ob die Gruppe erstellt werden soll oder nicht
GroupsManager.API.AllGroups(); //So werden alle verfügbaren Gruppen ermittelt
GroupsManager.API.UserPermitted(User user, permssion) //Dies holt alle Gruppen, in denen der Benutzer ist und prüft, ob eine dieser Gruppen die Berechtigung hat, die Befehle zu verwenden

Benutzerfreundlichkeit:
public static void yourfunction(string groupName)
{
Group group = GroupsManager.API.GetGroup(groupName); // Weisen Sie group einer var zu, um die Suche nach Gruppen zu vereinfachen
}
GroupsManager.API.SaveData(); // Wird verwendet, um Ihre gruppenbasierte Konfiguration in der Gruppendatei zu speichern, was nützlich ist, wenn Sie möchten, dass eine Gruppe bestimmte Einstellungen haben kann



Benutzungen (umfasst den Dateimanager und die Chat-Basis):

Code

Eco.EM verwenden;

Dateimanager:

Code

FileManager.ReadFromFile(Base.SaveLocation, filename); filename können Sie einstellen

FileManager.WriteToFile(datainput, Base.SaveLocation, filename);

Code

Base.SaveLocation = ServerFolder/Configs/Mods

Sie können dies auch mit dem Dateimanager für Ihren eigenen Ordner tun

Code

FileManager.WriteToFile(datainput, Base.SaveLocation + "/Foldername", filename);
FileManager.ReadFromFile(Base.SaveLocation + "/Foldername", filename);


Der Dateimanager legt das Verzeichnis automatisch an, wenn es nicht existiert

Sie können den Dateinamen als String-Konst setzen und diesen verwenden oder einen direkten String verwenden:

Code

const string filename = "MyMod";
FileManager.WriteToFile(datainput, Base.SaveLocation + "/Foldername", filename);
oder
FileManager.WriteToFile(datainput, Base.SaveLocation + "/Foldername", "MyMod");


Wenn Sie die Base.SaveLocation nicht verwenden wollen, können Sie eine eigene verwenden:

Code

FileManager.WriteToFile(datainput, "/Mods/DeinOrdnerHier", Dateiname);
FileManager.ReadFromFile("/Mods/DeinOrdnerHier", Dateiname);



Ich empfehle, den Basisspeicherort zu verwenden, da im Falle, dass der Mods-Ordner gelöscht wird, alle Ihre Konfigurationsdateien sicher bleiben, alle Configs werden im .json-Format gespeichert

Für Configs:

Code

public PluginConfig ConfigName; //Ihre Datenstruktur
public IPluginConfig PluginConfig => ConfigName;

public void LoadConfig() { ConfigName = new PluginConfig(configFileName // const string oder direct string); } public void SaveConfig() { ConfigName.SaveAsync(); }

Es sind eventuell Anpassungen auf Ihrer Seite erforderlich, aber Sie können es so strukturieren, wie Sie möchten

Chat Manager

Hier ist für das Senden von Server-Nachrichten:

Code

public Message( string content ) // für das Senden von serverbasierten Nachrichten ist ebenfalls temporär
public Message( string content, MessageType messageType ) // für das Versenden von serverbasierten Nachrichten, die nicht temporär sind
public Message( string content, User user ) // zum Versenden an den Benutzer ist ebenfalls temporär
public Message( string content, Player player ) //für das Senden an den Player ist ebenfalls temporär
public Message( string content, User user, MessageType messageType ) // zum Senden an den Benutzer ist nicht temporär
public Message( string content, Player player, MessageType messageType ) //für das Senden an den Player ist nicht temporär
public Message( string inhalt, MessageCategory chatCategory, DefaultChatTags defaultChatTags ) // für das Senden von Server-Nachrichten und die Auswahl von Chat-Tags und Chat-Kategorie ist temporär
public Message( string title, string content ) // Server-Benachrichtigungen mit Titel, Nachrichtentyp ist entweder Popup oder Annoucement

Beispiel:

Code

bool Send( Nachricht Nachricht ) //To server or player
internal bool SendToPlayer( Message Message ) // an Spieler und schaltet Nachrichtentyp um: infopanel - Ankündigung, okboxloc - Popup, msglocstr - temp, servermessagetoplayer - perm
internal bool SendToServer( Message Message ) // zum Server als Ankündigung, Popup, temp, perm
ChatBase.Send(new ChatBase.Message(string.Format(Localizer.DoStr(appName + "{0} wurde zu Ihnen teleportiert.")), Requester.Name), Receiver)); // dies verwendet Vars im Text und sendet an einen Benutzer
ChatBase.Send(new ChatBase.Message(string.Format(Localizer.DoStr(appName + "{0} wurde zu Ihnen teleportiert.")), Requester.Name), reciever, ChatBase.MessageType.Type)); // Hier können Sie angeben, ob es sich um ein Popup oder eine Perm-Nachricht handelt usw.
ChatBase.Send(new ChatBase.Message(string.Format(Localizer.DoStr(""), ChatBase.MessageType.Type)); //Dies wird an den Server gesendet
ChatBase.Send(new ChatBase.Message(string.Format(Localizer.DoStr(""), ChatBase.MessageType.Type), user)); //das wird an den Benutzer gesendet


Es kann auch vereinfacht werden:

Code

ChatBase.Send(new ChatBase.Message(Localizer.DoStr("Message")), user)); //Dies sendet an einen Benutzer
ChatBase.Send(new ChatBase.Message(Localizer.DoStr("Message")), user, messagetype)); //Das sendet an einen Benutzer mit einem angegebenen Messagetype wie ein Popup 

Es gibt noch mehr zum Custom Chat Manager, aber diese werden alle auf der Website eingebunden, dies sind vorerst nur temporäre Dokumente

Chatmanager Simplified: Einfache Bedienung:

Code

ChatBase.Send(new ChatBase.Message(string content, user, ChatBase.MessageType.Temporary)); //Wird eine temporäre Nachricht an den Benutzer senden
ChatBase.Send(new ChatBase.Message(string content, user, ChatBase.MessageType.Permanent)); // Sendet eine permanente Nachricht an den Benutzer
ChatBase.Send(new ChatBase.Message(string content, user)); //Wird standardmäßig eine temporäre Nachricht an den Benutzer senden
ChatBase.Send(new ChatBase.Message(string title, string content, user)); //Wird ein Info-Panel an einen Benutzer senden
ChatBase.Send(new ChatBase.Message(null | "", string content, user)); //Wird ein Popup Ok-Feld an den Benutzer senden
ChatBase.Send(new ChatBase.Message(string content)); // Sendet eine temporäre Nachricht an alle Online-Benutzer auf dem Server
ChatBase.Send(new ChatBase.Message(string content, ChatBase.MessageType.Permanent)); //Wird eine permanente Nachricht an alle Online-Benutzer auf dem Server senden
ChatBase.Send(new ChatBase.Message(string title, string content)); //Wird eine Infobox an alle Online-Benutzer auf dem Server senden
ChatBase.Send(new ChatBase.Message(null | "", string content)); //Wird eine Popup-OK-Box an alle Online-Benutzer auf dem Server senden
ChatBase.Send(new ChatBase.Message(string content, ChatBase.MessageType.GlobalAnnoucement)); //Sendet eine globale Ankündigung an alle Spieler auf dem Server (oder stellen Sie sich vor, Sie fügen eine neue Benachrichtigung im Benachrichtigungsbereich hinzu), dies ist großartig, um Benachrichtigungen für Offline-Benutzer zu hinterlassen


String Sanitizer


Unser String Sanitizer gibt den gesamten Text .tolower() aus und entfernt die Leerzeichen nach dem ",", so dass Sie Text wie diesen einfach in Befehle einlesen lassen können: /somecommand dies-das-das

Es entfernt die Leerzeichen am Ende und am Anfang von allem, was nach einem Komma steht, um ein genaueres Lesen von Benutzereingaben zu ermöglichen

Zu verwenden: string = Base.Sanitize(string); Beispiel:

Code

public static void somecommand(User user, string setting, string something)
{
something = Base.Sanitize(something);
}
/somecommand Food, Pineapple
wird gelesen als:
Lebensmittel, Ananas
oder
public static void somecommand(User user, string setting, string something, int amount)
{
something = Base.Sanitize(something);
amount = Base.Sanitize(amount); //das ist ein int und wird nicht funktionieren, auch wenn Sie .ToString() so setzen:
Betrag = Base.Sanitize(Betrag.ToString()); // dies wird einen Fehler auslösen, dieser Sanitizer ist für Strings ausgelegt
}
/somecommand Essen, Ananas, 5
wird gelesen als:
Lebensmittel,Ananas, 5

Dies kann bei Konflikten helfen, ähnlich wie bei unserem Gruppensystem. Wir haben es so eingestellt, dass alle Gruppennamen klein geschrieben werden, so dass Sie nicht versehentlich 4 der gleichen Gruppe erstellen, indem Sie unterschiedliche Groß- und Kleinschreibung verwenden: z.B.: Vip, vip, VIp, VIP würden alle als vip zurückgegeben
Unser Sanitizer hilft auch gegen Leerzeichen und verhindert, dass unser Gruppensystem 2 Gruppen mit dem gleichen Namen hinzufügt, von denen eine ein Leerzeichen enthält: z.B.: "vip" " vip", so dass Sie jedes Mal die gleiche Gruppe erhalten

Credits

Änderungen

  • 04. Februar, 15:31 Uhr
    Version 2.1.2

    Changelog:

    Fixed a bug where admin commands would no longer log to file or log to chat if set in the server config

    Moved Folder Structure to the new one

    Unzip the zip file into the mods folder, the new em-framework will now be in Mods/Elixr Mods/em-framework.dll

    Please ensure you delete all other instances of em-framework from your mods folder to prevent server crashing on boot.

    Mod Developers are encouraged to use this folder structure when releasing their mods or just add a referenced link to this mod for others to download, all future updates will use this mod structure, all previous mods that used em-framework 2.1.1 should not break if you update em-framework to 2.1.2 as there where no major changes made in 2.1.2

Bilder



Dateien


04.02 2021
Modhoster Userbewertung
keine Bewertung Stimmen

Empfehlungsrate

-/-      
noch nicht genug Stimmen

Ist dieser Mod besonders empfehlenswert?

Mod abonnieren
Abonniere Elixr Mods - EM Framework
Der Mod wird automatisch beim nächsten Start von ECO installiert.
ECO
em-framework.zip
21,4 KB 10

0 Kommentare

Um Kommentare schreiben zu können musst du dich einloggen.
Du kannst dich auch kostenlos registrieren, falls du noch keinen Account hast - dauert nur eine Minute.

Noch keine Kommentare vorhanden.

Schreibe den ersten Kommantar...

      }