Как обычно запутался в элементарном. Мне нужно чтобы значение из одного датарефа в реальном времени переводилось в значение другого с оговоркой что один градусы с минусами считает другой по кругу. Хочу что-бы psi головы следило за скольжением взглядом. как это в LUA ?
p.s. первая часть это предусмотрительное отключение того что ниже будет слайдером
начал так а вот вторая функция я встрял — мозг дым жара
defineProperty(«slip»,globalPropertyf(«sim/cockpit2/gauges/indicators/sideslip_degrees»))
defineProperty(«head»,globalPropertyf(«sim/graphics/view/pilots_head_psi»))
defineProperty(«off»,globalPropertyi(«sim/cockpit2/switches/custom_slider_on[17]»))
function update()
if get(off) ~= 0 then
head_control()
end
end
function head_control()
????????????????
end
Помогите зануды ))
Пока сделал нервного пилота — рывками головой крутит, чего нет никого кто в теме? Или продавцы не скажут — покупатели не знают? Опять гуглить придётся )))
А пилот — землянин?
Нет, но он тоже нервный )) Короче сделал я его изначально дёрганным, потом нервно озирающимся, а вот теперь жду может Михаааа! Ау. Подскажи мантру на LUA чтобы он у меня головой крутил в сторону скольжения синхронно. мне до 90 +- нужно, так-как я скользить боком люблю ) А поворачивать самому голову не
охота. Возможны варианты. Например обычно человек чует что началось скольжение поворачивает голову в ту сторону а потом опять возвращает её. Я всё равно
додумаю — расшевелить авсим просто охото…
Да я не совсем понял, что тебе надо, диапазон -180..180 в 0..360 перевести? Ну так если значение положительное, пишешь как есть, а если отрицательное, то 180-значение
Upd: Тьфу! То есть 360+значение. Вообще, мог бы и пораньше спросить, а не дожидаться, пока у меня час ночи пробьет.
Сообщение отредактировано mxkv67: 21 June 2016 — 20:05
Тебе не 120 лет чтоб спать со спокойными ночами ложиться )) Шучу. Вот мой вариант припадочной головы
Так пойдет?
function head_control()
if get(slip < 0) then set(head, 360+slip) else set(head, slip)
end
Браво. Я проверю сейчас и отвечу что получилось.
Не работает, ошибок нет. Просто что-то не додумано. Смысл мне уже ясен, можно пробовать метод тыка в этом твоём ключе,но что-то пока не так. Ноль реакции на скольжение
Тут интерполяция нужна. Я бы написал что-то типа такого:
function interpolate(x, xmin, xmax, ymin, ymax)
if x< xmin then
return ymin
end
if x> xmax then
return ymax
end
return ymin + (x-xmin)/(xmax — xmin)*(ymax — ymin)
end
function head_control()
if (slip<0) then
return interpolate(slip, 0, -30, 360, 330)
end
if (slip>0) then
return interpolate(slip, 0, 30, 0, 25)
end
end
P.S. Это навскидку, нужно подумать будет ли правильно работать в отрицательных диапазонах и подхачить если что.
Сообщение отредактировано Maxxe: 21 June 2016 — 23:45
Отправлено с моего HTC6525LVW через Tapatalk
Я попробую, подскажу. Пока я чуть чуть поджёг свои мозги. Оно как заколдованное, не хочет. Причём я уже не уверен что это ошибки наши а не симулятора версии b2 . Всё равно спасибо за намёк, с интерполяцией пробовал но по другому. Сейчас твой метод прикину — подскажу.
Не не работае
Не не работает, потом and пока внизу не поставишь он не будет работать, в серединах не работает с and. Назову это прилично — не удобная архитектура )
А второе голова то где? head? оно у тебя интерполирует скольжение ну круто а нафига )) ? Надо додумать немного. У меня работает вот это безумие
[spoilerdefineProperty(«slip»,globalPropertyf(«sim/cockpit2/gauges/indicators/sideslip_degrees»))
end][/spoiler]
и я уже начал находить его полезным, правда голова как у совы — тупил тупил развернул рывком ))
Я пока не понял, что нужно получить
Если вертеть голову пилота пропорционально скольжению — то приравнять скольжению, умноженному на коэффициент по вкусу.
Если хочется ступеньчато, но не сильно резко, можно добавить сглаживание.
Сообщение отредактировано skyteacher: 22 June 2016 — 02:05
Распишу наверное, коль я правильно понял задачу.
Если просто привязать скольжение к повороту головы, то получится:
Сообщение отредактировано skyteacher: 22 June 2016 — 03:47
УУУ. Вот заразили же
Попробовал таки в симе. Вылезли еще баги, напрямую не связанные — Не включался внешний вид и не крутилась голова мышей. А также при переходе с внешнего вида (после исправления) голова повернута на 180 назад. Особо не вникал почему. А после правки мыши в крайней верхней и нижних точках обзора дрожал вид.
Пришлось дополнять костылями:
Сообщение отредактировано skyteacher: 22 June 2016 — 06:03
Не включается внешний вид — это, типа, фича. На самом деле при прописывании поворота головы принудительно включается внутренний вид, по этому перед тем как прописать надо посмотреть какой сейчас вид и если внешний, то после прописывания восстановить.
Последний твой код работает блистательно! , я его немного усложнил кнопкой отключения, но меня Михаила сообщение настораживает.
Согласись в полёте с ним чувствуешь себя живым? Так вот! Я думаю тема не помешает здесь подобная. Назвать типа «кривокодеры идут на помощь» )))
Вообще спасибо всем, по ситуации рабочий у skyteacher 1 место
рабочий с функцией голова — сова Sergey747 2 место
гениальный, но не рабочий Михаил и Маxx разделят почётное третье место если щас не выдас ко-то шедевр
Пожелание убрать реакцию на кнопки Q E клавиатуры так — как они залипают при активации кода
Да я LUA и скриптовые языки практически не знаю (но догадываюсь, что если хочешь, чтоб функция посередине закончилась, надо ставить «return», а не «end»
), мне и третье место, считай, халява 
Про retutn не догнал немного — поясни на примере вот я уже немного поправил по алфавиту, заменил некоторые повторяющиеся слова синонимами — проверил
работает + возможность отключить назначив на слайдер или сделав кнопку как у меня
defineProperty(«head», globalPropertyf(«sim/graphics/view/pilots_head_psi»))
третье место почётное — вообще первым быть вредно, это начало деградации )
В этот код можно по вкусу добавить удержание взглядом горизонта? Тогда будет законченный продукт высокого качества !
Модель где это будет реализовано в законченном варианте
я могу позже выложить — учтите у меня странные фантазии и опасный юмор
Всех соавторов могу указать в acf но я думаю они пожелают не светиться в моих граничащих с цинизмом, а посути цинизмом высмеивающие глупость шедеврах )
Позже раз уж я плагин поставил, думаю у меня в модели начнут скрипеть двери и зубы пилота ( ну это так — лирика )
Вот видео как оно у меня работает. Намеренно не делал 16:9 соотношение картинки чтоб оценить без иллюзий. У меня монитор 4:3 а растягивать для его величества ютуб не хочу, картинка получается не полноценная или растянутая. По мне вполне полезный плагин вы написали — трекир не нужен ))
Сообщение отредактировано Sergey747: 22 June 2016 — 13:45
Пусть не настораживает. Да, если что то вписать в переменные головы, то вид сбрасывается на внутренний, поэтому нужно проверять (что я и сделал).
Кнопками Q и E не пользовался, поэтому не заметил.
Нужно прописать их команды, а потом добавлять в общую кучу.(Как вариант)
Взгляд на горизонте можно держать, просто писать в тангаж головы тангаж ЛА. Выглядеть в коде будет аналогично повороту.
Сообщение отредактировано skyteacher: 22 June 2016 — 15:44
Вообще полезный код и держать им можно что угодно. скажем можно вектор тяги привязать к скорости ниже той минимальной которую удерживают крылья и чтоб он выкручивался в состояние зависания синхронно со скоростью компенсируя потерю крыльями сил для полёта — получиться некий безопасный VTOL . Можно ещё до кучи обнулять скольжения и получиться физика FSX ) Это полезные буквы так-как при наличии фантазии
можно расширить функционал plane-maker страницы с настройками совместных отклонений. Поэтому нужно его под спойлер как работающий, эффективный
и полезный. Коды можно в первое сообщение форума и закрепить на всех страницах. Чтоб каждый желающий глянул и нашёл что хотел или довести до ума
и пере сохранить если автор позволяет
функция обратной пропорциональности в LUA как её изобразить -то? где 90=0 для одного датарефа а 0=90 для другого. Типа скорость 88 то вектор 2 градуса или вектор 88 скорость 2узла. Засвербило поднять безопасность векторной тяги )