SimplesLoginSystemFunktNicht[Error];

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

  • #include <a_samp>
    #include <dini>


    #define Weiß 0xFFFFFFAA
    #define Grau 0xAFAFAFAA
    #define Rot 0xAA3333AA
    #define Gruen 0x00CC33C0
    #define LichtGruen 0x00CC33C0


    #define Register 0
    #define Login 1


    forward Registrieren(playerid,key[]);
    forward Anmelden(playerid,pw[]);
    forward PasswortFalsch(playerid);
    forward SavePasswort(playerid);


    enum SInfo
    {
    Passwort,
    Eingeloggt,
    }
    new SpielerInfo[MAX_PLAYERS][SInfo];


    main()
    {
    print("\n----------------------------------");
    print(" Login System Airwolf");
    print("----------------------------------\n");
    }


    public OnPlayerConnect(playerid)
    {
    new Spielerdatei[64];
    format(Spielerdatei,sizeof(Spielerdatei),"/Login/%s.ini",SpielerName(playerid));
    if(dini_Exists(Spielerdatei))
    {
    SendClientMessage(playerid,Gruen,"|__________Einloggen__________|");
    SendClientMessage(playerid,Weiß,"Dein Account wurde gefunden");
    SendClientMessage(playerid,Weiß,"um dich einzuloggen gebe einfach dein Passwort ein");
    ShowPlayerDialog(playerid,Login,DIALOG_STYLE_INPUT,"Login","Bitte tippe dein Passwort in das TextFeld ein um dich einzuloggen!","Login","Abbruch");
    }
    else
    {
    SendClientMessage(playerid,Gruen,"|__________Registrieren__________|");
    SendClientMessage(playerid,Weiß,"Dein Account wurde nicht gefunden");
    SendClientMessage(playerid,Weiß,"um dich zu Registrieren gebe einfach dein gewünschtes Passwort ein");
    ShowPlayerDialog(playerid,Register,DIALOG_STYLE_INPUT,"Regestrieren","Bitte tippe dein Passwort in das TextFeld ein um dich zu Regestrieren!","Register","Abbruch");


    }
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    if(SpielerInfo[playerid][Eingeloggt] == 0)
    {
    new Spielerdatei[64];
    format(Spielerdatei,sizeof(Spielerdatei),"/Login/%s.ini",SpielerName(playerid));
    if(dini_Exists(Spielerdatei))
    {
    SetPlayerHealth(playerid,0);
    ForceClassSelection(playerid);
    SendClientMessage(playerid,Rot,"Du musst dich erst einloggen bevor du Spawnen kannst");
    ShowPlayerDialog(playerid,Login,DIALOG_STYLE_INPUT,"Login","Bitte tippe dein Passwort in das TextFeld ein um dich einzuloggen!","Login","Abbruch");
    }
    else
    {
    SetPlayerHealth(playerid,0);
    ForceClassSelection(playerid);
    SendClientMessage(playerid,Rot,"Du musst dich erst Registrieren bevor du Spawnen kannst");
    ShowPlayerDialog(playerid,Register,DIALOG_STYLE_INPUT,"Regestrieren","Bitte tippe dein Passwort in das TextFeld ein um dich zu Regestrieren!","Register","Abbruch");
    }
    return 1;
    }
    return 1;
    }


    public Registrieren(playerid,key[])
    {
    new Spielerdatei[64];
    format(Spielerdatei,sizeof(Spielerdatei),"/Login/%s.ini",SpielerName(playerid));
    if(dini_Exists(Spielerdatei))
    {
    SendClientMessage(playerid,Rot, "Fehler: Dieser Account exestiert bereits!");
    }
    else
    {
    dini_Create(Spielerdatei);
    dini_Set(Spielerdatei,"Passwort",key);
    SpielerInfo[playerid][Eingeloggt] = 1;
    Anmelden(playerid,key);
    SendClientMessage(playerid,LichtGruen,"Du wurdest automatisch eingeloggt");
    }
    return 0;
    }


    public Anmelden(playerid,pw[])
    {
    new Spielerdatei[64];
    format(Spielerdatei,sizeof(Spielerdatei),"/Login/%s.ini",SpielerName(playerid));
    if(dini_Exists(Spielerdatei))
    {
    if (!strcmp(pw,dini_Get(Spielerdatei,"Passwort")))
    {
    SpielerInfo[playerid][Passwort] = dini_Int(Spielerdatei,"Passwort");
    SpawnPlayer(playerid);
    SpielerInfo[playerid][Eingeloggt] = 1;
    return 1;
    }
    else
    {
    SpielerInfo[playerid][Eingeloggt] = 0;
    PasswortFalsch(playerid);
    }
    }
    return 1;
    }


    public SavePasswort(playerid)
    {
    new Spielerdatei[64];
    format(Spielerdatei,sizeof(Spielerdatei),"/Login/%s.ini",SpielerName(playerid));
    dini_IntSet(Spielerdatei,"Passwort",SpielerInfo[playerid][Passwort]);
    new printN[128];
    format(printN,sizeof(printN),"Das Passwort wurde vom Spieler '%s' gespeichert!");
    print(printN);
    return 1;
    }


    public PasswortFalsch(playerid)
    {
    new tmpPasswort[MAX_PLAYERS];
    tmpPasswort[playerid] = 3;
    tmpPasswort[playerid] -= 1;
    if(tmpPasswort[playerid] == 3)
    {
    SendClientMessage(playerid,Rot,"Du hast das Passwort bereits 1 mal Falsch eingegeben du hast noch 2 versuche");
    ShowPlayerDialog(playerid,Login,DIALOG_STYLE_INPUT,"Login","Bitte tippe dein Passwort in das TextFeld ein um dich einzuloggen!","Login","Abbruch");
    return 1;
    }
    if(tmpPasswort[playerid] == 2)
    {
    SendClientMessage(playerid,Rot,"Du hast das Passwort bereits 2 mal Falsch eingegeben du hast noch 1 versuch");
    ShowPlayerDialog(playerid,Login,DIALOG_STYLE_INPUT,"Login","Bitte tippe dein Passwort in das TextFeld ein um dich einzuloggen!","Login","Abbruch");
    return 1;
    }
    if(tmpPasswort[playerid] == 1)
    {
    SendClientMessage(playerid,Rot,"Du hast das Passwort 3 mal falsch eingegeben du wurdes gekickt.");
    Kick(playerid);
    return 1;
    }
    return 1;
    }


    stock SpielerName(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    return name;
    }


    Ich kann ohne ein pw eingeben spawn, also einfach enter drücken, aber ist das pw falsch, dann kann man nciht spawn.
    Wo ist der fehler ?

    Einmal editiert, zuletzt von Airwolf ()


  • #include <a_samp>
    #include <dini>


    #define Weiß 0xFFFFFFAA
    #define Grau 0xAFAFAFAA
    #define Rot 0xAA3333AA
    #define Gruen 0x00CC33C0
    #define LichtGruen 0x00CC33C0


    #define Register0
    #define Login 1


    forward Registrieren(playerid,key[]);
    forward Anmelden(playerid,pw[]);
    forward PasswortFalsch(playerid);
    forward SavePasswort(playerid);


    enum SInfo
    {
    Passwort,
    Eingeloggt,
    }
    new SpielerInfo[MAX_PLAYERS][SInfo];


    main()
    {
    print("\n----------------------------------");
    print(" Login System Airwolf");
    print("----------------------------------\n");
    }


    public OnPlayerConnect(playerid)
    {
    new Spielerdatei[64];
    format(Spielerdatei,sizeof(Spielerdatei),"/Login/%s.ini",SpielerName(playerid));
    if(dini_Exists(Spielerdatei))
    {
    SendClientMessage(playerid,Gruen,"|__________Einloggen__________|");
    SendClientMessage(playerid,Weiß,"Dein Account wurde gefunden");
    SendClientMessage(playerid,Weiß,"um dich einzuloggen gebe einfach dein Passwort ein");
    ShowPlayerDialog(playerid,Login,DIALOG_STYLE_INPUT,"Login","Bitte tippe dein Passwort in das TextFeld ein um dich einzuloggen!","Login","Abbruch");
    }
    else
    {
    SendClientMessage(playerid,Gruen,"|__________Registrieren__________|");
    SendClientMessage(playerid,Weiß,"Dein Account wurde nicht gefunden");
    SendClientMessage(playerid,Weiß,"um dich zu Registrieren gebe einfach dein gewünschtes Passwort ein");
    ShowPlayerDialog(playerid,Register,DIALOG_STYLE_INPUT,"Regestrieren","Bitte tippe dein Passwort in das TextFeld ein um dich zu Regestrieren!","Register","Abbruch");


    }
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    if(SpielerInfo[playerid][Eingeloggt] == 0)
    {
    new Spielerdatei[64];
    format(Spielerdatei,sizeof(Spielerdatei),"/Login/%s.ini",SpielerName(playerid));
    if(dini_Exists(Spielerdatei))
    {
    SetPlayerHealth(playerid,0);
    ForceClassSelection(playerid);
    SendClientMessage(playerid,Rot,"Du musst dich erst einloggen bevor du Spawnen kannst");
    ShowPlayerDialog(playerid,Login,DIALOG_STYLE_INPUT,"Login","Bitte tippe dein Passwort in das TextFeld ein um dich einzuloggen!","Login","Abbruch");
    }
    else
    {
    SetPlayerHealth(playerid,0);
    ForceClassSelection(playerid);
    SendClientMessage(playerid,Rot,"Du musst dich erst Registrieren bevor du Spawnen kannst");
    ShowPlayerDialog(playerid,Register,DIALOG_STYLE_INPUT,"Regestrieren","Bitte tippe dein Passwort in das TextFeld ein um dich zu Regestrieren!","Register","Abbruch");
    }
    return 1;
    }
    return 1;
    }


    public Registrieren(playerid,key[])
    {
    new Spielerdatei[64];
    format(Spielerdatei,sizeof(Spielerdatei),"/Login/%s.ini",SpielerName(playerid));
    if(dini_Exists(Spielerdatei))
    {
    SendClientMessage(playerid,Rot, "Fehler: Dieser Account exestiert bereits!");
    }
    else
    {
    dini_Create(Spielerdatei);
    dini_Set(Spielerdatei,"Passwort",key);
    SpielerInfo[playerid][Eingeloggt] = 1;
    Anmelden(playerid,key);
    SendClientMessage(playerid,LichtGruen,"Du wurdest automatisch eingeloggt");
    }
    return 0;
    }


    public Anmelden(playerid,pw[])
    {
    if(pw[0] == "") return PasswortFalsch(playerid);
    new Spielerdatei[64];
    format(Spielerdatei,sizeof(Spielerdatei),"/Login/%s.ini",SpielerName(playerid));
    if(dini_Exists(Spielerdatei))
    {
    if (!strcmp(pw,dini_Get(Spielerdatei,"Passwort")))
    {
    SpielerInfo[playerid][Passwort] = dini_Int(Spielerdatei,"Passwort");
    SpawnPlayer(playerid);
    SpielerInfo[playerid][Eingeloggt] = 1;
    return 1;
    }
    else
    {
    SpielerInfo[playerid][Eingeloggt] = 0;
    PasswortFalsch(playerid);
    }
    }
    return 1;
    }


    public SavePasswort(playerid)
    {
    new Spielerdatei[64];
    format(Spielerdatei,sizeof(Spielerdatei),"/Login/%s.ini",SpielerName(playerid));
    dini_IntSet(Spielerdatei,"Passwort",SpielerInfo[playerid][Passwort]);
    new printN[128];
    format(printN,sizeof(printN),"Das Passwort wurde vom Spieler '%s' gespeichert!");
    print(printN);
    return 1;
    }
    new tmpPasswort[MAX_PLAYERS];
    public PasswortFalsch(playerid)
    {
    tmpPasswort[playerid] = 3;
    tmpPasswort[playerid] -= 1;
    if(tmpPasswort[playerid] == 3)
    {
    SendClientMessage(playerid,Rot,"Du hast das Passwort bereits 1 mal Falsch eingegeben du hast noch 2 versuche");
    ShowPlayerDialog(playerid,Login,DIALOG_STYLE_INPUT,"Login","Bitte tippe dein Passwort in das TextFeld ein um dich einzuloggen!","Login","Abbruch");
    return 1;
    }
    if(tmpPasswort[playerid] == 2)
    {
    SendClientMessage(playerid,Rot,"Du hast das Passwort bereits 2 mal Falsch eingegeben du hast noch 1 versuch");
    ShowPlayerDialog(playerid,Login,DIALOG_STYLE_INPUT,"Login","Bitte tippe dein Passwort in das TextFeld ein um dich einzuloggen!","Login","Abbruch");
    return 1;
    }
    if(tmpPasswort[playerid] == 1)
    {
    SendClientMessage(playerid,Rot,"Du hast das Passwort 3 mal falsch eingegeben du wurdes gekickt.");
    Kick(playerid);
    return 1;
    }
    return 1;
    }


    stock SpielerName(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    return name;
    }

    Bitte ..


    ähhhh geändert falsche var genohmen ^^ :D


    Einmal editiert, zuletzt von Guest- ()

  • wo hast du jetzt was geänder ?


    ich ahbe hier einen frontallen error:

    if(key[0] == "") return PasswortFalsch(playerid);


    und beim letzten return 1; in OnPlayerSpawn eine loose indentation, stümmt aber eigentlich ;)


  • so den kleinen warning habe ich beseitigt und key in pw geändert, jetzt ahbe ich diesews:

    PHP
    C:\Users\GTA-Server-Airwolf\Desktop\programme\gamemodes\LoginSystemAirwolf.pwn(100) : error 033: array must be indexed (variable "-unknown-")
    Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase
    
    
    
    
    1 Error.

  • dann habe ich das

  • ka was du da dann wieder falsch gemacht hast, ich empfehle !strlen(key)

  • //edit:
    Login System wie oben, geht nicht wirklich, deshalb habe ich da mal was anders gemacht:
    Es wurde kein konto angelegt, nichts halt.


    Ich ahbe jetzt alles ein bischen selber gemacht, aber es speichert im acc nut pw=0 stat pw=test
    wo könnte der fehler sein ? (das login system, was oben ist, existiert nicht wirklich mehr)


    //edit:
    hier mal mein login system:

    #include <a_samp>
    #include <dini>


    #define Weiß 0xFFFFFFAA
    #define Grau 0xAFAFAFAA
    #define Rot 0xAA3333AA
    #define Gruen 0x00CC33C0
    #define LichtGruen 0x00CC33C0


    #define Register0
    #define Login 1


    forward Registrieren(playerid,key[]);
    forward Anmelden(playerid,pw[]);
    forward PasswortFalsch(playerid);
    forward SavePasswort(playerid);


    enum SInfo
    {
    Passwort,
    Eingeloggt,
    }
    new SpielerInfo[MAX_PLAYERS][SInfo];


    main()
    {
    print("\n----------------------------------");
    print(" Login System Airwolf");
    print("----------------------------------\n");
    }


    public OnPlayerConnect(playerid)
    {
    new Spielerdatei[64];
    format(Spielerdatei,sizeof(Spielerdatei),"/Logins/%s.ini",SpielerName(playerid));
    if(dini_Exists(Spielerdatei))
    {
    ShowPlayerDialog(playerid,Login,DIALOG_STYLE_INPUT,"Login","Gebe dein Password ein!","Login","Abbruch");
    Anmelden(playerid,pw);
    }
    else if(!dini_Exists(Spielerdatei))
    {
    ShowPlayerDialog(playerid,Register,DIALOG_STYLE_INPUT,"Regestrieren","Gebe dein Password ein!","Register","Abbruch");
    Registrieren(playerid,pw);


    }
    return 1;
    }


    public Registrieren(playerid,pw[])
    {
    new Spielerdatei[64];
    format(Spielerdatei,sizeof(Spielerdatei),"/Logins/%s.ini",SpielerName(playerid));
    if(!dini_Exists(Spielerdatei))
    {
    dini_Create(Spielerdatei);
    dini_Set(Spielerdatei,"Passwort",pw);
    SavePasswort(playerid);
    SpielerInfo[playerid][Eingeloggt] = 1;
    Anmelden(playerid,pw);
    }
    return 1;
    }


    public Anmelden(playerid,pw[])
    {
    new Spielerdatei[64];
    format(Spielerdatei,sizeof(Spielerdatei),"/Logins/%s.ini",SpielerName(playerid));
    if(dini_Exists(Spielerdatei))
    {
    if(!strcmp(pw,dini_Get(Spielerdatei,"Passwort")))
    {
    SpielerInfo[playerid][Passwort] = dini_Int(Spielerdatei,"Passwort");
    SpielerInfo[playerid][Eingeloggt] = 1;
    SpawnPlayer(playerid);
    return 1;
    }
    else
    {
    SpielerInfo[playerid][Eingeloggt] = 0;
    Kick(playerid);
    }
    }
    return 1;
    }


    public SavePasswort(playerid)
    {
    new Spielerdatei[64];
    format(Spielerdatei,sizeof(Spielerdatei),"/Logins/%s.ini",SpielerName(playerid));
    dini_IntSet(Spielerdatei,"Passwort",SpielerInfo[playerid][Passwort]);
    return 1;
    }


    stock SpielerName(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    return name;
    }


    und in userfiel im ordner login, sieht die datei so aus:
    [php=PlayerTest]
    Password=0
    //hätte aber so stehen müssen:
    Password=pwtest354
    [/code]

    5 Mal editiert, zuletzt von Airwolf ()

  • du hast aber SpielerInfo[playerid][passwort] nicht definiert xD


    wenn du
    public Registrieren(playerid,pw[])
    {
    new Spielerdatei[64];
    format(Spielerdatei,sizeof(Spielerdatei),"/Logins/%s.ini",SpielerName(playerid));
    if(!dini_Exists(Spielerdatei))
    {
    dini_Create(Spielerdatei);
    dini_Set(Spielerdatei,"Passwort",pw);
    SpielerInfo[playerid][Passwort] = pw;
    SavePasswort(playerid);
    SpielerInfo[playerid][Eingeloggt] = 1;
    Anmelden(playerid,pw);
    }
    return 1;
    }


    machst müsste es gehen
    aber bin mir nicht sicher

  • sorry, das ich so spät antworte, aber wegen meinem i-net anbieter komme ich nciht ins i-net ;)


    aber das login system geht immer noch nciht.
    Wenn kein konto vorhanden ist, oder beim einlogen und man drückt auf login / register ist man ig, egal ob mit oder ohne ein pw.
    und als pw wird nur die 0 gespeichert, also nciht das eigentliche pw.
    Am anfang ging das login system so halb.
    also man konnte mir richtigem oder keinem pw sich einlogen.
    aber es wurden keine waffen, skin, etc. gespawnt.
    ich dachte der vehler lag an mir, weil ja alles richtig war,
    aber das war es nicht, wo das login systm draussen war, ging alles einwand frei.


    aber ich möchte halt gerne noch eine pw abfrage haben, nicht das jemand anders
    mit einem anderen nick von einem admin online geht und dann seine rechte hat.