Save/Load Positions
#1

Hi,
i'm searching for a script that can make me save the last position on player disconnect, and load this position when it riconnect.

I used this script:

pawn Code:
//OnPlayerSpawn (callback)
{
    new pName[24], PlayerFile[50];

    GetPlayerName(playerid, pName, sizeof(pName));
    format(PlayerFile, sizeof(PlayerFile), "Positions/%s.ini", pName);

    PlayerInfo[playerid][PlayerX] = dini_Float(PlayerFile, "PlayerX");
    PlayerInfo[playerid][PlayerY] = dini_Float(PlayerFile, "PlayerY");
    PlayerInfo[playerid][PlayerZ] = dini_Float(PlayerFile, "PlayerZ");

    return SetPlayerPos(playerid, dini_Float(PlayerFile, "PlayerX"), dini_Float(PlayerFile, "PlayerY"), dini_Float(PlayerFile, "PlayerZ"));
}

//OnPlayerDisconnect (callback)

{
    new pName[24], PlayerFile[50];
    new Float:PX, Float:PY, Float:PZ;
   
    GetPlayerName(playerid, pName, sizeof(pName));
    format(PlayerFile, sizeof(PlayerFile), "Positions/%s.ini", pName);
   
    GetPlayerPos(playerid, PX, PY, PZ);
   
    PlayerInfo[playerid][PlayerX] = PX;
    PlayerInfo[playerid][PlayerY] = PY;
    PlayerInfo[playerid][PlayerZ] = PZ;
   
    dini_FloatSet(PlayerFile, "PlayerX", PlayerInfo[playerid][PlayerX]);
    dini_FloatSet(PlayerFile, "PlayerY", PlayerInfo[playerid][PlayerY]);
    dini_FloatSet(PlayerFile, "PlayerZ", PlayerInfo[playerid][PlayerZ]);
    dini_IntSet(PlayerFile, "Spawn", 2);
   
    return 1;
}
Pawn give me this errors:

Code:
C:\Users\Marco\Desktop\SwordCross City\gamemodes\crpsave.pwn(3239) : error 017: undefined symbol "PlayerX"
C:\Users\Marco\Desktop\SwordCross City\gamemodes\crpsave.pwn(3239) : warning 213: tag mismatch
C:\Users\Marco\Desktop\SwordCross City\gamemodes\crpsave.pwn(3240) : error 017: undefined symbol "PlayerY"
C:\Users\Marco\Desktop\SwordCross City\gamemodes\crpsave.pwn(3240) : warning 213: tag mismatch
C:\Users\Marco\Desktop\SwordCross City\gamemodes\crpsave.pwn(3241) : error 017: undefined symbol "PlayerZ"
C:\Users\Marco\Desktop\SwordCross City\gamemodes\crpsave.pwn(3241) : warning 213: tag mismatch
C:\Users\Marco\Desktop\SwordCross City\gamemodes\crpsave.pwn(3243) : error 017: undefined symbol "PlayerX"
C:\Users\Marco\Desktop\SwordCross City\gamemodes\crpsave.pwn(3244) : error 017: undefined symbol "PlayerY"
C:\Users\Marco\Desktop\SwordCross City\gamemodes\crpsave.pwn(3245) : error 017: undefined symbol "PlayerZ"
C:\Users\Marco\Desktop\SwordCross City\gamemodes\crpsave.pwn(3250) : warning 225: unreachable code
C:\Users\Marco\Desktop\SwordCross City\gamemodes\crpsave.pwn(3820) : error 017: undefined symbol "PlayerX"
C:\Users\Marco\Desktop\SwordCross City\gamemodes\crpsave.pwn(3820) : warning 213: tag mismatch
C:\Users\Marco\Desktop\SwordCross City\gamemodes\crpsave.pwn(3821) : error 017: undefined symbol "PlayerY"
C:\Users\Marco\Desktop\SwordCross City\gamemodes\crpsave.pwn(3821) : warning 213: tag mismatch
C:\Users\Marco\Desktop\SwordCross City\gamemodes\crpsave.pwn(3822) : error 017: undefined symbol "PlayerZ"
C:\Users\Marco\Desktop\SwordCross City\gamemodes\crpsave.pwn(3822) : warning 213: tag mismatch
C:\Users\Marco\Desktop\SwordCross City\gamemodes\crpsave.pwn(3828) : warning 225: unreachable code
Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


9 Errors.
Reply
#2

This is the one i made it also saves the player's skin

Code:
#define FILTERSCRIPT

#include <a_samp>
#include <Dini>
#include <dudb>

new Float:positionx;
new Float:positiony;
new Float:positionz;
new skin;

#if defined FILTERSCRIPT

public OnFilterScriptInit()
{
	print("\n--------------------------------------");
	print(" Position saver by Jueix");
	print("--------------------------------------\n");
	return 1;
}

public OnPlayerConnect(playerid)
{
	LoadStats(playerid);
	return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
	new Float:x;
	new Float:y;
	new Float:z;

	GetPlayerPos(playerid,x,y,z);
	skin = GetPlayerSkin(playerid);
	positionx = x;
	positiony = y;
	positionz = z;
	if (!dini_Exists(Pos(playerid)))
	{
		dini_Create(Pos(playerid));
	}

	SaveStats(playerid);
	return 1;
}

public OnPlayerSpawn(playerid)
{
	if (!dini_Exists(Pos(playerid))) {
	SetPlayerPos(playerid, 1676.8462, 1447.7908, 10.7833); //change to coords on players first login / register
	}
	else
	{
	SetPlayerPos(playerid, positionx,positiony,positionz);
	SetPlayerSkin(playerid,skin);
	}
	return 1;
}

Player(playerid)
{
 new player[MAX_PLAYER_NAME];
 GetPlayerName(playerid, player, sizeof(player));
 return player;
}

Pos(playerid)
{
  new a[256]; format(a, sizeof(a), "%s.ini",udb_encode(Player(playerid)));
  return a;
}

SaveStats(playerid)
{
  dini_IntSet(Pos(playerid), "PositionX", floatround(positionx));
  dini_IntSet(Pos(playerid), "PositionY", floatround(positiony));
  dini_IntSet(Pos(playerid), "PositionZ", floatround(positionz));
  dini_IntSet(Pos(playerid), "skin", (skin));
}

LoadStats(playerid)
{
  positionx = dini_Int(Pos(playerid), "PositionX");
  positiony = dini_Int(Pos(playerid), "PositionY");
  positionz = dini_Int(Pos(playerid), "PositionZ");
  skin = dini_Int(Pos(playerid), "skin");
}

public OnFilterScriptExit()
{
	return 1;
}

#else

main()
{
	print("\n----------------------------------");
	print(" Blank Gamemode by Jueix");
	print("----------------------------------\n");
}

#endif
Hope this helped.
Reply
#3

This is a filterscript? So can you tell me what i have to do exactly for make it work?
I have to create a new pwn file, and call it save, then i have to add on server.cfg filterscript save?
Thanks for helping!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)