Перейти к содержимому

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

Всем привет.

Представляю вам программу для почти полного управления дроном. 

Но сначала короткая предыстория:

Скрытый текст

Изучение этого мода я начал с дронов, а вернее - гриф дронами, ещё на версии 1.5. Тогда я использовал программу товарища @Litvinov, и она казалась мне очень удобная. Вот она, если что: 

На самом деле и моя программа нагло скопирована вдохновлена ей(Было ещё пару тем, которые помогли с идеями), поэтому в ней можно найти много чего общего(Программа больше похожа на обновлённую версию программы @Litvinov'а)

 

Из возможностей отмечу следующее:

  • Перемещение по сторонам света без улучшения "Навигация"(Спасибо версии OC 1.7.3)
  • Возвращение дрона к управляющему планшету(Компьютеру)
  • Удалённый интерпретатор
  • Привязка дрона к управляющему планшету(Почти полная невозможность угона)
  • Красивый Динамичный интерфейс(Отображение заряда планшета, время, заряд дрона, уровень сигнала)
     

Остальные функции можно найти в программе или в скриншотах.
 

Установка:

На планшет (Для обладателей интернет-карт): 

pastebin get 8eEpZtdi drc.lua

 

Для дрона (Для обладателей интернет карт):

pastebin get vt7biZzP drc.lua && flash -q drc.lua drc.lua

После вынимаем биос и вставляем в дрона.

 

Первый запуск:
Первый запуск сопровождается привязкой дрона к порту(Порт можно увидеть открыв дрона) и адресу беспроводной карты. Из-за этого возможность угнать дрона стремится к нулю, так как для первичной настройки нужно стоять не дальше 3 блоков от дрона. 

Пишем:

drc <порт дрона>

После этого дрона невозможно угнать, если рядом никого не было и он не мог подслушать сообщение(Перезагрузка привязку не ломает)
 

Пара скриншотов:

Скрытый текст

zXUEXgx.png
i6UM4Az.png


Видео:
 

Скрытый текст

 

 


P.S Процент справа от шкалы сигнала обозначает не силу сигнала, а мощность передатчиков на планшете с дроном(поэтому для корректной работы нужны одинаковые карты беспроводной сети)


В общем на это всё, дань уважения дронам выполнена, теперь могу спать спокойно.

Изменено пользователем BrightYC

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


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

Какая точность при наведении на игрока? Будет ли тупить, если игрок стоит строго на оси Z?

Помню, надо было делать двойную проверку при триангуляции, либо добавлять еще точки для замера, чтобы дрон не пролетал мимо.

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


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

@BrightYC Интерфейс выглядит приятно. Но для полного счастья не хватает односимвольного режима экрана для максимально открытого обзора летающего дрона.

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


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

@BrightYC А что делает знак подчёркивания в этой строке function ds()sn("PING")_,dtu=lm(3)return dtu or 0 end кода дрона?

 

Рекурсию в функции gtu предлагаю заменить на цикл repeat-until

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


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, eu_tomat сказал:

не хватает односимвольного режима экрана для максимально открытого обзора летающего дрона.

 

@BrightYC  простенький код  в довесок к твоему

local full = false
local x_max, y_max = gpu.maxResolution()

[44] = function() full = not full if full then gpu.setResolution(1, 1) else gpu.setResolution(x_max,y_max) info() end end,
-- 44 = кнопка Z

 

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


Ссылка на сообщение
Поделиться на других сайтах
7 часов назад, Doob сказал:

Какая точность при наведении на игрока? Будет ли тупить, если игрок стоит строго на оси Z?

Помню, надо было делать двойную проверку при триангуляции, либо добавлять еще точки для замера, чтобы дрон не пролетал мимо.

Всё нормально, если расстояние до игрока изменилось с момента старта - всё начинается заново, так что дрон не промахивается, даже на огромных расстояниях погрешность пару блоков.

6 часов назад, eu_tomat сказал:

@BrightYC А что делает знак подчёркивания в этой строке function ds()sn("PING")_,dtu=lm(3)return dtu or 0 end кода дрона?

 

Рекурсию в функции gtu предлагаю заменить на цикл repeat-until

_, dtu пропускает первый аргумент со строкой модема, в lm() видно код. А что не так с рекурсией? Экономит место, по крайней мере я проблемы не вижу.

return dt[3],dt[5],dt[6],dt[7],dt[8],dt[9]

 

6 часов назад, eu_tomat сказал:

@BrightYC Интерфейс выглядит приятно. Но для полного счастья не хватает односимвольного режима экрана для максимально открытого обзора летающего дрона.

Так он есть же, я не обновил программу? Возможно я немного поторопился с заливанием программы.

4 часа назад, serafim сказал:

 

@BrightYC  простенький код  в довесок к твоему


local full = false
local x_max, y_max = gpu.maxResolution()

[44] = function() full = not full if full then gpu.setResolution(1, 1) else gpu.setResolution(x_max,y_max) info() end end,
-- 44 = кнопка Z

 

Ну, кнопка 'z' уже занята, да и односимвольный режим включается по кнопке 'm', но спасибо. Вот кстати код, если кто не заметил:

[50] = function() if not stuff.hide then stuff.hide = true event.cancel(battery_timer) event.cancel(clock_timer) event.cancel(data_timer) gpu.setBackground(color.black) gpu.set(1, 1, " ") gpu.setResolution(1, 1) else stuff.hide = false battery_timer = event.timer(5, battery, math.huge) clock_timer = event.timer(60, clock, math.huge) data_timer = event.timer(20, update_data, math.huge) gpu.setResolution(80, 25) draw_gui() first_launch() end end

Длинновато, да.

Изменено пользователем BrightYC

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


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

Вот односимвольный режим, если спутало 'Увеличить/Уменьшить размер экрана'
 

Скрытый текст

3hX9bPx.png

 

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


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

Может мне кто-то объяснить, почему иногда tablet.getYaw() выдаёт отрицательный значения, а иногда - положительные. Что за ерунда? 

P.S Уже не важно, связано было с определением стороны взгляда 

 

Изменено пользователем BrightYC

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


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

@Doob Специально для тебя записал видео с тестом:
 

Скрытый текст

 

 


P.S Даже на расстоянии в 400 блоков точность отменная.

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


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, whiskas сказал:

вот бы дронам чанклодер)

Ты про возвращение то? Даа, без чанклодера тоскливо. 100-150 блоков и всё, дрон не работает.

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


Ссылка на сообщение
Поделиться на других сайтах
16 часов назад, BrightYC сказал:

Даже на расстоянии в 400 блоков точность отменная.

Нет, если дрон и передатчик находятся на оси Z, то при команде на возвращение, дрон входит в бесконечный цикл пингования.

Еще в подсказке некоторые пункты перепутаны.

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


Ссылка на сообщение
Поделиться на других сайтах
15 часов назад, Doob сказал:

Нет, если дрон и передатчик находятся на оси Z, то при команде на возвращение, дрон входит в бесконечный цикл пингования.

Еще в подсказке некоторые пункты перепутаны.

Проверил, всё работает штатно. 

А в подсказке что напутано? Если ты про видео - там действительно напутано.

P.S Я вставал прямо по оси Z, дрон спокойно прилетал домой, почему он должен входить в бесконечный цикл?

UPD: Не забывай про то, что по стандарту у модема 20% мощности. Возможно ты слишком далеко отлетел, дрон просто не может принять сообщение, увеличь мощность модема. Если не сложно, можешь поподробнее объяснить как и где это происходит? 

Изменено пользователем BrightYC

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


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

Значит, срабатывает в исключительных случаях, когда дрон не сдвигается на достаточное расстояние для ошибки при округлении. У меня получилось воспроизвести только два раза, оба раза лечилось перезагрузкой мира.

11 час назад, BrightYC сказал:

А в подсказке что напутано?

Например, E не возвращает дрона домой.

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


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Doob сказал:

Например, E не возвращает дрона домой.

упс, у меня клавиши на клавиатуре перепутаны=d

1 час назад, Doob сказал:

Значит, срабатывает в исключительных случаях, когда дрон не сдвигается на достаточное расстояние для ошибки при округлении. У меня получилось воспроизвести только два раза, оба раза лечилось перезагрузкой мира.

Я не смог отловить за всё время использования на 2 разных версиях игры на разных картах такие странные баги.

 

P.S Подсказку починил, возвращение домой на 'T', а 'E' - обновить данные

 

Изменено пользователем BrightYC

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


Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, BrightYC сказал:

P.S Подсказку починил, возвращение домой на 'T', а 'E' - обновить данные

клавиши лучше назначить так (по смыслу рядом или от первой буквы того, что они делают ):
h (home) домой

c (колор) цвет

u (update)- обновить данные какие-то(а лучше все сразу)
t / y - взять/положить

q - вых

i - инвентарь

wasd - движение

...
и тп.
 

Так проще будет запомнить.
 

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


Ссылка на сообщение
Поделиться на других сайтах
9 часов назад, Alex сказал:

клавиши лучше назначить так (по смыслу рядом или от первой буквы того, что они делают ):
h (home) домой

c (колор) цвет

u (update)- обновить данные какие-то(а лучше все сразу)
t / y - взять/положить

q - вых

i - инвентарь

wasd - движение

...
и тп.
 

Так проще будет запомнить.
 

Запомнить может и проще, но тянуть руки на другую часть клавиатуры-перебор. Основные функции постарался уместить рядом с WASD, 

чтобы было проще.

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


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

Небольшое обновление(Абсолютный контроль над дроном):

 

Доделал интерпретатор, теперь почти неотличим от оригинала. Теперь не нужно писать return чтобы вернуть значение, а так же появилось две функции - sleep() и print().
1 помогает прекратить код через CTRL+D при исполнении, 2 поможет вернуть значение в работающем коде:

Скрытый текст

d1vl7Wn.png

Так же добавил утилиту net(*клик*) для того, чтобы загрузить программу на дрона. То есть, можно запустить любую программу командой 

net <program_name>

 И она сию минуту загрузится на дрон:

 

Скрытый текст

B2CTD1t.png

Установка:

pastebin get gF4URgfn net.lua

 

P.S Так же ещё много мелких правок, но это не суть важно. Так же упёрся в лимит по памяти, но я думаю это уже неважно =d
P.P.S В интерпретаторе есть функция 'clear' - если её написать, терминал очистится(как неожиданно, правда?)

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...