Please look at my work -
YungGee - 16.02.2011
Please look at my work its my first time with dini and it compiles im not sure if will work and i cant test it.
I want it to save the position when they logout and then set them back when they connect.
basically the relog where they logged out.
Please look though see if i made a mistake of if i can better it please
pawn Код:
#include <a_samp>
#include <dini>
new Float:pX, Float:pY, Float:pZ;
new Float:SetPosX[MAX_PLAYERS];
new Float:SetPosY[MAX_PLAYERS];
new Float:SetPosZ[MAX_PLAYERS];
new bool:FirstLog[MAX_PLAYERS];
enum LogInfo
{
LogX,
LogY,
LogZ
};
new pInfo[MAX_PLAYERS][LogInfo];
public OnPlayerConnect(playerid)
{
FirstLog[playerid] = true;
if(!dini_Exists("LogPos/%s.veh"))//Dont look right :S
{
new dateiname[MAX_PLAYER_NAME+4];
new playername[MAX_PLAYER_NAME];
new var[256];
GetPlayerName(playerid, playername, sizeof(playername));
format(dateiname, sizeof(dateiname), "LogPos/%s.veh", playername);
new File: LogFile = fopen(dateiname, io_write);
format(var, 256, "LogX=0\n", pInfo[playerid][LogX]); fwrite(LogFile, var);
format(var, 256, "LogY=0\n", pInfo[playerid][LogY]); fwrite(LogFile, var);
format(var, 256, "LogZ=0\n", pInfo[playerid][LogZ]); fwrite(LogFile, var);
fclose(LogFile);
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
new dateiname[MAX_PLAYER_NAME+4];
new playername[MAX_PLAYER_NAME];
new var[256];
GetPlayerName(playerid, playername, sizeof(playername));
if(!dini_Exists("LogPos/%s.ini"))//Dont look right :S
{
format(dateiname, sizeof(dateiname), "LogPos/%s.ini", playername);
new File: LogFile = fopen(dateiname, io_write);
format(var, 256, "LogX=0\n", pInfo[playerid][LogX]); fwrite(LogFile, var);
format(var, 256, "LogY=0\n", pInfo[playerid][LogY]); fwrite(LogFile, var);
format(var, 256, "LogZ=0\n", pInfo[playerid][LogZ]); fwrite(LogFile, var);
fclose(LogFile);
}
if(dini_Exists("LogPos/%s.txt"))//Dont look right :S
{
GetPlayerPos(playerid, pX, pY, pZ);
format(dateiname, sizeof(dateiname), "LogPos/%s.ini", playername);
new File: LogFile = fopen(dateiname, io_write);
format(var, 256, "LogX=%i\n", pX); fwrite(LogFile, var);
format(var, 256, "LogY=%i\n", pY); fwrite(LogFile, var);
format(var, 256, "LogZ=%i\n", pZ); fwrite(LogFile, var);
fclose(LogFile);
}
return 1;
}
public OnPlayerSpawn(playerid)
{
if(FirstLog[playerid] == true)
{
if(dini_Exists("LogPos/%s.txt"))//Dont look right :S
{
SetPosX[playerid] = pInfo[playerid][LogX];
SetPosY[playerid] = pInfo[playerid][LogY];
SetPosZ[playerid] = pInfo[playerid][LogZ];
}
SetPlayerPos(playerid,SetPosX[playerid],SetPosY[playerid],SetPosZ[playerid]);
FirstLog[playerid] = false;
}
return 1;
}
Re: Please look at my work -
park4bmx - 16.02.2011
you need to get the player name from the saved file to check if it Exists
SO EXAMPLE
pawn Код:
new file[128], string[128];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(file,sizeof(file),"......%s.ini",name);
if(!fexist(file)) //This is if it doesnt Exists
{
//And so on with ur script
}
Re: Please look at my work -
YungGee - 16.02.2011
Thanks
May you look at this does it look right?
pawn Код:
#include <a_samp>
#include <dini>
#define FILTERSCRIPT
enum LogInfo
{
LogX,
LogY,
LogZ
};
new pInfo[MAX_PLAYERS][LogInfo];
new Float:pX, Float:pY, Float:pZ;
new Float:SetPosX[MAX_PLAYERS];
new Float:SetPosY[MAX_PLAYERS];
new Float:SetPosZ[MAX_PLAYERS];
new bool:FirstLog[MAX_PLAYERS];
public OnFilterScriptInit()
{
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
public OnPlayerConnect(playerid)
{
FirstLog[playerid] = true;
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
new dateiname[MAX_PLAYER_NAME+4];
new playername[MAX_PLAYER_NAME];
new var[256];
new file[128];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(file,sizeof(file),"LogPos/%s.ini",name);
if(!fexist(file))
{
GetPlayerPos(playerid, pX, pY, pZ);
pX = pInfo[playerid][LogX];
pY = pInfo[playerid][LogY];
pZ = pInfo[playerid][LogZ];
format(dateiname, sizeof(dateiname), "LogPos/%s.ini", playername);
new File: LogFile = fopen(dateiname, io_write);
format(var, 256, "LogX=%i\n", pX); fwrite(LogFile, var);
format(var, 256, "LogY=%i\n", pY); fwrite(LogFile, var);
format(var, 256, "LogZ=%i\n", pZ); fwrite(LogFile, var);
fclose(LogFile);
}
format(file,sizeof(file),"LogPos/%s.ini",name);
if(fexist(file))
{
GetPlayerPos(playerid, pX, pY, pZ);
pX = pInfo[playerid][LogX];
pY = pInfo[playerid][LogY];
pZ = pInfo[playerid][LogZ];
format(dateiname, sizeof(dateiname), "LogPos/%s.ini", playername);
new File: LogFile = fopen(dateiname, io_write);
format(var, 256, "LogX=%i\n", pX); fwrite(LogFile, var);
format(var, 256, "LogY=%i\n", pY); fwrite(LogFile, var);
format(var, 256, "LogZ=%i\n", pZ); fwrite(LogFile, var);
fclose(LogFile);
}
return 1;
}
public OnPlayerSpawn(playerid)
{
new file[128];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(file,sizeof(file),"LogPos/%s.ini",name);
if(FirstLog[playerid] == true)
{
if(fexist(file))
{
SetPosX[playerid] = pInfo[playerid][LogX];
SetPosY[playerid] = pInfo[playerid][LogY];
SetPosZ[playerid] = pInfo[playerid][LogZ];
SetPlayerPos(playerid,SetPosX[playerid],SetPosY[playerid],SetPosZ[playerid]);
FirstLog[playerid] = false;
}
}
return 1;
}
EDIT:
Tested it dont even save the pos on disconnect :S
Help plz
Re: Please look at my work -
park4bmx - 16.02.2011
where you have
pawn Код:
pX = pInfo[playerid][LogX];
pY = pInfo[playerid][LogY];
pZ = pInfo[playerid][LogZ];
Change to this
pawn Код:
pInfo[playerid][LogX] = pX;
pInfo[playerid][LogY] = PY;
pInfo[playerid][LogZ] = pZ;
you can take al look at my SYSTEM to see how i did it, i used DINI