Probelm mit Register Login System

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 ein Problem mit dem Register/Login System.
    Beim Registrieren wird zwar die datei erstellt und alles reingeschrieben und das einloggen geht auch aber zb. die Fraktion, das geld, adminlevel werden alles nicht gespeichert.


    //Register/Login System
    stock Register(playerid,key[])
    {
    new Spieler[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spieler,sizeof(Spieler),"LifeYourLife/Spieler/%s.txt",Sname);
    SpielerReset(playerid);
    dini_Create(Spieler);
    dini_Set(Spieler,"Passwort",key);
    dini_IntSet(Spieler,"Adminlevel",0);
    dini_IntSet(Spieler,"Level",0);
    dini_IntSet(Spieler,"Fraktion",0);
    dini_IntSet(Spieler,"Autofuhrerschein",0);
    dini_IntSet(Spieler,"Handschellen",0);
    dini_IntSet(Spieler,"Geld",10000);
    dini_IntSet(Spieler,"Job", 0);
    dini_IntSet(Spieler,"Paytime",0);
    dini_IntSet(Spieler,"OnDuty",0);
    dini_IntSet(Spieler,"Rang",0);
    dini_IntSet(Spieler,"Skin",0);
    dini_IntSet(Spieler,"Knast",0);
    dini_IntSet(Spieler,"Knastzeit",0);
    dini_IntSet(Spieler,"HitmanZielPerson",0);
    dini_IntSet(Spieler,"HitmanPreis",0);
    dini_IntSet(Spieler,"kickplayerid",0);
    dini_IntSet(Spieler,"Bankkonto",0);
    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),"LifeYourLife/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 Falsch");
    ShowPlayerDialog(playerid,LOGIN,DIALOG_STYLE_INPUT,"Login","{FEFEFE}Dein {FF9600}Account {FEFEFE}wurde in unserer Datenbank gefunden, bitte gebe nun dein Passwort ein und logge dich somit ein.","Login","Abbrechen");
    return 1;
    }
    }


    stock SpielerSpeichern(playerid)
    {
    new Spieler[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spieler,sizeof(Spieler),"LifeYourLife/Spieler/%s.txt",Sname);
    if(dini_Exists(Spieler))
    {
    dini_IntSet(Spieler,"Adminlevel",sSpieler[playerid][Adminlevel]);
    dini_IntSet(Spieler,"Level",sSpieler[playerid][Level]);
    dini_IntSet(Spieler,"Fraktion",sSpieler[playerid][Fraktion]);
    dini_IntSet(Spieler,"Autofuhrerschein",sSpieler[playerid][Autofuhrerschein]);
    dini_IntSet(Spieler,"Handschellen",sSpieler[playerid][Handschellen]);
    dini_IntSet(Spieler,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(Spieler,"Job",sSpieler[playerid][Job]);
    dini_IntSet(Spieler,"Paytime",sSpieler[playerid][Paytime]);
    dini_IntSet(Spieler,"OnDuty",sSpieler[playerid][OnDuty]);
    dini_IntSet(Spieler,"Rang",sSpieler[playerid][Rang]);
    dini_IntSet(Spieler,"Skin",sSpieler[playerid][Skin]);
    dini_IntSet(Spieler,"Knast",sSpieler[playerid][Knast]);
    dini_IntSet(Spieler,"Knastzeit",sSpieler[playerid][Knastzeit]);
    dini_IntSet(Spieler,"HitmanZielPerson",sSpieler[playerid][HitmanZielPerson]);
    dini_IntSet(Spieler,"HitmanPreis",sSpieler[playerid][HitmanPreis]);
    dini_IntSet(Spieler,"kickplayerid",sSpieler[playerid][kickplayerid]);
    dini_IntSet(Spieler,"Bankkonto",sSpieler[playerid][Bankkonto]);
    }
    return 1;
    }


    stock SpielerLaden(playerid)
    {
    new Spieler[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spieler,sizeof(Spieler),"LifeYourLife/Spieler/%s.txt",Sname);
    if(dini_Exists(Spieler))
    {
    SetPlayerScore(playerid,dini_Int(Spieler,"Level"));
    GivePlayerMoney(playerid,dini_Int(Spieler,"Geld"));
    sSpieler[playerid][Adminlevel] = dini_Int(Spieler,"Adminlevel");
    sSpieler[playerid][Level] = dini_Int(Spieler,"Level");
    sSpieler[playerid][Fraktion] = dini_Int(Spieler,"Fraktion");
    sSpieler[playerid][Autofuhrerschein] = dini_Int(Spieler,"Autofuhrerschein");
    sSpieler[playerid][Handschellen] = 0;
    sSpieler[playerid][sLogin] = 1;
    sSpieler[playerid][Job] = dini_Int(Spieler,"Job");
    sSpieler[playerid][Paytime] = dini_Int(Spieler,"Paytime");
    sSpieler[playerid][OnDuty] = dini_Int(Spieler,"OnDuty");
    sSpieler[playerid][Rang] = dini_Int(Spieler,"Rang");
    sSpieler[playerid][Skin] = dini_Int(Spieler,"Skin");
    sSpieler[playerid][Knast] = dini_Int(Spieler,"Knast");
    sSpieler[playerid][Knastzeit] = dini_Int(Spieler,"Knastzeit");
    sSpieler[playerid][HitmanZielPerson] = dini_Int(Spieler,"HitmanZielPerson");
    sSpieler[playerid][HitmanPreis] = dini_Int(Spieler,"HitmanZielPreis");
    sSpieler[playerid][kickplayerid] = dini_Int(Spieler,"kickplayerid");
    sSpieler[playerid][Bankkonto] = dini_Int(Spieler,"Bankkonto");
    if(sSpieler[playerid][Fraktion] == HITMAN)
    {
    SetPlayerSkillLevel(playerid,WEAPONSKILL_SNIPERRIFLE,999);
    }
    SpawnPlayer(playerid);
    }
    return 1;
    }


    stock SpielerReset(playerid)
    {
    sSpieler[playerid][Adminlevel] = 0;
    sSpieler[playerid][Level] = 0;
    sSpieler[playerid][Fraktion] = 0;
    sSpieler[playerid][Autofuhrerschein] = 0;
    sSpieler[playerid][Handschellen] = 0;
    sSpieler[playerid][Geld] = 10000;
    sSpieler[playerid][Job] = 0;
    sSpieler[playerid][Paytime] = 0;
    sSpieler[playerid][OnDuty] = 0;
    sSpieler[playerid][Rang] = 0;
    sSpieler[playerid][Skin] = 0;
    sSpieler[playerid][Knast] = 0;
    sSpieler[playerid][Knastzeit] = 0;
    sSpieler[playerid][HitmanZielPerson] = 0;
    sSpieler[playerid][HitmanPreis] = 0;
    sSpieler[playerid][kickplayerid] = 0;
    sSpieler[playerid][Bankkonto] = 0;
    return 1;
    }


    Villeicht weiß jemand wo der gehler ist.
    Danke im Voraus
    Kilian

  • hast du auch unter ondialog...
    den code wo der stock regsiter aufgerufen wird ?

  • 1. also wenn ich im spiel bin änder ich die fraktion so:


    dcmd_makeleader(playerid, params[])
    {
    new pid, frakid;
    if(sscanf(params,"ud", pid, frakid))
    {
    return SendClientMessage(playerid, gelb,"Verwendung : /makeleader [Playerid] [Fraktion]");
    }
    if(sSpieler[playerid][Adminlevel] == 5)
    {
    if(pid == INVALID_PLAYER_ID)
    {
    return SendClientMessage(playerid,rot,"Ungültiger Spieler!");
    }
    if(sSpieler[pid][Fraktion] == frakid)
    {
    //new str[128];
    //format(str,sizeof(str),"%s ist schon in der Fraktion: %s",spielername(pid),FNamen[frakid]);
    return SendClientMessage(playerid,rot,"Der Angegebene Spieler ist schon in der Fraktion.");
    }
    else
    {
    sSpieler[playerid][Fraktion] = frakid;
    sSpieler[playerid][Rang] = 7;
    new str1[256], str2[256];
    format(str1,sizeof(str1),"Du hast %s die Leader Rechte der Fraktion %s gegeben.",spielername(pid),FNamen[frakid]);
    format(str2,sizeof(str2),"%s %s hat dir die Leader Rechte der Fraktion %s gegeben.",AdminLevelNamen[sSpieler[playerid][Adminlevel]],spielername(playerid),FNamen[frakid]);
    SendClientMessage(playerid,hellblau,str1);
    SendClientMessage(pid,hellblau,"-------------------------------------------------------------------");
    SendClientMessage(pid,weiß,str2);
    SendClientMessage(pid,weiß,"Behandel deine Member gut und zieh die Fraktion nicht in den Dreck.");
    SendClientMessage(pid,hellblau,"-------------------------------------------------------------------");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid,rot,"Du bist Administrator oder hast nicht das nötige Adminlevel.");
    }
    return 1;
    }


    und bei spielerspeichern wird das dann in die datei geschrieben


    2. Die odner sind alle erstelt


    3. der register dialog ist ganz normal wie immer:


    if(dialogid == LOGIN)
    {
    if(response == 0)
    {
    SendClientMessage(playerid,rot,"Du hast den Authenfizierungs Prozess abgebrochen . . .");
    Kick(playerid);
    return 1;
    }
    if(response == 1)
    {
    Login(playerid,MD5_Hash(inputtext));
    sSpieler[playerid][sLogin] = 1;
    return 1;
    }
    }
    if(dialogid == REGISTER)
    {
    if(response == 0)
    {
    SendClientMessage(playerid,blau,"Du hast den Registrierungs Vorgang 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;
    }
    else
    {
    Register(playerid,MD5_Hash(inputtext));
    return 1;
    }
    }
    }

  • hast du auch unter ondialog...
    den code wo der stock regsiter aufgerufen wird ?



    Unter Scriptfiles ein Ordner Namens Account oder User erstellt ?


    Er sagt doch dass das Registrieren geht (Datei wird geschrieben und Login funktioniert auch sagte er), somit wird schon mal nichts davon falsch sein. Er hat nur das Problem, dass wenn er disconnected mit neuen Stats, dass es nicht gespeichert wird.


    Interessant wäre dementsprechend einmal dein OnPlayerDisconnect Callback.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Bin mir da jetzt net sicher aber ich glaub das ist falsch


    if(sscanf(params,"ud", pid, frakid))
    muss zu
    if(sscanf(params,"ui", pid, frakid))

  • ich sehe hier nirgends dass du es in der Spielerdatei speicherst denn ich sehe hier auch keinen pfad zur spielerdate :)
    CMD:makeleader(playerid,params[])
    {
    if(!IstSpielerAdmin(playerid,5))return SendClientMessage(playerid,Rot,"Du bist kein Admin");
    new pID,frakid;
    new Spieler[64];
    new string[120];
    new Sname[MAX_PLAYER_NAME];
    if(sscanf(params,"ud",pID,frakid))return SendClientMessage(playerid,Rot,"Benutze:/makeleader [playerid] [Frakid]!");
    if(pID == INVALID_PLAYER_ID)return SCM(playerid,Rot,"Ungültiger Spieler");
    sSpieler[pID][Leader] = frakid;
    format(string,sizeof(string),"Du wurdest von %s zum Leader Ernannt!",Spielername(playerid));
    GetPlayerName(pID,Sname,sizeof(Sname));
    format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",Sname);//sowas hier
    dini_IntSet(Spieler,"Leader",frakid);//sowas hier
    SCM(pID,Blau,string);
    return 1;
    }


    #edit
    @DJ_Satrox geht auch so :)

    Mit freundlichen Grüßen
    Siepac