Saving player positions.
#1

I've been trying to Save positions using Y_INI and I cant find a good tutorial, so I was wondering if anyone can point me to a good tutorial or post something that can help me here. With the system I've created, when you get in game you spawn at blueberry and fall through the map.
Reply
#2

PHP код:
//---[Dialog ID's]
#define Respawn 14//--[Dialog ID]
//--[Config]
#define PATH "/Users/%s.ini"
//--[Forward]
forward LoadUserAccounts(playeridname[], value[]);
forward SaveUserAccounts(playerid);
//---[Player]
enum pInfo
{
  
//--[Pos]
  
Float:X,
  
Float:Y,
  
Float:Z,
  
Float:Angle,
  
Interior,
  
VirtualWorld,
};
new 
PlayerInfo[MAX_PLAYERS][pInfo];
stock UserPath(playerid)
{
  new 
string[128],playername[MAX_PLAYER_NAME];
  
GetPlayerName(playerid,playername,sizeof(playername));
  
format(string,sizeof(string),PATH,playername);
  return 
string;
}
public 
LoadUserAccounts(playerid,name[],value[])
{
    
INI_Float("X",PlayerInfo[playerid][X]);
    
INI_Float("Y",PlayerInfo[playerid][Y]);
    
INI_Float("Z",PlayerInfo[playerid][Z]);
    
INI_Float("Angle",PlayerInfo[playerid][Angle]);
    
INI_Int("Interior",PlayerInfo[playerid][Interior]);
    
INI_Int("VirtualWorld",PlayerInfo[playerid][VirtualWorld]);
    return 
1;
}
public 
SaveUserAccounts(playerid)
{
  new 
Float:ppX,Float:ppY,Float:ppZ,Float:ppA;
  new 
ppInt GetPlayerInterior(playerid);
  new 
ppVW GetPlayerVirtualWorld(playerid);
  
GetPlayerPos(playerid,ppX,ppY,ppZ);
  
GetPlayerFacingAngle(playerid,ppA);
  
PlayerInfo[playerid][X] = ppX;
  
PlayerInfo[playerid][Y] = ppY;
  
PlayerInfo[playerid][Z] = ppZ;
  
PlayerInfo[playerid][Angle] = ppA;
  
PlayerInfo[playerid][Interior] = ppInt;
  
PlayerInfo[playerid][VirtualWorld] = ppVW;
  if(
fexist(UserPath(playerid)))
  {
    new 
INI:File INI_Open(UserPath(playerid));
    
INI_SetTag(File,"Player-Data");
    
INI_WriteFloat(File,"X",PlayerInfo[playerid][X]);
    
INI_WriteFloat(File,"Y",PlayerInfo[playerid][Y]);
    
INI_WriteFloat(File,"Z",PlayerInfo[playerid][Z]);
    
INI_WriteFloat(File,"Angle",PlayerInfo[playerid][Angle]);
    
INI_WriteInt(File,"Interior",PlayerInfo[playerid][Interior]);
    
INI_WriteInt(File,"VirtualWorld",PlayerInfo[playerid][VirtualWorld]);
    
INI_Close(File);
  }
  return 
1;
}
public 
OnGameModeInit()
{
  
SetTimer("SaveUserAccounts"12000true);
  return 
1;
}
public 
OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
  if(
dialogid == Respawn)
  {
    if(
response)
    {
      if(
fexist(UserPath(playerid)))
      {
        
INI_ParseFile(UserPath(playerid),"LoadUserAccounts", .bExtra true, .extra playerid);
        
SetPlayerPos(playerid,PlayerInfo[playerid][X],PlayerInfo[playerid][Y],PlayerInfo[playerid][Z]);
        
SetPlayerFacingAngle(playerid,PlayerInfo[playerid][Angle]);
        
SetPlayerInterior(playerid,PlayerInfo[playerid][Interior]);
        
SetPlayerVirtualWorld(playerid,PlayerInfo[playerid][VirtualWorld]);
      }
      else
      {
      
      }
    }
    else
    {
    
    }
    return 
1;
  }
  return 
0;
}
public 
OnPlayerSpawn(playerid)
{
  if(
fexist(UserPath(playerid)))
  {
    
ShowPlayerDialog(playeridRespawnDIALOG_STYLE_MSGBOX"Respawn Dialog""Are You Sure You Want To Respawn Where You Disconnect Or Saved From?""Yes""No");
  }
  return 
1;

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)