Popular Post ktulho Posted January 24, 2017 Popular Post Share Posted January 24, 2017 (edited) В данной теме собраны скрипты, которые изменяют внешний вид прицела, и расширяют его функционал. Список аддонов: Сведение Точка прицеливания Сфера разлета осколков ОФ снаряда Отображение элементов прицела Информация о захваченной цели Информация о технике в прицеле Информация о текущем снаряде Количество снарядов Перезарядка орудия Вероятность пробития Спидометр Режим техники (скоростной, осадный) Перекрестие Советы по оформлению конфига Пример файла конфигурации для всех аддонов данной темы: sight.xc Для подключения данного файла необходимо добавить ссылку в файл @xvm.xc: "sight": $ {"sight.xc": "sight"}, Сведение: {{py:sight.timeAIM}} - время до полного сведения (в секундах); {{py:sight.dispersion}} - разброс на расстоянии 100 метров (в метрах); PY(ON_AIMING) - событие для данного макроса. Скрипт: aiming.py Точка прицеливания: Данный скрипт добавляет следующие макросы: {{py:sight.distance}} - дальность полета снаряда (в метрах); {{py:sight.timeFlight}} - время полета снарядов (в секундах); {{py:sight.cameraHeight}} - высота камеры относительно точки прицеливания; PY(ON_MARKER_POSITION) - событие для перечисленных выше макросов. Примечание: в аркадном и снайперском режиме прицела макросы {{py:sight.distance}} и {{py:sight.timeFlight}} возвращают значение для центрального маркера сведения. Скрипт: markerPosition.py Сфера разлета осколков ОФ снаряда: Данный скрипт позволяет отображать сферу разлета осколков осколочно-фугасных снарядов. Отображение можно настроить в файле конфигурации sight.xc: // Сфера разлета осколков осколочно-фугасных снарядов "sphereDispersion": { // true - включить "enabled": true, // Для каких типов техники будет отображаться сфера. Возможные значения ["LT", "MT", "HT", "TD", "SPG"] "vtype": ["SPG"], // отображение сферы по нажатию клавиши "hotkey": { // true - включить "enabled": true, // коды клавиш можно посмотреть в файле \res_mods\mods\shared_resources\xvm\doc\keycodes.txt. "keyCode": 56, // onHold: false - произвести действие по разовому нажатию клавиши. true - по удержанию. "onHold": true } }, Скрипт: sphere.py Отображение элементов прицела: Скрипт управляет скрытием\отображением стандартных элементов прицела с помощью параметров из файла конфигурации sight.xc: // true - не отображать прицел после смерти "hideSightAfterDeath": false, // true - не отображать сетку прицела "removeIndicator": false, // true - не отображать центральный маркер "removeCentralMarker": false, // true - не отображать полосу перезарядки "removeLoad": false, // true - не отображать полосу прочности "removeCondition": false, // true - не отображать кассеты "removeContainers": false, // true - не отображать таймер перезарядки "removeLoadingTimer": false, // true - не отображать дистанцию до цели "removeDistance": false, // true - не отображать количество снарядов "removeQuantityShells": true, Скрипт: displayingItems.py Информация о захваченной цели: {{py:sight.autoAimName}} - никнейм игрока находящегося в автоприцеле; {{py:sight.autoAimVehicle}} - название техники находящейся в автоприцеле; {{py:sight.autoAimHealth}} - количество очков прочности техники находящейся в автоприцеле. PY(ON_AUTO_AIM) - событие срабатывает при захвате техники в автоприцел. Выделение техники находящейся в автозахвате. Настройка данного мода осуществляется в файле sight.xc: // Выделение цели находящейся в автозахвате "autoAim": { "enabled": true, // Способ выделения техники. Возможные значения: "arrow", "cylinder" // "arrow" - стрелка над техникой // "cylinder" - свечение вокруг техники // "" - отключить выделение техники "markerType": "cylinder" } Для подключение данного функционала необходимо скопировать содержимое архива markers.zip скопировать в папку res_mods\mods\shared_resources\xvm\res\ Архив с маркером:markers.zip Скрипт: infoAutoAim.py Информация о технике в прицеле: {{py:sight.nameTarget}} - никнейм игрока находящегося в прицеле; {{py:sight.vehicleTarget}} - название техники находящейся в прицеле; {{py:sight.vehNameTarget}} - название техники находящейся в прицеле в системе (usa-M24_Chaffee); {{py:sight.vtypeTarget}} - тип техники находящейся в прицеле (текстовые подстановки из секции vtype файла texts.xc); {{py:sight.vtypeTargetColor}} - цвет по типу техники находящейся в прицеле (текстовые подстановки из секции vtype файла colors.xc); {{py:sight.reloadTarget}} - время перезарядки техники находящейся в прицеле; {{py:sight.visionRadiusTarget}} - обзор техники находящейся в прицеле; {{py:sight.distanceTarget}} - расстояние до цели; {{py:sight.allyTarget}} - возвращает 'al', если в прицеле союзник, возвращает 'en', если в прицеле противник. В остальных случаях возвращает пусто; PY(ON_TARGET) - событие срабатывает при наведении на цель. Время отображения данных макросов настраивается в файле sight.xc: // время отображения макросов {{py:....Target}} после потери цели "delayHideTarget": 3, Скрипт: targetInfo.py Информация о текущем снаряде: {{py:sight.shellType}} - тип заряженного снаряда; {{py:sight.shellTypeColor}} - цвет по типу заряженного снаряда; {{py:sight.goldShell}} - возвращает 'gold' если снаряд можно купить за золото, иначе - пусто; {{py:sight.shellSpeed}} - скорость полета снаряда; {{py:sight.piercingShell}} - бронепробиваемость снаряда; {{py:sight.explosionRadiusShell}} - радиус разлета осколков снаряда; {{py:sight.damageShell}} - урон снарядом; {{py:sight.caliberShell}} - калибр снаряда. PY(ON_AMMO_CHANGED) - событие срабатывает при смене слота снарядов. Значения, возвращаемые макросом {{py:sight.shellType}} и {{py:sight.shellTypeColor}}, настраиваются в файле sight.xc в секциях "shellType" и "c:shellType": // Тип снаряда (макрос {{py:sight.shellType}}). "shellType": { "armor_piercing": "{{l10n:armor_piercing}}", // armor piercing / бронебойный "high_explosive": "{{l10n:high_explosive}}", // high explosive / осколочно-фугасный "high_explosive_stun": "{{l10n:high_explosive}}", // high explosive explosive / оглушающий осколочно-фугасный "armor_piercing_cr": "{{l10n:armor_piercing_cr}}", // armor piercing composite rigid / бронебойный подкалиберный "armor_piercing_he": "{{l10n:armor_piercing_he}}", // armor piercing high explosive / бронебойно-фугасный "hollow_charge": "{{l10n:hollow_charge}}", // high explosive anti-tank / кумулятивный "flame": "{{l10n:flame}}", // flame / пламя (Lesta) "not_shell": "" // empty / пусто }, // Цвет по типу снаряда (макрос {{py:sight.shellTypeColor}}). "c:shellType": { "armor_piercing": "#CCCCCC", // armor piercing / бронебойный "high_explosive": "#CCCCCC", // high explosive / осколочно-фугасный "high_explosive_stun": "#CCCCCC", // stunning high explosive / оглушающий осколочно-фугасный "armor_piercing_cr": "#CCCCCC", // armor piercing composite rigid / бронебойный подкалиберный "armor_piercing_he": "#CCCCCC", // armor piercing high explosive / бронебойно-фугасный "hollow_charge": "#CCCCCC", // high explosive anti-tank / кумулятивный "flame": "#CCCCCC", // flame / пламя (Lesta) "not_shell": "#CCCCCC" // empty / пусто }, Скрипт: infoChargedShell.py Количество снарядов: {{py:sight.quantityShells}} - количество оставшихся снарядов; {{py:sight.quantityInClipShells}} - количество оставшихся снарядов в барабане; {{py:sight.quantityInClipShellsMax}} - максимальное количество снарядов в барабане; {{py:sight.burst}} - количество снарядов, выстреливаемых за одну очередь; {{py:sight.isFullClipShells}} - возвращает 'full' если барабан полностью заряжен, иначе пусто; PY(ON_AMMO_COUNT) - при изменении количества снарядов в активном слоте. Скрипт: quantityShells.py Перезарядка орудия: {{py:sight.leftTime(norm)}} - если параметр 'norm' не задан, то возвращается время оставшееся до конца перезарядки (в секундах). Иначе возвращается нормализованное значение. Для техники с механизмом дозарядки снаряда или техники с двумя стволами, возвращается время (нормализованное значение) оставшееся до конца перезарядки текущего снаряда. {{py:sight.reloadTime}} - время перезарядки (в секундах) Для техники с механизмом дозарядки снаряда или техники с двумя стволами, возвращается время перезарядки текущего снаряда. {{py:sight.reloadTimeClip}} - время перезарядки между снарядами в барабане (в секундах). {{py:sight.intuition}} - время смены заряженного боеприпаса, если доступно умение «Интуиция» у заряжающего. {{py:sight.isIncreasedReload}} - возвращает #FF0000, если увеличено время перезарядки орудия (крит боеукладки, заряжающего и т.д.), иначе пусто. Макросы для техники с механизмом дозарядки или техники с двумя стволами (для другой техники макросы возвращают пусто): {{py:sight.aLeftTime(norm)}} - если параметр 'norm' не задан, то возвращается время оставшееся до конца перезарядки всего барабана или обоих стволов (в секундах). Иначе возвращается нормализованное значение. {{py:sight.aReloadTime}} - время перезарядки всего барабана или обоих стволов (в секундах). {{py:sight.leftTimeShot}} - время, через которое орудие будет готово к выстрелу (в секундах). Макросы для техники с двумя стволами (для другой техники макросы возвращают пусто): {{py:sight.isPreparingSalvo}} - возвращает 'prepare' если идет подготовка к залпу, иначе пусто. {{py:sight.isGunBlocked}} - возвращает 'blocked' если орудие заблокировано, иначе пусто. PY(ON_RELOAD) - пока орудие перезаряжается срабатывает с частотой 10 раз в секунду. Скрипт: reloading.py Вероятность пробития: {{py:sight.piercingActual}} - пробивающая способность снаряда при подлете к цели; {{py:sight.armorActual}} - приведенная броня в точке прицеливания; {{py:sight.piercingChance(norm)}} - если 'norm' не задан, то возвращается вероятность пробития в процентах. Иначе возвращается нормализованное значение; {{py:sight.piercingChanceColor}} - цвет связанный с шансом на пробитие; {{py:sight.piercingChanceKey}} - название ключа шанса на пробитие (not_target, not_pierced, little_pierced, great_pierced); {{py:sight.hitAngle}} - угол вхождение снаряда в броню в точке прицеливания (в градусах); {{py:sight.normHitAngle}} - нормализованный угол вхождение снаряда в броню в точке прицеливания (в градусах). Если будет рикошет, то возвращает -1.0 ; PY(ON_CALC_ARMOR) - срабатывает, если в прицел наведен на противника. Цвета для макроса {{py:sight.piercingChanceColor}} настраиваются в файле sight.xc: //цвет шанса на пробитие ({{py:sight.piercingChanceColor}}) "c:piercingChance": { "not_pierced": "#E82929", "little_pierced": "#E1C300", "great_pierced": "#2ED12F", "not_target": "" }, Скрипт: chancePenetration.py Спидометр: Скрипт управляет отображением спидометра с помощью параметра "showSpeedometer" из файла конфигурации sight.xc: // опция управляет отображением спидометра (значение по умолчанию - "wheels") //"none" - скрыть для любой техники, "all" - показывать для любой техники, "wheels" - показывать для колёсной техники "showSpeedometer": "wheels", Скрипт: speedometer.py Режим техники (скоростной, осадный): {{py:mode.siege}} - для техники имеющий осадный режим возвращает 'siege' в осадном режиме, иначе 'normal'. Для остальной техники - пусто; {{py:mode.autoSiege}} - для техники имеющий автоматический осадный режим возвращает 'siege' в осадном режиме, иначе 'normal'. Для остальной техники - пусто; {{py:mode.speed}} - для техники имеющий скоростной режим езды возвращает 'speed' в скоростном режиме, иначе 'normal'. Для остальной техники - пусто. PY(ON_VEHICLE_MODE) - событие предназначено для обновления данных макросов. Скрипт: modesVehicle.py Перекрестие: {{py:sight.distCrosshair}} - расстояние до точки наведения центрального маркера; PY(ON_CROSSHAIR) - событие предназначено для обновления данного макроса. Скрипт: crosshair.py Советы по оформлению конфига: Совет №1. Если у вас в каком-то параметре очень сложная конструкция (много вложенных макросов с форматированием), то можно использовать макрос {{.}}. Например вы хотите использовать разные макросы перезарядки для обычной техники, двухствольной техники и техники с механизмом дозарядки. Для этого создаем в папке с вашим конфигом файл templates.xc содержащим: { "templates":{ "reload":{ "dual": { "format": "здесь то, что должно отображаться для двухствольной" }, "autoLoad": { "format": "здесь то, что должно отображаться для техники с механизмом дозарядки" }, "other": { "format": "здесь то, что должно отображаться для остальной техник" } } } } В файле @xvm.xc добавляем ссылку: "templates": ${"templates.xc":"templates"}, После этого в файле battleLabelSight.xc использовать следующую конструкцию: "timeReload": { "enabled": true, "updateEvent": "PY(ON_RELOAD), PY(ON_AIM_MODE)", "x": что-то там, "y": что-то там, "width": что-то там, "height": что-то там, . . . "format": "{{.templates.reload.{{py:featureVehicle('other', 'other', 'other', 'dual', 'autoLoad')}}.format}}" }, Для макроса {{py:featureVehicle}} необходим скрипт infoMyVehicle.py Пример устарел. Пример использования (у меня хватило сил сделать только аркадный режим))): 1) В файл battleLabels.xc добавить: ${ "battleLabelSight.xc":"def.cameraMode"}, ${ "battleLabelSight.xc":"def.timeReload"}, ${ "battleLabelSight.xc":"def.baseTimeReload"}, ${ "battleLabelSight.xc":"def.reloadBar"}, ${ "battleLabelSight.xc":"def.healthBar"}, ${ "battleLabelSight.xc":"def.healthPercent"}, ${ "battleLabelSight.xc":"def.health"}, ${ "battleLabelSight.xc":"def.shells"} 2) Файлы battleLabelSight.xc и sight.xc скопировать в папку с вашим кофигом (например в \res_mods\configs\xvm\default\) 3)В файле @xvm.xc нужно добавить ссылку на файл sight.xc: "sight": ${"sight.xc":"sight"}, 4) Файлы aimingSystem.py, reloading.py, quantityShells.py, sight.py скопировать в \res_mods\configs\xvm\py_macro\ config.zip 5) Установить шрифт используемый в данном примере: 7fonts.ru_DS-DIGIT.rar 6) Файл arcSight.png скопировать в \res_mods\mods\shared_resources\xvm\res\: arcSight.rar В примере использован макрос {{py:my_hp.health}} из скрипта myHP.py. Скрипт искать в этой теме. В результате у вас должно получиться следующее: Конфигурация прицела от @fgcwsxjegcbk2014. Конфигурация прицела от @WarDogs_Alex. Конфигурация прицела от @andreyvazmtp. Edited December 31, 2024 by ktulho 33 @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted January 24, 2017 Share Posted January 24, 2017 @ktulho, я вот начинал делать то же самое =) @ Quote Link to comment Short link Share on other sites More sharing options...
ktulho Posted January 24, 2017 Author Share Posted January 24, 2017 @ktulho, я вот начинал делать то же самое =) @ Quote Link to comment Short link Share on other sites More sharing options...
Slava7572 Posted January 24, 2017 Share Posted January 24, 2017 Воистину ХВМ становится глобальным модом,практически все есть)))) 1 1 @ Quote Link to comment Short link Share on other sites More sharing options...
KL1SK Posted January 24, 2017 Share Posted January 24, 2017 (edited) В идеале нужно скрестить с этим. И то и это фишки для прицела. Нужно добавить: дистанцию до цели, при отсутствии цели - дистанция до точки сведения. максимальное количество снарядов в барабане, динамический цвет для перезарядки и хп. Скрытие стандартных элементов: снаряды и дистанция до цели. И да, вещь очень полезная, не нужно искать себе прицел по душе. Поставил, настроил, забыл. Edited January 24, 2017 by KL1SK 2 @ Quote Link to comment Short link Share on other sites More sharing options...
Kapany3uk Posted January 25, 2017 Share Posted January 25, 2017 (edited) какие еще макросы нужны вот тут писал :)) еще хотелки: - для настройки хотелось бы работоспособность в реплеях (посмотрел только время перезарядки, показывает нули), если возможно... - по окончании перезарядки в "leftTime" хотелось бы увидеть надпись типа "готов" (поскольку полное время перезарядки можно выводить через "reloadTime") - как настроить? - в стандартном прицеле показывает время перезарядки между снарядами в барабане - такой макрос нужен отдельно, чтобы одновременно смотреть и полную перезарядку и в барабане... Edited January 25, 2017 by Kapany3uk 2 @ Quote Link to comment Short link Share on other sites More sharing options...
napeHb_u3_npeucnogHeu Posted January 25, 2017 Share Posted January 25, 2017 пишите какие еще макросы нужны. Время подлета боеприпаса к цели (для арт. прицела) @ Quote Link to comment Short link Share on other sites More sharing options...
ktulho Posted January 25, 2017 Author Share Posted January 25, 2017 (edited) - для настройки хотелось бы работоспособность в реплеях (посмотрел только время перезарядки, показывает нули), если возможно... , работает в риплеях. - по окончании перезарядки в "leftTime" хотелось бы увидеть надпись типа "готов" (поскольку полное время перезарядки можно выводить через "reloadTime") - как настроить? , как обычно {{py:sight.leftTime>0?{{py:sight.leftTime%3.1f}}|Готов}} - в стандартном прицеле показывает время перезарядки между снарядами в барабане - такой макрос нужен отдельно, чтобы одновременно смотреть и полную перезарядку и в барабане... , типа reloadTimeClip? - круг разлета осколков (для классического арт-прицела, для БА - не уверен) текущего фугаса , не представляю как это сделать графически. Edited January 25, 2017 by ktulho @ Quote Link to comment Short link Share on other sites More sharing options...
Kapany3uk Posted January 26, 2017 Share Posted January 26, 2017 , работает в риплеях.показывает нули, а хотелось бы таймеры..., типа reloadTimeClip?Да. И чтобы reloadTime всегда показывал только полную перезарядку, а reloadTimeClip только между снарядами в барабане... @ Quote Link to comment Short link Share on other sites More sharing options...
ktulho Posted January 26, 2017 Author Share Posted January 26, 2017 показывает нули, а хотелось бы таймеры... , 0 показывает до начала боя (исправлю), а потом нормально. @ Quote Link to comment Short link Share on other sites More sharing options...
Lom Posted January 26, 2017 Share Posted January 26, 2017 мда... скоро прицелы вовсе ненужны будут))) и самое главное красиво же получается))) и функционально конечно же))) @ Quote Link to comment Short link Share on other sites More sharing options...
demon2597 Posted January 26, 2017 Share Posted January 26, 2017 (edited) пишите какие еще макросы нужны для арт прицела нужно время полета снаряда до точки прицеливания и расстояние до этой точки, если возможно конечно. а до кучи тогда прикольно было бы припаять и дальнобойность текущего орудия. отпадная тема, большое спасибо! теперь осталось найти время это попробовать:) единственный недостаток по сравнению с флэш прицелами- это то, что нельзя делать какие-то анимированные штуки, но это не смертельно. Edited January 26, 2017 by demon2597 2 1 @ Quote Link to comment Short link Share on other sites More sharing options...
vlad_cs_sr Posted January 26, 2017 Share Posted January 26, 2017 , не представляю как это сделать графически. в смысле, нарисовать круг определённого диаметра вокруг центрального маркера не получится? @ Quote Link to comment Short link Share on other sites More sharing options...
ktulho Posted January 26, 2017 Author Share Posted January 26, 2017 в смысле, нарисовать круг определённого диаметра вокруг центрального маркера не получится? А как менять размер? Менять масштаб? Или менять ширину и высоту? @ Quote Link to comment Short link Share on other sites More sharing options...
Kapany3uk Posted January 26, 2017 Share Posted January 26, 2017 (edited) А как менять размер? Менять масштаб? Или менять ширину и высоту? м.б. размером картинки? изначально использовать картинку максимального размера с вписанным кругом (300х300 к примеру), а в процессе "подгонки" под конкретный танк размер будет пропорционально уменьшаться (клиент вроде ресайзит без искажений) @ktulho, тут проблема, по-видимому зависит от разрешения экрана: зеленый - клиентский таймер, белый - из аддона при разных режимах прицела белый таймер сдвигается непропорционально клиентскому... Как поправить? зы. использую клиентский таймер, поскольку привык к отображению секунд с сотыми, а в аддоне меняется 10 раз/сек, предположу, что если менять 100 раз/сек упадет производительность... Edited January 26, 2017 by Kapany3uk @ Quote Link to comment Short link Share on other sites More sharing options...
ktulho Posted January 26, 2017 Author Share Posted January 26, 2017 (edited) @Kapany3uk В аддоне, с помощью макроса sight_y, выравнивается относительно центрального маркера. С помощью макроса cameraMode определяй режим прицела, и размещай где захочешь в соответствующем режиме. Edited January 26, 2017 by ktulho 2 @ Quote Link to comment Short link Share on other sites More sharing options...
vlad_cs_sr Posted January 26, 2017 Share Posted January 26, 2017 А как менять размер? Менять масштаб? Или менять ширину и высоту? эм, ну не знаю.. смотреть на зум в прицеле (в принципе, это тока для арт-режима нужно ж), и как-то масштабировать от него?.. а как это делается во флеш-прицелах? @ Quote Link to comment Short link Share on other sites More sharing options...
ktulho Posted January 26, 2017 Author Share Posted January 26, 2017 Мне кажется, изображение будет "мылиться". И при увеличении изображения , линия круга будет утолщаться, а при уменьшении становиться тоньше. @ Quote Link to comment Short link Share on other sites More sharing options...
Kapany3uk Posted January 26, 2017 Share Posted January 26, 2017 Мне кажется, изображение будет "мылиться". И при увеличении изображения , линия круга будет утолщаться, а при уменьшении становиться тоньше. а если взять максимально используемый размер как основу? тогда все остальные случаи - это уменьшение базовой картинки, и если при этом толщину круга в основе сделать 1рх, то даже при самом сильном уменьшении останется эта же толщина (меньше, чем 1рх комп не умеет :)) конечно "мыло" останется, но, КМК, будет уже не так сильно различаться в крайних случаях... @ Quote Link to comment Short link Share on other sites More sharing options...
ktulho Posted January 26, 2017 Author Share Posted January 26, 2017 а если взять максимально используемый размер как основу? тогда все остальные случаи - это уменьшение базовой картинки, и если при этом толщину круга в основе сделать 1рх, то даже при самом сильном уменьшении останется эта же толщина (меньше, чем 1рх комп не умеет :)) , не получиться, это же растровое изображение. И при увеличении изображения , линия круга будет утолщаться, а при уменьшении становиться тоньше. Нарисовал круг диаметром 1000 вывел как 200 на 200 (уменьшил в пять раз). Результат: Добавил: {{py:sight.distance}} - дальность полета снаряда (в метрах); {{py:sight.timeFlight}} - время полета снарядов (в секундах). PY(ON_MARKER_POSITION) - по данному событию обновляются макросы {{py:sight.distance}} и {{py:sight.timeFlight}}. 3 @ Quote Link to comment Short link Share on other sites More sharing options...
Recommended Posts
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.