String in Y_INI speichern & auslesen

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo,


    ich habe so meine Probleme mit Strings in Verbindung mit Y_INI.


    Ich hab folgende zwei enums:


    enum PlayerInfo
    {
    Password[129],
    IP[16],
    AdminLevel,
    Money,
    Bank,
    Score,
    Kills,
    Deaths,
    Language[8] //Als String für entweder "Deutsch" oder "English"
    }
    ...für die Spielerdaten, darunter auch die Sprache.


    enum Languages
    {
    LANGUAGE_DE[8], //jeweils als Strings deklariert, da ich ja keine Zahlenwerte haben möchte
    LANGUAGE_EN[8]
    }
    ...und noch für die verfügbaren Sprachen.


    Ich hab für beide Enumeratoren jeweils eine Variable erstellt, die darauf zugreift.
    new pInfo[MAX_PLAYERS][PlayerInfo];
    new pLanguage[MAX_PLAYERS][Languages];


    Jetzt möchte ich allerdings, dass in der Spielerdatei unter der Sprache ein String steht (Bsp: Language: English), und nicht der Zahlenwert der Sprache (Bsp: Language = 0).


    Weiß jmd weiter?
    Falls es sich jmd genauer anschauen möchte -> PN an mich und via TeamViewer.

  • Spielerdaten laden.
    public loadaccount_user(playerid, name[], value[])
    {
    INI_String("Password", pInfo[playerid][Password], 129);
    INI_String("IP", pInfo[playerid][IP], 16);
    INI_Int("AdminLevel", pInfo[playerid][AdminLevel]);
    INI_Int("Money", pInfo[playerid][Money]);
    INI_Int("Bank", pInfo[playerid][Bank]);
    INI_Int("Score", pInfo[playerid][Score]);
    INI_Int("Kills", pInfo[playerid][Kills]);
    INI_Int("Deaths", pInfo[playerid][Deaths]);
    INI_String("Language", pInfo[playerid][Language], 8);


    Speichern:
    new INI:file = INI_Open(Path(playerid));
    INI_SetTag(file, "User Data");
    INI_WriteString(file, "IP", pInfo[playerid][IP]);
    INI_WriteInt(file, "AdminLevel", pInfo[playerid][AdminLevel]);
    INI_WriteInt(file, "Money", GetPlayerMoney(playerid));
    INI_WriteInt(file, "Bank", pInfo[playerid][Bank]);
    INI_WriteInt(file, "Score", GetPlayerScore(playerid));
    INI_WriteInt(file, "Kills", pInfo[playerid][Kills]);
    INI_WriteInt(file, "Deaths", pInfo[playerid][Deaths]);
    INI_WriteString(file, "Language", pInfo[playerid][Language]);
    INI_Close(file);


    Ich hab jetzt mal den Sprachen-Enumerator weggelassen, da ich alles kompakt in pInfo haben möchte, anstatt, dass ich jetzt noch nen Umweg über den anderen enum mache...
    Ich möchte praktisch keine bool Variable für die beiden Sprachen haben, sondern einen Stringvergleich machen.
    Also, wenn "Deutsch" in der Spielerdatei steht, dann soll eine deutsche Nachricht ausgegeben werden.