#include #include #include // Modify below as needed. #define MYSQL_HOST "localhost" #define MYSQL_USER "root" #define MYSQL_DB "dbname" #define MYSQL_PASS "" enum P_ENUM { pUID, pPWHash[129], // Suited for Whirlpool, modify as needed. pMoney, pALevel, pScore } new pData[MAX_PLAYERS][P_ENUM]; forward LoadPlayerData(playerid); forward LoadPlayerData_THREAD(query[], index, extraid, connectionHandle); forward SavePlayerData(playerid); forward SavePlayerData_THREAD(query[], index, extraid, connectionHandle); forward ClearPlayerData(playerid); main() {} public OnGameModeInit() { mysql_connect(MYSQL_HOST,MYSQL_USER,MYSQL_DB,MYSQL_PASS); // Connecting to the database. } public OnPlayerConnect(playerid) { LoadPlayerData(playerid); // Load data when the player connects. } public OnPlayerDisconnect(playerid,reason) { SavePlayerData(playerid); // Save data on disconnect apart from the password hash & constant UID ClearPlayerData(playerid); // Clear the data from the server } public ClearPlayerData(playerid) { new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,MAX_PLAYER_NAME); strdel(pData[playerid][pPWHash],0,129); for(new i = 0;id{s[20]}s[129]ddd>",pData[index]); printf("Data loaded for %s",name); mysql_free_result(); return 1; } public SavePlayerData(playerid) { new query[128],name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,MAX_PLAYER_NAME); if(!mysql_ping()) { return printf("Error saving user data for %s",name); } format(query,sizeof(query),"UPDATE users SET money=%d,level=%d,score=%d WHERE username='%s'", pData[playerid][pMoney],pData[playerid][pALevel],pData[playerid][pScore],name); mysql_query_callback(playerid,query,"SavePlayerData_THREAD"); return 1; } public SavePlayerData_THREAD(query[], index, extraid, connectionHandle) { new name[MAX_PLAYER_NAME]; GetPlayerName(index,name,MAX_PLAYER_NAME); mysql_store_result(); if(!mysql_errno()) { printf("Data saved for %s",name); } else { printf("Could not save data for %s",name); } mysql_free_result(); return 1; }