ini Probleme

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 paar Probleme mit dem Speichern in der .ini


    1. Das Passwort was gespeichert wird, ist nicht verschlüsselt. Sprich wenn man sich die .ini von dem Spieler anschaut, sieht man das Passwort so wie er es eingeben hat.
    2. Wenn man sich einloggen will, ist es egal, was man für ein Passwort eingibt, man wird immer eingeloggt.
    3. Wenn ich einen User per /makeleader zum Leader mache oder /invite in eine Fraktion einlade wird das auch nicht gespeichert. Wenn man sich denn wieder neu einloggt, ist man wieder Zivilist.


    Welche Daten werden jetzt benötigt, um die Fehler zu finden?


    MfG

  • public OnPlayerConnect(playerid)
    {
    new name[128], save[128]; // Dies machen wir um den Namen vom Spieler aufzuschreiben || Hiermit können wir sagen, dass etwas gespeichert werden soll
    GetPlayerName(playerid,name,sizeof(name)); // Dies sagt, er soll( vom Spieler, den namen, in der größe name aufschreiben)
    format(save,sizeof(save),"/Spieler/%s.ini",name); // Hiermit machen wir ein Format, dass er es im Scriptfile Ordner im Ordner Spieler anlegen soll. Durch GetPlayerName haben wir jetzt den Namen. Jetzt speichert er es in *Name*.ini .
    if(dini_Exists(save))
    {
    new paydayzeit = dini_Int(save,"zeitseitpayday"); // Lädt in der Datei des Spielers das was unter zeitseitpayday gespeichert ist und speichert es in der Variable paydayzeit.
    new spielzeitinsgesamt = dini_Int(save,"spielzeit"); // Lädt in der Datei des Spielers das was unter spielzeit gespeichert ist und speichert es in der Variable spielzeitinsgesamt.
    pSincePayday[playerid] = paydayzeit; // ändert die pSincePAyday variable um zu dem was wir gespeichert haben (bzw. erst noch kommt im Tut)
    pPlaytime[playerid] = spielzeitinsgesamt; // Das gleiche wie darüber nur mit anderen Variablen
    pimerday[playerid] = SetTimerEx("pimer",360000,1,"i",playerid);
    SendClientMessage(playerid, COLOR_YELLOW, "*** Willkommen Zurück, Logge dich mit /login [Passwort] ein");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Bitte logge dich ein","Weiter","Abbrechen");
    GivePlayerMoney(playerid,dini_Int(save,"Geld"));
    SetPlayerSkin(playerid,dini_Int(save,"Skin"));
    SetPlayerWantedLevel(playerid,dini_Int(save,"Wanteds"));
    pInfo[playerid][autos] =dini_Int(save,"Autoführerschein");
    pInfo[playerid][flug] =dini_Int(save,"Flugführerschein");
    pInfo[playerid][mofa] =dini_Int(save,"Mofaführerschein");
    pInfo[playerid][kfz] =dini_Int(save,"Lkwführerschein");
    pInfo[playerid][motorrad] =dini_Int(save,"Motorradführerschein");
    pInfo[playerid][boot] =dini_Int(save,"Bootsführerschein");
    pInfo[playerid][alevel] =dini_Int(save,"Adminlevel");
    pInfo[playerid][fRank] =dini_Int(save,"Fraktionsrank");
    }
    else
    {
    if(!dini_Exists(save))
    {
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "~Ich sehe du bist neu, bitte regestriere dich mit /register [Passwort]~");
    ShowPlayerDialog(playerid,DIALOG_REG,1,"Registrieren","Bitte Registriere dich","Weiter","Abbrechen");
    }
    }
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    new name[128], save[128];// Gleiche
    GetPlayerName(playerid,name,sizeof(name)); // wie
    format(save,sizeof(save),"/Spieler/%s.ini",name);// oben
    if(dini_Exists(save) && pInfo[playerid][eingeloggt]) // steht
    {
    KillTimer(pimerday[playerid]);
    dini_IntSet(save,"zeitseitpayday",pSincePayday[playerid]);// setzt in der Datei des Spielers zeitseitpayday auf das gleiche wie pSincePayday.
    dini_IntSet(save,"spielzeit",pPlaytime[playerid]);// setzt in der Datei des Spielers Spielzeit auf das gleiche wie pPlaytime.
    dini_IntSet(save,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(save,"Wanteds",GetPlayerWantedLevel(playerid));
    dini_IntSet(save,"skin",pInfo[playerid][skin]);
    dini_IntSet(save,"Autoführerschein",pInfo[playerid][autos]);
    dini_IntSet(save,"Flugführerschein",pInfo[playerid][flug]);
    dini_IntSet(save,"Mofaführerschein",pInfo[playerid][mofa]);
    dini_IntSet(save,"Lkwführerschein",pInfo[playerid][kfz]);
    dini_IntSet(save,"Motorradführerschein",pInfo[playerid][motorrad]);
    dini_IntSet(save,"Bootsführerschein",pInfo[playerid][boot]);
    dini_IntSet(save,"Adminlevel",pInfo[playerid][alevel]);
    dini_IntSet(save,"Fraktionsrank",pInfo[playerid][fRank]);
    dini_IntSet(save,"Team",pInfo[playerid][gTeam]);
    }
    pInfo[playerid][skin] = 0;
    pInfo[playerid][eingeloggt] = 0;
    GangZoneHideForPlayer(playerid,groovezone);
    return 1;
    }


    Und Noch mal das hier:


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    new name[MAX_PLAYERS],save[128];
    GetPlayerName(playerid,name,sizeof name);
    format(save,sizeof save,"/Spieler/%s.ini",name);
    if(response)
    {
    switch(dialogid) // dialogid auswählen
    {
    case DIALOG_LOGIN: // ID Login
    {
    if(!strlen(inputtext))
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Bitte logge dich ein","Weiter","Abbrechen");
    return SendClientMessage(playerid,0xFFFFFFFF,"Kein Passwort angegeben!");
    }
    if(strcmp(inputtext,dini_Get(save,"Passwort")) == 0) // Passwort Direkt aus der Datei Laden
    {
    pInfo[playerid][skin] = dini_Int(save,"skin");
    pInfo[playerid][autos] =dini_Int(save,"Autoführerschein");
    pInfo[playerid][flug] =dini_Int(save,"Flugführerschein");
    pInfo[playerid][mofa] =dini_Int(save,"Mofaführerschein");
    pInfo[playerid][kfz] =dini_Int(save,"Lkwführerschein");
    pInfo[playerid][motorrad] =dini_Int(save,"Motorradführerschein");
    pInfo[playerid][boot] =dini_Int(save,"Bootsführerschein");
    pInfo[playerid][alevel] =dini_Int(save,"Adminlevel");
    pInfo[playerid][fRank] =dini_Int(save,"Fraktionsrank");
    pInfo[playerid][gTeam] =dini_Int(save,"Team");
    pInfo[playerid][eingeloggt] = 1; // Spieler ist nun erfolgreich eingeloggt
    SendClientMessage(playerid,0xFFFFFFFF,"Du wurdest erfolgreich eingeloggt.");
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Bitte logge dich ein","Weiter","Abbrechen");
    SendClientMessage(playerid,0xFFFFFFFF,"Das Passwort war Falsch!");
    }
    }
    case DIALOG_REG: // ID Registrieren
    {
    if(!strlen(inputtext)) // Text darf nicht = Null sein Null im Sinne von nichts
    {
    ShowPlayerDialog(playerid,DIALOG_REG,1,"Registrieren","Bitte Registriere dich","Weiter","Abbrechen");
    return SendClientMessage(playerid,0xFFFFFFFF,"Das Passwort ist zu kurz!");
    }
    dini_Create(save);
    dini_Set(save,"Passwort",inputtext);
    pInfo[playerid][eingeloggt] = 1;
    SendClientMessage(playerid,0xFFFFFFFF,"Account wurde angelegt und du wurdest eingeloggt.");
    }
    }
    }
    else
    {
    switch(dialogid)
    {
    case DIALOG_LOGIN:ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Bitte logge dich ein","Weiter","Abbrechen");
    case DIALOG_REG:ShowPlayerDialog(playerid,DIALOG_REG,1,"Registrieren","Bitte Registriere dich","Weiter","Abbrechen");
    }
    }
    return 1;
    }


    Das sind die stellen wo das Passwort abgefragt wird und gespeichert wird.


    MfG

  • //----- Paswörter -----\\
    Ganz unten:

    stock Encrypt(string[])
    {
    for(new x=0; x < strlen(string); x++)
    {
    string[x] += (3^x) * (x % 15);
    if(string[x] > (0xff))
    {
    string[x] -= 256;
    }
    }
    return 1;
    }


    ÜBER die Abfragen der Passwörter:

    new pwd[36];
    pwd = Encrypt(inputtext(playerid));


    //----- Egal welche Passwörter eingeben und trotzdem einloggen -----\\

    GivePlayerMoney(playerid,dini_Int(save,"Geld"));
    SetPlayerSkin(playerid,dini_Int(save,"Skin"));
    SetPlayerWantedLevel(playerid,dini_Int(save,"Wanteds"));
    pInfo[playerid][autos] =dini_Int(save,"Autoführerschein");
    pInfo[playerid][flug] =dini_Int(save,"Flugführerschein");
    pInfo[playerid][mofa] =dini_Int(save,"Mofaführerschein");
    pInfo[playerid][kfz] =dini_Int(save,"Lkwführerschein");
    pInfo[playerid][motorrad] =dini_Int(save,"Motorradführerschein");
    pInfo[playerid][boot] =dini_Int(save,"Bootsführerschein");
    pInfo[playerid][alevel] =dini_Int(save,"Adminlevel");
    pInfo[playerid][fRank] =dini_Int(save,"Fraktionsrank");

    /\
    |
    Das hat nichts unter OnPlayerConnect zu tun ;)
    (Ungetestet ;))
    Viel Spaß :)

  • Noch mal zum Thema /makeleader


    if(!strcmp(strget(cmdtext,0),"/makeleader"))
    if(IsPlayerAdmin(playerid))
    {
    new target = strval(strget(cmdtext,1)), Team = strval(strget(cmdtext,2)), name[128];
    format(save,sizeof(save),"Spieler/%s.ini",name);
    if(!strlen(strget(cmdtext,1))) return SendClientMessage(playerid, COLOR_RED, "Benutzte: /makeleader [ID] [1-8]");
    {
    if(!strlen(strget(cmdtext,2))) return SendClientMessage(playerid, COLOR_RED, "Benutzte: /makeleader [ID] [1-8]");
    {
    if(Team == 2)
    {
    SetPlayerSkin(target, 288);
    SendClientMessage(target, COLOR_WHITE, "Du wurdest zum Leader der LS-Polizei gemacht");
    pInfo[target][gLeader] = Team;
    dini_IntSet(save,"Team",pInfo[target][gTeam]);
    dini_IntSet(save,"Fraktionsleader",pInfo[target][gLeader]);
    }
    if(Team == 3)
    {
    SetPlayerSkin(target, 288);
    SendClientMessage(target, COLOR_WHITE, "Du wurdest zum Leader der SF-Polizei gemacht");
    pInfo[target][gLeader] = Team;
    dini_IntSet(save,"Fraktionsleader",pInfo[target][gLeader]);
    }
    if(Team == 4)
    {
    SetPlayerSkin(target, 275);
    SendClientMessage(target, COLOR_WHITE, "Du wurdest zum Ledader der LS-Ärzte ernannt");
    pInfo[target][gLeader] = Team;
    dini_IntSet(save,"Fraktionsleader",pInfo[target][gTeam]);
    dini_IntSet(save,"Skin",pInfo[target][skin]);
    }
    if(Team == 5)
    {
    SetPlayerSkin(target, 275);
    SendClientMessage(target, COLOR_WHITE, "Du wurdest zum Ledader der SF-Ärzte ernannt");
    pInfo[target][gLeader] = Team;
    dini_IntSet(save,"Fraktionsleader",pInfo[target][gTeam]);
    dini_IntSet(save,"Skin",pInfo[target][skin]);
    }
    if(Team == 6)
    {
    SetPlayerSkin(target, 163);
    SendClientMessage(target, COLOR_WHITE, "Du wurdest zum Leader des LS-FBI ernannt");
    pInfo[target][gLeader] = Team;
    dini_IntSet(save,"Fraktionsleader",pInfo[target][gLeader]);
    dini_IntSet(save,"Skin",pInfo[target][skin]);
    }
    if(Team == 7)
    {
    SetPlayerSkin(target, 163);
    SendClientMessage(target, COLOR_WHITE, "Du wurdest zum Ledader des SF-FBI ernannt");
    pInfo[target][gLeader] = Team;
    dini_IntSet(save,"Fraktionsleader",pInfo[target][gTeam]);
    dini_IntSet(save,"Skin",pInfo[target][skin]);
    }
    if(Team == 8)
    {
    SetPlayerSkin(target, 163);
    SendClientMessage(target, COLOR_WHITE, "Du wurdest zum General der Bundeswehr ernannt");
    pInfo[target][gLeader] = Team;
    dini_IntSet(save,"Fraktionsleader",pInfo[target][gTeam]);
    dini_IntSet(save,"Skin",pInfo[target][skin]);
    }
    }}
    return 1;
    }


    Was ist dadran falsch, das er nicht speichert, das man in dem Team ist?
    Wäre schön wenn mir jemand via ICQ helfen würde.


    MfG

  • Ein kleiner Tipp am Rande ...


    if(Team == 8)
    {
    SetPlayerSkin(target, 163);
    SendClientMessage(target, COLOR_WHITE, "Du wurdest zum General der Bundeswehr ernannt");
    pInfo[target][gLeader] = Team;
    dini_IntSet(save,"Fraktionsleader",pInfo[target][gTeam]);
    dini_IntSet(save,"Skin",pInfo[target][skin]);
    }



    pInfo[target][gLeader] = Team;
    dini_IntSet(save,"Fraktionsleader",pInfo[target][gTeam]);
    dini_IntSet(save,"Skin",pInfo[target][skin]);

    dieser Teil ist unnötig sprich ihn bei jeder Abfrage zu übernehmen , du bräuchtest ihn nur einmal übernehmen das würde Linien und Arbeit sparen...

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Ich verstehe gerade nicht was du damit meinst:

    Zitat

    dieser Teil ist unnötig sprich ihn bei jeder Abfrage zu übernehmen , du bräuchtest ihn nur einmal übernehmen das würde Linien und Arbeit sparen...


    das 2. Problem ist jetzt erledigt. Das funktioniert jetzt. Die anderen beiden sind immer noch vorhanden.


    MfG