Jump to content
Korean Random
sirmax

Формат подстановок конфига

Recommended Posts

Здравствуйте. Я немного почитал конфиги, и в файле «alpha.xc» увидел вот такие квадратные скобки:

// Динамическая прозрачность по оставшемуся здоровью.
    "hp": [
      { "value": 200,  "alpha": ${"alphaHP.very_low"     } },
      { "value": 400,  "alpha": ${"alphaHP.low"          } },
      { "value": 1000, "alpha": ${"alphaHP.average"      } },
      { "value": 9999, "alpha": ${"alphaHP.above_average"} }
    ],

В других похожих местах — фигурные скобки (например, первые три параметра в том же alpha.xc). Скажите, это нормально?

Share this post


Link to post

Short link
Share on other sites

Добавил давнюю хотелку по подстановке значений из конфига в строке. Реализовано через макрос {{.}}.
Например, есть конфиг:

{
  "my": {
    "value": "X"
  },
  ...
}

Чтобы подставить значение, необходимо написать макрос:

"My value is: {{.my.value}}

Единственное ограничение - пути должны указываться от корня конфига, а не от текущей секции конфига. То есть если "my" определена в файле "texts.xc", то макрос будет {{.texts.my.value}}.

Макрос статический, так что на производительность сильно влиять не должен, но нужно проверять.

Вложенные макросы должны работать (не проверял).
Возможности открываются безграничные - как минимум, можно делать свои собственные секции texts, и указывать, например:

"format": "<font face='xvm'>{{.def.texts.xvmuser.{{xvm-user}}}}</font>"
Edited by sirmax
  • Upvote 7

Share this post


Link to post

Short link
Share on other sites
подстановке значений из конфига в строке

я же правильно понимаю, что прописав,  к примеру, в файле texts.xc секцию: (давно стояла такая секция в старых архивах конфига, только, ес-но, не работала)

    // Текст для макроса {{squad-num}}, шрифт 'Wingdings 2'
    "mySquad": {
      "1": "➊",    // => "1"
      "2": "➋",    // => "2"
      "3": "➌",    // => "3"
      "4": "➍",    // => "4"
      "5": "➎",    // => "5"
      "6": "➏",    // => "6"
      "7": "➐"     // => "7"
    }

в панели "ушей" вывожу "format: "<font face='Wingdings 2'>{{.texts.mySquad.{{squad-num}}}}</font>"

и все работает?

Спрашиваю, потому что, к сожалению, не могу войти в бой уже 3-ю итерацию тестового сервера (виснет на окне загрузки), пока могу только "лазить" в ангаре...

 

зы

или правильно {{.texts.texts.mySquad...}} --> {{.файл.секция.мойМакрос...}} ??

Edited by Duv21

Share this post


Link to post

Short link
Share on other sites

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

Edited by XSerzHX

Share this post


Link to post

Short link
Share on other sites

я же правильно понимаю, что прописав, к примеру, в файле texts.xc секцию: (давно стояла такая секция в старых архивах конфига, только, ес-но, не работала)

    // Текст для макроса {{squad-num}}, шрифт 'Wingdings 2'
    "mySquad": {
      "1": "➊",    // => "1"
      "2": "➋",    // => "2"
      "3": "➌",    // => "3"
      "4": "➍",    // => "4"
      "5": "➎",    // => "5"
      "6": "➏",    // => "6"
      "7": "➐"     // => "7"
    }
в панели "ушей" вывожу "format: "<font face='Wingdings 2'>{{.texts.mySquad.{{squad-num}}}}</font>"

и все работает?

Да, так должно работать.

Share this post


Link to post

Short link
Share on other sites

Да, так должно работать

 

при отсутствии значения (к примеру номер взвода) отдает undefined

'код+скрин'

в "texts" стоит:
// Текст для цифр 0-7, шрифт 'Wingdings 2', конструкция {{.texts.myNumber.{{...макрос числа...}}}}
    "myNumber":
    { "0": "<font face='Wingdings 2'></font>",
      "1": "<font face='Wingdings 2'></font>",
...
      "7": "<font face='Wingdings 2'></font>"
    }

в "playersPanel" стоит
//​
"format": "<font size='16' color='{{squad?#FFB964|#FFFFFF}}'>{{.texts.myNumber.{{squad-num}}}}</font>"

post-24956-0-63387000-1427581441_thumb.jpg

Edited by Duv21

Share this post


Link to post

Short link
Share on other sites

Создал файл test1.xc в папке с конфигом со следующим содержимым:

{
  "test": {
    "text": "qwerty"
  }
}

Пытаюсь вызвать через макрос {{.test1.test.text}}, но ничего не происходит. Что я делаю не так?
Стоит последний ночник 4036

Share this post


Link to post

Short link
Share on other sites
@neLeax, и где прописано, чтобы этот файл грузился в конфиг?
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

 

 

через макрос {{.test1.test.text}}

в @xvm.xc надо добавить ссылку на файл по типу "myMacros" : ${"test1.xc":"test"} - тогда этот файл будет подгружаться, а вот писать макрос надо так:

сначала идет название ссылки в @xvm - в моем примере это .myMacros, а потом сразу требуемое внутри корневой секции файла без названия самой корневой секции - это ведь просто подстановка - в твоем случае .text и в конце параметр (у тебя .qwerty):

{{.myMacros.text.qwerty}}

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

@neLeax, и где прописано, чтобы этот файл грузился в конфиг?

в @xvm.xc надо добавить ссылку на файл по типу "myMacros" : ${"test1.xc":"test"} - тогда этот файл будет подгружаться, а вот писать макрос надо так:

сначала идет название ссылки в @xvm - в моем примере это .myMacros, а потом сразу требуемое внутри корневой секции файла без названия самой корневой секции - это ведь просто подстановка - в твоем случае .text и в конце параметр (у тебя .qwerty):

{{.myMacros.text.qwerty}}

Вот блин, затупил. Забыл вписать файл в @xvm.

 

Спасибо, разобрался:)

Share this post


Link to post

Short link
Share on other sites

Исправил.

проверка на отсутствие значения не срабатывает:

  "myname": {
	  "seriych_RU": "тунеядец",
	  "sergy40_RU": "алкоголик"
  },
{{.myname.{{name}}|{{name}}}}
Везде пустую строку отдает для непрописанных ников

Share this post


Link to post

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

а так работает

{{name=Duv21?{{._my.{{name}}}}|{{name%.18s~..}}}}  

проверял на реплее 0.9.6 (поэтому без "_RU")

Edited by Duv21

Share this post


Link to post

Short link
Share on other sites

Наверно, думает, что 2 нейм у Серыча тоже надо забрать из "myname"

Share this post


Link to post

Short link
Share on other sites

проверка на отсутствие значения не срабатывает:

  "myname": {
	  "seriych_RU": "тунеядец",
	  "sergy40_RU": "алкоголик"
  },
{{.myname.{{name}}|{{name}}}}
Везде пустую строку отдает для непрописанных ников

 

Добавил возможность использовать форматирование для подстановок.

Share this post


Link to post

Short link
Share on other sites

@sirmax, а сложно ли сделать, чтобы макрос {{.}} работал в полях, где присутствуют значения true\false?

 

Хочу вынести настройку в файл, которая бы одновременно включала ХП в ушах, но выключала бы ХП противников в хитлоге.

Обычные подстановки в этих полях работают, но ими так сделать не получится.

Share this post


Link to post

Short link
Share on other sites

@sirmax, а сложно ли сделать, чтобы макрос {{.}} работал в полях, где присутствуют значения true\false?

 

Хочу вынести настройку в файл, которая бы одновременно включала ХП в ушах, но выключала бы ХП противников в хитлоге.

Обычные подстановки в этих полях работают, но ими так сделать не получится.

Пиши пример использования, ну и проверь его для начала. Я не понимаю что именно ты хочешь сделать.

Share this post


Link to post

Short link
Share on other sites

Пиши пример использования, ну и проверь его для начала. Я не понимаю что именно ты хочешь сделать.

Создал два файла в корне конфига.

Первый для настроек @setting.xc, с содержимым:

{
  "setting": {
    "AltModeHP": true,
  }
}
Второй - textsDef.xc с текстовыми подстановками:

{
  "textsDef": {
    "invertor": {
      "true": false,
      "false": true
    } 
  }
}
Я хочу сделать, чтобы при "AltModeHP": true, в опцию "allowHpInPanelsAndMinimap" подставлялось true (это сейчас работает с простыми подстановками: ${"@setting.xc":"setting.AltModeHP"} ), а это же время в опцию "hpLeft"  "enabled": отдавалась значение false с помощью конструкции: {{.textsDef.invertor.{{.setting.AltModeHP}}}}.

Но проблема в том, что макрос {{.}} не работает в этих полях.

Edited by neLeax

Share this post


Link to post

Short link
Share on other sites

Но проблема в том, что макрос {{.}} не работает в этих полях.

Понятно. Макросы работают не во всех полях, а только там, где предусмотрено. Делать во всех слишком накладно.

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