Fehler beim Laden eines Strings

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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
  • Wird leider nichts im Dialog angezeigt. Hab ich da den Fehler oder muss ich woanders suchen?




    enum Account_Daten
    {
    bool:PasswortVergeben,
    bool:CharacterFrei[3],
    CharacterName1[MAX_PLAYER_NAME],
    CharacterName2[MAX_PLAYER_NAME],
    CharacterName3[MAX_PLAYER_NAME],
    RpPoints[MAX_PLAYERS],
    pMoney[MAX_PLAYERS]
    };



    format(Info[playerid][CharacterName1],MAX_PLAYER_NAME,dini_Get(file, "CharacterName1"));
    format(Info[playerid][CharacterName2],MAX_PLAYER_NAME,dini_Get(file, "CharacterName2"));
    format(Info[playerid][CharacterName3],MAX_PLAYER_NAME,dini_Get(file, "CharacterName3"));
    format(string,sizeof(string),"%s\n%s\n%s",Info[playerid][CharacterName1],Info[playerid][CharacterName2],Info[playerid][CharacterName3]);
    ShowPlayerDialog(playerid,DIALOG_LOGIN_2,DIALOG_STYLE_LIST,"Charaktere:",string,"Login","Abbrechen");

  • Wenn der String von dem ersten Charakter leer ist, wird das sogenannte NULL-Byte zurückgegeben.


    Sobald im String das NULL-Byte steht, wird jede lese Operation darauf abgebrochen.


    Beispiel kann dein string sein "\0Hallo" dann würdest du nicht Hallo lesen können, da beim NULL Byte schon abgebrochen wird.


    Folglich musst du prüfen ob das im String vorhanden ist :D


    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Dann lade mal crashdetect vielleicht gibt dir das was im server log aus.


    Ansonsten verwende mal ein print und schau, was im string steht ;)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • String ist einfach leer.

  • String ist einfach leer.

    Dann prüfe mal die anderen Strings, aus denen sich der Hauptstring zusammensetzt.


    Zeig am besten mal deinen aktuellen Code und das was du uns da geschickt hast ist nicht der server_log ^^

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S


  • if(!response)return CON_CLOSE;
    new key[128];
    new file[128];
    format(file,sizeof(file),"/Accounts/%s.inc",GetName(playerid));
    format(key,sizeof(key), dini_Get(file, "key"));
    if(key[0] != EOS && inputtext[0] != EOS && !strcmp(inputtext, key))
    {
    new string[128];
    format(Info[playerid][CharacterName1],sizeof(string),dini_Get(file, "CharacterName1"));
    format(Info[playerid][CharacterName2],MAX_PLAYER_NAME,dini_Get(file, "CharacterName2"));
    format(Info[playerid][CharacterName3],MAX_PLAYER_NAME,dini_Get(file, "CharacterName3"));
    format(string,sizeof(string),"%s\n%s\n%s",Info[playerid][CharacterName1],Info[playerid][CharacterName2],Info[playerid][CharacterName3]);
    print(string);
    print(Info[playerid][CharacterName1]);
    print(Info[playerid][CharacterName2]);
    print(Info[playerid][CharacterName3]);
    ShowPlayerDialog(playerid,DIALOG_LOGIN_2,DIALOG_STYLE_LIST,"Charaktere:",string,"Login","Abbrechen");
    return 1;
    }



    Der Pfad stimmt, andere Dinge werden ja auch geladen wie das Passwort.

  • Du Scherzkeks, wieso verwendest du den Code, wenn ich dir doch schon in meiner 1. Antwort erklärt habe, wieso da nichts angezeigt wird?!


    Wieso verwendest du dann weiter deinen Code und wunderst dich, wieso es weiterhin nicht geht?


    Nimm doch meinen Code?!

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Da war das doch nur das Problem das der String leer war. Daher hab ich mir gedacht ich schreib einfach was rein. Hab ich doch so oben erklärt, sorry wenn es nicht zu erkennen war. Ich werde mal dein Code nutzen.



    new ch[3][MAX_PLAYER_NAME],string[128];
    format(Info[playerid][CharacterName1],MAX_PLAYER_NAME,dini_Get(file, "CharacterName1"));
    format(Info[playerid][CharacterName2],MAX_PLAYER_NAME,dini_Get(file, "CharacterName2"));
    format(Info[playerid][CharacterName3],MAX_PLAYER_NAME,dini_Get(file, "CharacterName3"));
    if(Info[playerid][CharacterName1][0] == EOS) ch[0] = "/";
    else strcat(ch[0],Info[playerid][CharacterName1]);
    if(Info[playerid][CharacterName2][0] == EOS) ch[1] = "/";
    else strcat(ch[1],Info[playerid][CharacterName2]);
    if(Info[playerid][CharacterName3][0] == EOS) ch[2] = "/";
    else strcat(ch[2],Info[playerid][CharacterName3]);
    format(string,sizeof(string),"%s\n%s\n%s",ch[0],ch[1],ch[2]);
    ShowPlayerDialog(playerid,DIALOG_LOGIN_2,DIALOG_STYLE_LIST,"Charaktere:",string,"Login","Abbrechen");
    print(string);
    print(Info[playerid][CharacterName1]);
    print(Info[playerid][CharacterName2]);
    print(Info[playerid][CharacterName3]);


    Print:
    /
    /
    /
    <null>
    <null>
    <null>

  • Ja, das ist doch richtig...mein Code funktioniert doch..


    Jetzt sollte dir der Dialog angezeigt werden.


    Der Grund wieso dir der Name nicht angezeigt wird, liegt an deinem File.


    In dini schreibt man z.B. CharacterName1=Arnold, also du musst das mit einem = separieren, nicht mit einem Leerzeichen...

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Ah da war der Fehler, ich danke dir!
    Irgendwas failt da noch
    case DIALOG_LOGIN_1: { if(!response)return CON_CLOSE; new key[128]; //new file[128]; format(file,sizeof(file),"/Accounts/%s.inc",GetName(playerid)); format(key,sizeof(key), dini_Get(file, "key")); if(key[0] != EOS && inputtext[0] != EOS && !strcmp(inputtext, key)) { /*new string[128]; format(Info[playerid][CharacterName1],sizeof(string),dini_Get(file, "CharacterName1")); format(Info[playerid][CharacterName2],MAX_PLAYER_NAME,dini_Get(file, "CharacterName2")); format(Info[playerid][CharacterName3],MAX_PLAYER_NAME,dini_Get(file, "CharacterName3")); format(string,sizeof(string),"%s\n%s\n%s",Info[playerid][CharacterName1],Info[playerid][CharacterName2],Info[playerid][CharacterName3]); print(string); print(Info[playerid][CharacterName1]); print(Info[playerid][CharacterName2]); print(Info[playerid][CharacterName3]); ShowPlayerDialog(playerid,DIALOG_LOGIN_2,DIALOG_STYLE_LIST,"Charaktere:",string,"Login","Abbrechen");*/ new ch[3][MAX_PLAYER_NAME],string[128]; format(Info[playerid][CharacterName1],MAX_PLAYER_NAME,dini_Get(file, "CharacterName1")); format(Info[playerid][CharacterName2],MAX_PLAYER_NAME,dini_Get(file, "CharacterName2")); format(Info[playerid][CharacterName3],MAX_PLAYER_NAME,dini_Get(file, "CharacterName3")); if(Info[playerid][CharacterName1][0] == EOS) ch[0] = "/"; else strcat(ch[0],Info[playerid][CharacterName1]); if(Info[playerid][CharacterName2][0] == EOS) ch[1] = "/"; else strcat(ch[1],Info[playerid][CharacterName2]); if(Info[playerid][CharacterName3][0] == EOS) ch[2] = "/"; else strcat(ch[2],Info[playerid][CharacterName3]); format(string,sizeof(string),"%s\n%s\n%s",ch[0],ch[1],ch[2]); ShowPlayerDialog(playerid,DIALOG_LOGIN_2,DIALOG_STYLE_LIST,"Charaktere:",string,"Login","Abbrechen"); print(string); print(Info[playerid][CharacterName1]); print(Info[playerid][CharacterName2]); print(Info[playerid][CharacterName3]); return 1; } }


    Code
    Character free0=1
    Character free1=0
    Character free2=0
    CharacterName1=Arnold
    CharacterName2=Leer
    CharacterName3=Leer
    key=weeder77
    Password Given=1


    C:\Program Files\Grand Theft Auto San Andreas\gamemodes\ganmore.pwn(535) : warning 219: local variable "ch" shadows a variable at a preceding level

  • Wahrscheinlich heißt irgendwas schon so, aber die Lösung ist eigentlich doof, da das sehr aufwändig ist.


    Wir machen das mal anders, behalte mal deinen alten Code und ändere einfach mal im Include die dini_Get Funktion so ab:


    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S