Persistentes speichern von Daten
So wie du die Konfigurationen aus dem CustomData-Feld lesen und verarbeiten kannst, ist es auch möglich Daten wieder hinein zu schreiben, also zu speichern. Das geht mit den selben Mitteln wie das Auslesen.Beachte aber das gerade beim Multiplayer beispielsweise andere Spieler das CustomData Feld bearbeiten könnten während das Skript läuft und es so zu Unstimmigkeiten kommen kann, oder das edr Speicherzyklus des Spiels noch nicht erreicht ist, wodurch das CustomData-Feld per se noch nicht abgespeichert wurde. Also walte mit Vorsicht. Hier ist jedenfalls ein Codebeispiel wie das aussehen kann:
// Instanziiere ein Instanz der MyIni-Klasse MyIni iniParser = new MyIni(); // Definiere ein Standardwert für _intWert const int StandardIntWert = 5; // Ein Integer wert int _intWert; // The default of _boolWert const bool StandardBoolWert = true; // Ein bool'scher Wert bool _boolWert; public void Program() { // Dieses Mal MÜSSEN wir prüfen ob es Fehler in der INI gibt, falls er bereits falsche beschrieben wurde MyIniParseResult result; if (!iniParser.TryParse(Me.CustomData, out ergebnis)) { throw new Exception(ergebnis.ToString()); } // Lese den Integer Wert. Falls er nicht exisitiert gib den Standard Wert zurück _intWert = iniParser.Get("demo", "intWert").ToInt32(StandardIntWert); // Dann mach das selbe für den bool'schen Wert _boolWert = iniParser.Get("demo", "boolWert").ToBoolean(StandardBoolWert); } public void Save() { // Angenommen das Skript ist gelaufen und hat etwaige Änderungen vorgenommen. // Wir wollen die Werte nicht kontinuierlich aus der INI aktualisieren, das würde // zu lange dauern veglichen mit dem direkten Benutzen der Variablen // Dieses Mal parsen wir die INI komplett neu, da Benutzer die Daten manuell // geändert haben könnten und wir die Änderungen nicht mitbekommen würden. MyIniParseResult result; if (!iniParser.TryParse(Me.CustomData, out ergebnis)) { throw new Exception(ergebnis.ToString()); } // Dann setzen wir den Integer Wert iniParser.Set("demo", "intWert", _intWert); // and schließlich den Bool'schen Wert. iniParser.Set("demo", "boolWert", _boolWert); // Jetzt werden wir unser Konfiguration in die das CustomData Feld schreiben. Me.CustomData = iniParser.ToString(); } public void Main() { // Deine Logik kommt hierhin. Benutze den iniParser nicht direkt, sondern die Variablen. Alles andere wäre zu langsam }