da kriegste grad mal ein gutes Login & Register System
Beiträge von FoX
In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
-
-
-
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