Ко всем new:
Код
new Float: GpsX [MAX_PLAYERS];
new Float: GpsY [MAX_PLAYERS];
new Float: GpsZ [MAX_PLAYERS];
new GpsEn[MAX_PLAYERS];
В OnPlayerConnect(playerid):
Код
GpsX[playerid] = 0.0;
GpsY[playerid] = 0.0;
GpsZ[playerid] = 0.0;
GpsEn[playerid] = 0;
Давайте добавим команду для выбора локации:
Код
if (strcmp(cmd, "/locate", true) == 0)
{
ShowPlayerDialog(playerid,9991,DIALOG_STYLE_LIST,"Локации","Дальнобой\nСвалка","Ок","Выйти"); // И далее новые пункты через \n (не забудьте добавить в диалог)
return 1;
}
Добавим в OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) новый диалог:
Код
if(dialogid == 9991)
{
if(response)
{
if(listitem == 0) SetGPSMarker(playerid,-78.6058,-1128.4846,1.0781,51); // Дальнобой
if(listitem == 1) SetGPSMarker(playerid,2185.7227,-1982.4310,13.5514); // Свалка
// listitem == 2 и т.д.
}
}
Добавим stock:
Код
stock SetGPSMarker(playerid,Float:x, Float:y, Float:z, icon = 53)
{
RemovePlayerMapIcon(playerid, 56 );
SetPlayerMapIcon( playerid, 56, x, y, z, icon, 0, MAPICON_GLOBAL );
GpsX[playerid] = x;
GpsY[playerid] = y;
GpsZ[playerid] = z;
GpsEn[playerid] = 1;
}
stock RemoveGPSMarker(playerid)
{
RemovePlayerMapIcon(playerid, 56 );
GpsX[playerid] = 0.0;
GpsY[playerid] = 0.0;
GpsZ[playerid] = 0.0;
GpsEn[playerid] = 0;
}
В любой таймер поставьте:
Код
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerInRangeOfPoint(i, 40.0, GpsX[i],GpsY[i],GpsZ[i]) && GpsEn[i] == 1)
{
RemoveGPSMarker(i);
}
}
Или
Код
if(IsPlayerInRangeOfPoint(playerid, 40.0, GpsX[playerid],GpsY[playerid],GpsZ[playerid]) && GpsEn[playerid] == 1)
{
RemoveGPSMarker(playerid);
}
Как добавлять:
Новая точка
Код
SetGPSMarker(playerid,Float:x, Float:y, Float:z, icon (не обязательно))
playerid - ID игрока для которого точка.
Float:x, Float:y, Float:z - Координаты точки.
icon - По стандарту всегда стоит иконка 53, чтобы поставить свою, просто введите свой ID иконки.
После того как вы подъехали к иконке, она пропадет.
Автор:ZioHik
Специально для www.SAMP-TEAM.com