[CheckPoint]Cmd to find players
#4

That's obviously not what he's asking for...

If you're using a filterscript, OnFilterScriptInit, Gamemode, etc.

pawn Код:
#include <a_samp>
#include <zcmd>
#include <sscanf2>

new PlayerTracking[MAX_PLAYERS];

public OnFilterScriptInit() //Or OnGameModeInit() if you're using a gamemode.
{
    SetTimer("TrackPlayer", 2000, true);
    return 1;
}

public OnPlayerConnect(playerid)
{
    PlayerTracking[playerid] = -1; //-1 so it won't get mixed up with existant Player IDs.
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    for(new i = 0; i < MAX_PLAYERS; i++) //Alternatively, you can use foreach here, as it is more efficient.
    {
        if(IsPlayerConnected(i))
        {
            if(i != playerid)
            {
                if(PlayerTracking[i] == playerid)
                {
                    SendClientMessage(i, 0xFF0000FF, "The Player You Were Tracking Has Disconnected From The Server.");
                    PlayerTracking[i] = -1;
                }
            }
        }
    }
    return 1;
}

CMD:findp(playerid,params[])
{
    new id;
    if(sscanf(params,"u",playerid)) return SendClientMessage(playerid, 0xFF0000FF, "SYNTAX ERROR: {00FF00}/FINDP {FFFF00}<PlayerID>");
    if(id == playerid) return SendClientMessage(playerid, 0xFF0000FF, "You Can't Track Yourself!");
    if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000FF, "This Player Is Not Connected.");
    if(PlayerTracking[playerid] == id) return SendClientMessage(playerid, 0xFF0000FF, "You Are Already Tracking This Player!");
    new string[45];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(id, name, MAX_PLAYER_NAME);
    format(string,sizeof(string),"You Are Now Tracking %s (%d).",name, id);
    PlayerTracking[playerid] = id;
    return 1;
}

CMD:cancelfind(playerid,params[])
{
    if(PlayerTracking[playerid] == -1) return SendClientMessage(playerid, 0xFF0000FF, "You Are Not Tracking Anyone!");
    SendClientMessage(playerid, 0xFFFF00FF, "You Are No Longer Tracking A Player.");
    PlayerTracking[playerid] = -1;
    return 1;
}

public OnPlayerEnterCheckpoint(playerid)
{
    DisablePlayerCheckpoint(playerid);
    SendClientMessage(playerid, 0xFFFF00FF, "You Have Reached Your Tracked Player's Location.");
    PlayerTracking[playerid] = -1;
    return 1;
}

forward TrackPlayer(playerid);
public TrackPlayer(playerid)
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            if(PlayerTracking[i] != -1)
            {
                new Float:X, Float:Y, Float:Z;
                GetPlayerPos(PlayerTracking[i],X,Y,Z);
                DisablePlayerCheckpoint(i);
                SetPlayerCheckpoint(i, X, Y, Z, 5);
            }
        }
    }
    return 1;
}
This code SHOULD work. Note: Untested.
Foreach include is RECOMMENDED.
Reply


Messages In This Thread
[CheckPoint]Cmd to find players - by waim - 22.08.2012, 05:48
Re: [CheckPoint]Cmd to find players - by Arca - 22.08.2012, 06:25
Re: [CheckPoint]Cmd to find players - by ThePhenix - 22.08.2012, 06:57
Re: [CheckPoint]Cmd to find players - by clarencecuzz - 22.08.2012, 07:23
Re : [CheckPoint]Cmd to find players - by waim - 22.08.2012, 13:45
Re: [CheckPoint]Cmd to find players - by RedJohn - 22.08.2012, 16:01
Re: [CheckPoint]Cmd to find players - by clarencecuzz - 23.08.2012, 10:53

Forum Jump:


Users browsing this thread: 1 Guest(s)