Please look at my work
#1

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;
}
Reply
#2

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
}
Reply
#3

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
Reply
#4

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
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)