SA-MP Forums Archive
[Tutorial] Save, load and set player position - using y_ini - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+---- Forum: Tutorials (https://sampforum.blast.hk/forumdisplay.php?fid=70)
+---- Thread: [Tutorial] Save, load and set player position - using y_ini (/showthread.php?tid=299791)

Pages: 1 2


Re: Save, load and set player position - using y_ini - Ramms - 07.02.2014

i have this working but when i restart the server the coords do not load it spawns me at 0,0,0
pawn Code:
public OnPlayerDisconnect(playerid, reason)
{
    if(IsPlayerLoggedIn[playerid] == 1)
    {
        new INI:iFile = INI_Open(PlayerPath(playerid));
        INI_SetTag(iFile,"data");
        GetPlayerPos(playerid, PlayerInfo[playerid][pPosX], PlayerInfo[playerid][pPosY], PlayerInfo[playerid][pPosZ]);
        GetPlayerFacingAngle( playerid, PlayerInfo[playerid][pAngle]);
        INI_SetTag(iFile, "position");
        INI_WriteFloat(iFile,"PositionX",PlayerInfo[playerid][pPosX]);
        INI_WriteFloat(iFile,"PositionY",PlayerInfo[playerid][pPosY]);
        INI_WriteFloat(iFile,"PositionZ",PlayerInfo[playerid][pPosZ]);
        INI_WriteFloat(iFile,"Angle",PlayerInfo[playerid][pAngle]);
        INI_WriteInt(iFile,"Interior",GetPlayerInterior(playerid));
        INI_WriteInt(iFile,"VirtualWorld",GetPlayerVirtualWorld(playerid));
        INI_Close(iFile);
    }
    return 1;
}

public UserDataLoad_data(playerid,name[],value[]) {
    INI_Int("Pass",PlayerInfo[playerid][pPass]);
    #if defined AUTOLOGIN
        INI_String("IP",pIP[playerid],16);
    #endif
    INI_Float("PositionX",PlayerInfo[playerid][pPosX]);
    INI_Float("PositionY",PlayerInfo[playerid][pPosY]);
    INI_Float("PositionZ",PlayerInfo[playerid][pPosZ]);
    INI_Float("Angle",PlayerInfo[playerid][pAngle]);
    INI_Int("Interior",PlayerInfo[playerid][pInterior]);
    INI_Int("VirtualWorld",PlayerInfo[playerid][pVirtualWorld]);
   
    return 1;
}

public SkipSpawn(playerid)
{
    if(PlayerInfo[playerid][pReg] == 1)
    {
        SetSpawnInfo( playerid, 0, 0, PlayerInfo[playerid][pPosX],PlayerInfo[playerid][pPosY],PlayerInfo[playerid][pPosZ],PlayerInfo[playerid][pAngle], 0, 0, 0, 0, 0, 0 );
        SetPlayerInterior( playerid, PlayerInfo[playerid][pInterior]);
        SetPlayerVirtualWorld( playerid, PlayerInfo[playerid][pVirtualWorld]);
        SpawnPlayer(playerid);
        SendClientMessage( playerid, -1, "welcome to your last position" );
    }
    else if(PlayerInfo[playerid][pReg] == 0)
    {
        SetSpawnInfo( playerid, 0, 0, -2764.9766,375.4572,6.3430,271.0806, 0, 0, 0, 0, 0, 0 );
        SpawnPlayer(playerid);
    }
    return 1;
}



Re: Save, load and set player position - using y_ini - xPirate - 05.04.2014

BUMP Same problem !


Re: Save, load and set player position - using y_ini - biker122 - 05.04.2014

I believe that It won't be saved when it's a server restart. (START/STOP). Try to quit the game and join again.


Re: Save, load and set player position - using y_ini - xPirate - 05.04.2014

EDIT: Fixed & working with different code !


Re: Save, load and set player position - using y_ini - GrandTA - 20.06.2017

Thanks Man Its Works +rep


Re: Save, load and set player position - using y_ini - 2xRichard - 16.07.2017

Hey i server restarting , it not work and not load players pos !
Spawn all players to x0 y0 z0 !
can you help ?


Re: Save, load and set player position - using y_ini - beastmaster - 19.07.2018

Hi, i am newbie to scripting and i used your script to make a FS and it compiled without any error and loaded too... and when i discconects it saves my location but when i connect it spawns me at the default position. can anyone tell what's the problem?


Re: Save, load and set player position - using y_ini - CodeStyle175 - 19.07.2018

when you really want to use this system, just create timer what saves player positsion after every minute.


Re: Save, load and set player position - using y_ini - WilliamVN - 21.07.2018

Very Nice


Re: Save, load and set player position - using y_ini - DerickClark - 21.07.2018

Quote:
Originally Posted by CodeStyle175
View Post
when you really want to use this system, just create timer what saves player positsion after every minute.
False. You save it on OnPlayerDisconnect. What if you want to leave the server but won't save?
Something went wrong with your saving?


Re: Save, load and set player position - using y_ini - beastmaster - 25.07.2018

Hi Derick,
Can you help me? Actually the FS is working fine and when I left the server it saves the coords in the file but when I log in it spawns me at my default location

I will be thankful if u can help me


Re: Save, load and set player position - using y_ini - DerickClark - 26.07.2018

Quote:
Originally Posted by beastmaster
View Post
Hi Derick,
Can you help me? Actually the FS is working fine and when I left the server it saves the coords in the file but when I log in it spawns me at my default location

I will be thankful if u can help me
What does it print out?


Re: Save, load and set player position - using y_ini - beastmaster - 26.07.2018

Quote:

what does it print out?

this is how FS looks

Quote:

#include <a_samp>
#include <YSI\y_ini>

new
Float: PosX[ MAX_PLAYERS ],
Float: PosY[ MAX_PLAYERS ],
Float: PosZ[ MAX_PLAYERS ],
Float: Angle[ MAX_PLAYERS ],
Interior[ MAX_PLAYERS ],
VirtualWorld[ MAX_PLAYERS ]
;

stock user_ini_file(playerid)
{
new
string[ 128 ],
user_name[ MAX_PLAYER_NAME ]
;

GetPlayerName( playerid, user_name, MAX_PLAYER_NAME );
format( string, sizeof ( string ), "%s.ini", user_name );
/* scriptfiles directory */
return
string;
}

forward @load_user_position( playerid, name[], value[] );

@load_user_position( playerid, name[], value[] )
{
INI_Float( "PositionX", PosX[ playerid ] );
INI_Float( "PositionY", PosY[ playerid ] );
INI_Float( "PositionZ", PosZ[ playerid ] );
INI_Float( "Angle", Angle[ playerid ] );
INI_Int( "Interior", Interior[ playerid ] );
INI_Int( "VirtualWorld", VirtualWorld[ playerid ] );
return ( 1 );
}

public OnPlayerDisconnect( playerid, reason )
{
GetPlayerPos( playerid, PosX[ playerid ], PosY[ playerid ], PosZ[ playerid ] );
GetPlayerFacingAngle( playerid, Angle[ playerid ] );

new INI:File = INI_Open( user_ini_file( playerid ) );
INI_SetTag( File, "position" );
INI_WriteFloat( File, "PositionX", PosX[ playerid ] );
INI_WriteFloat( File, "PositionY", PosY[ playerid ] );
INI_WriteFloat( File, "PositionZ", PosZ[ playerid ] );
INI_WriteFloat( File, "Angle", Angle[ playerid ] );
INI_WriteInt( File, "Interior", GetPlayerInterior( playerid ) );
INI_WriteInt( File, "VirtualWorld", GetPlayerVirtualWorld( playerid ) );
INI_Close( File );
return ( 1 );
}

public OnPlayerConnect( playerid )
{
PosX[ playerid ] = 0;
PosY[ playerid ] = 0;
PosZ[ playerid ] = 0;
Angle[ playerid ] = 0;
Interior[ playerid ] = 0;
VirtualWorld[ playerid ] = 0;

INI_ParseFile( user_ini_file( playerid ), "load_user_%s", .bExtra = true, .extra = playerid );
return ( 1 );
}


public OnPlayerSpawn( playerid )
{
if ( PosX[ playerid ] != 0 && PosY[ playerid ] != 0 && PosZ[ playerid ] != 0 )
{
SetPlayerPos( playerid, PosX[ playerid ], PosY[ playerid ], PosZ[ playerid ] );
SetPlayerFacingAngle( playerid, Angle[ playerid ] );
SetPlayerInterior( playerid, Interior[ playerid ] );
SetPlayerVirtualWorld( playerid, VirtualWorld[ playerid ] );
SendClientMessage( playerid, -1, "welcome to your last position" );
}
return ( 1 );
}

and when i leave the server it saves my last cords but when i join again it spawns me at the default loaction( which is in gamemode)