Перейти к содержанию
Авторизация  
hteppl

Система GPS навигации.

Рекомендуемые сообщения

hteppl

Весьма удобная система GPS, с указанием дистанции до места назначения, с использованием TD.

 

Фото данной системы.

 

[spoiler=Cкриншот]kPZmne9.jpg

 

Для работоспособности данной системы, необходимо :

 

Ко всем переменным, добавляем

new PlayerText:GPSINFO,Text:GPSTD[4];

В public OnPlayerDisconnect(playerid, reason) добавляем

PlayerTextDrawDestroy(playerid,GPSINFO); 

В секундный таймер 

if(GetPVarInt(i,"GPS") == 1)
{
	new Float:p[3]; GetPlayerPos(i,p[0],p[1],p[2]);
	new str[144];
 	format(str,sizeof(str),"~y~Distance~n~~w~%.1f m",GetDistanceBetweenPoints(p[0], p[1], p[2], GetPVarFloat(i,"GPSX"), GetPVarFloat(i,"GPSY"), GetPVarFloat(i,"GPSZ")));
	PlayerTextDrawSetString(i,GPSINFO,str);
}

В public OnPlayerConnect(playerid) добавляем TD

GPSINFO = CreatePlayerTextDraw(playerid, 153.0000, 404.3750, "~Y~Error"); // nope
PlayerTextDrawLetterSize(playerid, GPSINFO, 0.1570, 0.8956);
PlayerTextDrawTextSize(playerid, GPSINFO, 229.0000, 0.0000);
PlayerTextDrawAlignment(playerid, GPSINFO, 1);
PlayerTextDrawColor(playerid, GPSINFO, -1);
PlayerTextDrawUseBox(playerid, GPSINFO, 1);
PlayerTextDrawBoxColor(playerid, GPSINFO, 524025600);
PlayerTextDrawSetOutline(playerid, GPSINFO, 0);
PlayerTextDrawBackgroundColor(playerid, GPSINFO, 255);
PlayerTextDrawFont(playerid, GPSINFO, 2);
PlayerTextDrawSetProportional(playerid, GPSINFO, 1);
PlayerTextDrawSetShadow(playerid, GPSINFO, 0);

К всем глобальным текстдравам

GPSTD[0] = TextDrawCreate(123.5000, 395.9624, "ld_beat:chit"); // nope
TextDrawLetterSize(GPSTD[0], 0.0000, 0.0000);
TextDrawTextSize(GPSTD[0], 34.0000, 35.0000);
TextDrawAlignment(GPSTD[0], 1);
TextDrawColor(GPSTD[0], 186596351);
TextDrawSetOutline(GPSTD[0], 0);
TextDrawBackgroundColor(GPSTD[0], 255);
TextDrawFont(GPSTD[0], 4);
TextDrawSetProportional(GPSTD[0], 0);
TextDrawSetShadow(GPSTD[0], 0);

GPSTD[1] = TextDrawCreate(202.5000, 395.9624, "ld_beat:chit"); // nope
TextDrawLetterSize(GPSTD[1], 0.0000, 0.0000);
TextDrawTextSize(GPSTD[1], 34.0000, 35.0000);
TextDrawAlignment(GPSTD[1], 1);
TextDrawColor(GPSTD[1], 186596351);
TextDrawSetOutline(GPSTD[1], 0);
TextDrawBackgroundColor(GPSTD[1], 255);
TextDrawFont(GPSTD[1], 4);
TextDrawSetProportional(GPSTD[1], 0);
TextDrawSetShadow(GPSTD[1], 0);

GPSTD[2] = TextDrawCreate(140.0000, 401.3125, "LD_SPAC:white"); // nope
TextDrawLetterSize(GPSTD[2], 0.0000, 0.0000);
TextDrawTextSize(GPSTD[2], 81.0000, 23.7599);
TextDrawAlignment(GPSTD[2], 1);
TextDrawColor(GPSTD[2], 186596351);
TextDrawSetOutline(GPSTD[2], 0);
TextDrawBackgroundColor(GPSTD[2], 255);
TextDrawFont(GPSTD[2], 4);
TextDrawSetProportional(GPSTD[2], 0);
TextDrawSetShadow(GPSTD[2], 0);

GPSTD[3] = TextDrawCreate(130.0000, 402.5249, "hud:radar_waypoint"); // nope
TextDrawLetterSize(GPSTD[3], 0.0000, 0.0000);
TextDrawTextSize(GPSTD[3], 21.0000, 21.0000);
TextDrawAlignment(GPSTD[3], 1);
TextDrawColor(GPSTD[3], -1);
TextDrawSetOutline(GPSTD[3], 0);
TextDrawBackgroundColor(GPSTD[3], 255);
TextDrawFont(GPSTD[3], 4);
TextDrawSetProportional(GPSTD[3], 0);
TextDrawSetShadow(GPSTD[3], 0);

В конец мода

stock Float:GetDistanceBetweenPoints(Float:X, Float:Y, Float:Z, Float:PointX, Float:PointY, Float:PointZ)
{
	new Float:Distance;Distance = floatabs(floatsub(X, PointX)) + floatabs(floatsub(Y, PointY)) + floatabs(floatsub(Z, PointZ));
	return Distance;
}
stock GPS(playerid, Float:x, Float:y, Float:z,NameSTR[])
{
    new str[144];
    if(GetPVarInt(playerid,"GPS") == 1) RemovePlayerMapIcon(playerid, 99);
    SetPlayerMapIcon(playerid, 99, x, y, z, 19, 0, MAPICON_GLOBAL);
    new Float:p[3]; GetPlayerPos(playerid,p[0],p[1],p[2]);
    format(str,sizeof(str),"{FFFFFF}Место назначение {FFFFFF}%s{FFFFFF}. Расстояние до место назначение {FFFFFF}%.1f м.(красный флажок)",NameSTR,GetDistanceBetweenPoints(p[0], p[1], p[2], x, y, z));
    SendClientMessage(playerid,-1,str);
    PlayerPlaySound(playerid, 1085, 0.0, 0.0, 0.0);
    SetPVarInt(playerid,"GPS",1);
    SetPVarInt(playerid,"GPS_AREA",CreateDynamicSphere(x, y, z, 10.0, 0, 0, -1));
    SetPVarFloat(playerid,"GPSX",x);
    SetPVarFloat(playerid,"GPSY",y);
    SetPVarFloat(playerid,"GPSZ",z);
    format(str,sizeof(str),"~y~Distance~n~~w~%.1f m",GetDistanceBetweenPoints(p[0], p[1], p[2], x, y, z));
    PlayerTextDrawSetString(playerid,GPSINFO,str);
    for(new i; i < sizeof(GPSTD); i++) TextDrawShowForPlayer(playerid,GPSTD[i]);
    PlayerTextDrawShow(playerid,GPSINFO);
    return true;
}
stock UNGPS(playerid)
{
    if(GetPVarInt(playerid,"GPS") == 1)
    {
        DestroyDynamicArea(GetPVarInt(playerid,"GPS_AREA"));
        DeletePVar(playerid,"GPS_AREA");
        RemovePlayerMapIcon(playerid, 99);
        SetPVarInt(playerid,"GPS",0);
        DeletePVar(playerid,"GPSX");
        DeletePVar(playerid,"GPSY");
        DeletePVar(playerid,"GPSZ");
	for(new i; i < sizeof(GPSTD); i++) TextDrawHideForPlayer(playerid,GPSTD[i]);
	PlayerTextDrawHide(playerid,GPSINFO);
    }
    return true;
}

Автор данной системы и TD : -WorcOut-

  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
HDMIusbi

Мне ошибки выдаёт :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Sasha_Zemlyanoy

Мне тоже

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Smolin

@HDMIusbi и @Sasha_Zemlyanoy, вангую - массив неизвестен ? Или аргументы не совпадают ? 

 

Ошибки в студию .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.