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 |