y_ini - positions dont load
#1

Code:
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;
}
For some reason the code don't save my position but it does save my admin level. Why?

ps: and yes you will probs ask why u dont use mysql and i will once i get the hang of pawn
Reply
#2

Use SpawnPlayer(playerid); after SetSpawnInfo
Reply
#3



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
Reply
#4

Quote:
Originally Posted by Mobtiesgangsa
View Post


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
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;
}
even tried with getplayerpos. didnt work
Reply
#5

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
Reply
#6

Quote:
Originally Posted by Mo123
View Post
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;
}
even tried with getplayerpos. didnt work
Edit:Answered Above

and if you have problem with crating files and saving there make sure you have a file called PlayerData in scriptfiles and you create ini files in player registration
Reply
#7

Quote:
Originally Posted by GODEX
View Post
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
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 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;
}
Now it does give me the xyz data, but it does not execute. Whenever I spawn I spawn at the original spot, not where I logged out.
Reply
#8

Quote:
Originally Posted by TheToretto
View Post
Use SpawnPlayer(playerid); after SetSpawnInfo
abcd
Reply
#9

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;
}
still doesnt work and it keeps repasting new data every time I relog

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
Reply
#10

try this add it somewhere

Code:
public OnPlayerSpawn(playerid)
{
      SetPlayerPos(playerid, PlayerInfo[playerid][X], PlayerInfo[playerid][Y], PlayerInfo[playerid][Z]);
      SetPlayerFacingAngle(playerid, PlayerInfo[playerid][Angle]);
      return 1;
}
Reply
#11

Use SetSpawnInfo(data) then use SpawnPlayer(playerid). Once you spawn a player using setspawninfo, you can use setplayerpos etc after
Reply
#12

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
Reply
#13

Quote:
Originally Posted by Mobtiesgangsa
View Post
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
Reply
#14

Quote:
Originally Posted by GODEX
View Post
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
i gave him an example to see how the code will react load and save, review the code first, before reposting, 1 bug didnt kill nobody if you squashit firts "bug fixin it"
Reply
#15

Okay remove what you have there from OnPlayerDisconnected and put a new line

Code:
public OnPlayerDisconnect(playerid, reason)
{
    SaveUser_data(playerid);
    return 1;
}
Now go to the bottom of your script and put this in
Code:
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);
}
Now when you spawn your players first position after relogging do this

Code:
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);
If you are still getting errors, please post you whole Login/Registration code
Reply
#16

Quote:
Originally Posted by Mo123
View Post
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;
}
still doesnt work and it keeps repasting new data every time I relog

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
Because you are calling the native right after you spawn, which makes no sense. Put it under OnPlayerConnect
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)