Save/Load Positions - 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)
+--- Thread: Save/Load Positions (
/showthread.php?tid=348993)
Save/Load Positions -
MarcoWesley - 07.06.2012
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.
Re: Save/Load Positions -
jueix - 07.06.2012
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.
Re: Save/Load Positions -
MarcoWesley - 07.06.2012
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!