Jump to content
Korean Random
goodman

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

Recommended Posts

Да с выравниваем думаю не будет проблем,с остальным как,цвета нет и масштаб в целом уменшился.Я так понимаю из за того,что теперь "autoSize" нет?Цвет уже в .ру надо смотреть,а я в нем ноль))

вот в эту строку вносишь нужное ("color", "font" и остальное меняй по аналогии с маркерами, ушами и т.п.)

"textFormat": { "align": "center", "size": 16 },

градиентное изменение "зашито" в ру-макрос, настройка граничных цветов в colors.xc

Edited by Kapany3uk

Share this post


Link to post

Short link
Share on other sites

@Slava7572, если нужна помощь, то приложите папку py_macro, файл battleLabelsTemplates.xc, и желательно скриншот по которому сможете объяснить чего хотите добиться. 

Вообще без проблем,вот.Убрал все лишнее,шансы и пр,только панель и скрипт+2 скрина,с хп думаю все ясно,слева от хп тим процент нанесенного урона("damagePercent"),справа сначала разница в хп по тимам("total_hp_sub") и дальше основной калибр("mainGun").

вот в эту строку вносишь нужное ("color", "font" и остальное меняй по аналогии с маркерами, ушами и т.п.)

"textFormat": { "align": "center", "size": 16 },

градиентное изменение "зашито" в ру-макрос, настройка граничных цветов в colors.xc

Я так понимаю еще и "currentFieldDefaultStyle" на "textFormat" поменять.А что с автосайзом?Сейчас его нет,а в коде его много.

"shadow": {
      "alpha": 60,         // Прозрачность.
      "color": "0x000000", // Цвет.
      "angle": 0,          // Угол смещения.
      "distance": 0,       // Дистанция смещения.
      "blur": 3,           // Размытие.
      "strength": 5        // Интенсивность.
    },
    "shadow_healthBar": {
      "$ref": { "path": "def.shadow" },
      "alpha": 80,         // Прозрачность.
      "blur": 2,           // Размытие.
      "strength": 2        // Интенсивность.
    },
    "shadow_healthBar_background": {
      "$ref": { "path": "def.shadow" },
      "alpha": 60,         // Прозрачность.
      "blur": 1,           // Размытие.
      "strength": 1        // Интенсивность.
    },
    
    // Очки прочности союзников.
    "totalHPally": {
      "enabled": true,
      "updateEvent": "ON_PLAYERS_HP_CHANGED",
      "x": -305,
      "y": 1,
      "width": 200,
      "height": 40,
      "autoSize": "right",
      "align": "center",
      "shadow": ${"def.shadow"},
      "currentFieldDefaultStyle": { "color": "0xFFFFFF", "size": 20 },
      "format": "<font face='$TitleFont'>{{py:nelx.total_hp(0)}}</font>"
    },
    // Очки прочности противников.
    "totalHPenemy": {
      "$ref": { "path": "def.totalHPally" },
      "x": 305,
      "autoSize": "left",
      "format": "<font face='$TitleFont'>{{py:nelx.total_hp(1)}}</font>"
    },

    // ПОЛОСА ОЧКОВ ПРОЧНОСТИ.
    // Союзников.
    "healthBarAlly": {
      "enabled": true,
      "updateEvent": "ON_PLAYERS_HP_CHANGED",
      "x": -140,
      "y": 7,
      "width": 200,
      "height": 40,
      "autoSize": "right",
      "align": "center",
      "shadow": ${"def.shadow_healthBar"},
      "currentFieldDefaultStyle": { "color": "{{.colors.system.ally_alive}}", "size": 16 },
      "format": "{{py:nelx.total_hp.healthBar(0)}}"
    },
    // Противников.
    "healthBarEnemy": {
      "$ref": { "path": "def.healthBarAlly" },
      "x": 140,
      "autoSize": "left",
      "currentFieldDefaultStyle": { "color": "{{.colors.system.enemy_alive}}", "size": 16 },
      "format": "{{py:nelx.total_hp.healthBar(1)}}"
    },

    // ФОН ДЛЯ ПОЛОСЫ ОЧКОВ ПРОЧНОСТИ.
    // Союзников.
    "healthBar_backgroundAlly": {
      "enabled": true,
      "x": -140,
      "y": 7,
      "width": 200,
      "height": 40,
      "autoSize": "right",
      "align": "center",
	  "alpha": 30,
      "shadow": ${"def.shadow_healthBar_background"},
      "currentFieldDefaultStyle": { "color": "0x000000", "size": 16 },
      "format": "{{py:nelx.total_hp.healthBar_background(0)}}"
    },
    // Противников.
    "healthBar_backgroundEnemy": {
      "$ref": { "path": "def.healthBar_backgroundAlly" },
      "x": 140,
      "autoSize": "left",
      "format": "{{py:nelx.total_hp.healthBar_background(1)}}"
    },
    
    // Индикатор, перемещяющийся в зависимости от перевеса ХП.
    "superiority": {
      "enabled": true,
      "updateEvent": "ON_PLAYERS_HP_CHANGED",
      "x": -1,
      "y": 27,
      "width": 200,
      "height": 40,
      "autoSize": "center",
      "align": "center",
      "shadow": ${"def.shadow_healthBar"},
      "currentFieldDefaultStyle": { "color": "0xF4EFE8", "size": 18 },
      "format": "<font face='xvm' color='#{{py:nelx.total_hp.color()}}'>{{py:nelx.total_hp.superiority()}}</font>"
    },
    
    // Процент, на который лидирующая команда превосходит проигрывающую по очкам прочности.
    "superiority_text": {
      "enabled": false,
      "updateEvent": "ON_PLAYERS_HP_CHANGED",
      "x": 0,
      "y": 40,
      "width": 200,
      "height": 40,
      "autoSize": "center",
      "align": "center",
      "shadow": ${"def.shadow"},
      "currentFieldDefaultStyle": { "color": "0xF4EFE8", "size": 14 },
      "format": "<font face='$TitleFont'>{{py:nelx.total_hp.superiority_text()}}</font>"
    },
	
    // Урон до получения медали "Основной Калибр".
    "mainGun": {
      "enabled": true,
      "updateEvent": "ON_PLAYERS_HP_CHANGED",
      "x": 440,
      "y": -2,
      "width": 200,
      "height": 40,
      "autoSize": "left",
      "align": "center",
      "shadow": ${"def.shadow"},
      "currentFieldDefaultStyle": { "color": "0xFFEA41", "size": 18 },
      "format": "<font face='$TitleFont'>{{py:nelx.mainGun()}}</font>"
    },
	
	// Урон до получения медали "Основной Калибр".
    "total_hp_sub": {
      "enabled": true,
      "updateEvent": "ON_PLAYERS_HP_CHANGED",
      "x": 360,
      "y": -2,
      "width": 200,
      "height": 40,
      "autoSize": "left",
      "align": "center",
      "shadow": ${"def.shadow"},
      "currentFieldDefaultStyle": { "color": "0xFFFFFF", "size": 18 },
      "format": "<font face='$TitleFont'>{{py:total_hp.sub()}}</font>"
    },

    // Процент нанесенного урона.
    "damagePercent": {
      "enabled": true,
      "$ref": { "path": "def.mainGun" },
      "x": -360,
      "y": 0,
      "autoSize": "right",
      "format": "<font face='$TitleFont'>{{py:nelx.damagePercent()}}</font>"
    },
	 

ХП неЛикс.rar

Share this post


Link to post

Short link
Share on other sites
Я так понимаю еще и "currentFieldDefaultStyle" на "textFormat" поменять.А что с автосайзом?Сейчас его нет,а в коде его много.

посмотри дефолтный файл - там описание каждого параметра - оч. интересно :))

на замену "autoSize" пришел "screenHAlign" - также отвечает за горизонтальное выравнивание поля на экране.

Edited by Kapany3uk

Share this post


Link to post

Short link
Share on other sites

 

посмотри дефолтный файл - там описание каждого параметра - оч. интересно :))

А откуда я тогда узнал.что автосайза нет и "currentFieldDefaultStyle" на текстформат поменяли?:)Но чет как то замены автосайзу не увидел,теперь ясно,вместо одного разделение на горизонтальное и вертикальное.Хм.получается нужно поменять только два значения,автосайз на "screenHAlign" и "currentFieldDefaultStyle" на текстформат?Вроде больше ничего не видать...а что с "align": "center"?Его не трогать?Я просто пока "align": "center", в шансах не поменял на "screenHAlign": "center", и "screenVAlign": "top", он так и не появился,хотя параметры "align" должны были работать.

Share this post


Link to post

Short link
Share on other sites

писал, что НЕ будут ру-макросы работать в маркерах "из-за технических ограничений"

В принципе, сделать не сложно, но там будет ExternalInterface, а не DAAPI, боюсь будет тормозить. Но надо проверять, вроде логгирование не особо тормозит, а оно тоже через ExternalInterface. WG маркеры наполовину как-то сделали - Python->Flash нормально работает DAAPI, а обратно не сделали.

Share this post


Link to post

Short link
Share on other sites

, попробуй attachicon.gifbattleLabelsTemplates.xc

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

Скрины для примера в одинаковом масштабе(было-стало).

7e39a6c50299.jpg7941c1128cd9.jpg

 

Можно еще один вопросик?Как нибудь возможно тень текста добавить в обычные поля?Неохота весь код в экстраполя вписывать с расположением и прочими трудностями.Я в инете нарыл рабочий код(в онлайн редакторе https://jsfiddle.net/он работал),но в ХВМ он не работает.А без тени плохо читается без подложки как я люблю("alpha": 0,).Может постановка какая или типа того?Вот тут подробней о моих стенаниях))).

Share this post


Link to post

Short link
Share on other sites

 

 

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

Share this post


Link to post

Short link
Share on other sites

это все правится battleLabelsTemplates.xc

Что казается расположения,то да,с этим проблем скорее всего не будет,меня больше волнует цвет и масштаб damagePercen,это уже из .ру.Да,еще этот масштаб подложки ромба,я глянул в скрипте там <b>,а он у меня не работает,так и не нашел виновника,то ли флешка прицела,то ли еще что глючит,полнабора перебрал,так и не появилось выделение в хитлоге и пр.Ну и цвет,он же берется из colors.xc,верно?Видно там различия,секция "colorHP"?

В общем остается только damagePercen,что может быть не так?Там мои знания заканчиваюся)))

 

 

П.С:по расположению проблем не возникло,но появился еще один баг,если получаешь в каком либо бою основной калибр,то он так и висит всю сессию не показывая цифры)))Ну и демедж персент,о котором я ранее писал,нет цвета и другой масштаб.Так же появились поля,правтически невидимые сразу,но перекрывающие другие слои.На скрине он наезжает на шанс,так же бывет пропадает танчик,если наша тима проигрывает,т.е. он уезжает сильно вправо.

a11e03ad4e3c.jpg

Жаль панельку,это была лучшая на данный момент:(

Edited by Slava7572

Share this post


Link to post

Short link
Share on other sites

@sirmax, доброго времени суток.

 

Используя наработки от @ktulho и @night_dragon_on в прошлом патче и предыдущей стабильной версии XVM-ма делал для себя минималистичную панель с информацией завязанную на питоне и battleLabels.

 

'Питон'

#Copy from:
#http://www.koreanrandom.com/forum/topic/31856-
#page-11
#page-12

import BigWorld

def typeDescriptor():
    player = BigWorld.player()
    target = BigWorld.target()
    if target is not None:
        return target.typeDescriptor
    else:
        return player.getVehicleAttached().typeDescriptor

@xvm.export('vehicle_name', deterministic=False)
def vehicle_name(): 
    return typeDescriptor().type.userString

@xvm.export('gun_reload', deterministic=False)
def gun_reload():
    return "%.1f" % (typeDescriptor().gun['reloadTime'])

@xvm.export('vision_radius', deterministic=False)
def vision_radius():
    return "%i" % (typeDescriptor().turret['circularVisionRadius'])

'battleLabels'

"infoBattleLabels": {
  "enabled": true,
  //Hot key Alt
  "hotKeyCode": 56, 
  "onHold": true,
  ...
  "format": "Техника: {{py:vehicle_name()}}\nКд: {{py:gun_reload()}}\nОбзор: {{py:vision_radius()}}"
}

 

Так вот в прошлом патче при нажатии на клавишу и появлении поля информация обновлялась (пересчитывался "typeDescriptor").

Сейчас в текущем релизе так же при нажатии на горячую кнопку уже обновления поля не происходит (видимо обновлялку вырезали при портировании XVM-ма под AS3).

 

Возможно ли добавить новый "updateEvent" который бы обновлял поле по нажатии на горячую клавишу?

Edited by Just.House

Share this post


Link to post

Short link
Share on other sites

 

 

Так вот в прошлом патче при нажатии на клавишу и появлении поля информация обновлялась (пересчитывался "typeDescriptor"). Сейчас в текущем релизе так же при нажатии на горячую кнопку уже обновления поля не происходит (видимо обновлялку вырезали при портировании XVM-ма под AS3).

, @sirmax, не мог бы прокомментировать эту ситуацию?

 

P.S. Вопрос снимаю.

Share this post


Link to post

Short link
Share on other sites

P.S. Вопрос снимаю.

 

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

Либо нужно событие "при нажатии на кнопку" либо "наведение на цель" (союзник, противник)

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

, @sirmax, не мог бы прокомментировать эту ситуацию?

 

P.S. Вопрос снимаю.

 

Хотя нет, не снимаю. Функция из питона вызывается три раза в начале боя и все. Кэширование?

Share this post


Link to post

Short link
Share on other sites

Либо нужно событие "наведение на цель" (союзник, противник)

поддержу, такого события (onTarget) оч. не хватает...

Share this post


Link to post

Short link
Share on other sites

 

 

так а событие?
, а событие хоть сколько раз. То есть, я нажимаю клавишу, панель появляться. Сколько раз нажму, столько и появится. А в  xvm.log пишется три раза. В лог пишу так:
log('11111')

Share this post


Link to post

Short link
Share on other sites

, а событие хоть сколько раз. То есть, я нажимаю клавишу, панель появляться. Сколько раз нажму, столько и появится. А в  xvm.log пишется три раза. В лог пишу так:

та это не то событие, по нему значение не пересчитывается.

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

 

 

ну и плохо, не должно было.
. Может добавишь событие типа ON_KEY_PRESS или ON_KEY_DOWN?

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