Jump to content
Korean Random

Leaderboard


Popular Content

Showing content with the highest reputation on 09/01/2019 in Posts

  1. 1 point
    Решил собрать в одном месте свои мелкие скрипты (а то уже стал забывать, что делал, зачем делал). Для установка аддонов необходимо скопировать соответствующий скрипт (файл с расширением py) в папку \res_mods\configs\xvm\py_macro\ Список аддонов: Таймер Debug panel Размер миникарты Ограничение строк в чате Отключение лога уничтоженных (над миникартой) Маркер над своим танком Таймер для шестого чувства Название карты Команда захватившая базу Premium аккаунт Очки прочности своей техники Макросы для "ушей", маркеров и миникарты Онлайн статистика Начало боя Цвет границы карты Внутриигровой браузер Макросы плавного перехода цветов Информация о своей технике Перемотка реплея Режим прицела Скоростной режим в начале боя События по таймеру Быстрый выход из боя Показать/скрыть или включить/отключить чат в бою. Скрыть текст статуса аккаунта Таймер: Данная модификация добавляет py_macro: {{py:xvm.leftTime(x)}} - возвращает 'lt', если после входа в бой прошло меньше x секунд, иначе возвращает пусто. Скрипт: timer.py Debug_panel: Данная модификация добавляет py_macro: {{py:xvm.fps}} - FPS в бою {{py:xvm.ping}} - возвращают ping {{py:xvm.fps_replay}} - при просмотре реплея возвращает FPS, который был в бою. В бою возвращает пусто. {{py:xvm.lag}} возвращает 'lag' или пусто. Скрипт: debugPanel.py Размер миникарты: Данная модификация добавляет py_macro: {{py:sizeMap}} - размер миникарты в пикселях. PY(ON_MAP_RESIZE) - событие срабатывает при изменении размера миникарты. Пример отображения панели эффективности слева от миникарты: "totalEfficiency": { "enabled": true, "updateEvent": "PY(ON_TOTAL_EFFICIENCY), PY(ON_MAP_RESIZE)", "screenVAlign": "bottom", "x": "{{py:math.sum({{py:xvm.screenWidth}},-70,-{{py:sizeMap}})}}", "y": -2, "width": 70, "height": "{{py:xvm.isStuns?120|96}}", "textFormat": { "size": 16, "align": "right" }, "format": "<textformat leading='4'><font color='{{py:xvm.totalDamage>0?{{py:xvm.totalDamageColor}}}}'>{{py:xvm.totalDamage}}</font> <img src='xvm://res/icons/Efficiency/damage.png' vspace='-2'><br>{{py:xvm.totalAssist}} <img src='xvm://res/icons/Efficiency/assist.png' vspace='-2'><br>{{py:xvm.totalBlocked}} <img src='xvm://res/icons/Efficiency/reflect.png' vspace='-2'><br>{{py:xvm.detection}} <img src='xvm://res/icons/Efficiency/discover.png' vspace='-2'><br>{{py:xvm.totalStun}} <img src='xvm://res/icons/Efficiency/stun.png' vspace='-2'></textformat>" }, Скрипт: minimapSize.py Ограничение строк в чате: Этот скрипт ограничивает количество строк в чате (в бою). Количество строк задается в самом скрипте, в 7 строке: makeSettingsVO['maxLinesCount'] = 2 Скрипт: messenger.py Отключение лога уничтоженных (над миникартой): Скрипт отключает вывод сообщений над миникартой. Скрипт: notShowBattleMessage.py Маркер над своим танком: Это переделанный и адаптированный под XVM мод от @MakcT40 (что-то он его подзабросил). Аддон добавляет маркер над техникой игрока. Для настройки необходимо добавить в файл markers.xc в секцию "markers" следующие строки: "playerMarkers": { //true - включен при старте "onStart": true, //клавиша включения/выключения маркера "keyCode": 49 }, Скрипт: playerMarker.py Таймер для шестого чувства: Данная модификация позволяет выводить таймер обратного отсчета при засвете. {{py:xvm.sixthSenseTimer(x)}} - возвращает оставшееся время после засвета, иначе пусто. Аргумент x - продолжительность отсчета. PY(ON_SIXTH_SENSE_SHOW) - событие срабатывает при засвете. Пример отображения отсчета поверх лампы засвета: 1) В файл battleLabels.xc добавить: ${ "battleLabelsTemplates.xc":"def.sixthSenseTimer"} 2) В файл battleLabelsTemplates.xc добавить: "sixthSenseTimer": { "enabled": true, "updateEvent": "PY(ON_SIXTH_SENSE_SHOW)", "x": 0, "y": 260, "width": 60, "height": 50, "screenHAlign": "center", "shadow": { "distance": 1, "angle": 90, "alpha": 80, "blur": 5, "strength": 1.5 }, "textFormat": {"align": "center", "size": 40 }, "format": "{{py:xvm.sixthSenseTimer(10)}}" }, Скрипт: sixthSense.py Название карты Данная модификация добавляет py_macro: {{py:map.nameFile}} - название файла карты, на которой проходит бой. {{py:map.localeName}} - локализованное название карты, на которой проходит бой. {{py:map.kind}} - возвращает 'summer', если карта летняя, 'winter' - зимняя, 'desert' - пустынная. Пример отображение карты с разъездами (карты должны находиться в \res_mods\mods\shared_resources\xvm\res\ в формате PNG): "maps": { "hotKeyCode": 56, "onHold": true, "x": 200, "y": 550, "width": 500, "height": 500, "align": "center", "format": "<img src='xvm://res/{{py:map.nameFile}}.png'>" }, Скрипт: maps.py Команда захватившая базу: Данная модификация добавляет py_macro: {{py:teamCaptured}} - возвращает 'ally' - если захватили союзники, 'enemy' - если захватили противники, иначе возвращает пусто. Через десять секунд после захвата, макрос вновь начнет возвращать пусто. PY(ON_CAPTURED) - событие срабатывает, если какая-либо из команд захватила базу. Скрипт: capture.py Premium аккаунт: Данная модификация добавляет py_macro: {{py:prem.timeLeft}} - возвращает оставшееся количество дней или часов (если осталось меньше 24 часов) до окончания премиум аккаунта (ПА). Если ПА закончился, то возвращает пусто. {{py:prem.timeMetric}} - возвращает в русской локализации "д." или "ч." (если осталось меньше 24 часов) . Если ПА закончился, то возвращает пусто. {{py:prem.timeLeftDays}} - возвращает оставшееся количество дней до окончания премиум аккаунта (ПА). Если ПА закончился, то возвращает пусто. {{py:prem.timeLeftHours}} - возвращает оставшееся количество часов (от 0 до 23) до окончания премиум аккаунта (ПА). Если ПА закончился, то возвращает пусто. {{py:prem.timeLeftMinutes}} - возвращает оставшееся количество часов (от 0 до 59) до окончания премиум аккаунта (ПА). Если ПА закончился, то возвращает пусто. {{py:prem.premType}} - возвращает 'plus' или 'basic' в зависимости от типа активного премиум аккаунта, иначе пусто PY(ON_INFO_PREMIUM) - событие для обновления данных макросов. Скрипт: infoPremium.py Очки прочности своей техники: Данная модификация добавляет py_macro: {{py:my_hp.health(norm)}} - если параметр norm не задан, то возвращает количество оставшихся очков прочности. Иначе возвращает нормализованное значение очков прочности; {{py:my_hp.maxHealth}} - максимальное количество очков прочности; {{py:my_hp.dmg}} - последний полученный урон. PY(ON_MY_HP) - событие для обновления данных макросов. Пример для отображения полоски HP под панелью снарядов: 1) В файл battleLabels.xc добавить: ${ "battleLabelsTemplates.xc":"def.hpBar"}, ${ "battleLabelsTemplates.xc":"def.hpBar_Background"}, ${ "battleLabelsTemplates.xc":"def.hpBar_text"} 2) В файл battleLabelsTemplates.xc добавить: "hpBar": { "enabled": true, "updateEvent": "PY(ON_MY_HP)", "x": "{{py:math.sum(-248,{{py:math.div({{py:my_hp.health(496)}}, 2)}})}}", "y": -4, "width": "{{py:my_hp.health(496)}}", "height": 14, "bgColor": "{{py:my_hp.health(100)>75?0x00AF00|{{py:my_hp.health(100)>50?0xCB9E00|{{py:my_hp.health(100)>25?0xF66700|0xD22A00}}}}}}", "screenVAlign": "bottom", "screenHAlign": "center" }, "hpBar_Background": { "enabled": true, "x": 0, "y": -2, "width": 502, "height": 20, "screenHAlign": "center", "screenVAlign": "bottom", "format": "<img src='xvm://res/my_hp_bar/hpBar_Background.png'>" }, "hpBar_text": { "enabled": true, "updateEvent": "PY(ON_MY_HP)", "x": 0, "y": -2, "width": 100, "height": 20, "screenHAlign": "center", "screenVAlign": "bottom", "textFormat": { "align": "center" }, "format": "<font size='14' color='#00E5FD'>{{py:my_hp.health}}/{{py:my_hp.maxHealth}}</font>" } 3) Для смещения панели снарядов и расходников, в файле elements.xc добавить секцию: "consumablesPanel": { "$delay": 4000, "y": "{{py:math.sub({{py:xvm.screenHeight}}, 80)}}" } Если панель снарядов и расходников не сдвигается, попробуйте увеличить значение параметра "$delay". 4) Файл hpBar_Background.png (подложка) скопировать в \res_mods\mods\shared_resources\xvm\res\my_hp_bar\ hpBar_Background.zip Скрипт: myHP.py Макросы для "ушей", маркеров и миникарты: Данная модификация добавляет py_macro: {{py:killerName('{{name}}')}} - имя игрока уничтожившего данную технику; {{py:killerVehicle('{{name}}')}} - название техники игрока уничтожившего данную технику; {{py:reloadVehicle('{{name}}')}} - время перезарядки орудия (не таймер); {{py:visionRadius('{{name}}')}} - табличный обзор техники; {{py:piercingPower('{{name}}')}} - средняя бронепробиваемость основного снаряда; {{py:shellDamage('{{name}}')}} - средний урон основного снаряда; {{py:isHardening('{{name}}')}} - возвращает 'hardening' для техники с установленным оборудованием 'Улучшенная закалка', иначе пусто; {{py:isAmmoClip('{{name}}')}} - возвращает 'clip' для техники с барабаном заряжания или механизмом дозарядки, иначе пусто. Пример использование данных макросов. Скачать: collection.py Онлайн статистика: Данная модификация позволяет изменить внешний вид онлайн статистики в ангаре. Для использования данной модификации в файл hangar.xc в секцию "serverInfo" необходимо добавить: // заменяет отображение названия сервера и количество игроков на сервере. // можно использовать макросы: {{serverName}}, {{clusterUsers}}, {{total}}, {{regionUsers}}. "clusterStats": "<font color='#FFFFFF'>{{serverName}}: {{clusterUsers}}</font>", // заменяет отображение "Всего" и количество игроков на кластере. // можно использовать макросы: {{serverName}}, {{clusterUsers}}, {{total}}, {{regionUsers}}. "regionStats": "<font color='#FFFFFF'>{{total}}: {{regionUsers}}</font>" Значение макросов: {{serverName}} - название сервера; {{clusterUsers}} - количество игроков на сервере; {{total}} - локализованное слово "Всего". {{regionUsers}} - количество игроков на кластере. Скрипт: onlineStats.py Начало боя: Данная модификация добавляет py_macro: {{py:isBattle}} - возвращает 'battle', если бой начался, иначе пусто. PY(ON_BEGIN_BATTLE) - событие для обновления макроса {{py:isBattle}}. Скрипт: beginBattle.py Цвет границы карты: Данная модификация позволяет изменять цвет границы карты. Для использования данной модификации в файл battle.xc в секцию "battle" необходимо добавить: // Настройка цвета границы карты "borderColor": { "color": "0x00ff00", "alpha": 100 }, Скачать: borderColor.py Внутриигровой браузер: На данный момент не работает. Данная модификация позволяет открыть ссылку во внутриигровом браузере. Аддон добавляет следующие py_macro: {{py:ob.highlight}} - возвращает 'highlight', если курсор мышки находится над полем, иначе пусто. {{py:ob.address(url)}} - параметр 'url' задает адрес открываемого сайта. PY(ON_OPEN_BROWSER) - событие для обновления данных макросов. "openBrowser_Down", "openBrowser_Over", "openBrowser_Out" - обработчики событий мыши. Пример использования: В файл widgets.xc в секцию "lobby" добавить строку: ${ "widgetsTemplates.xc":"openBrowser" } В файл widgetsTemplates.xc.xc добавить секцию: "openBrowser": { "enabled": true, "layer": "top", "type": "extrafield", "formats": [ { "updateEvent": "PY(ON_OPEN_BROWSER)", "screenHAlign": "center", "x": 300, "y": 1, "width": 90, "height": 20, "textFormat": { "color": "{{py:ob.highlight?0x3B95FF|0xD8B44E}}", "size": 14}, "format": "<u>Korean Random</u>{{py:ob.address('https://koreanrandom.com')}}", "mouseEvents": {"mouseDown": "openBrowser_Down", "mouseOver": "openBrowser_Over", "mouseOut": "openBrowser_Out"} } ] } Скрипт: openBrowser.py Макросы плавного перехода цветов: Аддон добавляет макросы плавного перехода цветов: {{py:dynamic_colorRGB(color_100, color_0, percent, maximum)}} {{py:dynamic_colorRBG(color_100, color_0, percent, maximum)}} {{py:dynamic_colorGRB(color_100, color_0, percent, maximum)}} {{py:dynamic_colorGBR(color_100, color_0, percent, maximum)}} {{py:dynamic_colorBRG(color_100, color_0, percent, maximum)}} {{py:dynamic_colorBGR(color_100, color_0, percent, maximum)}} {{py:dynamic_color(color_100, color_0, percent, maximum)}} Если параметр maximum не задан, то считается что он равен 100. Программа для облегчения выбора нужного вам макроса: Color.exe Скрипт: colorMacros.py Информация о своей технике: {{py:isWheeledTech}} - возвращает 'wheel' если техника колесная, иначе пусто; {{py:hasSiegeMode}} - возвращает 'siege' если техника может переходить в осадный режим, иначе пусто; {{py:hasAutoSiegeMode}} - возвращает 'autosiege' если техника может автоматически переходить в осадный режим, иначе пусто; {{py:isDualGun}} - возвращает 'dual' если техника имеет два орудия, иначе пусто; {{py:isAutoReload}} - возвращает 'auto' для техники с механизмом дозарядки, иначе пусто; {{py:hasTurboshaftEngine}} - возвращает 'turbo' для техники с газотурбинным двигателем, иначе пусто; {{py:isClip}} - возвращает 'clip' для техники с барабаном заряжания, иначе пусто; {{py:featureVehicle(v1, v2, v3, v4, v5, v6, v7)}} - возвращает: для колесной техники - v1, если значение не задано - 'wheel'; для техники имеющей осадный режим - v2, если значение не задано - 'siege'; для техники автоматически переходящей в осадный режим - v3, если значение не задано - 'autosiege'; для двухствольной техники - v4, если значение не задано - 'dual'; для техники с механизмом дозарядки - v5, если значение не задано - 'auto'; для техники с газотурбинным двигателем - v6, если значение не задано - 'turbo'; для техники с "барабаном" - v7, если значение не задано - 'clip'. {{py:invisibilityMove}} - коэффициент незаметности в движении. На реплеях, или если зашли в бой не из ангара, не учитываются перки экипажей. Скрипт: infoMyVehicle.py Перемотка реплея: Аддон расширяет возможности перемотки реплеев: стрелка вправо/влево - перемотка на 20 секунд; SHIFT + стрелка вправо/влево - перемотка на 1 минут; CTRL + стрелка вправо/влево - перемотка на 2 минуты; ALT + стрелка вправо/влево - перемотка на 5 минут. Скрипт: rewindRepeat.py Режим прицела: {{py:aim.mode(v1, v2, v3)}} - возвращает v1 - в аркадном , v2 - в снайперском, v3 - в стратегическом (артиллерийском) режиме прицела, если значения v1, v2, v3 не заданы, то возвращает 'arc' - в аркадном, 'sn' - в снайперском, 'str' - в стратегическом (артиллерийском) режиме прицела; {{py:aim.y(shift)}} - возвращает расстояние по оси y между центром экрана и центром прицела в пикселях, в зависимости от режима прицела. Параметр 'shift' позволяет задать смещение от центра прицела по оси y. {{py:aim.netType(v1, v2, v3, v4)}} - тип выбранной сетки прицела. В стратегическом режиме возвращает пусто. В аркадном и снайперском режимах возвращает: для "диагонального" - v1, если значение не задано - 'diagonal'; для "горизонтального" - v2, если значение не задано - 'horizontal'; для "радиальный" - v3, если значение не задано - 'radial'; для "пунктирный" - v4, если значение не задано - 'dotted'. PY(ON_AIM_MODE) - событие срабатывает при смене режима прицела. Скрипт: aimingSystem.py Скоростной режим в начале боя: При установке данного скрипта, в начале боя будет включаться скоростной режим, если техника поддерживает данный режим. Скрипт: enableAutorotation.py События по таймеру: Дополнение позволяет создавать свои события, которые будут обновлять поля через указанный промежуток времени. Для создания своих событий необходимо: 1) в файл @xvm добавить ссылку: "events": ${"events.xc":"events"}, 2) создать файл events.xc в папке со своим конфигом содержащим: { "events": { // события для боя "battleTimers": [ ], // события для ангара "hangarTimers": [ ] } } 3) добавить в секцию "battleTimers" события для боя (battleLabels), в секцию "hangarTimers" - для ангара (widgets). Пример: { "events": { // события для боя (battleLabels) "battleTimers": [ // "period" - период в секундах, через которое будет обновляться поле // "name" - нахвание события {"period": 5, "name": "ON_EVENT_5"}, {"period": 10, "name": "ON_EVENT_10"} ], // события для ангара (widgets) "hangarTimers": [ {"period": 30, "name": "ON_EVENT_30"}, {"period": 60, "name": "ON_EVENT_MINUTE"} ] } } После этого в battleLabels можно будет использовать события PY(ON_EVENT_5) и PY(ON_EVENT_10), поля будут обновляться каждые 5 и 10 секунд соответственно. А в widgets - события PY(ON_EVENT_30) и PY(ON_EVENT_MINUTE), поля будут обновляться каждые 30 и 60 секунд. Скрипт: timerEvents.py Быстрый выход из боя: Дополнение позволяет назначит клавишу для быстрого выхода из боя, если выход не повлечет штраф за "дезертирство" (при просмотре реплея - закроет клиент). Аддон отключен для режима "Стальной охотник". Пример использования: Для выхода из боя по клавиши F4 в файл hotkeys.xc нужно добавить: "quicklyLeave": { "enabled": true, "keyCode": 62, "modifier": "ctrl"} Параметр "modifier" - клавиша-модификатор может принимать значения: "none", "shift", "ctrl", "alt". Скрипт: quicklyLeave.py Показать/скрыть или включить/отключить чат в бою: Дополнение позволяет назначит клавишу для скрывания и/или включения/отключения чата в бою. Пример использования: Чтобы скрыть/показать чат в бою по клавиши H в файл hotkeys.xc нужно добавить: "hideBattleChat": { "enabled": true, "keyCode": 35, "modifier": "none"} Для отключения чата в бою по клавише O в файл hotkeys.xc нужно добавить: "disableBattleChat": { "enabled": true, "keyCode": 24, "modifier": "none"} Параметр "modifier" - клавиша-модификатор может принимать значения: "none", "shift", "ctrl", "alt". Скрипт: hideBattleChat.py Скрыть текст статуса аккаунта: Аддон скрывает текст статуса аккаунта (премиум, базовый). Скрипт:accountTypes.py
  2. 1 point
    Project "ORION" "Когда на питоне начинаются разговоры про быстроту я сразу волнуюсь" © ВЛ Версия: 1.3.5 Дата обновления: 11.08.2019 Описание: Перед вами универсальный инструмент для компиляции, декомпиляции и обфускации python-модов. Программа использует технологию Python4Delphi и взаимодействует с python-движком через dll-библиотеку. Исходники модулей питона запакованы в zip-архив, который идёт вместе с программой. Для полноценной автономной работы Ориона достаточно иметь dll-библиотеку и zip-архив с модулями питона. При этом вы можете подключиться и к любому python-движку, который уже установлен на вашем компьютере. Ограничения: ОС Windows XP/Vista/7/8/10 поддерживаются Python 2.3-3.6 dll-файлы только версии x86 тестировалось на Python 2.6.x, 2.7.x, 3.6.x и их более ранних версиях запуск только из каталогов, не содержащих в путях буквы русского алфавита Особенности: Видео для новичков - YouTube Скачать: Графическая оболочка PjOrion+Питон 2.7.x+*pack.zip: PjOrion_1.3.5_11.08.2019.zip (архив с DLLs) PjOrion_1.3.5_WebUpdOff_UpdWOTTrans.zip (архив без DLLs, можно скопировать папку из первого архива) Старые версии программы: Здесь Как защитить свой код: Не следует! Применять протектор к необфусцированному скрипту, так как в этом случае код может быть декомпилирован непосредственно из среды питона Ограничиваться только обфускацией байт-кода скрипта без наложения протектора, так как в таком случае байт-код легко доступен для анализа и модификации с последующей декомпиляцией Применять протектор несколько раз к одному скрипту, так как на практике это не делает защиту более стойкой, однако увеличивает время импорта модуля и может даже нарушить его работу Включать опцию "Lock attributes review and double import", если ваш скрипт подменяет реальный модуль клиента игры или у вас несколько модулей и они импортируют друг друга, так как атрибуты модулей из вне доступны не будут Использовать функцию def Init() для запуска вашего мода, если вы включили опцию "Lock attributes review and double import", так как с данной опцией загрузчик модов, встроенный в клиент, не сможет получить доступ к функции Init() Внимание! Если вы компилируете скрипт с обфускацией, то ни в коем случае предварительно не сжимайте его в строку командой "Move script to ZipBase64-box", так как байт-код вашего скрипта не будет обфусцирован и его можно легко извлечь! История версий: Если файл не декомпилируется - скорее всего он защищён Файлы могут не декомпилироваться по нескольким причинам: Версия питона, в котором скомпилирован файл, не совместима с версией декомпилятора Например, декомпиляторы в Орионе не понимают Python 3.x, но работают с питоном более младших версий. В таких случаях нужно искать соответствующий декомпилятор. Выбранный декомпилятор не смог правильно распознать байт-код или его структуру Как известно декомпиляторы несовершенны, а потому их много разных и все они работают с разным результатом. По этой причине в Орионе собрано несколько декомпиляторов из наиболее известных. Если один не справился, то пробуйте другой. Байт-код защищён от декомпиляции автором файла Если файл защищён, то выполнить реверс скрипта доступными в сети декомпиляторами и общеизвестными инструментами, как правило, нельзя, так как файл как раз от этого и защищён. В таких случаях я всегда рекомендую искать автора файла, обращаться к нему, и если он сочтёт нужным, то поделится с вами исходником или какой-либо еще информацией, интересующей вас. Если вы сомневаетесь защищён ли файл от декомпиляции, то вот тут можно посмотреть примеры. Декомпилированные pyc-файлы и распакованные xml-файлы игры Файлы: Репозитарий c файлами клиентов игры WorldOfTanks-Decompiled Для каждой версии клиента игры создана отдельная ветка, список веток Network Для поиска кода в py-файлах клиента: Скачайте архив с нужной веткой и извлеките содержимое в любую папку. Откройте Notepad++ и перенесите в него папку scripts\client, затем дождитесь когда он загрузит файлы. Для поиска по всем файлам жмём CTRL+F, вводим строку поиска и жмём "Найти всё во всех Открытых Документах", затем наслаждаемся результатом. Чтобы закрыть все файлы в Notepad++ и при этом он не пытался их все открыть заново при следующем запуске, закрывайте файлы командой из главного меню "Файл - Закрыть все". Как самому декомпилировать и распаковать файлы игры: Скачиваем PjOrion, извлекаем в любую папку (русские символы в пути не желательны). Запускаем программу от имени администратора, вызываем окно настроек Terminal - Settings - Context menu..., ставим галочку "Integrate into the Explorer context..." и жмем кнопку "Apply...". Выходим из программы, заходим в папку с игрой и копируем в любое место подпапку World_Of_Tanks\res\scripts. У скопированной папки scripts вызываем правой кнопкой мыши контекстное меню проводника и выбираем команду PjOrion - Decompile pyc-files - Uncompyle2, затем ожидаем окончания работы программы, за ходом декомпиляции можно следить по статистике внизу программы в строке состояния. После завершения декомпиляции, распаковываем xml-файлы, для этого опять вызываем контекстно меню проводника на папке и выбираем команду PjOrion - Unpack XML-files, затем ждем завершения.
  3. 1 point
    Возникли у меня проблемы с модом УГН (не отображались уголки в некоторых боях), попробовал сделать через battleLabels. Получилось не так плохо, как могло бы.)) Данная модификация добавляет следующие макросы: {{py:anglesAiming.left(shift)}} - координата Х левого УГН (всегда отрицательна или равна 0).С помощью параметра shift можно указать смещение по оси X. Если shift не задан, то он равен 0. {{py:anglesAiming.right(shift)}} - координата Х правого УГН (всегда положительна или равна 0). С помощью параметра shift можно указать смещение по оси X. Если shift не задан, то он равен 0. {{py:anglesAiming.bottom(shift)}} - координата Y нижнего УВН (всегда положительна или равна 0, кроме аркадного режима).С помощью параметра shift можно указать смещение по оси Y. Если shift не задан, то он равен 0. {{py:anglesAiming.top(shift)}} - координата Y верхнего УВН (всегда отрицательна или равна 0, кроме аркадного режима). С помощью параметра shift можно указать смещение по оси Y. Если shift не задан, то он равен 0. {{py:anglesAiming.yaw}} - угол между орудием и корпусом техники в градусах; {{py:anglesAiming.pitch}} - угол склонения орудия в градусах; {{py:anglesAiming.yawLeft}} - возвращает максимальный угол поворота влево орудия, если башня вращается на 360 градусов, то возвращает пусто; {{py:anglesAiming.yawRight}} - возвращает максимальный угол поворота вправо орудия, если башня вращается на 360 градусов, то возвращает пусто; {{py:anglesAiming.pitchMax}} - возвращает максимальный угол склонения орудия; {{py:anglesAiming.pitchMin}} - возвращает максимальный угол подъема орудия. PY(ON_ANGLES_AIMING) - событие для перечисленных выше макросов. 'Скриншоты' 'Установка:' Скрипт: anglesAiming.py Уголки от @Kapany3uk
  4. 1 point
  5. 1 point
  6. 1 point
  7. 1 point
  8. 1 point
    Думаю не очень востребован будет данный макрос. Добавлю лучше макрос {{py:arabic_to_roman(int)}} - перевод арабский чисел в римские. Его можно будет использовать везде, например {{py:arabic_to_roman({{level}})}}.
  9. 1 point
    Большое спасибо от души и дай бог тебе здоровья
  10. 1 point
    Прицел ХЗЧ Работает только в связке со сборкой Salamandra Маркеры - индикаторы обычный режим сведено сетка аркадный Для использования в других сборках от других авторов нужно переписать пути к папкам с картинками. Хочу поблагодарить так же автора аддона ktulho а так же HEKPOMAHT который помогает с правками. Спасибо мужики с вами игра становиться лучше. Прицел ХЗЧ.zip
  11. 1 point
    Пока отдельно выложу,а то не удалось нормально потестировать,вроде работает без нареканий. Суть в упрощении конфига и в отсутствии зависимости от бесчисленных режимов.Вместо исключения типов боев из учета общей статистики,как это было раньше в "ignoreBattleType",теперь достаточно прописать нужные коды типов боев(таблица в шапке) в графе "includeBattleType". Было: "ignoreBattleType": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 25, 26, 27, 28, 29, 30], Стало: "includeBattleType": [ 1 ], А суть одна и та же,считаются только рандомные бои в общую статистику на данном примере. Идея S_Amadeus,помощь по коду BuSH П.С:я так понимаю тест прошел нормально,где фидбек,господа Wotstat_Slava7572_1.6.0.4.rar
  12. 1 point
    Описание: Фикс ошибки чистого клиента WoT в патче 1.6, связанной с игровым скриптом controller.py, располагающимся по пути "scripts/client/festivity/festival/controller.py". Traceback (most recent call last): File "scripts/common/Event.py", line 44, in __call__ File "scripts/client/gui/Scaleform/framework/managers/containers.py", line 1328, in __onViewLoaded File "scripts/client/gui/Scaleform/framework/managers/containers.py", line 1285, in __showAndInitializeView File "scripts/client/gui/Scaleform/framework/entities/DisposableEntity.py", line 63, in create File "scripts/client/helpers/uniprof/regions.py", line 84, in wrapper File "scripts/client/gui/Scaleform/daapi/view/battle/shared/page.py", line 194, in _populate File "scripts/client/gui/Scaleform/daapi/view/battle/shared/page.py", line 256, in _definePostmortemPanel File "controller", line 72, in isEnabled KeyError: 'isEnabled' Автор: @Pavel3333 Установка: Поместить файл в папку mods/1.6.0.0/ Скачать: pavel3333.wotfix.festivity.wotmod (скрипт от 07.08.2019 23:16)
  13. 1 point
  14. 1 point
  15. 1 point
    Шрифты не из флешки идут там кажется,сама флешка не менялась уже давно.Я ее прилепил,положи по старому пути,если с пакетами проблема.У меня просто солянка из десятка флешек в пакете. teamBasesPanel.swf
  16. -1 points
  17. -1 points
    Подозреваю, что артефакты возникают после патчей/микропатчей, когда вы либо не делаете либо забываете сделать обновление модпака, точнее его перезапуск и пересоздание им его файлов. А это как раз чревато всякими артефактами в игре.
  18. -3 points
×
×
  • Create New...