LP and SP
#1

hello everyone i made a cmd for saving players current position and then teleporting them to those saved positions
here's the cmd

pawn Код:
CMD:sp(playerid,params[])
{
    #pragma unused params
    if(gPlayerInfo[playerid][LoggedIn] == 1 && gPlayerInfo[playerid][Level] >= 1)
    {
        new Float:x,Float:y,Float:z, interior, file[1000];
        GetPlayerPos(playerid,x,y,z);
        format(file, sizeof(file), PlayerFile);
        interior = GetPlayerInterior(playerid);

        dini_IntSet(file,"x",floatround(x));
        dini_IntSet(file,"y",floatround(y));
        dini_IntSet(file,"z",floatround(z));
        dini_IntSet(file,"interior",interior);
        dini_IntSet(file,"world", (GetPlayerVirtualWorld(playerid)));
        return SendClientMessage(playerid,COLOR_YELLOW,"~~ Coordinates of your position successfully saved! ~~");
    }
    else return SendClientMessage(playerid,red, "ERROR: You must be an administrator to use this command");
}
CMD:lp(playerid,params[])
{
    #pragma unused params
    if(gPlayerInfo[playerid][Level] >= 1)
    {
        new file[1000], Float:x, Float:y, Float:z;
        format(file, sizeof(file), PlayerFile);
        if (dini_Int(file, "x") != 0)
        {
            dini_Int(file, "x");
            dini_Int(file, "y");
            dini_Int(file, "z");
            SetPlayerPos(playerid,x,y,z);
            SetPlayerVirtualWorld(playerid, dini_Int(file, "world") );
            return SendClientMessage(playerid,COLOR_YELLOW,"~~ You have been teleported to your saved position ~~");
        }
        else return SendClientMessage(playerid,red,"ERROR: You not have a saved Position! (/gotoplace)");
    }
    else return SendClientMessage(playerid,red, "ERROR: You must be an administrator to use this command");
}
Reply
#2

Why did you post it here?
Reply
#3

i need hep it dosent works even in the file it dont save cords
Reply
#4

Jesus, a 1000 celled array ! !
What's the PlayerFile thing?
Reply
#5

it saves players thing all money level name ping score.......
Reply
#6

Where is PlayerFile defined?
Reply
#7

#define PlayerFile "CAdmin/Users/%s.ini"
Reply
#8

in that looks like

Код:
Name=[CB]CandyBoy
Ip=192.168.1.3
Registered=1
Registered On:=30/3/2013
Password=147849867
Level=5
Money=0
Score=0
x=0
y=0
z=0
interior=0
world=0
Last On:=30/3/2013
Reply
#9

Hmm take a look at this.
Код:
enum pInfo
{
    Float:pPosX,
    Float:pPosY,
    Float:pPosZ,
    Float:pPosA,
    pInterior,
    pVw
}
new PlayerInfo[MAX_PLAYERS][pInfo];
Код:
forward loadaccount_user(playerid, name[], value[]); 
public loadaccount_user(playerid, name[], value[])
{
	INI_Float("PositionX", PlayerInfo[playerid][pPosX]);
    INI_Float("PositionY", PlayerInfo[playerid][pPosY]);
    INI_Float("PositionZ", PlayerInfo[playerid][pPosZ]);
    INI_Float("Angle", PlayerInfo[playerid][pPosA]);
    INI_Int("Interior", PlayerInfo[playerid][pInterior]);
    INI_Int("VirtualWorld", PlayerInfo[playerid][pVw]);
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
	GetPlayerPos(playerid, PlayerInfo[playerid][pPosX],  PlayerInfo[playerid][pPosY], PlayerInfo[playerid][pPosZ]);
    GetPlayerFacingAngle(playerid, PlayerInfo[playerid][pPosA]);
	if(fexist(Path(playerid)))
	{
	    new INI:file = INI_Open(Path(playerid)); 
	    INI_SetTag(file,"Player's Data");
   	    INI_WriteFloat(file,"PositionX", PlayerInfo[playerid][pPosX]);
	    INI_WriteFloat(file,"PositionY", PlayerInfo[playerid][pPosY]);
	    INI_WriteFloat(file,"PositionZ", PlayerInfo[playerid][pPosZ]);
	    INI_WriteFloat(file,"Angle", PlayerInfo[playerid][pPosA]);
	    INI_WriteInt(file,"Interior", GetPlayerInterior(playerid));
	    INI_WriteInt(file,"VirtualWorld", GetPlayerVirtualWorld(playerid));
            return 1;
}

public OnPlayerSpawn(playerid)
{
	if (PlayerInfo[playerid][pPosX] != 0 && PlayerInfo[playerid][pPosY] != 0 && PlayerInfo[playerid][pPosZ] != 0)
    {
        SetPlayerPos(playerid, PlayerInfo[playerid][pPosX], PlayerInfo[playerid][pPosY], PlayerInfo[playerid][pPosZ]);
        SetPlayerFacingAngle(playerid, PlayerInfo[playerid][pPosA]);
        SetPlayerInterior(playerid, PlayerInfo[playerid][pInterior]);
        SetPlayerVirtualWorld(playerid, PlayerInfo[playerid][pVw]);
		return 1;
    }
    else
    {
        //Set normal pos here if they dont have acc
	}
    return 1;
}
Just make sure you make it that it will write the play pos on register.
Код:
INI_WriteFloat(file,"PositionX", 0);
		    INI_WriteFloat(file,"PositionY", 0);
		    INI_WriteFloat(file,"PositionZ", 0);
		    INI_WriteFloat(file,"Angle", 0);
		    INI_WriteInt(file,"Interior", 0);
		    INI_WriteInt(file,"VirtualWorld", 0);
Command example
Код:
CMD:gotpos(playerid, params[])
{
    if (PlayerInfo[playerid][pPosX] != 0 && PlayerInfo[playerid][pPosY] != 0 && PlayerInfo[playerid][pPosZ] != 0)
    {
        SetPlayerPos(playerid, PlayerInfo[playerid][pPosX], PlayerInfo[playerid][pPosY], PlayerInfo[playerid][pPosZ]);
        SetPlayerFacingAngle(playerid, PlayerInfo[playerid][pPosA]);
        SetPlayerInterior(playerid, PlayerInfo[playerid][pInterior]);
        SetPlayerVirtualWorld(playerid, PlayerInfo[playerid][pVw]);
    }
}

CMD:savepos(playerid, params[])
{
    	new INI:file = INI_Open(Path(playerid));
	    INI_SetTag(file,"Player's Data");
   		INI_WriteFloat(file,"PositionX", PlayerInfo[playerid][pPosX]);
	    INI_WriteFloat(file,"PositionY", PlayerInfo[playerid][pPosY]);
	    INI_WriteFloat(file,"PositionZ", PlayerInfo[playerid][pPosZ]);
	    INI_WriteFloat(file,"Angle", PlayerInfo[playerid][pPosA]);
	    INI_WriteInt(file,"Interior", GetPlayerInterior(playerid));
	    INI_WriteInt(file,"VirtualWorld", GetPlayerVirtualWorld(playerid));
	    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)