Форум работает в тестовом режиме. Все данные были перенесены со старого сайта 2018 года. Некоторая информация может быть недоступна, например вложения или хайды. Просьба сообщать о данных случаях через функционал "Жалоба", прямо под постом, где отсуствуют данные из хайда или проблемы с вложением.
Могут быть проблемы в "выкидыванием" с форума (слетевшей авторизацией). Нужно собрать статистику таких случаев.
Есть Тема, куда можете сообщить о проблемах с сайтом либо просто передать привет.

gps.dat

Рег
1 Ноя 2015
Сообщения
83
Реакции
0
Собственно в последних версиях появился файлик gps.dat но никакой инфы по этому поводу не нашел, может кто подскажет какой функционал добавился и как его использовать?
 
Вот что писал Ivanius на л2бот форуме:

Очень часто поступает вопрос о том, как перемещаться с помощью встроенного GPS?

Для начала общая логика: есть некая база маршрутов (есть дефолтная qpath.db3, но вы так же можете делать свои маршруты), если ее загрузить, то можно бегать автоматически в любую точку. Adrenalin сам будет рассчитывать оптимальный путь, исходя из текущего месторасположения.

Таким образом:
1. Загружаем базу в начале скрипта (1 раз) командой:

function LoadBase(const FilePath: String): Integer; // Загрузка базы GPS
Gps.LoadBase(exepath+'\qpath.db3'); // Либо название своей базы

2. Используем готовую функцию движения, приведенную ниже, либо пишем свою по аналогии:

function gps_moveto(x, y, z: integer): boolean; // GPS движение
var dist: integer; i: integer;
begin
dist:= trunc(GPS.GetPath((user.x), (user.y), (user.z), (x), (y), (z)));
engine.msg('[gps_moveto]',format('Бегу в точку %d (x=%d y=%d z=%d), дистанция: %d м',[i,x,y,z,dist]), 4210752);
if (GPS.count > 0) then
begin
for i:= 0 to GPS.count-1 do
begin
{engine.msg('[gps_moveto]',format('Бегу в точку %d (x=%d y=%d z=%d), дистанция: %d м',
[i,trunc(GPS.items(i).x), trunc(GPS.items(i).y), trunc(GPS.items(i).z),Distance(trunc(GPS.items(i).x), trunc(GPS.items(i).y), trunc(GPS.items(i).z),(user.x), (user.y), (user.z))]), 4210752);}
if not Engine.MoveTo(trunc(GPS.items(i).x), trunc(GPS.items(i).y), trunc(GPS.items(i).z)) then
begin
engine.msg('[gps_moveto]',format('Ошибка при движении в точку № %d : (%d, %d, %d)',[i,trunc(GPS.items(i).x), trunc(GPS.items(i).y), trunc(GPS.items(i).z)]), 222);
result:= false;
break;
end;
end;
result:= Engine.MoveTo(x, y, z) or (user.distto(x, y, z) < 150);
end
else engine.msg('[gps_moveto]','Не смог найти нужный маршрут', 128);
end;

Все вместе выглядеть это будет примерно следующим образом:
Код:
begin
Gps.LoadBase(exepath+'\qpath.db3');
// code...
gps_moveto(25200, 10680, 827); // Бежать в указанную точку с помощью GPS
end.
 
кто с ним разобрался, и может помочь?)
 
Чет не вкурил. Да особо и не вникал.
Кто-нибудь пользуется? Дайте пример. Чтоб ориентироваться понятнее стало ;)
 
А что вернет функция, если точек нету в базе?
 
Назад
Сверху