Scriptfehler? Komme nicht mehr weiter..

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 mich an ein Script rangesetzt und habe einen Fehler den ich nicht wegbekomme..


    Es kommt diese Fehlermeldung:


    C:\Dokumente und Einstellungen\Andre\Desktop\Mein Script\Reallfe.pwn(359) : error 017: undefined symbol "Login"



    So sehen die Zeilen aus; (349 - 362)


    if(dialogid == LOGIN)
    {
    if(response == 0)
    {
    SendClientMessage(playerid,BLAU,"Du hast den Registriervorgang abgebrochen!");
    Kick(playerid);
    return 1;
    }
    if(response == 1)
    {
    Login(playerid,(inputtext));
    return 1;
    }
    }


    Was ist daran falsch? :(

  • Du hast den Dialog "LOGIN" nicht definiert.



    Das geht zum Beispiel so:


    #define DIALOG_LOGIN 1234


    Eine genauere Erklärung findest du sicher bei den Tutorials

    Meine Ziele
    350 Posts [X]

    375 Posts [X]

    400 Posts []

    425 Posts []

    450 Posts []



  • Hey, kannst du mir das per TeamViewer mal machen?


    EDIT: Der Fehler erscheint immer noch!

  • Das musst du Ganz oben im Script schreiben


    #define DIALOG_LOGIN und hier die nummer wenn du noch keins hast einfach 1

  • Jacko, hatte ich ja, und es ist auch von anfang an definiert gewesen..

  • Hier meine Zeilen:


    Erst einmal die #define's
    //Dialoge
    #define REGISTER 1
    #define LOGIN 2




    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == LOGIN)
    {
    if(response == 0)
    {
    SendClientMessage(playerid,BLAU,"Du hast den LogIn Vorgang abgebrochen!");
    Kick(playerid);
    return 1;
    }
    if(response == 1)
    {
    Login(playerid,(inputtext));
    return 1;
    }
    }
    if(dialogid == REGISTER)
    {
    if(response == 0)
    {
    SendClientMessage(playerid,BLAU,"Du hast den Registriervorgang leider abgebrochen!");
    Kick(playerid);
    return 1;
    }
    if(response == 1)
    {
    if(!strlen(inputtext))
    {
    SendClientMessage(playerid,BLAU,"Bitte gebe ein Passwort ein");
    ShowPlayerDialog(playerid,REGISTER,DIALOG_STYLE_INPUT,"Registrieren","Bitte wähle ein Passwort um dir einen Account zu erstellen!","Registrieren","Abbrechen");
    return 1;
    }
    }
    }
    return 1;
    }


    public OnPlayerClickPlayer(playerid, clickedplayerid, source)
    {
    return 1;
    }


    stock Register(playerid,key[])
    {
    new Spieler[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",Sname);
    SpielerReset(playerid);
    dini_Create(Spieler);
    dini_Set(Spieler,"Passwort",key);
    SendClientMessage(playerid,BLAU,"Du hast dich erfolgreich registriert!");
    SpawnPlayer(playerid);
    return 1;
    }


    Kann mir nun weitergeholfen werden?

    2 Mal editiert, zuletzt von Andre2610 ()

  • stock login(playerid,key[])
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Spieler/%s.txt",name);
    if(!strcmp(key,dini_Get(Spielerdatei,"Passwort"),false))
    {
    SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level"));
    return 1;
    }
    else
    {
    ShowPlayerDialog(playerid,LOGIN,DIALOG_STYLE_INPUT,"Login","Du hast einen Account. Bitte gib dein Passwort ein:","Login","Abbrechen");
    return 1;
    }
    }

  • Nein, es geht nicht.. nun kommt dieser Error:
    C:\Dokumente und Einstellungen\Andre\Desktop\Mein Script\Reallfe.pwn(411) : error 017: undefined symbol "SpielerLaden"



    Habe den Stock LogIn hinzugefügt und das oben kommt.


    Dies ist mein LogIn-Stock, bitte helfen:


    stock Login(playerid,key[])
    {
    new Spieler[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",Sname);
    if(!strcmp(key,dini_Get(Spieler,"Passwort"),false))
    {
    SendClientMessage(playerid,BLAU,"Login erfolgreich! Spielerdaten werden geladen...");
    SpielerLaden(playerid);
    return 1;
    }
    else
    {
    SendClientMessage(playerid,BLAU,"Das eingebene Passwort ist nicht korrekt!!");
    ShowPlayerDialog(playerid,LOGIN,DIALOG_STYLE_INPUT,"Login","{FEFEFE}Dein {FF9600}Account {FEFEFE}wurde gefunden, bitte gebe nun dein Passwort ein.","LogIn","Abbrechen");
    return 1;
    }
    }

  • Zitat

    Du musst ein Stock erstellen unter diesen script von dir

    Muss er nicht. Er benutzt ja mein Filterscript (wie ich sehe), da ladet der stock "login" die Daten ;)


  • Hey, noch eine Frage..


    Hier guck dir das an; Die Errors sind weg:
    Mein Problem ist nun, dass er die PWs nicht im Ordner speichert und ich mich immer erneut registrieren muss.. Weißt du was das is?
    Eigentlich müsste kommen, dein Account wurde gefunden.. kommt aber nicht



    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == LOGIN)
    {
    if(response == 0)
    {
    SendClientMessage(playerid,BLAU,"Du hast den LogIn-Vorgang abgebrochen!");
    Kick(playerid);
    return 1;
    }
    if(response == 1)
    {
    Login(playerid,(inputtext));
    return 1;
    }
    }
    if(dialogid == REGISTER)
    {
    if(response == 0)
    {
    SendClientMessage(playerid,BLAU,"Du hast den Registriervorgang leider abgebrochen!");
    Kick(playerid);
    return 1;
    }
    if(response == 1)
    {
    if(!strlen(inputtext))
    {
    SendClientMessage(playerid,BLAU,"Bitte gebe ein Passwort ein");
    ShowPlayerDialog(playerid,REGISTER,DIALOG_STYLE_INPUT,"Registrieren","Bitte wähle ein Passwort um dir einen Account zu erstellen!","Registrieren","Abbrechen");
    return 1;
    }
    }
    }
    return 1;
    }


    public OnPlayerClickPlayer(playerid, clickedplayerid, source)
    {
    return 1;
    }


    stock Register(playerid,key[])
    {
    new Spieler[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",Sname);
    SpielerReset(playerid);
    dini_Create(Spieler);
    dini_Set(Spieler,"Passwort",key);
    SendClientMessage(playerid,BLAU,"Du hast dich erfolgreich registriert!");
    SpawnPlayer(playerid);
    return 1;
    }
    stock Login(playerid,key[])
    {
    new Spieler[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",Sname);
    if(!strcmp(key,dini_Get(Spieler,"Passwort"),false))
    {
    SendClientMessage(playerid,BLAU,"Login erfolgreich! Spielerdaten werden geladen...");
    SpielerLaden(playerid);
    return 1;
    }
    else
    {
    SendClientMessage(playerid,BLAU,"Das eingebene Passwort ist nicht korrekt!!");
    ShowPlayerDialog(playerid,LOGIN,DIALOG_STYLE_INPUT,"Login","{FEFEFE}Dein {FF9600}Account {FEFEFE}wurde gefunden, bitte gebe nun dein Passwort ein.","LogIn","Abbrechen");
    return 1;
    }
    }
    stock SpielerLaden(playerid)
    {
    new Spieler[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spieler,sizeof(Spieler),"/scriptfiles/Spieler/%s.txt",Sname);
    if(dini_Exists(Spieler))
    {
    SpawnPlayer(playerid);
    }
    return 1;
    }

  • Musst du selber erstellen im Scriptfiles Ordner, einen Ordner Names -> 'Spieler'

  • Nein, dies habe ich schon gemacht. Alles liegt auf meinem Linux-Server immerwieder rumgetestet, es geht nicht..