[Hilfe] Login System spuckt 8 Errors aus..

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
  • HuHu..


    mal wieder habe ich ein Problem, ich habe mir das Tutorial von ".:: Luma ::." angeschaut und genauso gemacht. Allerdings spuckt er mir beim Compilen folgende Errors aus..


    C:\Program Files\Rockstar Games\Grand Theft Auto San Andreas - Kopie\pawno\include\dutils.inc(109) : warning 219: local variable "string" shadows a variable at a preceding level
    C:\Program Files\Rockstar Games\Grand Theft Auto San Andreas - Kopie\pawno\include\dutils.inc(149) : warning 219: local variable "string" shadows a variable at a preceding level
    C:\Program Files\Rockstar Games\Grand Theft Auto San Andreas - Kopie\pawno\include\dutils.inc(257) : warning 219: local variable "string" shadows a variable at a preceding level
    C:\Program Files\Rockstar Games\Grand Theft Auto San Andreas - Kopie\pawno\include\dutils.inc(314) : warning 219: local variable "string" shadows a variable at a preceding level
    C:\Program Files\Rockstar Games\Grand Theft Auto San Andreas - Kopie\gamemodes\MPCS.pwn(123) : error 021: symbol already defined: "loggedin"
    C:\Program Files\Rockstar Games\Grand Theft Auto San Andreas - Kopie\gamemodes\MPCS.pwn(125) : warning 219: local variable "string" shadows a variable at a preceding level
    C:\Program Files\Rockstar Games\Grand Theft Auto San Andreas - Kopie\gamemodes\MPCS.pwn(565) : warning 219: local variable "name" shadows a variable at a preceding level
    C:\Program Files\Rockstar Games\Grand Theft Auto San Andreas - Kopie\gamemodes\MPCS.pwn(595) : error 010: invalid function or declaration
    C:\Program Files\Rockstar Games\Grand Theft Auto San Andreas - Kopie\gamemodes\MPCS.pwn(601) : warning 219: local variable "name" shadows a variable at a preceding level
    C:\Program Files\Rockstar Games\Grand Theft Auto San Andreas - Kopie\gamemodes\MPCS.pwn(614) : warning 219: local variable "name" shadows a variable at a preceding level
    C:\Program Files\Rockstar Games\Grand Theft Auto San Andreas - Kopie\gamemodes\MPCS.pwn(617) : error 028: invalid subscript (not an array or too many subscripts): "loggedin"
    C:\Program Files\Rockstar Games\Grand Theft Auto San Andreas - Kopie\gamemodes\MPCS.pwn(617) : warning 215: expression has no effect
    C:\Program Files\Rockstar Games\Grand Theft Auto San Andreas - Kopie\gamemodes\MPCS.pwn(617) : error 001: expected token: ";", but found "]"
    C:\Program Files\Rockstar Games\Grand Theft Auto San Andreas - Kopie\gamemodes\MPCS.pwn(617) : error 029: invalid expression, assumed zero
    C:\Program Files\Rockstar Games\Grand Theft Auto San Andreas - Kopie\gamemodes\MPCS.pwn(617) : fatal error 107: too many error messages on one line


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    8 Errors.


    ..einige Errors und Warnings kamen durch das Login System, weil sobald ich das Login System KOMPLETT auskommentiere sind alle Warnings, Errors weg.


    Hier das Login /Regestrier System aus meinem Script..


    #include <dini>
    #include <Dudb>


    enum fraktion_daten
    {
    skin,
    }


    new pInfo[MAX_PLAYERS][Info];//neues Login System
    new bool:loggedin[MAX_PLAYERS];//neues Login System


    strtok(const string[], &index)
    {
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
    index++;
    }


    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
    result[index - offset] = string[index];
    index++;
    }
    result[index - offset] = EOS;
    return result;
    }


    public OnPlayerRequestClass(playerid, classid)
    {
    SetPlayerPos(playerid,2047.4270,1336.5569,10.6719);
    SetPlayerFacingAngle(playerid,188.9284);
    SetPlayerCameraPos(playerid,2047.6205,1333.3314,10.6719);
    SetPlayerCameraLookAt(playerid,2047.4270,1336.5569,10.6719);
    return 1;
    }


    public OnPlayerConnect(playerid)
    {
    new name[128], save[128]; //cmd zum Speichern der Userdaten
    GetPlayerName(playerid,name,sizeof(name));
    format(save,sizeof(save),"/Spieler/%s.ini",name); //Speicherort der .ini
    if(dini_Exists(save)) // Spieler da?!
    {
    SendClientMessage(playerid, 0x33CCFFAA, "Willkommen bei SA:MP 0.3 Server");
    SendClientMessage(playerid, 0xFFFFFFAA, "Dein Account wurde wiedererkannt.");
    SendClientMessage(playerid, 0xFFFFFFAA, "Du kannst dich jetzt einloggen.");
    SendClientMessage(playerid, 0xFFFFFFAA, "Benutze dazu /login [passwort].");
    GivePlayerMoney(playerid,dini_Int(save,"Geld")); // Geld laden
    SetPlayerSkin(playerid,dini_Int(save,"Skin")); //Skin laden
    }
    else
    {
    if(!dini_Exists(save)) //Spieler ist nicht da
    {
    SendClientMessage(playerid, 0x33CCFFAA, "Willkommen bei SA:MP 0.3 Server");
    SendClientMessage(playerid, 0xFFFFFFAA, "Du hast noch keinen Account.");
    SendClientMessage(playerid, 0xFFFFFFAA, "Du kannst dich jetzt registrieren.");
    SendClientMessage(playerid, 0xFFFFFFAA, "Benutze dazu /register [passwort].");
    }
    }
    }


    SetPlayerMapIcon(playerid, 36, 1854.7035,-1145.1703,23.8639, 52,0);//Bank


    new name[MAX_PLAYER_NAME], string[44];
    GetPlayerName(playerid, name, sizeof(name));
    format(string, sizeof(string), "%s betrat den Server.",name);
    SendClientMessageToAll(DUNKELGRAU, string);
    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)) // steht
    {
    dini_IntSet(save,"Geld",GetPlayerMoney(playerid)); // speichert das aktuelle Geld, was der Spieler zum schluss hatte
    dini_IntSet(save,"Skin",GetPlayerSkin(playerid)); // speichert den aktuellen Skin, welchne der Spieler zum schluss hatte
    }
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    new name[128], save[128];// Gleiche
    GetPlayerName(playerid,name,sizeof(name)); // wie
    format(save,sizeof(save),"/Spieler/%s.ini",name);// oben
    if(loggedin[playerid] == false) //Wenn er nicht eingeloggt ist
    {
    SendClientMessage(playerid, 0xAA3333AA, "Du musst dich Einloggen bevor du spawnst!");
    Kick(playerid); // Kicke den Spieler
    }
    SetPlayerSkin(playerid,dini_Int(save,"Skin")); //lade und setze den gespeicherten Skin
    return 1;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strcmp(strget(cmdtext,0), "/login", true) == 0)
    {
    new save[40], s2[256]; //gleiche wie oben
    GetPlayerName(playerid,spieler,sizeof(spieler));
    format(save,sizeof(save),"Spieler/%s.ini",spieler);
    if(dini_Exists(save)) // wenn Datei existiert
    {
    s2=dini_Get(save,"passwort"); // lade das Passwort
    if(strval(s2)==udb_hash(strget(cmdtext,1))) // wenn die Eingabe nach /login mit dem Passwort von der registration übereinstimmt
    {
    loggedin[playerid] = true; //sage dem Server, dass der Spieler eingeloggt ist.
    SendClientMessage(playerid, 0x33CCFFAA, "***Du hast dich erfolgreich eingeloggt***");
    SpawnPlayer(playerid);
    }
    else // wenn das passwort nicht stimmt
    {
    SendClientMessage(playerid, 0xAA3333AA, "Passwort Falsch!");
    }
    }
    return 1;
    }


    if(strcmp(strget(cmdtext,0), "/register", true) == 0)
    {
    new save[40]; // Erstelle einen neuen String "save", wobei 40 Wörter verwendet werden können.
    GetPlayerName(playerid,spieler,sizeof(spieler));
    format(save, sizeof(save),"Spieler/%s.ini",spieler); //Speicherort
    if(!dini_Exists(save)) // wenn der Spieler sich regestriert und es noch keine .ini Datei mit seinem Namen gibt
    {
    dini_Create(save); // Erstelle eine Neue .ini Datei
    dini_IntSet(save,"passwort",udb_hash(strget(cmdtext,1))); // Setze in die .ini Datei(save,"dass passwort", welches er eingegeben hat) || das udb_hash verschlüsselt das Passwort in der .ini. Dazu benötigen wir die oben angegebene Include DUBD.
    SendClientMessage(playerid, 0x33AA33AA, "***Dein Account wurde erfolgreich registriert***");
    SendClientMessage(playerid, 0x33AA33AA, "***Nutze /login [Passwort] um dich einzuloggen***");
    }
    else
    {
    if(dini_Exists(save)) // Wenn beim regestrieren die Datei schon besteht
    {
    SendClientMessage(playerid, 0xAA3333AA, "Der Account ist bereits registriert");
    }
    }
    return 1;
    }


    das ist der Auschnitt des Login / Register System.. kann mir einer helfen die Errors zu beseitigen ?


    Falls ihr weitere "Codeschnipsel" benötigt, einfach bescheid sagen!


    Danke schonmal im voraus