Jump to content
Korean Random
GPCracker

Улучшенная система прицеливания / Advanced Aiming System

Recommended Posts

Вот зараза, знатного такого свинтуса тут картоха в очередной раз подложила.

# Вызывается при нажатии клавиш быстрых команд, типа "поддержите огнем и т.д."
def handleShortcutChatCommand(self, key):
        cmdMap = CommandMapping.g_instance
        import BigWorld
        player = BigWorld.player()
        target = BigWorld.target()
        for chatCmd, keyboardCmd in KB_MAPPING.iteritems():
            if cmdMap.isFired(keyboardCmd, key):
                crosshairType = self.__getCrosshairType(player, target)
                if crosshairType != DEFAULT_CUT and chatCmd in TARGET_TRANSLATION_MAPPING and crosshairType in TARGET_TRANSLATION_MAPPING[chatCmd]:
                    self.handleChatCommand(TARGET_TRANSLATION_MAPPING[chatCmd][crosshairType], target.id)
                else:
                    self.handleChatCommand(chatCmd)

# Вызывается при показе радиального меню
def show(self):
        player = BigWorld.player()
        target = BigWorld.target()
        self.__targetID = target.id if target is not None else None
        screenWidth = BigWorld.screenWidth()
        screenHeight = BigWorld.screenHeight()
        guiScreenWidth, guiScreenHeight = GUI.screenResolution()
        ratioWidth = float(guiScreenWidth / screenWidth)
        ratioHeight = float(guiScreenHeight / screenHeight)
        ratio = (ratioWidth, ratioHeight)
        crosshairType = self.__getCrosshairType(player, target)
        ctrl = g_sessionProvider.shared.crosshair
        if ctrl is not None:
            position = ctrl.getPosition()
        else:
            position = (guiScreenWidth >> 1, guiScreenHeight >> 1)
        self.as_showS(crosshairType, position, ratio)
        return

Ну вот и как в такую хрень аккуратно подсунуть свой target?

в обоих случаях нужно запилить что-то типа (упрощенный пример)

target = target or my_target
Картоха как всегда, короч. Edited by GPCracker

Share this post


Link to post

Short link
Share on other sites

dis в помощь)

ЛоЛ:) Не, ну просто реально никак не подлезть толком. Да даже если и подлезешь, то черт знает через какие костыли. С атрибутами проще - на уровне класса перегоняешь его в property, ну или дескрипторы в помощь (по сути первое частный случай второго).

Ничего более адекватного кроме как заоверрайдить их на*** придумать пока не удается. А фулл оверрайд это в какой-то степени генерация проблем с совместимостью и вообще относительно нестабильное решение.

Share this post


Link to post

Short link
Share on other sites

Боюсь показаться дураком, встревая в подобные дискуссии , но хотел уточнить - планируется ли захват цели после исчезновения противника ? Ну то-есть (по нашему по простому говоря ) целишься в танк на горе , а он исчезает из засвета , прицел дёргается... В ранних версиях подобная штука работала , можно было и время удержания цели настроить... Потом стало только по кнопке захватывать.Вот интересует захват автоматический... на настроенное время. Возможно это будет реализовать ?

Share this post


Link to post

Short link
Share on other sites

планируется ли захват цели после исчезновения противника?

Смотря как понимать данную фразу. Модуль TargetScanner, который будет в обновлении (после того как я решу траблы с загрузкой мода, которые уже давно обсуждаются, как раз таки та тема с hookInjectTimeout, от которого я вообще хочу избавиться) отвечать за поиск, захват и сопровождение цели во всех режимах (да, в связи с вводом дополнительных сканеров появляется понятие "сопровождение цели" - когда прицел не наведен ни на какой танк, но "непрямой сканер", коробка, эллипс, дает положительный результат по одному или нескольким танкам - если цель в их числе, "время последнего наведения" будет обновляться, "перезаписывать" цель "непрямые сканеры" не будут, для смены цели нужно будет наводиться прямо на танк, но пока прицел находится рядом с танком, цель сбрасываться не будет, отсюда и понятие - "сопровождение") "при выполнении некоторых условий", в зависимости от настроек, будет захватывать и удерживать в памяти некоторое время данные цели. Т.е. для захвата цели нужно чтобы в момент захвата она была видимой. Говоря простыми словами, если ты успеешь захватить цель до того, как она исчезнет. Ничего по сравнению с предыдущими версиями в этом плане не изменится.

Что касается того, что захват работал только по кнопке - проблема в том, что скорее всего у тебя из-за конфликта модов не работал фрагмент скрипта, отвечающий за автоматический захват цели и обновление данных в GUI (надписей). Та же самая старая тема с hookInjectTimeout. Решение этого вопроса на текущий момент задача с самым высоким приоритетом, в остальном остается только GUI и различные мелкие плюшки вроде инфопанели сведения (считай то же самое GUI), команд радиального меню рентгеном (то, что пару постов выше я выкладывал), SafeShot, ну и так по мелочи.

qvFgd1fnUi.png

Edited by GPCracker
  • Upvote 3

Share this post


Link to post

Short link
Share on other sites

Upd. В общем, удалось таки найти более-менее адекватную по расположению точку, где моды из gui/mods как-бы уже загрузились (ну из старого пути оно еще раньше грузится), но ключевые классы игры еще не были созданы.

Из-за чего в общем-то вся свистопляска была. Грузиться в общем цикле, т.е. ставить хуки в основном скрипте мода не очень удобно, ибо после тебя загружается еще куча модов, а поскольку, во-первых, многие мододелы не в курсе, что использование полной перегрузки метода вместо хука порождает проблемы с совместимостью, во-вторых, в некоторых ситуациях по-другому ну просто вообще никак, и, соответственно, твои хуки успешно затираются теми модами, что грузятся позже. В результате вполне очевидно отваливается часть функционала. Для этого изначально была реализована задержка установки хуков через "колобок".

Но колобок стартует не сразу, а после старта арены/ангара, соответственно часть методов уже успевает сработать, и ставить на них хуки... "поезд ушел", по-русски. Соответственно, я перенес задержку на потоки, но выплыла другая проблема - клиент у всех стартует с разной скоростью, а задержка описана в секундах. Отсюда и свистопляска с подбором времени (нужно после всех модов, но до старта арены/ангара).

В общем, закинул установку хуков в качестве нагрузки на старт gui_personality. Моды грузятся у него в ините, а мои хуки у него перед стартом. В принципе, вроде ОК пока, что будет на деле - поживем-увидим.

  • Upvote 3

Share this post


Link to post

Short link
Share on other sites

Смотря как понимать данную фразу. Модуль TargetScanner, который будет в обновлении (после того как я решу траблы с загрузкой мода, которые уже давно обсуждаются, как раз таки та тема с hookInjectTimeout, от которого я вообще хочу избавиться) отвечать за поиск, захват и сопровождение цели во всех режимах (да, в связи с вводом дополнительных сканеров появляется понятие "сопровождение цели" - когда прицел не наведен ни на какой танк, но "непрямой сканер", коробка, эллипс, дает положительный результат по одному или нескольким танкам - если цель в их числе, "время последнего наведения" будет обновляться, "перезаписывать" цель "непрямые сканеры" не будут, для смены цели нужно будет наводиться прямо на танк, но пока прицел находится рядом с танком, цель сбрасываться не будет, отсюда и понятие - "сопровождение") "при выполнении некоторых условий", в зависимости от настроек, будет захватывать и удерживать в памяти некоторое время данные цели. Т.е. для захвата цели нужно чтобы в момент захвата она была видимой. Говоря простыми словами, если ты успеешь захватить цель до того, как она исчезнет. Ничего по сравнению с предыдущими версиями в этом плане не изменится.

Что касается того, что захват работал только по кнопке - проблема в том, что скорее всего у тебя из-за конфликта модов не работал фрагмент скрипта, отвечающий за автоматический захват цели и обновление данных в GUI (надписей). Та же самая старая тема с hookInjectTimeout. Решение этого вопроса на текущий момент задача с самым высоким приоритетом, в остальном остается только GUI и различные мелкие плюшки вроде инфопанели сведения (считай то же самое GUI), команд радиального меню рентгеном (то, что пару постов выше я выкладывал), SafeShot, ну и так по мелочи.

Дружище , клянусь , я дико уважаю твой личный гений (никакого сарказма абсолютно так и есть) .Но , я почти ни хрена не понял blush.gif .И подозреваю , что я не совсем корректно объяснил , что имел ввиду... А писал я о ситуации, когда к примеру высунулся танк из за горы , наводишся на него ,а он в этот момент исчезает и прицел переводится на точку за ним. В следствии чего снаряд летит по более высокой траектории. Наверно именно это ещё зовётся дальномером (захват дальности до исчезнувшей цели) .Так вот, в более ранних версиях твоего мода , при наведении на танк автоматом захватывалась дальность до цели на несколько секунд (оно настраивалось , можно было и по кнопке назначить).То есть точка прицеливания оставалась на месте и траектория полёта снаряда не смещалась. Потом остался только захват дальности по кнопке потому как что то в каком то патче было изменено (уже не помню в каком...) и настроить данную функцию было геморно...  Вот я и интересуюсь , есть ли возможность реализовать данную фишку , а то каждый раз производить захват по нажатию было как то не совсем удобно... Если ты именно  об этом и пишешь , то извини что повторяюсь..

Share this post


Link to post

Short link
Share on other sites

@ger Gauf, написал же.

Что касается того, что захват работал только по кнопке - проблема в том, что скорее всего у тебя из-за конфликта модов не работал фрагмент скрипта, отвечающий за автоматический захват цели и обновление данных в GUI (надписей). Та же самая старая тема с hookInjectTimeout.

Ничего никуда не девалось. Так что либо у тебя были косяки в конфиге (фича тупо была отключена), либо описанная выше проблема.

Upd. В общем, сырая версия есть, и вроде как (поверхностно потестил) работает. Но в ней нет части модулей и полностью отсутствует GUI. Конфиги тоже пока не правил, большая часть в DEV режиме.

Из того, что на текущий момент есть:

- Корректировка дальномера манульный и таргет режимы (запилено как-бы для всех режимов, но поскольку пока для аркадного нет алгоритмов, там все забито заглушками, остальные режимы вроде ок)

- Переход в снайперский для арты

- Захват цели (+ корректировка дальномера) - тут впилил достаточно прилично нового, в том числе новые сканеры.

- Распилил конфиг, вроде ок, потом еще отдельно потестим.

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

 

Из того, чего пока нет:

- Пока не переносил артоснайп и SafeShot. Возможно, они будут отдельными плагинами. Посмотрим потом. Оба нужно перепиливать, во втором к тому же есть баги задачи на исправление.

- Костыль убирающий падение сведения. Причина - потому что это костыль. Есть кой-какие идеи, как это дело залатать, и, возможно, таки впилить и для аркадного режима.

- Некоторый затык с радиальным меню. Скорее всего, тоже сделаю плагином, ибо там будут костыли, которые в мейнстрим запускать ну совсем не хочется.

- Инфопанель - то же самое, что и GUI. Модуль-калькулятор в общем-то готов, но без GUI он чуть менее чем бесполезен.

- Ну и так, какие-то мелочи, которые сейчас сходу не вспомню.

Edited by GPCracker
  • Upvote 4

Share this post


Link to post

Short link
Share on other sites

О хоть какие-то новости. если нужна помощь в тестировании то выложи что есть, будем "пробовать".

Share this post


Link to post

Short link
Share on other sites

- Инфопанель - то же самое, что и GUI. Модуль-калькулятор в общем-то готов, но без GUI он чуть менее чем бесполезен.

Это не в приоритете , подождём мне кажется... 

Share this post


Link to post

Short link
Share on other sites

Это не в приоритете

Прикол в том, что ведь GUI это не только инфо панель, но и панель информации о текущей цели и панель информации дальномера. А вот это уже неприоритетным назвать как-то не получается. Я пробовал катать в трене без GUI - даже учитывая что я знаю, что и как работает, все равно тяжеловато ориентироваться, что сейчас творится внутри мода.

С GUI тот еще концерт. Просто так, обычной вьюшкой его не загрузить - оно будет уничтожать батловую, если окном - то оно будет поверх всегда, даже поверх панели счета, а вот это уже перебор.

Для решения проблемы с zIndex нужно аттачить ее в нулевой индекс потомком к самой BattlePage. А система построена так, что получить BattlePage внутри флешки задача весьма нетривиальная. Получить через питон - как нефиг делать, но DisplayObject пробросить через DAAPI туда-обратно не вариант. В общем, задачка явно нетривиальная.

Хотя кой-какой вариант есть. Если пропатчить класс BattlePage прикрутив к нему функцию-конструктор, которую потом вызывать из питона, то разрулить вопрос в принципе можно, но что-то больно костыльно как-то... Хотя другие варианты, которые приходят в голову еще более костыльные.

Подумаю на досуге, что к чему... Может удастся скомпоновать более-менее приемлемое решение.

Share this post


Link to post

Short link
Share on other sites

Для решения проблемы с zIndex нужно аттачить ее в нулевой индекс потомком к самой BattlePage. А система построена так, что получить BattlePage внутри флешки задача весьма нетривиальная. Получить через питон - как нефиг делать, но DisplayObject пробросить через DAAPI туда-обратно не вариант. В общем, задачка явно нетривиальная.

POLIROID давно через stage получает BattlePage.

Можно и через getChildByName у stage получить BattlePage...

Share this post


Link to post

Short link
Share on other sites

POLIROID давно через stage получает BattlePage.

Можно и через getChildByName у stage получить BattlePage...

 

Всё умерло или не работает. AS3 же.

Share this post


Link to post

Short link
Share on other sites

@StranikS_Scan, вот я и говорю, что ангарный сбособ теперь и в бою работает.

battlePage = ((stage.getChildByName("root1") as DisplayObjectContainer).getChildByName("views") as DisplayObjectContainer).getChildByName("main") as BattlePage;
Edited by ShadowHunterRUS
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

вот я и говорю, что ангарный сбособ теперь и в бою работает.

Хмм... Довольно интересное предложение. Тоже натыкался на этот root1 и на main, только вот не совсем понятно, откуда берутся эти константы.

Немного сказывается то, что с флешом я вообще раньше толком не работал. Сначала даже не понял зачем везде "as" :)

Блин с питоном проще, его хотя бы через отладчик в рантайме пинать можно. А флешку хрен пропатчишь в рантайме. Или там есть какие-то свои козырные подходы?

Share this post


Link to post

Short link
Share on other sites

Или там есть какие-то свои козырные подходы?

Не замечал я каких-то красивых подходов.

откуда берутся эти константы.

Я через отладку вышел на них. Edited by ShadowHunterRUS

Share this post


Link to post

Short link
Share on other sites

Upd. В общем и целом, GUI кое-как взлетело. Осталось только пофиксить мелкие баги, и продумать систему интеграции и обновления данных.

Надеюсь, каких-нибудь критических багов в последствии не выплывет.

Upd. Немного слива с альфа-теста.

Kdp79cO5Pf.jpg
Пока все работает исключительно через отладчик, и в классах флешки, питона и контроллера куча мусора и багов. Нужно это все приводить в порядок, убирать прямые дефы из флешки, пилить модульную архитектуру. По крайней мере, оно хоть как-то уже работает. Просадок ФПС, кстати, замечено не было. Edited by GPCracker
  • Upvote 7

Share this post


Link to post

Short link
Share on other sites

И тишина.

Удалось завести пока только первичный вариант GUI. Пока работает через отладчик (то есть пинается руками в процессе), но в моде все должно создаваться, обрабатываться и деструктиться само. А это еще дополнительные классы-обработчики, и дополнительная логика. С ней как раз и идет работа. Плюс по части флешки - нужно немного поправить и оптимизировать классы, и разобраться с некоторыми не очень простыми моментами по части архитектуры.

Не говоря уже о том, что уже 1 сентября, и началась учеба. В этом году времени будет не шибко больше, чем в прошлом, если не меньше даже. Это на втором курсе мы как-то ничего не делали, и закрывались на хор, поэтому там и обновы были чаще чем у картохи. На 4 такое не катит. Более серьезные предметы, которые реально надо вкуривать, больше всяких лаб, на которые нужно писать отчеты, курсовые работы в количестве 2 штук, обе кафедральные, и КРБ до кучи надо бы уже начинать потихоньку проектировать.

Плюс еще работа.

Edited by GPCracker
  • Upvote 6

Share this post


Link to post

Short link
Share on other sites

Hey GPCracker.....

 

Your old bugger is back..... aka "me".  :)

So, just checking in with you to see if you're finally interested after all the stress to recreate your "original" AAS mod, the "auto" version of BalCalcMod?

To simply have a version of that feature ONLY for us perfectly working every update, so we don't have to stress, about all the other stuff?

 

You can still keep making your "fancy" version, but could you please please finally provide for us your original mod that just and only fixes the "dropping/bouncing" etc. reticle stuff?

We just want your nice round fly true again mod....  Most of us don't need all the other stuff, and if we do we can get them with other mods or use your advanced version.

 

Prerrrrty please.....?

 

Thank you so much.....

Share this post


Link to post

Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...