Jump to content
Korean Random
GPCracker

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

Recommended Posts

Самый точный вариант - взять WG функцию расчета углов наведения, функцию расчета точки выстрела.

 

Почиткал тут. А вариант через луч прицеливания при не чисто горизонтальном прицеливании точнее формулы t = 2*V0*sinA0 / g или одинаково? Через g вроде проще считать и деления на 0 нет.

 

 

 

это правило общепринято, и все немцы поймут, если написать таким образом.

 

Да нам как бы точность не важна, думаю нам a-o-ss-u вполне сойдут, мы не фон-бароны. А для французского алфавита можете написать, а то там черт ногу сломит.

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites

Да нам как бы точность не важна, думаю нам a-o-ss-u вполне сойдут, мы не фон-бароны. А для французского алфавита можете написать, а то там черт ногу сломит.

Реализовать в конфиге параметры замены символов юникода.

Почиткал тут. А вариант через луч прицеливания при не чисто горизонтальном прицеливании точнее формулы t = 2*V0*sinA0 / g или одинаково? Через g вроде проще считать и деления на 0 нет.

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

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

Для определения горизонтальной составляющей скорости используется cos угла склонения орудия, угол вычисляется через сишные картофельные функции. Формулы для расчетов углов стрельбы с учетом разности высот я уже выкладывал в теме (поищи если интересно). Но вызвать одну функцию ИМХО проще, чем писать свою. Тебе же не нужна минометная траектория) Если самому найти эту функцию напряжно, пиши в ЛС, скину.

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites
Если самому найти эту функцию напряжно, пиши в ЛС, скину.

 

Почитав тут, я понял что при разности высот минимальная погрешность в оценки времени будет именно в формуле косинуса, а не синуса, если конечно за длину брать луч от игрока до вражеского танка. Именно увеличение длины этого луча и скорректирует погрешность, а вот формула синуса ни как не отреагирует на разность высот. 

 

Я дополнил скрипт французскими знаками, такой вариант полагаю будет достаточен для все случаев названий танков:

def umlaut_converter(s):
    if s:
        if '\xc3\x84' in s:
            s = s.replace('\xc3\x84', 'A')
        if '\xc3\xa4' in s:
            s = s.replace('\xc3\xa4', 'a')
        if '\xc3\x82' in s:
            s = s.replace('\xc3\x82', 'A')
        if '\xc3\xa2' in s:
            s = s.replace('\xc3\xa2', 'a')
        if '\xc3\x80' in s:
            s = s.replace('\xc3\x80', 'A')
        if '\xc3\xa0' in s:
            s = s.replace('\xc3\xa0', 'a')
        if '\xc3\x87' in s:
            s = s.replace('\xc3\x87', 'C')
        if '\xc3\xa7' in s:
            s = s.replace('\xc3\xa7', 'c')
        if '\xc3\x89' in s:
            s = s.replace('\xc3\x89', 'E')
        if '\xc3\xa9' in s:
            s = s.replace('\xc3\xa9', 'e')
        if '\xc3\x8a' in s:
            s = s.replace('\xc3\x8a', 'E')
        if '\xc3\xaa' in s:
            s = s.replace('\xc3\xaa', 'e')
        if '\xc3\x88' in s:
            s = s.replace('\xc3\x88', 'E')
        if '\xc3\xa8' in s:
            s = s.replace('\xc3\xa8', 'e')
        if '\xc3\x8b' in s:
            s = s.replace('\xc3\x8b', 'E')
        if '\xc3\xab' in s:
            s = s.replace('\xc3\xab', 'e')
        if '\xc3\x8f' in s:
            s = s.replace('\xc3\x8f', 'I')
        if '\xc3\xaf' in s:
            s = s.replace('\xc3\xaf', 'i')
        if '\xc3\x8e' in s:
            s = s.replace('\xc3\x8e', 'I')
        if '\xc3\xae' in s:
            s = s.replace('\xc3\xae', 'i')
        if '\xc3\x96' in s:    
            s = s.replace('\xc3\x96', 'O')
        if '\xc3\xB6' in s:
            s = s.replace('\xc3\xB6', 'o')
        if '\xc3\x94' in s:
            s = s.replace('\xc3\x94', 'O')
        if '\xc3\xb4' in s:
            s = s.replace('\xc3\xb4', 'o')
        if '\xe1\xba\x9e' in s:            
            s = s.replace('\xe1\xba\x9e', 'SS')
        if '\xc3\x9f' in s:
            s = s.replace('\xc3\x9f', 'ss')
        if '\xc3\x9c' in s:
            s = s.replace('\xc3\x9c', 'U')
        if '\xc3\xbc' in s:
            s = s.replace('\xc3\xbc', 'u')
        if '\xc3\x9b' in s:
            s = s.replace('\xc3\x9b', 'U')
        if '\xc3\xbb' in s:
            s = s.replace('\xc3\xbb', 'u')            
        if '\xc3\x99' in s:
            s = s.replace('\xc3\x99', 'U')
        if '\xc3\xb9' in s:
            s = s.replace('\xc3\xb9', 'u')
        if '\xc3\xb8' in s:
            s = s.replace('\xc3\xb8', 'Y')
        if '\xc3\xbf' in s:
            s = s.replace('\xc3\xbf', 'y')
    return unicode(s, 'utf-8')
Edited by StranikS_Scan
  • Upvote 1
  • Downvote 1

Share this post


Link to post

Short link
Share on other sites

Публикация данного мода в иных источниках без согласия автора запрещается.
The publication of this modification elsewhere without the consent of the author is prohibited.


Версия 0.0.8 Alpha #1 (WoT Client 0.9.6).
- Полностью переработана архитектура построения мода (внутренние изменения).
- Полностью переработан файл конфигурации. Добавлена поддержка UTF-8.
- Добавлена возможность локализации сообщения об обновлении.
- Added English parameters description.
- Оптимизация базовых функций и методов (внутренние изменения).
- Оптимизированы элементы GUI (внутренние изменения).
- Оптимизировано позиционирование маркера упреждения (внутренние изменения).
- Изменена система позиционирования элементов GUI.
- Оптимизация скриптов модуля SafeShot.
- Оптимизированы алгоритмы вычисления высоты танка.
- Оптимизирован модуль "Рентген". Исправлен баг с захватом цели в аркадном режиме.
- Оптимизирован модуль захвата цели (внутренние изменения).
- Изменена логика работы корректировщика дальномера при захвате цели.
- Полностью переработана механика артоснайпинга.
- Полностью переработано улучшения перка "Эксперт".

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

1. Изменилась кодировка файла конфигурации (Windows-1251 -> UTF-8). Старый конфиг будет работать некорректно.
2. Координаты GUI теперь задаются по другой схеме (CENTER=0,0; TOP-RIGHT=1,1; BOTTOM-LEFT=-1,-1).
3. Захват цели теперь не привязан жестко к корректировке дальномера.
4. Координаты камеры в режиме артоснайпинга теперь определяются с учетом траектории полета снаряда. В случаях включения этого режима при наличии близких препятствий возможны баги. Как и при выводе камеры за пределы зоны поражения (не тестировалось).
5. Возможны зависания с вылетом через 5-10 сек в режиме артоснайпинга. Это связано с нахождением артиллерии игрока ниже базовой плоскости. В таких случаях уменьшаете значение zeroPlaneLevel в соответствующем блоке конфигурации. Желательно отписаться в теме, на какой карте и в каком квадрате это произошло (позиция игрока).
6. Понижение уровня базовой плоскости приводит к падению чувствительности системы прицеливания (реакции на перемещение мыши), а так же некоторому увеличению вычислительной нагрузки. Оптимальное значение - на 10-15 метров ниже уровня самой низкой точки на карте. Проблема в том, что эта точка на разных картах может отличаться на 200+ метров. Царских путей решения проблемы пока не нашел.
7. Игнор версии клиента необходимо отключить (если кто его включал).

"Об альфа-версии"

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

Скачать:
Advanced Aiming System.zip

PS

В данной версии реализован не весь функционал, который обсуждался в теме. Остальное пойдет во вторую альфу.
  • Upvote 5

Share this post


Link to post

Short link
Share on other sites

GPCracker

Не самая важная функция, но активировать не удалось. 

"конфиг"

<deflectionMarker>
   <!-- Enable deflection marker. -->
   <!-- Разрешить маркер упреждения (может снижать FPS, когда активирован). -->
   <enabled>True</enabled>
   <!-- Deflection marker activation hot-key. -->
   <!-- "Горячая клавиша" активации маркера упреждения. -->
   <switchKey>KEY_LCONTROL+KEY_D</switchKey>
   <!-- Hot-key mode (True - switch, False - button). -->
   <!-- Режим работы "горячей клавиши" (True - переключатель, False - кнопка). -->
   <keySwitchMode>True</keySwitchMode>
   <!-- Activates deflection marker by default. -->
   <!-- Активировать маркер упреждения по умолчанию. -->
   <activated>True</activated>
   <!-- Deflection marker activation text message. -->
   <!-- Сообщение при активации маркера упреждения. -->
   <activateMessage>Вычисление упреждения включено.</activateMessage>
   <!-- Deflection marker deactivation text message. -->
   <!-- Сообщение при деактивации маркера упреждения. -->
   <deactivateMessage>Вычисление упреждения отключено.</deactivateMessage>
   <!-- Deflection marker texture. -->
   <!-- Текстура маркера упреждения. -->
   <textureName>gui/maps/ingame/aim/deflectionMarker.dds</textureName>
   <!-- Deflection marker size. -->
   <!-- Размер маркера упреждения. -->
   <textureSize>15 15</textureSize>
  </deflectionMarker>

Ни по дефолту ни на клавишу, никак. В остальном конфиг грузится и все работает.

"питон"

[EXCEPTION] (, 348):
Traceback (most recent call last):
  File "", line 342, in KT_arcade_update
  File "AASMX.py", line 1270, in new_Aim_update
AttributeError: AvatarInputHandler instance has no attribute 'XTargetInfo'
Edited by lii
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

GPCracker

Не самая важная функция, но активировать не удалось. 

конфиг

<deflectionMarker>

   <!-- Enable deflection marker. -->

   <!-- Разрешить маркер упреждения (может снижать FPS, когда активирован). -->

   <enabled>True</enabled>

   <!-- Deflection marker activation hot-key. -->

   <!-- "Горячая клавиша" активации маркера упреждения. -->

   <switchKey>KEY_LCONTROL+KEY_D</switchKey>

   <!-- Hot-key mode (True - switch, False - button). -->

   <!-- Режим работы "горячей клавиши" (True - переключатель, False - кнопка). -->

   <keySwitchMode>True</keySwitchMode>

   <!-- Activates deflection marker by default. -->

   <!-- Активировать маркер упреждения по умолчанию. -->

   <activated>True</activated>

   <!-- Deflection marker activation text message. -->

   <!-- Сообщение при активации маркера упреждения. -->

   <activateMessage>Вычисление упреждения включено.</activateMessage>

   <!-- Deflection marker deactivation text message. -->

   <!-- Сообщение при деактивации маркера упреждения. -->

   <deactivateMessage>Вычисление упреждения отключено.</deactivateMessage>

   <!-- Deflection marker texture. -->

   <!-- Текстура маркера упреждения. -->

   <textureName>gui/maps/ingame/aim/deflectionMarker.dds</textureName>

   <!-- Deflection marker size. -->

   <!-- Размер маркера упреждения. -->

   <textureSize>15 15</textureSize>

  </deflectionMarker>

Ни по дефолту ни на клавишу, никак. В остальном конфиг грузится и все работает.

питон

[EXCEPTION] (, 348):

Traceback (most recent call last):

  File "", line 342, in KT_arcade_update

  File "AASMX.py", line 1270, in new_Aim_update

AttributeError: AvatarInputHandler instance has no attribute 'XTargetInfo'

Хм... Есть некоторый косячок... Всего сразу не отдебажишь. Поправлю. Проверку дописать надо. Такое происходит, если включить маркер до первого захвата цели. Попробуй активировать маркер после первого захвата в бою. Всмысле поставить enable True, activated False, после первого захвата цели Ctrl+D в снайперском режиме (сообщение зеленое справа будет).

З.Ы. Сочетания клавиш привязаны к режимам прицеливания, так же как и функции, которыми они управляют.

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Спасибо-поехали катать-вопрос рентген твой тот что отдельным модом шел удалить или етот в конфиге отключать-сори если туплю

Share this post


Link to post

Short link
Share on other sites

Покатал немного, пока все норма, маркер упреждения не использовал пока. На что обратить особое внимание?

 

это что в логе?

 

[NOTE] (scripts/common/fortified_regions.py, 207): fortified_regions.init()
[NOTE] (scripts/client/post_processing/__init__.py, 267): The quality = 4 was selected.
[NOTE] (scripts/client/post_processing/__init__.py, 267): The quality = 3 was selected.
[sPACE] Loading space: spaces/hangar_premium_v2
[WARNING] (scripts/client/account_helpers/CustomFilesCache.py, 33): Method "__run_read" takes too much time 0.230000019073
[sPACE] Loading space: spaces/28_desert
Traceback (most recent call last):
  File "ProEnemyIndicator.py", line 362, in <lambda.11>
  File "ProEnemyIndicator.py", line 364, in directionRepeat
BigWorld.EntityIsDestroyedException: Avatar 21224547 has been destroyed
[sPACE] Loading space: spaces/hangar_premium_v2
PostProcessing.Phases.fini()
Edited by vasbelous

Share this post


Link to post

Short link
Share on other sites

Спасибо-поехали катать-вопрос рентген твой тот что отдельным модом шел удалить или етот в конфиге отключать-сори если туплю

В данном случае под рентгеном подразумевается захват цели в автоприцел / корректировщик через текстуры. С модом на контуры он ничего общего не имеет.

это что в логе?

Протанки как всегда
  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

Я понял, что протанки...

 

вот еще бой, новые (я гонял оба на арте) на всякий случай...

 

[NOTE] (scripts/common/fortified_regions.py, 207): fortified_regions.init()
[NOTE] (scripts/client/post_processing/__init__.py, 267): The quality = 4 was selected.
[NOTE] (scripts/client/post_processing/__init__.py, 267): The quality = 3 was selected.
[sPACE] Loading space: spaces/hangar_premium_v2
[sPACE] Loading space: spaces/14_siegfried_line
Traceback (most recent call last):
  File "scripts/client/Avatar.py", line 1390, in updateGunMarker
  File "scripts/client/VehicleGunRotator.py", line 229, in setShotPosition
TypeError: unsupported operand type(s) for -: 'NoneType' and 'Math.Vector3'
[sPACE] Loading space: spaces/hangar_premium_v2
PostProcessing.Phases.fini()

 

Артоснайп просто сказка :) То, что доктор прописал!

Немного не понял назначение клавиши пробел (еще не пробовал) И как я понял камера привязана к расстоянию от танка, чтобы перевестись на танк стоящий дальше, надо перейти в обычный арт прицел перевестись и снайп, я правильно понял?

Edited by vasbelous

Share this post


Link to post

Short link
Share on other sites

Почитав тут, я понял что при разности высот минимальная погрешность в оценки времени будет именно в формуле косинуса, а не синуса, если конечно за длину брать луч от игрока до вражеского танка. Именно увеличение длины этого луча и скорректирует погрешность, а вот формула синуса ни как не отреагирует на разность высот.

Функции расчета углов в BW используются для наведения орудия и отрисовки маркера. Как знаешь, погрешность в его позиционировании там весьма небольшая)

Я дополнил скрипт французскими знаками, такой вариант полагаю будет достаточен для все случаев названий танков:

Спасибо. Подумаю как прикрутить грамотно. ИМХО, условия там не нужны. И без них должно по сути работать.

вот еще бой, новые (я гонял оба на арте)

К моду вряд ли отношение имеет.

Share this post


Link to post

Short link
Share on other sites

@GPCracker, ха вот и первый подводный камень gunPitch то это угол склонения относительно корпуса, а не нулевой поверхности, выходит его недостаточно для расчета горизонтальной проекции начальной скорости снаряда (((((( нашел getTurretYawGunPitch

 

 

И без них должно по сути работать.

 

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

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites

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

А это вопрос спорный. В условии есть явный поиск подстроки. А это не такая простая с точки зрения времени выполнения кода процедура. Давай не будем тут батл устраивать, вопрос не столь существеннен.

 

Upd. Прогнал тесты по времени разница во времени между поиском и присваиванием меньше 1%. Так что без разницы. )

Немного не понял назначение клавиши пробел (еще не пробовал) И как я понял камера привязана к расстоянию от танка, чтобы перевестись на танк стоящий дальше, надо перейти в обычный арт прицел перевестись и снайп, я правильно понял?

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

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

Нужна эта фича для стрельбы по танкам на фоне неба / удаленных текстур. Чтобы камера не улетала.

надо перейти в обычный арт прицел перевестись и снайп

Или просто перевестись и нажать магический пробел) Edited by GPCracker

Share this post


Link to post

Short link
Share on other sites

Или просто перевестись и нажать магический пробел)

и правда - магический пробел!

 

Вот чистый клиент + эта система, что за ошибка?

 

/------------------------------------------------------------------------------------------------------------------------\

   BigWorld Release Client (compiled at 18:46:19 Jan 21 2015) starting on Tue Mar 10 17:19:08 2015

   Content Type: content

Checking ./res_mods/0.9.6: mods found

[ENOT]Loading mod: AASMX

[AASMX] Config successfully loaded.

[NOTE] (scripts/common/fortified_regions.py, 207): fortified_regions.init()

[NOTE] (scripts/client/post_processing/__init__.py, 267): The quality = 4 was selected.

[NOTE] (scripts/client/post_processing/__init__.py, 267): The quality = 3 was selected.

[sPACE] Loading space: spaces/hangar_premium_v2

[sPACE] Loading space: spaces/06_ensk

[ERROR] (scripts/client/AreaDestructibles.py, 664): Can't find hardpoint HP_module_0 in model content/Environment/env605_Dovecote/normal/lod0/env605_Dovecote.model

[sPACE] Loading space: spaces/hangar_premium_v2

PostProcessing.Phases.fini()

\------------------------------------------------------------------------------------------------------------------------/

Edited by vasbelous

Share this post


Link to post

Short link
Share on other sites

 

 

Сочетания клавиш привязаны к режимам прицеливания, так же как и функции, которыми они управляют.

Имеется ввиду, что во всём конфиге сочетания клавиш менять не стоит ? Или я что то не понял .Опять... 

Share this post


Link to post

Short link
Share on other sites

Имеется ввиду, что во всём конфиге сочетания клавиш менять не стоит ? Или я что то не понял .Опять...

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

Мод реагирует на сочетания только в тех режимах прицеливания, в секции которых это сочетание прописано.

Вот чистый клиент + эта система, что за ошибка?

Внутренняя обработанная ошибка клиента. Не парься)

Share this post


Link to post

Short link
Share on other sites
Имеется ввиду, что переключение артоснайпа только в арт-режиме, сочетания маркера упреждения только в снайперском. А арт-режим по клавише Е (по дефолту) работает только из аркадного режима и только для арты. Мод реагирует на сочетания только в тех режимах прицеливания, в секции которых это сочетание прописано.

Хух....как камень с души ))

ЗЫ только что повис  , в самом начале боя прямо при входе в артоснайп .Карта Лайв-Окс , квадрат В-0. 

Гуслями немного на кучу щебня заехал, чтоб морду задрать. Спас ALT-F4 c последующим заходом в бой. Вроде всё норм... 

 

Угол наклона по кнопкам теперь не меняется ?

 

<!-- "Горячая клавиша" увеличения угла наклона. -->

   <cameraRaiseKey>KEY_MOUSE5</cameraRaiseKey>

   <!-- "Горячая клавиша" уменьшения угла наклона. -->

   <cameraLowerKey>KEY_MOUSE4</cameraLowerKey>

Edited by gergauf

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...