da kriegste grad mal ein gutes Login & Register System
Beiträge von FoX
-
-
-
die Käufer sollten trozdem Bescheid wissen,
da ich es komisch finde, dass du gerade jetzt mit dem Preis runtergehst,
wo du doch auch die 2 Tage warten könntest ?
dann würdest du sie locker für 30 Euro weg bekommen -
Beachtet bitte, dass er die Lizenz bis zum 13 November ohne weiteres einfach zurück nehmen kann..
Ich würde vorsichtig sein deshalb -
naja, jetzt wird ja auch nur beim Laden des Accounts das Level gesetzt,
aber ich hab ja das Level noch nichtmal gespeichert.. -
jap, das wars^^ hat sich aber schon erledigt
-
hmm, aber SII hab ich noch nie gehört, wird wahrscheinlich dann auch nicht viel Tutorials geben oder ?
-
-
hey, findet ihr man sollte erstmal dini lernen, oder gleich mysql ?
ich wollte eigentlich mit Mysql anfangen, nur ist mir aufgefallen
es gibt nicht gerade viele Tutorials dafür.. Nur für Login & Register System.Und auch wenn man mal ne Frage hier im Forum hat, dauert es sehr sehr lange bis man eine Antwort bekommt
-
wär echt super, wenn der wieder kommt:)
-
Code
#define SQL_HOST "127.0.0.1" #define SQL_USER "root" #define SQL_PASS "" #define SQL_DATA "datenbank" #define DIALOG_REGISTER 1 #define DIALOG_LOGIN 2
Code
Alles anzeigenstock Float:mysql_GetFloat(Table[], Field[], Where[], Is[]) { new query[128], Float:sqlfloat; mysql_real_escape_string(Table, Table); mysql_real_escape_string(Field, Field); mysql_real_escape_string(Where, Where); mysql_real_escape_string(Is, Is); format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is); mysql_query(query); mysql_store_result(); mysql_fetch_float(sqlfloat); mysql_free_result(); return sqlfloat; }
Codeenum SpielerDaten { pName[MAX_PLAYER_NAME], pLevel, pGeld, pKills, pTode, Float:pHealth } new SpielerInfo[MAX_PLAYERS][SpielerDaten];
Code
Alles anzeigenpublic OnPlayerRequestClass(playerid, classid) { SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746); if(GetPVarInt(playerid,"Eingeloggt") == 0) { if(mysql_CheckAccount(playerid) == 0)//Wir überprüfen ob der Account Existiert, falls nicht Zeigen wir den Dialog zum Registrieren. { SendClientMessage(playerid, 0xFFFFFFFF,"Willkommen auf Angel Pine Roleplay"); SendClientMessage(playerid, 0xFFFFFFFF,"Dein Account wurde nicht gefunden, bitte Registriere dich!"); ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Register","Bitte Gib ein Passwort an:","Register","Exit"); } else if(mysql_CheckAccount(playerid) == 1)//Falls doch zeigen wir den Dialog zum Einloggen. { SendClientMessage(playerid, 0xFFFFFFFF,"Willkommen auf Angel Pine Roleplay"); SendClientMessage(playerid, 0xFFFFFFFF,"Dein Account wurde gefunden, bitte Log dich nun ein!"); ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Bitte gib dein Passwort ein:","Login","Abbrechen"); } } return 1; }
Codepublic OnPlayerDisconnect(playerid, reason) { SavePlayer(playerid); DeletePVar(playerid,"Eingeloggt"); return 1; }
Code
Alles anzeigenpublic OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { switch(dialogid) { case DIALOG_REGISTER: { if(response) { if(strlen(inputtext) == 0) // Wenn kein Passwort angegebene wurde { ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Register","Das angegebene Passwort war zu Kurz...\nBitte Registrier dich jetzt mit einem Passwort:","Register","Abbrechen"); return 1; } else { CreateAccount(playerid, inputtext); //Account wird erstellt SetPVarInt(playerid,"Eingeloggt",1); //Die variable wird auf 1 gesetzt, damit wir nun die Skin Auswahl benutzen können ohne wieder nach unserem Passwort gefragt zu werden. ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Bitte gib dein Passwort ein:","Login","Abbrechen"); SetSpawnInfo(playerid,0,294,1958.3783, 1343.1572, 15.3746,269.1425,0,0,0,0,0,0); SpawnPlayer(playerid); //Wir lassen den Spieler Spawnen return 1; } } else { Kick(playerid); //Wenn auf Abbrechen geklickt wurde, wird der Spieler gekickt damit man ohne Account nicht Spielen kann. } } case DIALOG_LOGIN: { if(response) { if(strlen(inputtext) == 0) // Wenn kein Passwort angegebene wurde { ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Das Angegebene Passwort war Falsch.\nBitte log dich jetzt mit dem richtigen Passwort ein:","Login","Abbrechen"); return 1; } else { new SpielerName[MAX_PLAYER_NAME]; GetPlayerName(playerid, SpielerName, MAX_PLAYER_NAME); if(!strcmp(inputtext, mysql_ReturnPasswort(SpielerName), true)) // Wir holen uns das Passwort aus der MySQL Datenbank und überprüfen es mit dem angegebenen passwort. { SetPVarInt(playerid,"Eingeloggt",1); //Falls beide passwörter übereinstimmen wird die Variable auf 1 gesetzt damit wir die Skin auswahl benutzen können. LoadPlayer(playerid); //Der Spieler wird "geladen", speich es werden seine Daten aus der Datenbank geholt und in variablen gespeichert um diese im Skript zu verwenden. SetSpawnInfo(playerid,0,294,1958.3783, 1343.1572, 15.3746,269.1425,0,0,0,0,0,0); SpawnPlayer(playerid); //Wir lassen den Spieler Spawnen return 1; } else { //Wenn das Passwort falsch war, lassen wir erneut das Login fenster erscheinen damit der Spieler das Richtige Passwort eingibt. ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Das war das Falsche Passwort.\nBitte log dich jetzt mit dem richtigen Passwort ein:","Login","Abbrechen"); return 1; } } } else { Kick(playerid); //Wenn auf Abbrechen geklickt wurde, wird der Spieler gekickt damit man ohne Account nicht Spielen kann. } } } return 1; }
Code
Alles anzeigenstock Connect_To_Database() { mysql_connect(SQL_HOST, SQL_USER, SQL_DATA, SQL_PASS); //Wir versuchen mit den Angaben die wir oben im Script gemacht haben uns mit dem MySQL Server zu verbinden. if(mysql_ping() == 1) //Es wird überprüft ob die Verbindung steht. { //Falls ja wird das in die Console geschrieben und die Funktion wird beendet. print("<-| [MYSQL] Verbindung zur Datenbank wurde erfolgreich hergestellt!"); return true; } else { //Falls nicht wird erneut versucht eine Verbindung aufzubauen. print("<-| [MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!"); print("<-| [MYSQL] Es wird erneut versucht eine Verbindung zur Datenbank herzustellen!"); mysql_connect(SQL_HOST, SQL_USER, SQL_DATA, SQL_PASS); if(mysql_ping() == 1) { print("<-| [MYSQL] Es konnte im 2 Versuch eine Verbindung hergestellt werden!"); return true; } else { //Falls das auch nicht Funktioniert wird der Server zur Sicherheit wieder heruntergefahren. print("<-| [MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!"); print("<-| [MYSQL] Der Server wird nun beendet!"); SendRconCommand("exit"); return true; } } } stock mysql_CheckAccount(playerid) { new Query[128],Name[MAX_PLAYER_NAME],count; GetPlayerName(playerid, Name, MAX_PLAYER_NAME); mysql_real_escape_string(Name, Name); format(Query, sizeof(Query), "SELECT * FROM `accounts` WHERE `Name` = '%s'", Name); mysql_query(Query); mysql_store_result(); count = mysql_num_rows(); mysql_free_result(); return count; } stock CreateAccount(playerid, pass[]) { new query[256],Name[MAX_PLAYER_NAME]; GetPlayerName(playerid, Name, MAX_PLAYER_NAME); mysql_real_escape_string(Name,Name); mysql_real_escape_string(pass,pass); format(query, sizeof(query), "INSERT INTO `accounts` (`Name`, `Passwort`) VALUES ('%s', '%s')", Name, pass); mysql_query(query); return true; } stock mysql_ReturnPasswort(Name[]) { new query[130], Get[130]; mysql_real_escape_string(Name, Name); format(query, 128, "SELECT `passwort` FROM `accounts` WHERE `Name` = '%s'", Name); mysql_query(query); mysql_store_result(); mysql_fetch_row(Get); mysql_free_result(); return Get; } stock LoadPlayer(playerid) { if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))//Wir fragen ab ob der angegebene Spieler auch Online ist, und kein NPC ist (nur zur sicherhheit) { GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME); //Wir Speichern den Namen des Spielers in der Variable [i]SpielerInfo[playerid][pName][/i] SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]); //Wir holen uns den wert der unter "Level" eingetragen ist und Speichern ihn in unserer Variable. SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]); //Wir holen uns den wert der unter "Geld" eingetragen ist und Speichern ihn in unserer Variable. SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pName]); //Wir holen uns den wert der unter "Kills" eingetragen ist und Speichern ihn in unserer Variable. SpielerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][pName]); //Wir holen uns den wert der unter "Tode" eingetragen ist und Speichern ihn in unserer Variable. } return 1; } stock mysql_GetInt(Table[], Field[], Where[], Is[]) { new query[128]; mysql_real_escape_string(Table, Table); mysql_real_escape_string(Field, Field); mysql_real_escape_string(Where, Where); mysql_real_escape_string(Is, Is); format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is); mysql_query(query); mysql_store_result(); new sqlint = mysql_fetch_int(); mysql_free_result(); return sqlint; } stock mysql_GetString(Table[], Field[], Where[], Is[]) { new query[128], Get[128]; mysql_real_escape_string(Table, Table); mysql_real_escape_string(Field, Field); mysql_real_escape_string(Where, Where); mysql_real_escape_string(Is, Is); format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is); mysql_query(query); mysql_store_result(); mysql_fetch_row(Get); mysql_free_result(); return Get; } stock SavePlayer(playerid) { if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid)) //wir überprüfen ob der Spieler überhaupt noch Connected ist und ob er nicht ein NPC ist. { if(GetPVarInt(playerid,"Eingeloggt") == 1) //Und hier ob er noch eingeloggt ist. { //Nun speichern wir die Daten in der Datenbank. mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]); mysql_SetInt("accounts", "Geld", SpielerInfo[playerid][pGeld], "Name", SpielerInfo[playerid][pName]); mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]); mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]); mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]); } } return 1; } stock mysql_SetInt(Table[], Field[], To, Where[], Where2[]) { new query[128]; mysql_real_escape_string(Table, Table); mysql_real_escape_string(Field, Field); mysql_real_escape_string(Where, Where); mysql_real_escape_string(Where2, Where2); format(query, 128, "UPDATE `%s` SET `%s` = '%d' WHERE `%s` = '%s'", Table, Field, To, Where, Where2); mysql_query(query); return true; } stock mysql_SetString(Table[], Field[], To[], Where[], Where2[]) { new query[128]; mysql_real_escape_string(Table, Table); mysql_real_escape_string(Field, Field); mysql_real_escape_string(To, To); mysql_real_escape_string(Where, Where); mysql_real_escape_string(Where2, Where2); format(query, 128, "UPDATE `%s` SET `%s` = '%s' WHERE `%s` = '%s'", Table, Field, To, Where, Where2); mysql_query(query); return true; } stock mysql_SetFloat(Table[], Field[], Float:To, Where[], Where2[]) { new query[128]; mysql_real_escape_string(Table, Table); mysql_real_escape_string(Field, Field); mysql_real_escape_string(Where, Where); mysql_real_escape_string(Where2, Where2); format(query, 128, "UPDATE `%s` SET `%s` = '%f' WHERE `%s` = '%s'", Table, Field, To, Where, Where2); mysql_query(query); return true; }
-
ok, aber wie würde ich das mit playerid machen ???
einfach das string und playerid ersetzen ? -
Hey, ich suche einen Scriptlehrer der mir vor allem Mysql beibringen kann..
Gegenleistung: Wbb 3.1.7 Lizenz oder evtl. PSC's
[Folgendes muss im Thema enthalten sein und darf nicht entfernt werden:]
______
Unverbindlicher Hinweis: Die Sicherheit einer Transaktion kann am besten durch die Einschaltung eines Mittelsmannes gewährleistet werden. Weitere Informationen dazu gibt es hier. -
wie das dann ?
GetPlayerName(playerid,sizeof(playerid)); -
Code
ocmd:stats(playerid,params[]) { new string[128]; format(string, sizeof(string),"Statistik von %s\n Geld: %d\nKills: %d\nLevel: %d\nAdmin: %d\n Tode: %d",playerid, SpielerInfo[playerid][pGeld], SpielerInfo[playerid][pKills], SpielerInfo[playerid][pLevel], SpielerInfo[playerid][pAdmin], SpielerInfo[playerid][pTode]); SendClientMessage(playerid, Farbe_Rot,string); return 1; }
so ?
dann steht aber da Statistik von -
Ingame -
hey, kann man das irgendwie einfacher machen,
dass man für die playerid nicht extra ein new erstellen muss ?Codeocmd:stats(playerid,params[]) { new string[128]; new Spielerid[MAX_PLAYER_NAME]; GetPlayerName(playerid,Spielerid,sizeof(Spielerid)); format(string, sizeof(string),"Statistik von %s\n Geld: %d\nKills: %d\nLevel: %d\nTode: %d",Spielerid, SpielerInfo[playerid][pGeld], SpielerInfo[playerid][pKills], SpielerInfo[playerid][pLevel], SpielerInfo[playerid][pTode]); SendClientMessage(playerid, Farbe_Rot,string); return 1; }
-
SetSpawnInfo(playerid,...);
das vor SpawnPlayer setzen -
hey, wie kann ich das Level in Mysql speichern ? soweit hab ichs jetzt..
also ich meine dass wenn ich mein level z.b auf 5 setze, dass das Level dann auch 5 in der Datenbank steht..
Was ja bis jetzt noch nicht gehen kann, da ich noch nicht mit PlayerScore usw.. gearbeitet habeCode
Alles anzeigenstock LoadPlayer(playerid) { if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid)) { GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME); SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]); SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]); SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pName]); SpielerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][pName]); } return 1; }
Code
Alles anzeigenstock SavePlayer(playerid) { if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid)) { if(GetPVarInt(playerid,"Eingeloggt") == 1) { mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]); mysql_SetInt("accounts", "Geld", SpielerInfo[playerid][pGeld], "Name", SpielerInfo[playerid][pName]); mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]); mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]); } } return 1; }
-
Code
Alles anzeigenC:\Users\Administrator\Desktop\Angel Pine\gamemodes\ARP.pwn(438) : error 017: undefined symbol "SpielerInfo" C:\Users\Administrator\Desktop\Angel Pine\gamemodes\ARP.pwn(438) : warning 215: expression has no effect C:\Users\Administrator\Desktop\Angel Pine\gamemodes\ARP.pwn(438) : error 001: expected token: ";", but found "]" C:\Users\Administrator\Desktop\Angel Pine\gamemodes\ARP.pwn(438) : error 029: invalid expression, assumed zero C:\Users\Administrator\Desktop\Angel Pine\gamemodes\ARP.pwn(438) : fatal error 107: too many error messages on one line Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase 4 Errors.
Errorzeile: -
sieht nicht schlecht aus, werde mich eventuell mal bei dir melden