Jump to content
Korean Random

Синтаксис. Использование переменных.


Recommended Posts

Скажите, пожалуйста, как использовать переменные в XVM

 

Например, пытаюсь отформатировать текст, так чтобы если противник жив, то выводился его wn8, а если мертв, то 4 дэша "----".

 

По идее, что нибудь в таком роде

"nickFormatLeft":  "{{alive?{{wm8}}|----}}",

должно сработать. Но не срабатывает. Я пытался использовать a-hp

"nickFormatLeft":  "{{a:wm8}}",

 и вносил изменения в файл alpha.xc

"wn8": [
   { "value": -1, "alpha": "----" },
   { "value": 0.6, "alpha": "wn8" },
   { "value": 9999, "alpha": "wn8%-5.5s" }
   ],


//      "wn8": [
//   { "value": -1, "alpha": "     " },
//   { "value": 0.6, "alpha": "%wn8%" },
//   { "value": 500.6, "alpha": "%{{wn8}}%" },
//   { "value": 950.5, "alpha": "{{%wn8%}}" },
//   { "value": 9999, "alpha": '%wn8%'  }
//   ],

Опять ничего не получалось.

 

Какой должен быть синтаксис в этом случае.

 

 

ПС, я, вероятно, могу использовать

"playersPanel": {
                 "alive": {
                 ....
                  },

                    "dead": {
                ....
                  }

Но интересует более стандартный метод

 

 

 

ППС. Через alive/dead тоже не получилось

Edited by stepan.wot
Link to comment
Short link
Share on other sites

Какой должен быть синтаксис в этом случае.

в этом случае, как и в третьем, у тебя ничего работать не будет, т.к. макрос внутри макроса.

во втором случае ты неправильно макрос написал

в alive нужно писать точные значения (число, слово, шестнадцатеричный код цвета)

 

здесь определяется прозрачность от события

прозрачность определяеться целым числом

"wn8": [

   { "value": -1, "alpha": "0" },

   { "value": 0.6, "alpha": "50" },

   { "value": 9999, "alpha": "100" }

   ],

 

то что всё ты здесь написал абсолютно неверно

Edited by XSerzHX
Link to comment
Short link
Share on other sites

 

должно сработать. Но не срабатывает. Я пытался использовать a-hp

"nickFormatLeft":  "{{a:wm8}}",

Если это копипаста из конфига, то макроса wm8 в хвм нет, есть wn8

Link to comment
Short link
Share on other sites

"то что всё ты здесь написал абсолютно неверно"

 

ОК. Теперь вопрос из первого поста - как сделать, чтобы работало.

Замечу, что вариант

"wn8": [
   { "value": 0, "alpha": "    " },
   { "value": 1, "alpha": "   1" },
   { "value": 2 "alpha": "    2" }, 
   .......
   { "value": 9999 "alpha": "9999" }
   ]

НЕ рассматривается даже в качестве хохмы.

 

 

 

ДА, я пытаюсь использовать макрос внутри макроса. Пользоваться фиксированными значениями я уже научился. Итак,

 

Итак, использовать макрос внутри макроса.:

(а) Невозможно.

(б) Можно. Делается так:...

Link to comment
Short link
Share on other sites

Если это копипаста из конфига, то макроса wm8 в хвм нет, есть wn8

 

Нет, это не из моего конфига. Я просто не хочу уточнять мои переменные. Поэтому заменил их на foobar.


Личер, серьезно??

То есть, единственный путь - это 9999 строк хеша? (Как вариант - пересобрать xvm из исходников?)

Edited by stepan.wot
Link to comment
Short link
Share on other sites

Например, пытаюсь отформатировать текст, так чтобы если противник жив, то выводился его wn8, а если мертв, то 4 дэша "----".

 

Вариант для "extraFields...":

{ "valign": "center", "alpha": "{{alive?100|0}}", "format": "<font size='' face='Lucida Console'><font color='{{wn8}}'>{{wn8%4d|----}}</font>"},
{ "valign": "center", "alpha": "{{alive?0|50}}", "format": "<font size='' face='Lucida Console'>----</font>"}

Хм.. чё-то сам попробовал - не сработало. Подумаем

альфа=0, по-ходу игнорится.. или глюк моего билда?

Такой вариант у меня заработал:

"formats": [
   { "valign": "center", "alpha": "{{alive?100|1}}", "format": "<font size='' face='Lucida Console'><font color='{{c:wn8}}'>{{wn8%4d|----}}</font> "},
{ "valign": "center", "alpha": "{{alive?1|50}}", "format": "<font size='' face='Lucida Console'>----</font> "}]

post-12526-0-38062800-1404853668_thumb.jpg
Edited by leecher88
Link to comment
Short link
Share on other sites

Спасибо, попробую. Уточню свой вопрос. Я пытаюсь отформатировать уши, чтобы они выглядели так:

 

ratio  nick                                                    vehicle         hp  frags

  8% Имя_имя_имя                      Модель_танка     2343      2

93% Имя_имя                Модель_второго_танка         98      3

  8% Имя_имя_имя                      Модель_танка                   4                                             // этот - мертвый, в третьей графе пусто

93% Имя_имя                      Модель_еще_танка       358       

 

 

 

То есть, на псевдокоде это будет

"nickFormatLeft": "<колонка1><влево (40 символов в этой колонке)>первый символ - пробел, два символа{{ratio}}, {{имя игрока(не более 30 символов)}}</влево> </колонка1>",

"vehicleFormatLeft": "<вправо><вправо, не более 20 символов>{{модель танка}}</вправо, не более 20 символов>пробел    
                      <вправо, шириной 5 символов, заменить "0" на пробел>{{жизни}}</вправо, шириной 5 символов, заменить "0" на пробел>пробел пробел
                        <вправо, шириной 2 символа, заменить "0" на пробел> {{фраги}}</вправо, шириной 2 символа, заменить "0" на пробел></вправо>",
"fragsFormatLeft":  ""

и зеркально отобразить для правой панели (при этом числа всегда форматировать вправо). Макрос {{hp}} прописан (не мной, конечно)  и работает. Тем не менее, мои попытки объяснить форматирование xvm‘у (см один из пример ниже) ни к чему не привели. То есть, да, оно выводит значения на экран, но формата не держит совершенно.

"large": {
          "width": 60,   
      
     "nickFormatLeft":  "<font color='{{c:rating}}'>{{t-rating%2d% |    }}</font> {{nick%.16s~..}}",
     "nickFormatRight":  "{{nick%.16s~..}} <font  color='{{c:rating}}'>{{t-rating%2d% |    }}</font>",
     
     
     "vehicleFormatLeft": "<font align='right'>{{vehicle%24.24s}}<font  face='Lucida Console' size='12'> <font color='{{c:hp-ratio}}' alpha='{{alive?100|0}}'>{{hp? |      }} {{hp%-5.5s}}</font>{{frags?|  }} {{frags%-2.2s}}</font></font>",
    
     "vehicleFormatRight": "<font align='left', face='Lucida Console' size='12' >{{frags}} <font color='{{c:hp-ratio}}' alpha='{{alive?100|0}}'>{{hp?  |            }}{{hp%5.5s}} a {{hp%-5.5s}}</font>{{vehicle%-24.24s}}</font>",
  
     "fragsFormatLeft": "",
      "fragsFormatRight": ""
     
     }

Пожалуйста, помогите.


Да, альфа=0 там не работает, попробую альфа=1. Как сделать, чтобы хотя бы форматирование держалось?

Edited by stepan.wot
Link to comment
Short link
Share on other sites

 

 

font align='left'
кажется, вот это не поддерживается.  Пробуйте табстопы и лучше прилагайте скриншотов под спойлерами.
Link to comment
Short link
Share on other sites

font align='left' поддерживается, но имеет совершенно иное значение. Он упорядочивает вкладки, а не текст внутри вкладок. Какой смысл публиковать кривой нерабочий код? Ради веских комментариев сержа?

 

то что всё ты здесь написал абсолютно неверно

Так я и сам знаю, что не работает. Я перепробовал под сотню вариантов форматирования, но все они разваливаются, каждый на свой лад. Например,

	    "large": {
		
		"width": 0,   // Minimum width of the player's name column, 0-250. Default is 170. 
		"nickFormatLeft": "<font color='{{c:rating}}'>{{t-rating%2d |   }}</font>",
		"nickFormatRight": "<font color='{{c:rating}}'>{{t-rating%2d |   }}</font>",

		"vehicleFormatLeft": "<font align='right'> <font  face='Lucida Console' size='12' color='{{c:hp-ratio}}' alpha='{{alive?100|1}}'> {{hp?|     }} {{hp%-5.5s}} </font>{{vehicle%-25.25s}} </font>",
		"vehicleFormatRight": "<font align='left'> {{vehicle%25.25s}} <font  face='Lucida Console' size='12' color='{{c:hp-ratio}}'  alpha='{{alive?100|1}}'> {{hp%-5.5s|     }} </font>  </font>",
		"fragsFormatLeft": "<font align='right'> {{frags}}</font>",
		"fragsFormatRight": "<font align='left'>{{frags}}</font>"
  }

Стандартные проблемы -

(1) выражение типа {{vehicle%-25.25s}} должно создавать строку в 25 символов из названия техники, дополненного пробелами слева. Но ничего подобного не происходит (форматируется по типу {{vehicle%.25s}}, а это совсем другой случай).

(2) Пока фрагов нет - форматирование кое-как держится. Когда появляется фраг форматирование ломается, потому что у игрока с фрагом теперь появляется дополнительная колонка.

 

Я думал, что форматирование в xvm использует формат printf, но, как оказалось, формат является лишь "похожим на printf". (Прямо-таки "человек, похожий на прокурора"). Мануаля по этому формату я не нашел.

 

Если под табстопами понимаются выражения типа

"neverSeen": "<textformat tabstops='[6]'><font face='$FieldFont' size='24' color='#DEDEDE'>\t*</font></textformat>",

то я это пробовал, без особого успеха. Табстопы указывают, расстояние между последним символом перед \t. и пепвым символом после. Это относительные значения, а в моем случае нужны абсолютные значения (чтобы форматирование держалось).

Edited by stepan.wot
Link to comment
Short link
Share on other sites

 

 

Мануаля по этому формату я не нашел.
тут есть 

 

Если под табстопами понимаются выражения типа
"formatHistory": "<textformat leading='-4' tabstops='[20,50,90,150]'><font size='12'>×{{n-player}}:</font><tab>{{dmg-player}}<tab>| <font color='{{c:dmg-kind}}'>{{dmg}}</font><tab>| <font color='{{c:dmg-kind}}'>{{dmg-kind}}</font><tab>| <font color='{{c:vtype}}'>{{vehicle}} {{dead}}</font></textformat>",

вот это код от моего хитлога. В нём не \t, а <tab> почему-то. И, насколько я помню, Вы ошибаетесь в этом месте:

 

 

расстояние между последним символом перед \t. и пепвым символом после
Вроде же просто ширина столбца в пикселях. Если же значение будет больше ширины, то всё поплывёт.
Link to comment
Short link
Share on other sites

Вроде же просто ширина столбца в пикселях. Если же значение будет больше ширины, то всё поплывёт

 

Абсолютно верно, заданная ширина столбца "растягивается" под значение, соответственно со сдвигом всех последующих столбцов...

 

 

 

формат является лишь "похожим на printf"

 

Тоже верно, некоторые варианты форматирования не поддерживаются...

Edited by Duv21
Link to comment
Short link
Share on other sites

 

 

заданная ширина столбца "растягивается" под значение
если Вы задали столбец в 100 точек, а значение занимает в разных строках 50-70 точек, то всё стоит таблицей и никуда не растягивается же. А если Вы не можете подобрать ширину поля (под 25 строчных символов в примере Степана), то это лично Ваши проблемы же)
Link to comment
Short link
Share on other sites

Сеч, спасибо, конечно, за комментарии, но немогли бы Вы, плиз, написать две строчки кода, чтобы формат соответствовал формату из поста N8? Если Вам это так легко, то, помогите плиз. Если будет первый рабочий вариант, то дальше я сам методом тыка допилю.

 

"В нём не \t, а <tab> почему-то. И, насколько я помню, Вы ошибаетесь в этом месте"

Не ошибаюсь. Просто мы говорили о разных вещах. В Перле табуляцией называют именно \t. Про <tab> я не знал.


И, кстати, что такое leading='-4'

Link to comment
Short link
Share on other sites

 

 

А если Вы не можете подобрать ширину поля (под 25 строчных символов в примере Степана), то это лично Ваши проблемы же)

Уважаемый, никоим образом не пытался Вас задеть! У меня, к счастью, проблем с расчетом нужной ширины столбца не возникает (метод тыка никто не отменял, в конце концов) а вот ваши инсинуации о наличии таких проблем как минимум непонятны, а как максимум оскорбительны. Постарайтесь впредь воздержаться от подобных высказываний!

Link to comment
Short link
Share on other sites

немогли бы Вы, плиз, написать две строчки кода, чтобы формат соответствовал формату из поста N8?

 

 

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

'картинка'

post-10067-0-67518300-1404995802_thumb.png

и код

"width": 60,
   "nickFormatLeft":  " <font color='{{c:rating}}'>{{t-rating%2d~%|   }}</font> {{nick%.16s~..}}",
   "vehicleFormatLeft": "<textformat tabstops='[30,50]'><font  face='Lucida Console' size='12'>{{vehicle%-24.24s}}<tab> <font color='{{c:hp-ratio}}' alpha='{{alive?100|0}}'>{{hp%-4.4d|    }}</font><tab> {{frags%-2.2d|  }}</font></textformat>",
   "nickFormatRight":  "{{nick%.16s~..}} <font  color='{{c:rating}}'>{{t-rating%2d~%|  }} </font>",
   "vehicleFormatRight": "<textformat tabstops='[10,30]'><font face='Lucida Console' size='12' >{{frags%2.2d|  }} <tab><font color='{{c:hp-ratio}}' alpha='{{alive?100|0}}'>{{hp%4.4d|    }}</font> <tab>{{vehicle%24.24s}}</font></textformat>"
  1. БК делает ХП на один символ длинее (минус, который)
  2. В левых ушах при отсутствии плейсхолдера под фраги, они у меня куда-то ломают столбцы при их появлении
  3. В больших ушах есть колонка для фрагов, которая не зависит от форматов и не убирается. Поэтому логично было бы из vehicleFormat просто поубирать фраги, оставив только ХП

И есть ряд вопросов:

  • Где Вы видели ХП длинной в 5 значений?
  • Почему в Вашем коде ХП и фраги форматировались как строчные данные? Они же целые числа.
  • Зачем Вам 24 символа названия техники? Есть такие длинные названия? А то дополняющие пробелы заметно уширяют уши.

А вообще, широкие уши в моём видении - бесполезная вещь со странным выравниванием для vehicleFormat

P.S. Прозрачность таки не заработала у меня тоже

Edited by sech_92
Link to comment
Short link
Share on other sites

sech_92, Понты, конечно, кидать проще, но как на счет помощи? Для голых понтов существует официальный форум танчиков.

 

 

Поскольку помощи от сеча ожидать бессмысленно, ув. тов. коллеги, помогите, плиз, подобрать

 "nickFormatLeft": "<font valign='center' align='left' size='16'><font color='{{c:rating}}'>{{t-rating%2d |   }}</font> </font><font valign='center' align='left' size='12'>{{name%12.12s}}</font>",
 "vehicleFormatLeft": "<font valign='center' align='right' size='12'><textformat tabstops='[$x, $y, $z]'> {{vehicle%12s}}<tab> <font color='{{c:hp-ratio}}' alpha='{{alive?100|1}}'>{{hp%4d|    }}<tab> </font> {{frags|  }} </textformat></font>",

Этот вариант почти работает, название техники форматируется всегда влево. Попытки использовать %-12.12s или <font align='right'> оленемер напрочь игнорирует.

"nickFormatLeft": "<textformat tabstops='[120, 200, 235]'><font size='16'><font color='{{c:rating}}'>{{t-rating%2d |   }}</font>{{name%12.12s}}<tab>  {{vehicle%-12.12s}}<tab><font color='{{c:hp-ratio}}' alpha='{{alive?100|1}}' > {{hp%4d|    }}<tab></font> {{frags}}</font></font></textformat>",

Такое форматирование плывет при [$x, $y, $z] = [200, 300, 350], [100, 140, 200] и еще нескольких вариантах. От чего отсчитываются табы? О левого края экрана или от окончания предыдущего форматирования (в моем случае либо nickFormatLeft, либо frags)? Текст до первой табуляции начинается с нуля или с первого значения в списке табов? Какая ширина таба по умолчанию? То есть, если мой текст 20 пикселей шириной, а за ним следует таб, то какое минимальное значение должно быть? 20? 21? 25?

Edited by stepan.wot
  • Downvote 1
Link to comment
Short link
Share on other sites

 

 

От чего отсчитываются табы?
от левого края поля, которое вы форматируете

 

Текст до первой табуляции начинается с нуля или с первого значения в списке табов?
с нуля

 

То есть, если мой текст 20 пикселей шириной, а за ним следует таб, то какое минимальное значение должно быть? 20? 21? 25?
20
Link to comment
Short link
Share on other sites

Сеч, это все, конечно, интересно. Но почему тогда форматирование не держится?

"vehicleFormatLeft": "<font valign='center' align='right' size='12'><textformat tabstops='[90, 125]'>{{vehicle%12s}}<tab> <font color='{{c:hp-ratio}}' alpha='{{alive?100|1}}'>{{hp%4d|    }}<tab> </font> {{frags|  }} </textformat></font>",

должно работать.  12 символов * 6 ширины (для 16 шрифта) = 72. А первый таб - 90. 5 символов * 6 ширины (для 16 шрифта) = 30. А второй таб 125-90=35.

 

Твои теоретические познания в области оленемера - это хорошо. Но вот применить их на практике и подобрать форматирование ты, увы, не сможешь.

Link to comment
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...