Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <a_mysql>
- #include <hash>
- #define SERVERNAME "Test"
- #define COLOR_RED 0xFF0000FF
- #define SQL_HOST "localhost"
- #define SQL_USER "root"
- #define SQL_PASS ""
- #define SQL_DATA "samp_db"
- static handle;
- forward OnPlayerCheck(playerid);
- forward OnPlayerRegister(playerid);
- forward OnPlayerLogin(playerid);
- enum {
- DIALOG_REGISTER,
- DIALOG_LOGIN
- };
- enum PlayerData{
- p_ID,
- pName[MAX_PLAYER_NAME],
- pPassword[65],
- pSalt[11],
- pScore,
- pMoney,
- bool:isLoggedIn
- };
- new pData[MAX_PLAYERS][PlayerData];
- main()
- {
- print("\n----------------------------------");
- print(" Register-&Loginsystem for Test");
- print("----------------------------------\n");
- }
- public OnGameModeInit()
- {
- Connect_To_Database();
- EnableStuntBonusForAll(0);
- DisableInteriorEnterExits();
- SetGameModeText("Test");
- AddPlayerClass(0, 1480.9744, -1771.6888, 18.7958, 269.1425, 0, 0, 0, 0, 0, 0);
- return 1;
- }
- public OnGameModeExit()
- {
- mysql_close(handle);
- return 1;
- }
- public OnPlayerRequestClass(playerid, classid)
- {
- if(!pData[playerid][isLoggedIn])
- {
- new query[128];
- mysql_format(handle, query, sizeof(query), "SELECT `salt` FROM `accounts` WHERE `username` = '%e'", pData[playerid][pName]);
- mysql_pquery(handle, query, "OnPlayerCheck", "d", playerid);
- }
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- pData[playerid][p_ID] = 0;
- pData[playerid][pScore] = 0;
- pData[playerid][pMoney] = 0;
- pData[playerid][isLoggedIn] = false;
- GetPlayerName(playerid, pData[playerid][pName], MAX_PLAYER_NAME);
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- SavePlayerStats(playerid);
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- return 1;
- }
- public OnVehicleSpawn(vehicleid)
- {
- return 1;
- }
- public OnVehicleDeath(vehicleid, killerid)
- {
- return 1;
- }
- public OnPlayerText(playerid, text[])
- {
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- return 0;
- }
- public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
- {
- return 1;
- }
- public OnPlayerExitVehicle(playerid, vehicleid)
- {
- return 1;
- }
- public OnPlayerStateChange(playerid, newstate, oldstate)
- {
- return 1;
- }
- public OnPlayerEnterCheckpoint(playerid)
- {
- return 1;
- }
- public OnPlayerLeaveCheckpoint(playerid)
- {
- return 1;
- }
- public OnPlayerEnterRaceCheckpoint(playerid)
- {
- return 1;
- }
- public OnPlayerLeaveRaceCheckpoint(playerid)
- {
- return 1;
- }
- public OnRconCommand(cmd[])
- {
- return 1;
- }
- public OnPlayerRequestSpawn(playerid)
- {
- return 1;
- }
- public OnObjectMoved(objectid)
- {
- return 1;
- }
- public OnPlayerObjectMoved(playerid, objectid)
- {
- return 1;
- }
- public OnPlayerPickUpPickup(playerid, pickupid)
- {
- return 1;
- }
- public OnVehicleMod(playerid, vehicleid, componentid)
- {
- return 1;
- }
- public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
- {
- return 1;
- }
- public OnVehicleRespray(playerid, vehicleid, color1, color2)
- {
- return 1;
- }
- public OnPlayerSelectedMenuRow(playerid, row)
- {
- return 1;
- }
- public OnPlayerExitedMenu(playerid)
- {
- return 1;
- }
- public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
- {
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- return 1;
- }
- public OnRconLoginAttempt(ip[], password[], success)
- {
- return 1;
- }
- public OnPlayerUpdate(playerid)
- {
- return 1;
- }
- public OnPlayerStreamIn(playerid, forplayerid)
- {
- return 1;
- }
- public OnPlayerStreamOut(playerid, forplayerid)
- {
- return 1;
- }
- public OnVehicleStreamIn(vehicleid, forplayerid)
- {
- return 1;
- }
- public OnVehicleStreamOut(vehicleid, forplayerid)
- {
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- switch(dialogid)
- {
- case DIALOG_REGISTER:
- {
- if(!response) return Kick(playerid);
- if(strlen(inputtext) < 4) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, #SERVERNAME "- Registration", "Bitte registriere Dich:\n{FF0000}Mindestens 4 Zeichen!", "Ok", "Abbrechen");
- new query[256], salt[11];
- for(new i; i < 10; i++){
- salt[i] = random(79) + 47;
- } salt[10] = 0;
- SHA256_PassHash(inputtext, salt, pData[playerid][pPassword], 65);
- mysql_format(handle, query, sizeof(query), "INSERT INTO `accounts` (`username`, `password`, `salt`) VALUES ('%e', '%e', '%e')", pData[playerid][pName], pData[playerid][pPassword], salt);
- mysql_pquery(handle, query, "OnPlayerRegister", "d", playerid);
- return 1;
- }
- case DIALOG_LOGIN:
- {
- if(!response) return Kick(playerid);
- if(strlen(inputtext) < 4) return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, #SERVERNAME "- Anmeldung", "Bitte logge Dich ein:\n{FF0000}Mindestens 4 Zeichen!", "Ok", "Abbrechen");
- new query[256], hash[65];
- SHA256_PassHash(inputtext, pData[playerid][pSalt], hash, 65);
- mysql_format(handle, query, sizeof(query), "SELECT * FROM `accounts` WHERE `username` = '%e' AND `password` = ('%e')", pData[playerid][pName], pData[playerid][pPassword]);
- mysql_pquery(handle, query, "OnPlayerLogin", "d", playerid);
- return 1;
- }
- }
- return 0;
- }
- public OnPlayerClickPlayer(playerid, clickedplayerid, source)
- {
- return 1;
- }
- stock SavePlayerStats(playerid)
- {
- if(!pData[playerid][isLoggedIn]) return 1;
- new query[256];
- mysql_format(handle, query, sizeof(query), "UPDATE `accounts` SET `score` = '%d', `money` = '%d' WHERE `id` = '%d'",
- pData[playerid][pScore], pData[playerid][pMoney], pData[playerid][p_ID]);
- mysql_pquery(handle, query);
- return 1;
- }
- public OnPlayerLogin(playerid)
- {
- if(cache_get_row_count() == 0)
- {
- ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, #SERVERNAME "- Anmeldung", "Bitte logge Dich ein:\n{FF0000}Falsches Passwort!", "Ok", "Abbrechen");
- }
- else
- {
- pData[playerid][p_ID] = cache_get_field_content_int(0, "id", handle);
- pData[playerid][pScore] = cache_get_field_content_int(0, "score", handle);
- pData[playerid][pMoney] = cache_get_field_content_int(0, "money", handle);
- pData[playerid][isLoggedIn] = true;
- SendClientMessage(playerid, 0x00FF00FF, "[Konto] Eingeloggt.");
- SetPlayerScore(playerid, pData[playerid][pScore]);
- GivePlayerMoney(playerid, pData[playerid][pMoney]);
- }
- return 1;
- }
- public OnPlayerRegister(playerid)
- {
- pData[playerid][p_ID] = cache_insert_id();
- SendClientMessage(playerid, 0x00FF00FF, "[Konto] Registration erfolgreich.");
- return 1;
- }
- public OnPlayerCheck(playerid)
- {
- if(cache_get_row_count() == 0)
- {
- ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, #SERVERNAME "- Registration", "Bitte registriere Dich:", "Ok", "Abbrechen");
- }
- else
- {
- cache_get_field_content(0, "salt", pData[playerid][pSalt], handle, 11);
- ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, #SERVERNAME "- Anmeldung", "Bitte logge Dich ein:", "Ok", "Abbrechen");
- }
- return 1;
- }
- stock Connect_To_Database(ttl = 3)
- {
- print("[MySQL] Verbindungsaufbau...");
- //mysql_log(LOG_ALL);
- handle = mysql_connect(SQL_HOST, SQL_USER, SQL_DATA, SQL_PASS);
- if(mysql_errno(handle) != 0){
- if(ttl > 1){
- print("[MySQL] Es konnte keine Verbindung zur Datenbank hergestellt werden.");
- printf("[MySQL] Starte neuen Verbindungsversuch (TTL: %d).", ttl-1);
- return Connect_To_Database(ttl-1);
- } else {
- print("[MySQL] Es konnte keine Verbindung zur Datenbank hergestellt werden.");
- print("[MySQL] Bitte prüfen Sie die Verbindungsdaten.");
- print("[MySQL] Der Server wird heruntergefahren.");
- return SendRconCommand("exit");
- }
- }
- printf("[MySQL] Die Verbindung zur Datenbank wurde erfolgreich hergestellt! Handle: %d", handle);
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment