GetFromAccount ist nur fürs Passwort!
zum Laden der Inhalte der Datenbank ist sscanf zuständig!
[Aktualisiert]Registersystem mit MySQL ( Enum!! + GUI )
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
-
-
Nice tut und ty for help
-
mach einfach die zeile
GetFromAccount(name,"Adminlevel",Acc[playerid][Adminlv]);
weg -
Und die Tabellen in der Datenbank??
Bei mir Connectet er zwar, jedoch speichert er keine User.
lg
pS
-
tabellen erstellen und die sachen einfügen die ihr braucht da wendet ihr euch aber nicht an mich sondern guckt euch ein anderes tut an das euch das erklärt
-
Nice Tutorial.
-
Also erstmal geiles Tutorial
Ich habe allerdings ein Problem... und zwar beim Laden von einem Account.
Das mit dem Passwort abfragen klappt zwar perfekt aber ich kann die Daten einfach nicht laden....
Das ist mein OnPlayerLogin teil indem es eingetlich geladen werden sollte:
new query[200], escname[24]; GetPlayerName(playerid, pname, sizeof(pname));
GetFromAccount(pname, "Passwort", pInfo[playerid][Password]);
if(!strcmp(password, pInfo[playerid][Password], true))
{
mysql_real_escape_string(pname, escname);
format(query, sizeof(query), "SELECT * FROM `Accounts` WHERE `Name` = '%s'", escname);
mysql_query(query);
mysql_store_result();
while(mysql_fetch_row(query))
sscanf(query, "p<|>s[29]s[126]dddddddddddddddd", pInfo[playerid]);
SetPVarInt(playerid, "LoggedIn", 1);
SpawnPlayer(playerid);
}
und das ist mein PlayerInfo enum:
enum PlayerInfo
{
UserName[30],
Password[127],
Level,
Money,
Bank,
Adminlevel,
Registed,
Tutorial,
Alter,
Geschlecht,
Banned,
Verwarnungen,
MotorKey,
LightKey,
JoinMessage,
LeaveMessage,
Kills,
Tode
};
Immer wenn ich mich einlogge wird nichts geladen und in der RCon Konstole kommt dieser Warning:
sscanf warning: Format specifier does not match parameter count.Kann mir jemand helfen? Ich habe jetzt schon gestern und heute alles probiert aber es will einfach nicht klappen...
Danke im Vorraus für euer Antwort!
Mit freundlichen Grüßen,
Marius -
UserName hat 30 zeichen, und Password 127. Bei sscanf gibst du aber 29 und 126 zeichen an.
-
sscanf(query, "e<p<|>s[30]s[127]dddddddddddddddd>", pInfo[playerid]);
Das müsste helfen denke ich
/edit was übersehen -
maddin:
Das habe ich schon versucht... geht trodzdem nicht. Es kommt immer noch des selber warning und nichts wird ausgelesen. -.-@[aKoE]nanyo:
Danke!
Jetzt klappt es entlich!Ich hätte noch eine Frage. Wäre das ok, wenn ich das:
new query[200],escname[MAX_PLAYER_NAME],name[MAX_PLAYER_NAME];
Oben im Script einmal erstelle und dann nicht immer bei Jeder einzelnen Mysql abfrage?//Edit maddin
//Edit @[aKoE]nanyo
//Edit Frage eingefügt -
mit den name schon bei query wäre ich mir da nicht so sicher, da es auch längere strings gibt als 200 zeichen. deshalb würde ich immer einzelnt definieren...
-
ok danke!
....ich hätte da noch eine kleine Frage (sry wenn ich nerv..)
und zwar beim Saven muss man da eingetlich für jede Einzele Variable neu:
format(query,sizeof query,"UPDATE `Accounts` SET `Adminlevel` = %d WHERE `Nickname` = '%s'",pInfo[playerid][Adminlv],escname);
mysql_query(query)
format(query,sizeof query,"UPDATE `Account` SET `Level` = %d WHERE `Nickname` = '%s'",pInfo[playerid][Level],escname);
mysql_query(query);
Ich wäre dir sehr dankebar wen du mir das noch beantworten könntenst -
1. beim 1. mysql_query fehlt n semikolon (-> ; <-)
2. Tabelle `Account` zu `Accounts` machen
3. ich würde jede variable einzelnt machen da es finde ich sicherer ist keine fehler zu machen und dazu ist es übersichtlicher...aber wenn du gerne mehrere sachen aus einmal updaten willst (weiß gar nicht ob das überhaupt geht) musst du nur den query[...] erhöhen also z.b. von 200 auf 400 oder so...
/edit
ich weiß nichts genaueres -
format(query,sizeof query,"UPDATE `Account` SET `Adminlevel` = '%d', `Level` = '%d' WHERE `Nickname` = '%s'",pInfo[playerid][Adminlv],pInfo[playerid][Level],escname);
geht auch -
Ok Danke für eure schnelle und vorallem gute Hilfe!
-
//Offtopic
Maddin könntest du mir auch bei meinem Problem helfen?
hier der Link
-
Ich versteh das hier nicht :
sscanf(query,"e<p<|>s[24]s[128]d>",pInfo[playerid]);
Was muss man daran ändern, wenn man noch weitere Dinge im enum hat ?
Sorry, ich hab noch nicht wirklich mit sscanf gearbeitet
Ich hoffe, ihr könnt mir helfen.
Danke ! -
Als letztes steht da ja ein "d" steht für intenger. (Hoffe ich mal xD)
Und wenn du z.B. Adminlevel dazu haben willst du hinter deinem "d" noch ein "d".Das sieht dann so aus
sscanf(query,"e<p<|>s[24]s[128]dd>",pInfo[playerid]);