┌────────────────────────────┬──────────────────────────────┬──────────────────────────────────────────┬───────────────────────────────────────────────────────────────────────────────────────────────────
│         Имя файла          │ Название события по которому │            Название py_macro             │                                             Описание
│                            │      обновляется макрос      │                                          │
├────────────────────────────┼──────────────────────────────┼──────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────
│damage_Log.py (damageLog.py)│PY(ON_HIT)                    │{{py:xvm.damageLog.dLog}}                 │значение "formatHistory" из секции "log" файла damageLog.xc
│                            │---//---                      │{{py:xvm.damageLog.dLog_shadow('XXX')}}   │значение "XXX" из секции "log\shadow" файла damageLog.xc
│                            │---//---                      │{{py:xvm.damageLog.dLog_x}}               │значение "x" из секции "log" файла damageLog.xc или сохраненное значение координаты х в бою
│                            │---//---                      │{{py:xvm.damageLog.dLog_y}}               │значение "y" из секции "log" файла damageLog.xc или сохраненное значение координаты y в бою
│                            │---//---                      │{{py:xvm.damageLog.dLogBackground}}       │значение "formatHistory" из секции "logBackground" файла damageLog.xc
│                            │PY(ON_LAST_HIT)               │{{py:xvm.damageLog.lastHit}}              │значение "formatLastHit" из файла damageLog.xc
│                            │---//---                      │{{py:xvm.damageLog.lastHit_shadow('XXX')}}│значение "XXX" из секции "lastHit\shadow" файла damageLog.xc
│                            │---//---                      │{{py:xvm.damageLog.lastHit_x}}            │значение "x" из секции "lastHit" файла damageLog.xc или сохраненное значение координаты х в бою
│                            │---//---                      │{{py:xvm.damageLog.lastHit_y}}            │значение "y" из секции "lastHit" файла damageLog.xc или сохраненное значение координаты y в бою
│                            │PY(ON_FIRE)                   │{{py:xvm.damageLog.fire}}                 │если танк горит равен 100, иначе 0
│                            │PY(ON_IMPACT)                 │{{py:xvm.isImpact}}                       │возвращает 'Impact' если было воздействие на технику игрока, иначе - пусто (оглушение экипажа не
│                            │                              │                                          │учитывается).
├────────────────────────────┼──────────────────────────────┼──────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────
│math.py                     │                              │{{py:sum(x1,x2[,...])}}                   │принимает список чисел, возвращает их сумму
│                            │                              │{{py:sub(a, b)}}                          │разность чисел (a - b)
│                            │                              │{{py:mul(x1,x2[,...])}}                   │принимает список чисел, возвращает их произведение
│                            │                              │{{py:div(a, b)}}                          │результат деления a на b (a / b)
│                            │                              │{{py:pow(a, n)}}                          │возводит в степень n число a (a ^ n)
│                            │                              │{{py:abs(a)}}                             │возвращает абсолютную величину числа а
│                            │                              │{{py:random.randint(a, b)}}               │случайное целое число в диапазоне от a до b. Если a и b не заданы, то возвращает 0 или 1
├────────────────────────────┼──────────────────────────────┼──────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────
│repairTime.py               │PY(ON_ENGINE_UPDATE)          │{{py:repairTimeEngine}}                   │время (секунды), оставшееся до починки двигателя
│                            │PY(ON_GUN_UPDATE)             │{{py:repairTimeGun}}                      │время (секунды), оставшееся до починки орудия
│                            │PY(ON_TURRET_UPDATE)          │{{py:repairTimeTurret}}                   │время (секунды), оставшееся до починки башни
│                            │PY(ON_TRACKS_UPDATE)          │{{py:repairTimeTracks}}                   │время (секунды), оставшееся до починки гуслей
│                            │PY(ON_SURVEYING_UPDATE)       │{{py:repairTimeSurveying}}                │время (секунды), оставшееся до починки приборов наблюдения
├────────────────────────────┼──────────────────────────────┼──────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────
│score_panel.py              │                              │{{py:sp.allyFrags}}                       │количество убитых противников
│                            │                              │{{py:sp.enemyFrags}}                      │количество убитых союзников
│                            │                              │{{py:sp.allyVeh}}                         │общее количество союзников
│                            │                              │{{py:sp.enemyVeh}}                        │общее количество противников
│                            │                              │{{py:sp.allyAlive}}                       │количество живых союзников
│                            │                              │{{py:sp.enemyAlive}}                      │количество живых противников
│                            │                              │{{py:sp.signScore}}                       │возвращает '<', '>' или '=' в зависимости от отношения фрагов союзников и противников
├────────────────────────────┼──────────────────────────────┼──────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────
│str.py                      │                              │{{py:replace('str', 'old', 'new', max)}}  │заменяет в строке 'str' подстроку 'old' на 'new'. Параметр max указывает сколько раз будет заменена
│                            │                              │                                          │подстрока 'old' на 'new'. Если параметр max не задан, то заменяются все найденные 'old' на 'new'.
│                            │                              │{{py:upper('str')}}                       │преобразование строки к верхнему регистру.
│                            │                              │{{py:lower('str')}}                       │преобразование строки к нижнему регистру.
│                            │                              │{{py:capitalize('str')}}                  │переводит первый символ строки в верхний регистр, а все остальные в нижний.
│                            │                              │{{py:title('str')}}                       │переводит в верхний регистр первую букву каждого слова, а все остальные в нижний.
├────────────────────────────┼──────────────────────────────┼──────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────
│totalEfficiency.py          │PY(ON_TOTAL_EFFICIENCY)       │{{py:xvm.totalDamage}}                    │общий нанесенный урон игроком
│                            │---//---                      │{{py:xvm.totalAssist}}                    │общий урон нанесенный с помощью игрока
│                            │---//---                      │{{py:xvm.totalBlocked}}                   │общий заблокированный урон игроком
│                            │---//---                      │{{py:xvm.damageReceived}}                 │общий полученный урон игроком
│                            │---//---                      │{{py:xvm.totalDamagesBlocked}}            │сумма {{py:xvm.totalDamage}} и {{py:xvm.totalBlocked}}
│                            │---//---                      │{{py:xvm.totalDamagesAssist}}             │сумма {{py:xvm.totalDamage}} и {{py:xvm.totalAssist}}
│                            │---//---                      │{{py:xvm.totalDamagesBlockedAssist}}      │сумма {{py:xvm.totalDamage}}, {{py:xvm.totalAssist}} и {{py:xvm.totalBlocked}}
│                            │---//---                      │{{py:xvm.totalDamagesBlockedReceived}}    │сумма {{py:xvm.totalDamage}}, {{py:xvm.totalBlocked}} и {{py:xvm.damageReceived}}
│                            │---//---                      │{{py:xvm.totalBlockedReceived}}           │сумма {{py:xvm.totalBlocked}} и {{py:xvm.damageReceived}}
│                            │---//---                      │{{py:xvm.damagesSquad}}                   │нанесенный урон взводом (урон нанесенный игроком не учитывается)
│                            │---//---                      │{{py:xvm.totalDamagesSquad}}              │общий нанесенный урон взводом
│                            │---//---                      │{{py:xvm.detection}}                      │количество обнаруженных противников (см. сноску 1)
│                            │---//---                      │{{py:xvm.frags}}                          │количество фрагов (см. сноску 1)
│                            │---//---                      │{{py:xvm.assistTrack}}                    │урон нанесенный технике, обездвиженной игроком (сбитая гусеница) (см. сноску 1)
│                            │---//---                      │{{py:xvm.assistSpot}}                     │урон нанесенный по засвету игрока (см. сноску 1)
│                            │---//---                      │{{py:xvm.crits}}                          │количество нанесенных критических попаданий (см. сноску 1)
│                            │---//---                      │{{py:xvm.numberHitsBlocked}}              │количество заблокированных попаданий
│                            │---//---                      │{{py:xvm.numberHitsDealt}}                │количество выстрелов с уроном
│                            │---//---                      │{{py:xvm.dmg}}                            │последний нанесенный урон
│                            │---//---                      │{{py:xvm.numberShotsDealt}}               │количество произведенных выстрелов
│                            │---//---                      │{{py:xvm.numberShotsReceived}}            │количество полученных попаданий
│                            │---//---                      │{{py:xvm.numberHitsReceived}}             │количество полученных попаданий с уроном
│                            │---//---                      │{{py:xvm.numberDamagesDealt}}             │количество нанесенных повреждений
│                            │---//---                      │{{py:xvm.numberHits}}                     │количество попаданий
│                            │---//---                      │{{py:xvm.fragsSquad}}                     │количество фрагов взвода (фраги игрока не учитываются)
│                            │---//---                      │{{py:xvm.totalFragsSquad}}                │общее количество фрагов взвода
│                            │---//---                      │{{py:xvm.isPlayerInSquad}}                │возвращает 'sq' если игрок во взводе, иначе - пусто
│                            │---//---                      │{{py:xvm.totalDamageColor}}               │динамический цвет по общему нанесённому урону
│                            │---//---                      │{{py:xvm.totalStun}}                      │общий урон, нанесенный по оглушенной вами технике
│                            │---//---                      │{{py:xvm.isStuns}}                        │возвращает 'st' если техника игрока может оглушать, иначе - пусто
│                            │---//---                      │{{py:xvm.numberStuns}}                    │общее количество оглушений
│                            │---//---                      │{{py:xvm.numberDamagedVehicles}}          │количество поврежденной техники
│                            │---//---                      │{{py:xvm.hitAlly}}                        │возвращает 'hitAlly', если было хотя бы одно попадание по союзнику, иначе - пусто
│                            │---//---                      │{{py:xvm.numberAssistSpot}}               │количество попаданий по технике по вашему засвету
│                            │---//---                      │{{py:xvm.numberAssistTrack}}              │количество попаданий по технике со сбитой вами гусеницой
│                            │---//---                      │{{py:xvm.numberAssistStun}}               │количество попаданий по оглушенной вами технике 
│                            │---//---                      │{{py:xvm.numberAssistAndStuns}}           │сумма {{py:xvm.numberAssistSpot}}, {{py:xvm.numberAssistTrack}} и {{py:xvm.numberStuns}}
│                            │---//---                      │{{py:xvm.totalAssistAndStuns}}            │сумма {{py:xvm.totalAssist}} и {{py:xvm.totalStun}}
├────────────────────────────┼──────────────────────────────┼──────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────
│vinfo.py                    │                              │{{py:vinfo.name}}                         │название своей техники или название техники цели
│                            │                              │{{py:vinfo.gun_reload}}                   │время перезарядки своей техники или время перезарядки цели
│                            │                              │{{py:vinfo.vision_radius}}                │радиус обзора своей техники или радиус обзора цели
├────────────────────────────┼──────────────────────────────┼──────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────
│xvm.py                      │                              │{{py:xvm.screenWidth}}                    │ширина экрана в пикселях
│                            │                              │{{py:xvm.screenHeight}}                   │высота экрана в пикселях
│                            │                              │{{py:xvm.screenVCenter}}                  │середина экрана по высоте в пикселях
│                            │                              │{{py:xvm.screenHCenter}}                  │середина экрана по ширине в пикселях
│                            │                              │{{py:xvm.formatDate('value')}}            │где 'value' может принимать следующие значения:
│                            │                              │                                          │%a  - Сокращенное название дня недели (первая буква в верхнем регистре)
│                            │                              │                                          │%au - Сокращенное название дня недели (в верхнем регистре)
│                            │                              │                                          │%al - Сокращенное название дня недели (в нижнем регистре)
│                            │                              │                                          │%A  - Полное название дня недели (первая буква в верхнем регистре)
│                            │                              │                                          │%Au - Полное название дня недели (в верхнем регистре)
│                            │                              │                                          │%Al - Полное название дня недели (в нижнем регистре)
│                            │                              │                                          │%b  - Сокращенное название месяца (первая буква в верхнем регистре)
│                            │                              │                                          │%bu - Сокращенное название месяца (в верхнем регистре)
│                            │                              │                                          │%bl - Сокращенное название месяца (в нижнем регистре)
│                            │                              │                                          │%B  - Полное название месяца (первая буква в верхнем регистре)
│                            │                              │                                          │%Bu - Полное название месяца (в верхнем регистре)
│                            │                              │                                          │%Bl - Полное название месяца (в нижнем регистре)
│                            │                              │                                          │%c  - Дата и время
│                            │                              │                                          │%d  - День месяца [01,31]
│                            │                              │                                          │%H  - Час (24-часовой формат) [00,23]
│                            │                              │                                          │%I  - Час (12-часовой формат) [01,12]
│                            │                              │                                          │%j  - День года [001,366]
│                            │                              │                                          │%m  - Номер месяца [01,12]
│                            │                              │                                          │%M  - Число минут [00,59]
│                            │                              │                                          │%p  - До полудня (AM) или после (PM) (при 12-часовом формате)
│                            │                              │                                          │%S  - Число секунд [00,61]
│                            │                              │                                          │%U  - Номер недели в году (нулевая неделя начинается с воскресенья) [00,53]
│                            │                              │                                          │%w  - Номер дня недели [0(Sunday),6]
│                            │                              │                                          │%W  - Номер недели в году (нулевая неделя начинается с понедельника) [00,53]
│                            │                              │                                          │%x  - Дата согласно региональным настройкам
│                            │                              │                                          │%X  - Время согласно региональным настройкам
│                            │                              │                                          │%y  - Год без века [00,99]
│                            │                              │                                          │%Y  - Год с веком
│                            │                              │                                          │%Z  - Временная зона
│                            │                              │                                          │%%  - Знак '%'
│                            │                              │                                          │Подробнее об данном макросе: https://koreanrandom.com/forum/topic/35339-
├────────────────────────────┼──────────────────────────────┼──────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────
│xvm.py (total_hp.py)        │PY(ON_UPDATE_HP)              │{{py:xvm.total_hp.ally(norm)}}            │если norm не задан, то возвращает общее количество очков прочности союзников, иначе возвращает чис-
│                            │                              │                                          │ло от 0 до norm
│                            │---//---                      │{{py:xvm.total_hp.enemy(norm)}}           │если norm не задан, то возвращает общее количество очков прочности противников, иначе возвращает
│                            │                              │                                          │число от 0 до norm
│                            │---//---                      │{{py:xvm.total_hp.color}}                 │цвет, зависящий от отношения очков прочности союзников и противников
│                            │---//---                      │{{py:xvm.total_hp.sign}}                  │возвращает '<', '>' или '=', в зависимости от отношения очков прочности союзников и противников
│                            │---//---                      │{{py:xvm.total_hp.text}}                  │возвращает строку соотношения очков прочности команд вида XXXX = YYYY.
│                            │                              │{{py:xvm.total_hp.avgDamage(h, d)}}       │расчет урона до достижения среднего урона по текущей технике. h - текст, отображаемый перед уроном
│                            │                              │                                          │d - текущий урон в бою
│                            │                              │{{py:xvm.total_hp.mainGun(h, d)}}         │расчет урона для получения медали "Основной калибр". h - текст, отображаемый перед уроном
│                            │                              │                                          │d - текущий урон в бою
│                            │                              │{{py:xvm.total_hp.getAvgDamage(a, b, d)}} │возвращает a, если вы в случайном бою и средний урон на текущей технике возможно рассчитать,
│                            │                              │                                          │иначе возвращает b. d - текущий урон в бою
│                            │                              │{{py:xvm.total_hp.getMainGun(a, b, d)}}   │возвращает a, если вы в случайном бою и сумма очков прочности техники противника больше 999,
│                            │                              │                                          │иначе возвращает b. d - текущий урон в бою
├────────────────────────────┼──────────────────────────────┼──────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────
│xvm.py (utils.py)           │                              │{{py:xvm.dynamic_color_rating(r, v)}}     │макрос плавного перехода цвета между границами цветов из файла color.xc, r - название секции из
│                            │                              │                                          │файла color.xc, v - значение. Пример: {{py:xvm.dynamic_color_rating('x', {{xwn8}})}}
│                            │                              │{{py:xvm.color_rating(r, v)}}             │возвращает цвет из файла color.xc, r - название секции из файла color.xc, v - значение.
│                            │                              │                                          │Пример: {{py:xvm.color_rating('x', {{xwn8}})}}
├────────────────────────────┼──────────────────────────────┼──────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────
│xvm.py (xvm2sup.py)         │                              │{{py:xvm.xvm2sup(x)}}                     │переводит число x из шкалы XVM в процент превосходства (SUP%)
└────────────────────────────┴──────────────────────────────┴──────────────────────────────────────────┴───────────────────────────────────────────────────────────────────────────────────────────────────

1 - Для работы макросов {{py:xvm.detection}}, {{py:xvm.frags}}, {{py:xvm.assistTrack}}, {{py:xvm.assistSpot}}, {{py:xvm.crits}} в игре должны быть включены "События в бою".
