08.08.2009, 21:43
This is a simple way to save player position after closing the game and loading it after the player gets back.
First include these files (It will be attached with the script)
and then copy this to the end of the script.
Second declare these three variables as a global variables in the top of your script,
Float for real numbers or decimal numbers.
Now we need to open a file on scriptfiles to save our coordinates, to do that put this code at the end of your script.
This will open a file in scriptfiles with the player name.
Now we need to store these positions in the file, to do that type this under the above code.
This will store positionx as PositionX = the x position of the player and so on.
Next is to load the positions from the file, to do that type under the above code,
This will make the positions saved in the file equals to the positions the player will teleport to when he/she login.
Ok now we need to load the file when the player connect, so we type this under OnPlayerConnect
Ofcourse we need to save the positions in the file when the player disconnect, so we type this under OnPlayerDisconnect
variables x, y and z is the current player position when the command GetPlayerPos used, so we make the positions of the file equal the one of the player.
Now we need to set the player position when he/she enters so we copy this code under OnPlayerSpawn,
Finally we need to set the player position when he/she dies so we have to copy this code under OnPlayerDeath
This will set the player to all saints los santos hospital, ofcourse you can change the position of the place where you want your player to spawn when he/she dies. If you don't put this code the player will keep spawning in the loaded positions in the file.
Ok Now the script will look like:
For those who need it for GF Edits, I included it with a full working pure gf Edit. I downloaded the origional gf edit and added my script to it, just run it and test it.
Here is the gf edit with full server included with my save position script.
Download From Here
http://discoveryweb.net/savepositiongf.zip
Here is the full working script with the included files.
Download From Here
http://discoveryweb.net/saveposition.zip
Tell me if you need any help or if the link is broken.
Saleh Yassin
First include these files (It will be attached with the script)
Код:
#include <Dini> #include <dudb>
Код:
Player(playerid) { new player[MAX_PLAYER_NAME]; GetPlayerName(playerid, player, sizeof(player)); return player; }
Код:
new Float:positionx; new Float:positiony; new Float:positionz;
Now we need to open a file on scriptfiles to save our coordinates, to do that put this code at the end of your script.
Код:
FileStats(playerid) { new a[256]; format(a, sizeof(a), "%s.ini",udb_encode(Player(playerid))); return a; }
Now we need to store these positions in the file, to do that type this under the above code.
Код:
SaveStats(playerid) { dini_IntSet(FileStats(playerid), "PositionX", floatround(positionx)); dini_IntSet(FileStats(playerid), "PositionY", floatround(positiony)); dini_IntSet(FileStats(playerid), "PositionZ", floatround(positionz)); }
Next is to load the positions from the file, to do that type under the above code,
Код:
LoadStats(playerid) { positionx = dini_Int(FileStats(playerid), "PositionX"); positiony = dini_Int(FileStats(playerid), "PositionY"); positionz = dini_Int(FileStats(playerid), "PositionZ"); }
Ok now we need to load the file when the player connect, so we type this under OnPlayerConnect
Код:
LoadStats(playerid);
Код:
new Float:x; new Float:y; new Float:z; GetPlayerPos(playerid,x,y,z); positionx = x; positiony = y; positionz = z; if (!dini_Exists(FileStats(playerid))) { dini_Create(FileStats(playerid)); } SaveStats(playerid);
Now we need to set the player position when he/she enters so we copy this code under OnPlayerSpawn,
Код:
SetPlayerPos(playerid,positionx,positiony,positionz);
Код:
SetPlayerPos(playerid,1182.7733,-1323.6193,13.5785); positionx = 1182.7733; positiony = -1323.6193; positionz = 13.5785;
Ok Now the script will look like:
Код:
#include <Dini> #include <dudb> new Float:positionx; new Float:positiony; new Float:positionz; 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); positionx = x; positiony = y; positionz = z; if (!dini_Exists(FileStats(playerid))) { dini_Create(FileStats(playerid)); } SaveStats(playerid); return 1; } public OnPlayerSpawn(playerid) { SetPlayerPos(playerid,positionx,positiony,positionz); return 1; } public OnPlayerDeath(playerid, killerid, reason) { SetPlayerPos(playerid,1182.7733,-1323.6193,13.5785); positionx = 1182.7733; positiony = -1323.6193; positionz = 13.5785; return 1; } Player(playerid) { new player[MAX_PLAYER_NAME]; GetPlayerName(playerid, player, sizeof(player)); return player; } FileStats(playerid) { new a[256]; format(a, sizeof(a), "%s.ini",udb_encode(Player(playerid))); return a; } SaveStats(playerid) { dini_IntSet(FileStats(playerid), "PositionX", floatround(positionx)); dini_IntSet(FileStats(playerid), "PositionY", floatround(positiony)); dini_IntSet(FileStats(playerid), "PositionZ", floatround(positionz)); } LoadStats(playerid) { positionx = dini_Int(FileStats(playerid), "PositionX"); positiony = dini_Int(FileStats(playerid), "PositionY"); positionz = dini_Int(FileStats(playerid), "PositionZ"); }
Here is the gf edit with full server included with my save position script.
Download From Here
http://discoveryweb.net/savepositiongf.zip
Here is the full working script with the included files.
Download From Here
http://discoveryweb.net/saveposition.zip
Tell me if you need any help or if the link is broken.
Saleh Yassin