Ich habe eben mal ein kleines Config System geschrieben, welches ohne Source auskommt und Daten in Echtzeit ausliest.
Die Daten werden in einer Config Datei gespeichert. Somit können im Spiel gemachte Einstellungen auch nach
einem Client Neustart eingelesen werden.
Das System kann durch 2 Wege verwendet werden:
1. intern über Python (z.B über die uigameoption)
2. extern über Software (client <> software)
Tutorial:
1. Datei "root/utilFile.py" erstellen und folgenden Code einfügen:
- import constInfo
- def WriteLineInFile(fname, linenum, s):
- import os
- farr = []
- if os.path.exists(fname):
- f = open(fname, "r")
- for line in f:
- farr.append(line)
- f.close()
- while len(farr) < int(linenum):
- farr.append("")
- farr[int(linenum)-1] = str(s)
- f = open(fname, "w")
- for line in farr:
- f.write(line)
- if (len(line) > 0 and line[-1:] != "\n") or len(line) == 0:
- f.write("\n")
- f.close()
- def ReadLineInFile(fname, linenum):
- import os
- if not os.path.exists(fname):
- return ""
- f = open(fname, "r")
- farr = []
- for line in f:
- farr.append(line)
- f.close()
- if len(farr) >= int(linenum):
- ret = farr[int(linenum)-1]
- if ret[-1:] == "\n":
- return ret[:-1]
- else:
- return ret
- else:
- return ""
- def ConfigRead(gAttr):
- f = open(constInfo.CONFIG_FILE, "r")
- for rStr in f:
- rAttr = rStr.split(' = ', 1)
- if rAttr[0] == gAttr:
- return int(rAttr[1])
- return 0
- def ConfigGetAttributeLine(gAttr):
- f = open(constInfo.CONFIG_FILE, "r")
- i = 1
- for rStr in f:
- rAttr = rStr.split(constInfo.CONFIG_FILE_SEPARATOR, 1)
- if rAttr[0] == gAttr:
- return i
- i += 1
- return 0
- def ConfigWrite(gAttr, gValue):
- keyValue = gAttr + constInfo.CONFIG_FILE_SEPARATOR + str(gValue)
- WriteLineInFile(constInfo.CONFIG_FILE, ConfigGetAttributeLine(gAttr), keyValue )
- def ConfigWriteToggle(gAttr):
- if ConfigRead(gAttr) == 1:
- ConfigWrite(gAttr, 0)
- else:
- ConfigWrite(gAttr, 1)
- return ConfigRead(gAttr)
WriteLineInFile() als auch ReadLineInFile() sind standardmäßig in der root/constinfo.py enthalten und können dort gelöscht werden, sofern ihr die Funktionen nicht nutzt.
2. Folgendes in die "root/constinfo.py" einfügen:
import utilFile
CONFIG_FILE = 'my_config.cfg'
CONFIG_FILE_SEPARATOR = ' = '
3. Folgende Datei im Metin2 Ordner erstellen: "my_config.cfg"
Funktionen:
ConfigRead() = Liest den Wert des Attributes aus
ConfigGetAttributeLine() = Gibt die Textzeile des Attributes aus.
ConfigWrite() = Überschreibt ein Attribut mit gegebenen Wert
ConfigWriteToggle() = setzt einen Wert auf 1, wenn er auf 0 ist und umgekehrt und gibt den neuen Wert zurück (bool)
Beispiel Yanganzeige:
my_config.cfg:
CFG_YANG_PICK_INFO_IGNORE = 1
constinfo:
CFG_YANG_PICK_INFO_IGNORE = utilFile.ConfigRead("CFG_YANG_PICK_INFO_IGNORE")
Yanganzeige deaktivieren:
ConfigWrite("CFG_YANG_PICK_INFO_IGNORE", 1)
Yanganzeige aktivieren:
ConfigWrite("CFG_YANG_PICK_INFO_IGNORE", 0)
Abfragen ob Yanganzeige aktiviert ist (in diesem Fall True):
ConfigRead("CFG_YANG_PICK_INFO_IGNORE") == 0
Jetzt könnt ihr die Variable CFG_YANG_PICK_INFO_IGNORE ganz einfach nutzen.
Ist natürlich nichts großes, aber vielleicht ganz hilfreich.