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