hook OnPlayerConnect(playerid) { new pName[MAX_PLAYER_NAME], PlayerPathFile[50]; GetPlayerName(playerid, pName, sizeof(pName)); format(PlayerPathFile, sizeof(PlayerPathFile), "/PlayerData/%s.ini", pName); if(!dini_Exists(PlayerPathFile)) { dini_Create(PlayerPathFile); } else { PlayerInfo[playerid][pPosX] = dini_Float(PlayerPathFile, "PositionX"); PlayerInfo[playerid][pPosY] = dini_Float(PlayerPathFile, "PositionY"); PlayerInfo[playerid][pPosZ] = dini_Float(PlayerPathFile, "PositionZ"); PlayerInfo[playerid][pRot] = dini_Float(PlayerPathFile, "Rotation"); PlayerInfo[playerid][pAdmin] = dini_Int(PlayerPathFile,"AdminLevel"); SendClientMessage(playerid, COLOR_YELLOW, "Your player files have been loaded in. Enjoy your stay."); } SetSpawnInfo(playerid, 0, 0, PlayerInfo[playerid][pPosX], PlayerInfo[playerid][pPosY], PlayerInfo[playerid][pPosZ], PlayerInfo[playerid][pRot], 0, 0, 0, 0, 0, 0); return 1; } hook OnPlayerDisconnect(playerid, reason) { new pName[MAX_PLAYER_NAME], PlayerPathFile[50]; GetPlayerName(playerid, pName, sizeof(pName)); format(PlayerPathFile, sizeof(PlayerPathFile), "/PlayerData/%s.ini", pName); dini_FloatSet(PlayerPathFile, "PositionX", PlayerInfo[playerid][pPosX]); dini_FloatSet(PlayerPathFile, "PositionY", PlayerInfo[playerid][pPosY]); dini_FloatSet(PlayerPathFile, "PositionZ", PlayerInfo[playerid][pPosZ]); dini_FloatSet(PlayerPathFile, "Rotation", PlayerInfo[playerid][pRot]); dini_IntSet(PlayerPathFile, "AdminLevel", PlayerInfo[playerid][pAdmin]); return 1; }
Image this is y_ini Version 4 it allow's you to dynamicly load\save data on a ini file view the tutorial by Kush YSI y_ini login register system by kush Misiur's how to use y_ini reason why your data doesnt save on /q > OnPlayerDisconnect(playerid, reason) GetPlayerPos(playerid, Float:&X, Float:&Y, Float:&Z); GetPlayerFacingAngle(playerid, Float:&Angle); new INI:File = INI_Open(Your path); INI_WriteFloat(File, "X", your enumerate); .... ... ... INI_Close(File); first you get your positions where your character is after you leave the server the ini save's it in the file player.ini |
#define PATH "/PlayerData/%s.ini" forward LoadUser_data(playerid,name[],value[]); public LoadUser_data(playerid,name[],value[]) { INI_Float("Pos X", PlayerInfo[playerid][pPosX]); INI_Float("Pos Y", PlayerInfo[playerid][pPosY]); INI_Float("Pos Z", PlayerInfo[playerid][pPosZ]); INI_Int("Admin Levels", PlayerInfo[playerid][pAdmin]); return 1; } stock UserPath(playerid) { new string[128],playername[MAX_PLAYER_NAME]; GetPlayerName(playerid,playername,sizeof(playername)); format(string,sizeof(string),PATH,playername); return string; } public OnPlayerConnect(playerid) { if(fexist(UserPath(playerid))) { INI_ParseFile(UserPath(playerid), "/PlayerData/%s.ini", .bExtra = true, .extra = playerid); } } hook OnPlayerDisconnect(playerid, reason) { new INI:File = INI_Open(UserPath(playerid)); INI_SetTag(File,"data"); INI_WriteFloat(File, "Position X", PlayerInfo[playerid][pPosX]); INI_WriteFloat(File, "Position Y", PlayerInfo[playerid][pPosY]); INI_WriteFloat(File, "Position Z", PlayerInfo[playerid][pPosZ]); INI_WriteInt(File, "Admin Level", PlayerInfo[playerid][pAdmin]); INI_Close(File); return 1; }
new Float:x, Float:y, Float:z GetPlayerPos(playerid, x, y, z); PlayerInfo[playerid][PosX] = x; Etc Then save the data
Code:
#define PATH "/PlayerData/%s.ini" forward LoadUser_data(playerid,name[],value[]); public LoadUser_data(playerid,name[],value[]) { INI_Float("Pos X", PlayerInfo[playerid][pPosX]); INI_Float("Pos Y", PlayerInfo[playerid][pPosY]); INI_Float("Pos Z", PlayerInfo[playerid][pPosZ]); INI_Int("Admin Levels", PlayerInfo[playerid][pAdmin]); return 1; } stock UserPath(playerid) { new string[128],playername[MAX_PLAYER_NAME]; GetPlayerName(playerid,playername,sizeof(playername)); format(string,sizeof(string),PATH,playername); return string; } public OnPlayerConnect(playerid) { if(fexist(UserPath(playerid))) { INI_ParseFile(UserPath(playerid), "/PlayerData/%s.ini", .bExtra = true, .extra = playerid); } } hook OnPlayerDisconnect(playerid, reason) { new INI:File = INI_Open(UserPath(playerid)); INI_SetTag(File,"data"); INI_WriteFloat(File, "Position X", PlayerInfo[playerid][pPosX]); INI_WriteFloat(File, "Position Y", PlayerInfo[playerid][pPosY]); INI_WriteFloat(File, "Position Z", PlayerInfo[playerid][pPosZ]); INI_WriteInt(File, "Admin Level", PlayerInfo[playerid][pAdmin]); INI_Close(File); return 1; } |
Try this under onplayerdisconnect
Code:
new Float:x, Float:y, Float:z GetPlayerPos(playerid, x, y, z); PlayerInfo[playerid][PosX] = x; Etc Then save the data |
#define PATH "/PlayerData/%s.ini" forward LoadUser_data(playerid,name[],value[]); public LoadUser_data(playerid,name[],value[]) { INI_Float("Pos X", PlayerInfo[playerid][pPosX]); INI_Float("Pos Y", PlayerInfo[playerid][pPosY]); INI_Float("Pos Z", PlayerInfo[playerid][pPosZ]); INI_Int("Admin Levels", PlayerInfo[playerid][pAdmin]); return 1; } stock UserPath(playerid) { new string[128],playername[MAX_PLAYER_NAME]; GetPlayerName(playerid,playername,sizeof(playername)); format(string,sizeof(string),PATH,playername); return string; } public OnPlayerConnect(playerid) { if(fexist(UserPath(playerid))) { INI_ParseFile(UserPath(playerid), "/PlayerData/%s.ini", .bExtra = true, .extra = playerid); } } hook OnPlayerDisconnect(playerid, reason) { new Float:X, Float:Y, Float:Z; GetPlayerPos(playerid, X, Y, Z); PlayerInfo[playerid][pPosX] = X; PlayerInfo[playerid][pPosY] = Y; PlayerInfo[playerid][pPosZ] = Z; new INI:File = INI_Open(UserPath(playerid)); INI_SetTag(File,"data"); INI_WriteFloat(File, "Position X", PlayerInfo[playerid][pPosX]); INI_WriteFloat(File, "Position Y", PlayerInfo[playerid][pPosY]); INI_WriteFloat(File, "Position Z", PlayerInfo[playerid][pPosZ]); INI_WriteInt(File, "Admin Level", PlayerInfo[playerid][pAdmin]); INI_Close(File); return 1; }
#define PATH "/PlayerData/%s.ini" forward LoadUser_data(playerid,name[],value[]); public LoadUser_data(playerid,name[],value[]) { INI_Float("Pos X", PlayerInfo[playerid][pPosX]); INI_Float("Pos Y", PlayerInfo[playerid][pPosY]); INI_Float("Pos Z", PlayerInfo[playerid][pPosZ]); INI_Float("Angle", PlayerInfo[playerid][pRot]); INI_Int("Admin Levels", PlayerInfo[playerid][pAdmin]); return 1; } stock UserPath(playerid) { new string[128],playername[MAX_PLAYER_NAME]; GetPlayerName(playerid,playername,sizeof(playername)); format(string,sizeof(string),PATH,playername); return string; } public OnPlayerConnect(playerid) { if(fexist(UserPath(playerid))) { INI_ParseFile(UserPath(playerid), "/PlayerData/%s.ini", .bExtra = true, .extra = playerid); } } hook OnPlayerDisconnect(playerid, reason) { new Float:X, Float:Y, Float:Z, Float:A; GetPlayerPos(playerid, X, Y, Z, A); PlayerInfo[playerid][pPosX] = X; PlayerInfo[playerid][pPosY] = Y; PlayerInfo[playerid][pPosZ] = Z; PlayerInfo[playerid][pRot] = A; new INI:File = INI_Open(UserPath(playerid)); INI_SetTag(File,"data"); INI_WriteFloat(File, "Position X", PlayerInfo[playerid][pPosX]); INI_WriteFloat(File, "Position Y", PlayerInfo[playerid][pPosY]); INI_WriteFloat(File, "Position Z", PlayerInfo[playerid][pPosZ]); INI_WriteFloat(File, "Rotation", PlayerInfo[playerid][pRot]); INI_WriteInt(File, "Admin Level", PlayerInfo[playerid][pAdmin]); SetSpawnInfo(playerid, 0, 0, PlayerInfo[playerid][pPosX], PlayerInfo[playerid][pPosY], PlayerInfo[playerid][pPosZ], PlayerInfo[playerid][pRot], 0, 0, 0, 0, 0, 0); INI_Close(File); return 1; }
public OnPlayerSpawn(playerid) { SetPlayerPos(playerid, PlayerInfo[playerid][X], PlayerInfo[playerid][Y], PlayerInfo[playerid][Z]); SetPlayerFacingAngle(playerid, PlayerInfo[playerid][Angle]); return 1; }
https://github.com/sMexFalco/Y_Login/releases/tag/0.1
Mo123 here is a ready example made fast for you within 2 hours tested it got only one minor bug see how it works it is beta |
He already has his own system, no point given him a buggy one
As stated before he will need to SetSpawnInfo for the initial spawn |
public OnPlayerDisconnect(playerid, reason) { SaveUser_data(playerid); return 1; }
forward SaveUser_data(playerid); public SaveUser_data(playerid) { new Float:Xlog, Float:Ylog, Float:Zlog; GetPlayerPos(playerid, Xlog, Ylog, Zlog); PlayerInfo[playerid][pPosX] = Xlog; PlayerInfo[playerid][pPosY] = Ylog; PlayerInfo[playerid][pPosZ] = Zlog; new INI:File = INI_Open(UserPath(playerid)); INI_SetTag(File,"data"); INI_WriteFloat(File,"Position X",PlayerInfo[playerid][pPosX]); INI_WriteFloat(File,"Position Y",PlayerInfo[playerid][pPosY]); INI_WriteFloat(File,"Position Z",PlayerInfo[playerid][pPosZ]); INI_Close(File); }
TogglePlayerSpectating(playerid, false); // Relog Spawn Point SetSpawnInfo(playerid, 1, PlayerInfo[playerid][pSkin], PlayerInfo[playerid][pPosX], PlayerInfo[playerid][pPosY], PlayerInfo[playerid][pPosZ], 1.0, -1, -1, -1, -1, -1, -1); SpawnPlayer(playerid);
Code:
#define PATH "/PlayerData/%s.ini" forward LoadUser_data(playerid,name[],value[]); public LoadUser_data(playerid,name[],value[]) { INI_Float("Pos X", PlayerInfo[playerid][pPosX]); INI_Float("Pos Y", PlayerInfo[playerid][pPosY]); INI_Float("Pos Z", PlayerInfo[playerid][pPosZ]); INI_Float("Angle", PlayerInfo[playerid][pRot]); INI_Int("Admin Levels", PlayerInfo[playerid][pAdmin]); return 1; } stock UserPath(playerid) { new string[128],playername[MAX_PLAYER_NAME]; GetPlayerName(playerid,playername,sizeof(playername)); format(string,sizeof(string),PATH,playername); return string; } public OnPlayerConnect(playerid) { if(fexist(UserPath(playerid))) { INI_ParseFile(UserPath(playerid), "/PlayerData/%s.ini", .bExtra = true, .extra = playerid); } } hook OnPlayerDisconnect(playerid, reason) { new Float:X, Float:Y, Float:Z, Float:A; GetPlayerPos(playerid, X, Y, Z, A); PlayerInfo[playerid][pPosX] = X; PlayerInfo[playerid][pPosY] = Y; PlayerInfo[playerid][pPosZ] = Z; PlayerInfo[playerid][pRot] = A; new INI:File = INI_Open(UserPath(playerid)); INI_SetTag(File,"data"); INI_WriteFloat(File, "Position X", PlayerInfo[playerid][pPosX]); INI_WriteFloat(File, "Position Y", PlayerInfo[playerid][pPosY]); INI_WriteFloat(File, "Position Z", PlayerInfo[playerid][pPosZ]); INI_WriteFloat(File, "Rotation", PlayerInfo[playerid][pRot]); INI_WriteInt(File, "Admin Level", PlayerInfo[playerid][pAdmin]); SetSpawnInfo(playerid, 0, 0, PlayerInfo[playerid][pPosX], PlayerInfo[playerid][pPosY], PlayerInfo[playerid][pPosZ], PlayerInfo[playerid][pRot], 0, 0, 0, 0, 0, 0); INI_Close(File); return 1; } Position X = 2678.554931 Position Y = -2403.474853 Position Z = 13.979854 Admin Level = 0 Position X = 2678.554931 Position Y = -2403.474853 Position Z = 14.479854 Admin Level = 0 Position X = 2666.798828 Position Y = -2404.049804 Position Z = 13.471611 Admin Level = 0 spawnplayer doesnt work just freezes me out |