Jump to content
Korean Random
goodman

Динамические макросы в Python

Recommended Posts

Кстати, немного изменив код в damageLog можно получить hitlog. 

Share this post


Link to post

Short link
Share on other sites

Ребят,а возможно из дефолтного конфига добавить только средний урон("avgDamage"),а сама панель из другого мода(пмод)?Он может работать без основной панели счета?Чет я попробовал,а появилась только картинка без значения.

Код почти дефолт:

// Средний урон.
	 "avgDamage": {
      "enabled": true,
      "updateEvent": "ON_DAMAGE_CAUSED",
      "x": 410,
      "y": 3,
      "width": 300,
      "height": 40,
      "screenHAlign": "center",
      "shadow": { "distance": 1, "angle": 90, "alpha": 80, "blur": 5, "strength": 1.5 },
      "textFormat": { "size": 15, "align": "center" },
      "format": "<img src='img://gui/maps/icons/achievement/32x32/stormLord1.png' width='24' height='24' align='middle' vspace='-7'> {{py:xvm.total_hp.avgDamage('{{l10n:avgDamage}}: ',{{hitlog.dmg-total}})}}"
     }, 

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

У neLeax эта секция называлась total_hp_sub и в принципе эта часть работала,если добавить,то по идее должно работать?Там вот так прописана эта секция:

# Разница между очками прочности команд.
@xvm.export('total_hp.sub', deterministic=False)
def total_hp_sub():
    result = panel.teams_totalhp[0] - panel.teams_totalhp[1]
    return "<img src='img://gui/maps/icons/achievement/32x32/winnerLaurels1.png' width='32' height='32' align='middle' vspace='-9'><font color='#%s'>%s</font>" % (color(), result) 

Или еще что то нужно и вообще возможно ли?Я в питоне ноль)))Подскажите плиз.

Share this post


Link to post

Short link
Share on other sites

 

 

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

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

Share this post


Link to post

Short link
Share on other sites

Чет я попробовал,а появилась только картинка без значения.

1) Последний ночник стоит с обновлёнными скриптами?

2) Средний урон выводится только в бою (в реплее ничего не выведется);

3) Не стоит забывать про общее правило - прикладывание логов к сообщению (поможет быстрее диагностировать проблему).

Edited by night_dragon_on

Share this post


Link to post

Short link
Share on other sites

1) Последний ночник стоит с обновлёнными скриптами?

2) Средний урон выводится только в бою (в реплее ничего не выведется);

3) Не стоит забывать про общее правило - прикладывание логов к сообщению (поможет быстрее диагностировать проблему).

1.Да,конечно,скрипты обновленные.

2.Про реплей не знал,в бою не пробовал,спасибо.

3.Это же не проблема,а вопрос,можно ли средний урон вывести отдельно,будет ли работать такая конструкция.

Ну и предложение по выводу цифрой,цвет конечно хорошо и для рандома может и хватает,но для укрепов,ГК и т.п.,где ведется учет какой сотни хп,приходится постоянно высчитывать в уме,отвлекаться.

В любом случае на то и предложение,чтоб его обсудить,отклонить,доработать))

__________________________

 

А по питону,кто подскажет,можно добавить строку в дефолтный xvm.py,что я ранее описывал под вторым спойлером?Будет такое работать?Я бы сам добавил разницу хп,главное чтоб питон работал.

Share this post


Link to post

Short link
Share on other sites
Это же не проблема,а вопрос

 

Если бы данные не отображались в бою (не на реплее, как в последствие ты подтвердил), то это была уже проблема которую стоило бы обсудить  :ok:

 

Чет я попробовал,а появилась только картинка без значения.

Код почти дефолт:

// Средний урон.
"avgDamage": {
  "enabled": true,
  "updateEvent": "ON_DAMAGE_CAUSED",
  "x": 410,
  "y": 3,
  "width": 300,
  "height": 40,
  "screenHAlign": "center",
  "shadow": { "distance": 1, "angle": 90, "alpha": 80, "blur": 5, "strength": 1.5 },
  "textFormat": { "size": 15, "align": "center" },
  "format": "<img src='img://gui/maps/icons/achievement/32x32/stormLord1.png' width='24' height='24' align='middle' vspace='-7'> {{py:xvm.total_hp.avgDamage('{{l10n:avgDamage}}: ',{{hitlog.dmg-total}})}}"
},

 

Так правильнее будет, при отсутствие данных иконка тоже не будет отображена.

 

'Код'

// Средний урон.
"avgDamage": {
  "enabled": true,
  "updateEvent": "ON_DAMAGE_CAUSED",
  "x": 410,
  "y": 3,
  "width": 300,
  "height": 40,
  "alpha": "{{py:xvm.total_hp.getAvgDamage('100','0',{{hitlog.dmg-total}})}}",
  "screenHAlign": "center",
  "shadow": { "distance": 1, "angle": 90, "alpha": 80, "blur": 5, "strength": 1.5 },
  "textFormat": { "size": 15, "align": "center" },
  "format": "<img src='img://gui/maps/icons/achievement/32x32/stormLord1.png' width='24' height='24' align='middle' vspace='-7'> {{py:xvm.total_hp.avgDamage('{{l10n:avgDamage}}: ',{{hitlog.dmg-total}})}}"
},

 

можно добавить строку в дефолтный xvm.py,что я ранее описывал под вторым спойлером?Будет такое работать?

 

Если непосредственно прописать в "xvm.py", то нет, там отсутствует пара необходимых импортов.

Я бы посоветовал отдельный для себя скрипт завести что бы каждый раз файл "xvm.py" не править подстраиваясь под изменения в ночниках.

 

'Slava7572.py'

import xvm_battle.python.fragCorrelationPanel as panel

# Градиент цвета, в зависимости от перевеса очков прочности одной команды над другой.
@xvm.export('sign_color', deterministic=False)
def sign_color():
    return panel.total_hp_color

# Разница между очками прочности команд.
@xvm.export('sign_hp', deterministic=False)
def sign_hp():
    result = panel.teams_totalhp[0] - panel.teams_totalhp[1]
    return result

# Разница между очками прочности команд (с окраской данных в зависимости от перевеса).
@xvm.export('sign_hp_color', deterministic=False)
def sign_hp_color():
    result = panel.teams_totalhp[0] - panel.teams_totalhp[1]
    return "<font color='#%s'>%s</font>" % (sign_color(), result)

'Макросы'

{{py:sign_hp()}}
{{py:sign_hp_color()}}

Edited by night_dragon_on
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Если бы данные не отображались в бою (не на реплее, как в последствие ты подтвердил), то это была уже проблема которую стоило бы обсудить  :ok:

 

 

Так правильнее будет, при отсутствие данных иконка тоже не будет отображена.

 

'Код'

// Средний урон.
"avgDamage": {
  "enabled": true,
  "updateEvent": "ON_DAMAGE_CAUSED",
  "x": 410,
  "y": 3,
  "width": 300,
  "height": 40,
  "alpha": "{{py:xvm.total_hp.getAvgDamage('100','0',{{hitlog.dmg-total}})}}",
  "screenHAlign": "center",
  "shadow": { "distance": 1, "angle": 90, "alpha": 80, "blur": 5, "strength": 1.5 },
  "textFormat": { "size": 15, "align": "center" },
  "format": "<img src='img://gui/maps/icons/achievement/32x32/stormLord1.png' width='24' height='24' align='middle' vspace='-7'> {{py:xvm.total_hp.avgDamage('{{l10n:avgDamage}}: ',{{hitlog.dmg-total}})}}"
},

 

 

Если непосредственно прописать в "xvm.py", то нет, там отсутствует пара необходимых импортов.

Я бы посоветовал отдельный для себя скрипт завести что бы каждый раз файл "xvm.py" не править подстраиваясь под изменения в ночниках.

 

'Slava7572.py'

import xvm_battle.python.fragCorrelationPanel as panel

# Градиент цвета, в зависимости от перевеса очков прочности одной команды над другой.
@xvm.export('sign_color', deterministic=False)
def sign_color():
    return panel.total_hp_color

# Разница между очками прочности команд.
@xvm.export('sign_hp', deterministic=False)
def sign_hp():
    result = panel.teams_totalhp[0] - panel.teams_totalhp[1]
    return result

# Разница между очками прочности команд (с окраской данных в зависимости от перевеса).
@xvm.export('sign_hp_color', deterministic=False)
def sign_hp_color():
    result = panel.teams_totalhp[0] - panel.teams_totalhp[1]
    return "<font color='#%s'>%s</font>" % (sign_color(), result)

'Макросы'

{{py:sign_hp()}}
{{py:sign_hp_color()}}

Спасибо,буду пробовать этот вариант.

Если будут проблемы с добавлением среднего домага,проверю на чистом с ХВМ(до этого киниетн был с модами) и пришлю логи.

___________________________________

 

П.С:night_dragon_on,огромное спасибо Вам,именно то,что хотел(немного еще нужно расположение подрепетировать).Кстати,в реплее воспроизводится.

Дел,вопрос отпал сам собой.

'Скрин'

5f82f08ca1c3.jpg
Edited by Slava7572

Share this post


Link to post

Short link
Share on other sites

Вывел некоторые настройки damageLog в конфиг. Для этого необходимо в файле @xvm.xc добавить секцию:

"damageLog": ${"damageLog.xc":"damageLog"},

Файл настроек damageLog.xc закинуть в папку с вашим конфигом. 

 

И обновить файл myDamageLog.py .

 

P.S. с 1 числа уезжаю в отпуск. Если есть пожелания насчет damageLog или найдете баги, то поторопитесь.))

myDamageLog.rar

  • Upvote 5

Share this post


Link to post

Short link
Share on other sites

@ktulho, действительно круто получилось. Не думал что с помощью py.* макросов можно делать обычные макросы в конфиге. Есть чему поучиться.

 

Покатался я сегодня с эти логом, словил пару случаев некорректной работы:

1. Реплей: в 12.47 сплешем кидает Т92, но в логе нет данных об уроне, не вывелась строка об этом. Что самое интересное, следующий урон отобразился с порядковым номером 2.

2. Реплей: в 8:41 так же сплешем кидает Т92, в логе же пишет, что урон нанесен бронебойным.

 

Еще хотелка на будущее, если вдруг будет время, написать скрипт для расчета натанкованного урона. Хз, насколько это трудно, но все же. Сам потихоньку изучаю исходник дамаг лога Гамбитера, там есть этот расчет. Но там много строк кода, мне, далекому от программирования сложно вникать в это.

Edited by neLeax

Share this post


Link to post

Short link
Share on other sites

интересно, макрос {{выстрелПроизведён}}, будет ли считаться читом? Просто по событию, без учёта реального времени.

И есть ли возможность такой запилить?

В дамаг-логе Гамбитера, к слову, есть фича "время перезарядки" - не реальная, а энциклопедическая для 100% экипажа

 

И вот это ещё: http://www.koreanrandom.com/forum/topic/4717-маркеры-сбитие-гусеницы/?p=68843

Edited by vlad_cs_sr

Share this post


Link to post

Short link
Share on other sites

интересно, макрос {{выстрелПроизведён}}, будет ли считаться читом? Просто по событию, без учёта реального времени.

И есть ли возможность такой запилить?

Не понял, что должен должен показывать макрос.

 

В дамаг-логе Гамбитера, к слову, есть фича "время перезарядки" - не реальная, а энциклопедическая для 100% экипажа

 

Таймер можно сделать, но лучше отдельным полем. 

 

 

Еще хотелка на будущее, если вдруг будет время, написать скрипт для расчета натанкованного урона. Хз, насколько это трудно, но все же.

Может быть после отпуска. И спасибо багрепорт.

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

Это в маркерах отображать? 

и в ушах, и на карте ))

 

ЗЫ

Всё-таки, кажется, что за чит могут принять...

Edited by vlad_cs_sr

Share this post


Link to post

Short link
Share on other sites

и в ушах, и на карте ))

 

ЗЫ

Всё-таки, кажется, что за чит могут принять...

Все эти поля не обновляются при выстреле, поэтому не получится. Да и на чит очень похоже. 

Share this post


Link to post

Short link
Share on other sites

1. Реплей: в 12.47 сплешем кидает Т92, но в логе нет данных об уроне, не вывелась строка об этом. Что самое интересное, следующий урон отобразился с порядковым номером 2. 2. Реплей: в 8:41 так же сплешем кидает Т92, в логе же пишет, что урон нанесен бронебойным.

, исправил.

 

Переименовал макрос {{dl.color-gold-shell}} в {{dl.color-shell}}

Добавил возможность использовать макросы в параметрах, например:

    "type-hit": {
      "shot": "{{dl.type-shell}}",
      "fire": "<font face = 'xvm'>Q</font>", 
      "ramming": "<font face = 'xvm'>R</font>",
      "world_collision": "<font face = 'xvm'>S</font>",
      "death_zone": "DZ",
      "drowning": "Dr",
      "gas_attack": "GA",
      "overturn": "<font face = 'xvm'>Ē</font>",
      "art_attack": "<font face = 'xvm'>Đ</font>",
      "air_strike": "<font face = 'xvm'>đ</font>"
    },
    // цвет по типу полученного урон (макрос {{dl.color-type-hit}})
    "color-type-hit": { 
      "shot": "{{dl.color-shell}}",
      "fire": "#FF211C", 
      "ramming": "#E3E3E3",
      "world_collision": "#E3E3E3",
      "death_zone": "#E3E3E3",
      "drowning": "#E3E3E3",
      "gas_attack": "#E3E3E3",
      "overturn": "#E3E3E3",
      "art_attack": "#E3E3E3",
      "air_strike": "#E3E3E3"
    }, 

В связи с этим удалил параметр "shotToShell".

myDamageLog.rar

damageLog.xc

  • Upvote 6

Share this post


Link to post

Short link
Share on other sites
Добавил возможность использовать макросы в параметрах

можно ли вместо этих макросов

  {{dl.color-type-hit}} - цвет по типу полученного урон
  {{dl.vehicle-class}} - класс техники
  {{dl.color-vehicle-class}} - цвет по классу техники 

использовать уже имеющиеся в xvm макросы?

  "colors": {
    ...
    // Динамический цвет по типу урона.
    "dmg_kind": {
    ...
    // Динамический цвет по типу техники.
    "vtype": {

***

  "texts": {
    // Текст для макроса {{vtype}}.
    "vtype": {

и если да, то как?

Edited by Kapany3uk

Share this post


Link to post

Short link
Share on other sites

@Kapany3uk, можно будет переименовать эти макросы в уже существующие, можно будет использовать подстановки из color.xc, text.xc и файлов локализации. Но пока идет тестирование, я думаю, лучше все держать в одном файле.

Edited by ktulho

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