16.04.2013, 19:13
Galera queria sу uma base de um /procurar [id] que fique acompanhando o player onde ele for, acho q isso seria o Chekpoint dele ficasse atualizando a cada 3 segundos ou mais.
Vlw
Vlw
#include <a_samp>
#include <a_zones>
#include <zcmd>
new Timer[MAX_PLAYERS];
forward Localizador(playerid, otherid);
public Localizador(playerid, otherid)
{
if(!IsPlayerConnected(otherid)) return KillTimer(Timer[playerid]);
new Float:x, Float:y, Float:z, Float:o_Distance, a[128], zone[MAX_ZONE_NAME];
GetPlayerPos(otherid, x, y, z);
o_Distance = GetPlayerDistanceFromPoint(playerid, x, y, z),
format(a, sizeof(a), "%s~n~Distвncia: %0.2f metros~n~Local: %s", PlayerName(otherid), o_Distance, GetPlayer2DZone(otherid, zone, MAX_ZONE_NAME));
GameTextForPlayer(playerid, a, 3000, 5);
return 1;
}
CMD:procurar(playerid, params[])
{
if(isnull(params)) return false;
new otherid = strval(params);
if(!IsPlayerConnected(otherid)) return false;
Timer[playerid] = SetTimerEx("Localizador", 1500, true, "dd", playerid, otherid);
return 1;
}
CMD:parar(playerid, params[])
{
#pragma unused params
KillTimer(Timer[playerid]);
return 1;
}
stock PlayerName(playerid)
{
new a[MAX_PLAYER_NAME];
GetPlayerName(playerid, a, MAX_PLAYER_NAME);
return a;
}
if(strcmp(cmd, "/procurar", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pEmprego] != 1)
{
SendClientMessage(playerid, COLOR_GREY, " Vocк nгo й Detetive !");
return 1;
}
if(UsedFind[playerid] != 0 && PlayerInfo[playerid][pDetSkill] < 401)
{
SendClientMessage(playerid, COLOR_GREY, " Vocк sу pode procurar novamente, daqui a 2 Minutos !");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "USE: /procurar [id]");
return 1;
}
giveplayerid = ReturnUser(tmp);
if(IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
if(giveplayerid == playerid) { SendClientMessage(playerid, COLOR_GREY, "Vocк nгo pode se procurar!"); return 1; }
new points;
new level = PlayerInfo[playerid][pDetSkill];
if(level >= 0 && level <= 50)
{ points = 4; }
else if(level >= 51 && level <= 100)
{ points = 6; }
else if(level >= 101 && level <= 200)
{ points = 8; }
else if(level >= 201 && level <= 400)
{ points = 10; }
else if(level >= 401)
{ points = 12; }
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
new Float:X,Float:Y,Float:Z;
GetPlayerPos(giveplayerid, X,Y,Z);
SetPlayerCheckpoint(playerid, X,Y,Z, 6);
FindTime[playerid] = 1;
FindTimePoints[playerid] = points;
PlayerInfo[playerid][pDetSkill] ++;
UsedFind[playerid] = 1;
if(PlayerInfo[playerid][pDetSkill] == 50)
{ SendClientMessage(playerid, COLOR_YELLOW, "* Seu nнvel de detetive agora й 2, Vocк pode procurar mais rбpido e encontrar mais rбpido."); }
else if(PlayerInfo[playerid][pDetSkill] == 100)
{ SendClientMessage(playerid, COLOR_YELLOW, "* Seu nнvel de detetive agora й 3, Vocк pode procurar mais rбpido e encontrar mais rбpido."); }
else if(PlayerInfo[playerid][pDetSkill] == 200)
{ SendClientMessage(playerid, COLOR_YELLOW, "* Seu nнvel de detetive agora й 4, Vocк pode procurar mais rбpido e encontrar mais rбpido."); }
else if(PlayerInfo[playerid][pDetSkill] == 400)
{ SendClientMessage(playerid, COLOR_YELLOW, "* Seu nнvel de detetive agora й 5, Vocк pode procurar mais rбpido e encontrar mais rбpido."); }
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " Esse nгo й um jogador ativo !");
}
}
return 1;
}