Jump to content
Korean Random
wotunion

Кастомизируемые текстовые поля в окне боевого интерфейса

Опрос  

20 members have voted

You do not have permission to vote in this poll, or see the poll results. Please sign in or register to vote in this poll.

Recommended Posts

Кастомизируемые текстовые поля в окне боевого интерфейса с поддержкой макросов и обновлений по событию
 
UPD. Допускается подстановка глобальных макросов, личных макросов, макросов статистики для текущего игрока
 
UPD. UPD. Добавлены глобальные макросы для отображения шансов на победу: статический {{chancesStatic}} и динамический {{chancesLive}}
 
UPD. UPD. Поля можно обновлять по событию, пока доступны: "ON_VECHICLE_DESTROYED", "ON_BATTLE_STATE_CHANGED", ON_CURRENT_VECHICLE_DESTROYED, ON_MODULE_DESTROYED, ON_MODULE_REPAIRED
 
UPD. Добавлена поддержка горячих клавиш (действие по нажатию/по удержанию)
 
UPD. 

BattleLabels: battleLabelsTemplates.xc "formats" -----> "format"

 

UPD. Добавлены дефолты для остальных параметров

 

UPD. Добавлено событие: "ON_PLAYERS_HP_CHANGED"
 
post-27262-0-11232800-1460318997_thumb.png
 
Общее подключение
 

@xvm.xc

// Battle interface text fields
// Текстовые поля боевого интерфейса
"battleLabels": ${"battleLabels.xc":"labels"},

 

battle.xc

// true - enable custom labels on battle interface window
// true - показывать пользовательские текстовые поля в окне боевого интерфейса
"allowLabelsOnBattleInterface": true,

 

'battleLabels.xc'

/**
 * List of battle interface labels.
 * Список текстовых полей боевого интерфейса.
 */
{
  "labels": {
    // Referenced labels. Note, that every custom field can be separate enabled or disabled by "enabled" switch in their settings
    // Подключенные текстовые поля. Обратите внимание, что кастомные поля можно отдельно отключать и включать с помощью "enabled" в их настройках
    "formats": [
      ${ "battleLabelsTemplates.xc":"def.winChance" },
      ${ "battleLabelsTemplates.xc":"def.test" },
      ${ "battleLabelsTemplates.xc":"def.test2" }
    ]
  }
} 


hotkeys.xc

"battleLabelsHotKeys": true


 
Подключение полей
 

battleLabelsTemplates.xc

/**
* Battle inteface text fields.
* Текстовые поля боевого интерфейса.
*/
{
  "def": {
    /**
      Set of formats fields available for configuring (default value applyed, when parameter is not defined):
      Набор форматов полей доступных для настройки (значение по-умолчанию применяется, если параметр не указан):
     ┌────────────────────────────┬──────────────────────────────────────────────────────────────────────────
     │ Parameters / Параметры     │ Description / Описание
     ├────────────────────────────┼──────────────────────────────────────────────────────────────────────────
     │ "enabled"                  │ enable/disable field creation: true or false (default: false)
     │                            │ включить/отключить создание полей: true or false (по-умолчанию: false)
     ├────────────────────────────┼──────────────────────────────────────────────────────────────────────────
     │ "updateEvent"              │ event on which field updates, use with dynamic macros; to disable define null value or delete parameter;
     │                            │ allowed events: "ON_BATTLE_STATE_CHANGED", "ON_PLAYERS_HP_CHANGED", "ON_VEHICLE_DESTROYED", "ON_CURRENT_VEHICLE_DESTROYED", "ON_MODULE_DESTROYED", "ON_MODULE_REPAIRED"
     │                            │ событие по которому обновляется поле, используйте динамические макросы; для отключения используйте значение null или удалите параметр;
     │                            │ доступные события: "ON_BATTLE_STATE_CHANGED", "ON_PLAYERS_HP_CHANGED", "ON_VEHICLE_DESTROYED", "ON_CURRENT_VEHICLE_DESTROYED", "ON_MODULE_DESTROYED", "ON_MODULE_REPAIRED"
     ├────────────────────────────┼──────────────────────────────────────────────────────────────────────────
     │ "hotKeyCode"               │ keyboard key code (see list in hotkeys.xc), when pressed - switches text field to show and apply configured html in "format", or hide;
     │                            │ when defined, text field will not be shown until key is pressed, to disable define null value or delete parameter
     │                            │ горячие клавиши клавиатуры (список в hotkeys.xc), при нажатии - выводится текстовое поле и применяются параметры html в "format", или скрывается поле;
     │                            │ текстовое поле не будет отображаться, пока не будет нажата клавиша, для отключения используйте значение null или удалите параметр;
     ├────────────────────────────┼──────────────────────────────────────────────────────────────────────────
     │ "onHold"                   │ take action by key click; true - while key is remains pressed (default: false)
     │                            │ false - производит действие по разовому нажатию клавиши; true - по удержанию (по-умолчанию: false)
     ├────────────────────────────┼──────────────────────────────────────────────────────────────────────────
     │ "x"                        │ x position (macros allowed) (default: 0)
     │                            │ положение по оси x (доступно использование макросов) (по-умолчанию: 0)
     ├────────────────────────────┼──────────────────────────────────────────────────────────────────────────
     │ "y"                        │ y position (macros allowed) (default: 0)
     │                            │ положение по оси y (доступно использование макросов) (по-умолчанию: 0)
     ├────────────────────────────┼──────────────────────────────────────────────────────────────────────────
     │ "width"                    │ width (macros allowed) (default: 0)
     │                            │ ширина элемента (доступно использование макросов) (по-умолчанию: 0)
     ├────────────────────────────┼──────────────────────────────────────────────────────────────────────────
     │ "height"                   │ height (macros allowed) (default: 0)
     │                            │ высота элемента (доступно использование макросов) (по-умолчанию: 0)
     ├────────────────────────────┼──────────────────────────────────────────────────────────────────────────
     │ "alpha"                    │ transparency in percents (0..100) (macros allowed) (default: 100)
     │                            │ прозрачность элемента, в процентах (0..100) (доступно использование макросов) (по-умолчанию: 100)
     ├────────────────────────────┼──────────────────────────────────────────────────────────────────────────
     │ "rotation"                 │ rotation in degrees (0..360) (macros allowed) (default: 0)
     │                            │ поворот элемента, в градусах (доступно использование макросов) (по-умолчанию: 0)
     ├────────────────────────────┼──────────────────────────────────────────────────────────────────────────
     │ "scaleX"                   │ scaling axis X in % (use negative values for mirroring) (default: 100)
     │                            │ масштабирование по оси x в % (используйте отрицательные значения для зеркального отображения) (по-умолчанию: 100)
     ├────────────────────────────┼──────────────────────────────────────────────────────────────────────────
     │ "scaleY"                   │ scaling axis Y (%, use negative values for mirroring) (default: 100)
     │                            │ масштабирование по оси y (%, используйте отрицательные значения для зеркального отображения) (по-умолчанию: 100)
     ├────────────────────────────┼──────────────────────────────────────────────────────────────────────────
     │ "autoSize"                 │ controls automatic sizing and alignment of text fields ("none", "left" [default], "right", "center")
     │                            │ управление автоматической настройкой размеров и выравниванием текстовых полей ("none", "left" [по-умолчанию], "right", "center")
     ├────────────────────────────┼──────────────────────────────────────────────────────────────────────────
     │ "align"                    │ horizontal alignment ("left" [default], "center", "right")
     │                            │ горизонтальное выравнивание ("left" [по-умолчанию], "center", "right")
     ├────────────────────────────┼──────────────────────────────────────────────────────────────────────────
     │ "valign"                   │ vertical alignment ("top" [default], "center", "bottom")
     │                            │ вертикальное выравнивание ("top" [по-умолчанию], "center", "bottom")
     ├────────────────────────────┼──────────────────────────────────────────────────────────────────────────
     │ "antiAliasType"            │ sets anti-aliasing to advanced anti-aliasing ("advanced" [default] or "normal")
     │                            │ задает использование расширенных возможностей сглаживания ("advanced" [по-умолчанию] or "normal")
     ├────────────────────────────┼──────────────────────────────────────────────────────────────────────────
     │ "bgColor"                  │ if set, draw background with specified color (macros allowed) (default: null)
     │                            │ окрашивает фон в заданный цвет, если установлен (доступно использование макросов) (по-умолчанию: null)
     ├────────────────────────────┼──────────────────────────────────────────────────────────────────────────
     │ "borderColor"              │ if set, draw border with specified color (macros allowed) (default: null)
     │                            │ окрашивает границу в заданный цвет, если установлен (доступно использование макросов) (по-умолчанию: null)
     ├────────────────────────────┼──────────────────────────────────────────────────────────────────────────
     │ "shadow"                   │ shadow settings, defaults:
     │                            │ настройки тени, значение по умолчанию:
     │                            │
     │                            │ "shadow": { "distance": 0, "angle": 0, "color": "0x000000", "alpha": 75, "blur": 2, "strength": 1 }
     │----------------------------│--------------------------------------------------------------------------
     │ "distance"                 │ distance shadow, in pixels (default: 0)
     │                            │ дистанция тени, в пикселях (по-умолчанию: 0)
     │----------------------------│--------------------------------------------------------------------------
     │ "angle"                    │ angle shadow (0.0 .. 360.0) (default: 0)
     │                            │ угол смещения тени, в градусах (по-умолчанию: 0)
     │----------------------------│--------------------------------------------------------------------------
     │ "color"                    │ color shadow ("0xXXXXXX") (default: "0x000000")
     │                            │ цвет тени ("0xXXXXXX") (по-умолчанию: "0x000000")
     │----------------------------│--------------------------------------------------------------------------
     │ "alpha"                    │ shadow alpha (0 .. 100) (default: 75)
     │                            │ прозрачность тени (0 .. 100) (по-умолчанию: 75)
     │----------------------------│--------------------------------------------------------------------------
     │ "blur"                     │ blur shadow (0.0 .. 255.0) (default: 2)
     │                            │ эффект размывки тени (0.0 .. 255.0) (по-умолчанию: 2)
     │----------------------------│--------------------------------------------------------------------------
     │ "strength"                 │ strength shadow (0.0 .. 255.0) (default: 1)
     │                            │ интенсивность тени (0.0 .. 255.0) (по-умолчанию: 1)
     ├────────────────────────────┼──────────────────────────────────────────────────────────────────────────
     │ "currentFieldDefaultStyle" │ it applies global style to HTML in "format"; note, that defined font attributes in "format" override those in "currentFieldDefaultStyle"
     │                            │ применяет глобальный стиль HTML в "format"; обратите внимание, что определенные атрибуты шрифта в "format" переопределяют "currentFieldDefaultStyle"
     │                            │ field default styles, defaults:
     │                            │ стандартный стиль поля, значение по умолчанию:
     │                            │
     │                            │ "currentFieldDefaultStyle": { "name": "$FieldFont", "color": "0xFFFFFF", "size": 12, "align": "left", "bold": false, "italic": false, "underline": false, "display": "block", "leading": 0, "marginLeft": 0, "marginRight": 0 },
     │----------------------------│--------------------------------------------------------------------------
     │ "name"                     │ font name (default: "$FieldFont")
     │                            │ наименование шрифта (по-умолчанию: "$FieldFont")
     │----------------------------│--------------------------------------------------------------------------
     │ "color"                    │ font color ("0xXXXXXX") (default: "0xFFFFFF")
     │                            │ цвет шрифта ("0xXXXXXX") (по-умолчанию: "0xFFFFFF")
     │----------------------------│--------------------------------------------------------------------------
     │ "size"                     │ font size (default: 12)
     │                            │ размер шрифта (по-умолчанию: 12)
     │----------------------------│--------------------------------------------------------------------------
     │ "align"                    │ text alignment (left, center, right) (default: "left")
     │                            │ выравнивание текста (left, center, right) (по-умолчанию: "left")
     │----------------------------│--------------------------------------------------------------------------
     │ "bold"                     │ true - bold (default: false)
     │                            │ true - жирный (по-умолчанию: false)
     │----------------------------│--------------------------------------------------------------------------
     │ "italic"                   │ true - italic (default: false)
     │                            │ true - курсив (по-умолчанию: false)
     │----------------------------│--------------------------------------------------------------------------
     │ "underline"                │ true - underline (default: false)
     │                            │ true - подчеркивание (по-умолчанию: false)
     │----------------------------│--------------------------------------------------------------------------
     │ "display"                  │ defines how element must be showed (inline, block [default], none)
     │                            │ указывает как именно элемент должен быть показан (inline, block [по-умолчанию], none)
     │----------------------------│--------------------------------------------------------------------------
     │ "leading"                  │ space between lines, similarly (<textformat leading='-XX'>...</textformat>) (default: 0)
     │                            │ пространство между строками, аналогично (<textformat leading='-XX'>...</textformat>) (по-умолчанию: 0)
     │----------------------------│--------------------------------------------------------------------------
     │ "marginLeft"               │ indent left, similarly (<textformat lefMargin='XX'>...</textformat>) (default: 0)
     │                            │ отступ слева, аналогично (<textformat lefMargin='XX'>...</textformat>) (по-умолчанию: 0)
     │----------------------------│--------------------------------------------------------------------------
     │ "marginRight"              │ indent left, similarly (<textformat rightMargin='XX'>...</textformat>) (default: 0)
     │                            │ отступ справа, аналогично (<textformat rightMargin='XX'>...</textformat>) (по-умолчанию: 0)
     ├────────────────────────────┼──────────────────────────────────────────────────────────────────────────
     │ "format"                   │ displayed text field data (HTML allowed, macros allowed) (default: "")
     │                            │ отображаемые данные в текстовых полях (доступно использование HTML и макросов) (по-умолчанию: "")
     └────────────────────────────┴──────────────────────────────────────────────────────────────────────────
    */
    "winChance": {
      "enabled": true,
      "updateEvent": "ON_VEHICLE_DESTROYED",
      "x": 225,
      "y": 2,
      "width": 75,
      "height": 22,
      "autoSize": "center",
      "shadow": { "distance": 1, "angle": 90, "alpha": 80, "blur": 5, "strength": 1.5 },
      "currentFieldDefaultStyle": { "color": "0xF4EFE8", "size": 15 },
      "format": "{{chancesStatic}} / {{chancesLive}}"
    },
    "test": {
      "enabled": true,
      "y": -170,
      "width": 200,
      "height": 50,
      "alpha": 70,
      "autoSize": "center",
      "align": "center",
      "valign": "bottom",
      "shadow": { "distance": 1, "angle": 90, "alpha": 80, "strength": 25},
      "currentFieldDefaultStyle": { "color": "{{battleType=1?0x00FFFF|0xFFFF00}}", "size": 25, "align": "center", "bold": true, "leading": -1, "marginLeft": 2, "marginRight": 2 },
      "format": "This is a demo of XVM text fields on battle interface. You may disable it in battle.xc<br/> Press '<font color='#60FF00'>J</font>' hot-key to show info field"
    },
    "test2": {
      "enabled": true,
      "hotKeyCode": 36,
      "y": -70,
      "width": 310,
      "height": 50,
      "alpha": 70,
      "autoSize": "none",
      "align": "center",
      "valign": "bottom",
      "bgColor": "0x000000",
      "borderColor": "0x101009",
      "shadow": { "distance": 1, "angle": 90, "alpha": 80, "strength": 8},
      "currentFieldDefaultStyle": { "color": "0x60FF00", "size": 15, "leading": -20, "marginLeft": 2, "marginRight": 2},
      "format": "<font color='#FFFFFF'><p align='center'><b>Info text field (WN8: <font color='{{c:wn8}}'>{{wn8}}</font>)</b></p></font><br/>Battle tier:<font color='#ff1aff'> {{battletier}}</font><p align='right'>My vehicle: <font color='#ff1aff'>{{my-vehicle}}</font> (<font color='{{c:t-winrate}}'>{{t-winrate%2d}}%</font>)</p>"
    }
  }
}


 

"To do"


Hot-keys для полей;
Макросы: http://www.koreanrandom.com/forum/topic/30998-создание-произвольного-количества-кастомизир/page-4#entry323664;
Также изменить параметр "formats" на "format" (в ед. числе, как везде в конфиге)
Изучить вопрос с альфой шрифта
underline надо добавить
Заметил,что в "ON_VECHICLE_DESTROYED"(и далее где есть) слово VECHICLE с ошибкой
shadow alpha (0 .. 100)
spaces auto to  ...
timer for fields
fix default style apply

set defaults:

"set defaults (done)"

 
"enabled": false,
"updateEvent": null,
"hotKeyCode": null,
"onHold": false,
"x": 0,
"y": 0,
"width": 0,
"height": 0,
"alpha": 100,
"rotation": "",
"scaleX": "",
"scaleY": "",
"autoSize": "left", //
"align": "left", // выравнивание везде лево/вверх, т.к. поле текстовое и мы не арабы :))
"valign": "top", //
"antiAliasType": "advanced",
"bgColor": null,
"borderColor": null,
"currentFieldDefaultStyle": {}, // тут уже есть наследование, поэтому оставил пусто
"format": ""


Edited by wotunion
  • Upvote 14

Share this post


Link to post

Short link
Share on other sites

@wotunion, Это не одно и то же?


"allowLabelsOnBattleInterface": true,
  "labels": {
    "enabled": true,

@wotunion,

Зачем плодить файлы, если все равно "шапка" у нас мелкая? Может в один сделать?

{
  "labelsList": {
    "enabled": true,
    "formats": [
      ${ "list.test1" },
      ${ "list.test2" }
    ]
  },
  "list": {
    "test1": {
		//
    },
    "test2": {
		//
    }
  }
}

Share this post


Link to post

Short link
Share on other sites

Можно будет что то типо этого сделать? http://www.koreanrandom.com/forum/topic/26132-infopanel-%D0%BE%D1%82-dellux-0914/?hl=infopanel

или я не в ту сторону думаю?

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

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

 

 

Зачем плодить файлы, если все равно "шапка" у нас мелкая? Может в один сделать?
 

Потому что массив, доступ по индексу я откуда знаю какое вы название полю придумаете

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

 

 

Допускается подстановка глобальных макросов
макросы ты можешь сам создавать или Макс только? 

Share this post


Link to post

Short link
Share on other sites
макросы ты можешь сам создавать или Макс только? 

Пока работаю глобальные макросы, но только они

Еще не разбирался

В первую очередь нужно сделать поддержку личных макросов (мне нужно только узнать, как проще всего получить имя игрока)

и обновляемость полей

 

 

Зачем плодить файлы, если все равно "шапка" у нас мелкая? Может в один сделать?

и гибкости больше, можно даже сделать даже для каждого поля отдельный файл 

@sirmax,

Код буду поддерживать, неточности исправлю если такие обнаружатся при тестировании

 

Подскажите как проще всего получить имя текущего игрока, хочу подключить еще личные макросы

 

Спасибо

Edited by wotunion
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites
Еще не разбирался

реально создать {{ping}} {{lag}} {{fps)) {{totalHP}} {{chancesLive}} ?

Edited by goodman

Share this post


Link to post

Short link
Share on other sites
Потому что массив, доступ по индексу я откуда знаю какое вы название полю придумаете

Дак у меня тоже массив. Я просто твой list переименовал в labelsList, а def перенес в тот же файл и переименовал в list (не люблю я это левое название def для всего подряд).

 

 

и гибкости больше, можно даже сделать даже для каждого поля отдельный файл 

В моем варианте тоже самое. Мой вариант ничего в коде не меняет(ну кроме list>>labelsList)- это просто вариант, как оформить дефолтный конфиг. Пользователь может как хочет оформить, хоть переделать обратно в твой вариант, хоть по файлу на каждое поле.

Edited by seriych
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Подскажите как проще всего получить имя текущего игрока, хочу подключить еще личные макросы

Похоже, сейчас нет такого, но есть Config.myVehId. Сделаю myPlayerName по аналогии.

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites
Дак у меня тоже массив. Я просто твой list переименовал в labelsList, а def перенес в тот же файл и переименовал в list (не люблю я это левое название def для всего подряд).

Да, сори, а насчет референсов - на вкус и цвет, главное структуру не потерять 

Но в дефолте хотелось так, как в minimapLabels, minimaplabelsTemplates, для общей однородности

Обновил пулл

Вечером еще раз обновлю, надо некритичные ошибки исправить

 

 

Похоже, сейчас нет такого, но есть Config.myVehId. Сделаю myPlayerName по аналогии.

 

А через net.wargaming.account, или это крутовато?

Edited by wotunion
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

А через net.wargaming.account, или это крутовато?

Это старый код, когда ангар еще на as2 был.

Share this post


Link to post

Short link
Share on other sites
или я не в ту сторону думаю?

В ту, но такое кттс 

 

 

хоть по файлу на каждое поле.

плюс, так и задумывалось

можно беспроблемно меняться полями

 

 

реально создать {{ping}} {{lag}} {{fps)) {{totalHP}} {{chancesLive}} ?

 

По срокам моего вникания в макросы не скажу ничего пока. Там 52КБ текста

 

Тут sirmax скорее всего будет делать

 

 

 

 

 

 

исправил неточности в конфигах в шапке в соответсвии с обновленным пуллом

Edited by wotunion

Share this post


Link to post

Short link
Share on other sites
Это не одно и то же?

Исправлено, неиспользуемая настройка, переносил в battle.xc, забыл стереть

 

 

а можно будет привязать логику к событиям в этих полях на питоне?

 

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

 

На Питоне - не знаю, меня просто бесят существующие способы коммуникации python<->ActionScript

Только на ActionScript - сделаю, в первую очередь, переведу шансы на победу, когда сделается макрос типа {{winchances}}

Но у меня перерыв, займусь этим где-то через неделю, своей основной работы много.

Edited by wotunion

Share this post


Link to post

Short link
Share on other sites

меня просто бесят существующие способы коммуникации python<->ActionScript

DAAPI и ExternalInterface?

Share this post


Link to post

Short link
Share on other sites

AS2: Add Config.myPlayerName

супер


 

 

DAAPI и ExternalInterface?

 

именно, не знаю почему

кривое оно что-ли

@sirmax

 

small fixes. Color issue will be fixed in next commit

 

https://bitbucket.org/wotunion/xvm/commits/c0ababe8105c8192720bf3cf32d65a02ed36a6e6?at=default

 

К клиенту не имею доступа, вечером

Edited by wotunion

Share this post


Link to post

Short link
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×