sirmax 5,499 Posted April 19, 2014 (edited) Продолжение темы из раздела предложений: http://www.koreanrandom.com/forum/topic/8044-настройка-ограничения-длины-ника-в-хит-логе/ См. также: Скрипт для автоматического обновления конфига и замены макросов под расширенный формат Хотелось бы настройку, ограничивающую длину ников поврежденных игроков в хит-логе, аналогично сделанной в мини карте.Сейчас, поскольку и названия танков и ники не ограничены по длине, использовать в логе и то и это не удобно, поскольку надо резервировать место и оставлять здоровый промежуток до колонки со следующими данными.Если бы было такое ограничение, можно было бы подобрать отступы уже точно, а то, у чего длина не ограничена (название танка)- писать в конце строки, чтобы ничему не мешало. Дока: Допускается форматирование макросов (используется формат, приближенный к printf): {{name[:norm][%[flag][width][.prec]type][~suf][?rep][|def]}} name - имя макроса :norm - нормализация значения, например {{hp-ratio:300}} вернет значения в диапазоне 0..300 flag - "-" для выравнивания влево, иначе выравнивание вправо "0" для дополнения чисел ведущими нулями до заданной длины "'" для разделения тысячных разрядов (только для целых чисел) width - минимальная ширина prec - в зависимости от типа: - максимальная ширина для строк - количество знаков после запятой для дробных чисел - смещение ASCII таблицы для чисел в ASCII (по умолчанию 129) type - тип: s - строка d - целое число f - число с плавающей запятой x — шестнадцатеричное число (abcdef) a - целое число в ASCII (для значений от 0 до 100) ... suf - суффикс, добавляемый в конце rep - подменное значение, возвращается вместо обычного значения если оно присутствует def - значение по умолчанию, которое подставляется при отсутствии значения: Например: {{name%-10.10s}} - обрезать длинные имена до 10 символов, а короткие дополнить до 10 символов и выровнять влево {{kb%4.01f~k|----}} - ширина 4 символа, обязательно 1 символ после запятой, выравнивание вправо если kb==null, будет отображаться "----" Подробнее: http://ru.wikipedia.org/wiki/Printf Например: <font color='{{c:avglvl|#666666}}'>{{avglvl|-}}</font> если значения нет, то на выходе будет: <font color='#666666'>-</font> если есть, то: <font color='#123456'>5</font> Или вот, например: {{t-hb%d~h|-}} выведет гектобои в виде "-" "0h" "1h" "5h" "10h" {{t-hb%0.1f~h|-.-h}} будет "-.-h" "0.0h" "0.5h" "1.0h" "1.5h" "10.5h"можно использовать онлайн-тестер для проверки http://printf.onlinephpfunctions.com/ Скрипт изменения старых макросов на новые: http://www.koreanrandom.com/forum/topic/14583-скрипт-для-автоматической-замены-макросов-под/ соответствие старых макросов новым [ "{{name}}", "{{name%.16s~..}}" ], [ "{{eff}}", "{{eff%d|----}}" ], [ "{{eff:4}}", "{{eff%4d|----}}" ], [ "{{teff}}", "{{teff%4d|----}}" ], [ "{{e}}", "{{e%d|-}}" ], [ "{{wn}}", "{{wn8%4d|----}}" ], [ "{{wn6}}", "{{wn6%4d|----}}" ], [ "{{wn8}}", "{{wn8%4d|----}}" ], [ "{{rating}}", "{{rating%d~%|--%}}" ], [ "{{rating:3}}", "{{rating%2d~%|--%}}" ], [ "{{kb}}", "{{kb%d~k|-k}}" ], [ "{{kb:3}}", "{{kb%2d~k|--k}}" ], [ "{{t-rating}}", "{{t-rating%d~%|--%}}" ], [ "{{t-rating:3}}", "{{t-rating%2d~%|--%}}" ], [ "{{t-battles:4}}", "{{t-battles%4d|----}}" ], [ "{{t-kb}}", "{{t-kb%.1f~k|.-k}}" ], [ "{{t-kb-0}}", "{{t-kb%0.1f~k|-.-k}}" ], [ "{{t-kb:4}}", "{{t-kb%3.01f~k|-.-k}}" ], [ "{{t-hb}}", "{{t-hb%d~h|-h}}" ], [ "{{t-hb:3}}", "{{t-hb%2d~h|--h}}" ], [ "{{tdb:4}}", "{{tdb%4d|----}}" ], [ "{{tdv}}", "{{tdv%.1f|-.-}}" ], [ "{{tfb}}", "{{tfb%.1f|-.-}}" ], [ "{{tsb}}", "{{tsb%.1f|-.-}}" ] Edited February 18, 2015 by sirmax 12 Quote Share this post Link to post Short link Share on other sites
TurinDeNar 576 #173006 Posted April 19, 2014 (edited) {{t-hb%0.1f~h|-.-h}} Пздц... парни... здесь не все программисты... Мне как рядовому пользователю по первому взгляду кажется что это уже перебор:) Edited April 19, 2014 by TurinDeNar 5 1 Quote Share this post Link to post Short link Share on other sites
sirmax 5,499 #173008 Posted April 19, 2014 (edited) {{t-hb%0.1f~h|-.-h}}Пздц... парни... здесь не все программисты... Мне по первому взгляду кажется что это уже перебор:) Нормально, по умолчанию макросы остаются практически такие же как и были. Это только расширение для форматирования. Я думаю, можно будет сделать набор примеров, которые покроют 90% всех потребностей. Edited April 19, 2014 by sirmax 3 1 Quote Share this post Link to post Short link Share on other sites
sech_92 469 #173020 Posted April 19, 2014 отличная вещь получилась, позволит решить много деталей с ушами.примеры не помешают, действительно. В частности интересуют типы данных кроме троих из первого сообщения. У нас же вроде ничего не встречается больше, а там многоточие. Quote Share this post Link to post Short link Share on other sites
sirmax 5,499 #173025 Posted April 19, 2014 В частности интересуют типы данных кроме троих из первого сообщения. У нас же вроде ничего не встречается больше, а там многоточие. http://ru.wikipedia.org/wiki/Printf Значения типов: d, i — десятичное знаковое число, размер по умолчанию, sizeof( int ). По умолчанию записывается с правым выравниванием, знак пишется только для отрицательных чисел. '%d' и '%i' ведут себя одинаково при выводе, но имеют разные значения при вводе с помощью функции scanf(); o — восьмеричное беззнаковое число, размер по умолчанию sizeof( int ); u — десятичное беззнаковое число, размер по умолчанию sizeof( int ); x и X — шестнадцатеричное число, x использует маленькие буквы (abcdef), X большие (ABCDEF), размер по умолчанию sizeof( int ); f и F — числа с плавающей запятой. По умолчанию выводятся с точностью 6, если число по модулю меньше единицы, перед десятичной точкой пишется 0. Величины ±∞ представляются в форме [-]inf или [-]infinity, Величина Nan представляется как [-]nan или [-]nan(любой текст далее). Использование F выводит указанные величины заглавными буквами (-INF, NAN). Аргумент по умолчанию имеет размер double. e и E — числа с плавающей запятой в экспоненциальной форме записи (вида 1.1e+44); e выводит символ «e» в нижнем регистре, E — в верхнем (3.14E+0); g и G — число с плавающей запятой; форма представления зависит от значения величины (f или e); a и A — число с плавающей запятой в шестнадцатеричном виде; c — вывод символа с кодом, соответствующим переданному аргументу; переданное число приводится к типу unsigned char (или wint t, если был указан модификатор длины l); s — вывод строки с нулевым завершающим байтом; если модификатор длины — l, выводится строка wchar_t*. В Windows значения типа s зависят от типа используемых функций. Если используется семейство printf функций, то s обозначает строку char*. Если используется семейство wprintf функций, то s обозначает строку wchar_t*. S — то же самое что и s с модификатором длины l; В Windows значения типа S зависит от типа используемых функций. Если используется семейство printf функций, то S обозначает строку wchar_t*. Если используется семейство wprintf функций, то S обозначает строку char*. p — вывод указателя, внешний вид может существенно различаться в зависимости от внутреннего представления в компиляторе и платформе (например, 16 битная платформа MS-DOS использует форму записи вида FFEC:1003, 32-битная платформа с плоской адресацией использует адрес вида 00FA0030); n — запись по указателю, переданному в качестве аргумента, количества символов, записанных на момент появления командной последовательности, содержащей n; % — символ для вывода знака процента (%), используется для возможности вывода символов процента в строке printf, всегда используется в виде %%. Не уверен что все поддерживается, но как-то так. Quote Share this post Link to post Short link Share on other sites
IDEMENTORI 1 #173032 Posted April 19, 2014 сделать набор примеров, которые покроют 90% всех потребностей 1 Quote Share this post Link to post Short link Share on other sites
sirmax 5,499 #173090 Posted April 19, 2014 Закоммитил, можно тестить. Пока не оттестим и не обсудим, релиза не будет. ;-) Quote Share this post Link to post Short link Share on other sites
sech_92 469 #173113 Posted April 19, 2014 Пока не оттестим и не обсудим, релиза не будет. ;-) садизмом попахивает Quote Share this post Link to post Short link Share on other sites
sirmax 5,499 #173121 Posted April 19, 2014 По началу, пишите что необходимо сделать, а я напишу как должен выглядеть макрос. Позже добавлю тестирование макросов в редактор. Quote Share this post Link to post Short link Share on other sites
sech_92 469 #173128 Posted April 19, 2014 @sirmax, первое, что я неоднократно видел на форуме, и запомнилось - симметричные уши форматахэфф | ники (выравнивание влево) [весь экран] ники (выравнивание вправо) | хэфф вместо эффективности были разные варианты, но такое часто спрашивают. Там Серыч что-то с табстопами воротил на этот счёт. Quote Share this post Link to post Short link Share on other sites
sirmax 5,499 #173139 Posted April 19, 2014 (edited) давайте отдельными макросами, полные строки сложно уже будет наугад сделать. ники (выравнивание влево) {{name%-20.20s~..}} - "-" - выравнивание влево "20" - минимальная длина = 20 (дополняется пробелами) ".20" - максимальная длина = 20 (длиннее - обрезается) "~.." - если обрезается длинный ник, в конце ставится суффикс ".." ники (выравнивание вправо){{name%20.20s~..}} Более простые варианты: {{name%-20s}} {{name%20s.}} только шрифт придется моноширинный использовать, все-таки это по символам выравнивается, а не по пикселям Edited April 19, 2014 by sirmax Quote Share this post Link to post Short link Share on other sites
seriych 2,178 #173141 Posted April 19, 2014 (edited) первое, что я неоднократно видел на форуме, и запомнилось - симметричные уши форматадак это надо чтобы пробелы по краям поля не съедались, от макросов это не зависит гексабои* гекто. гекса- 6. Edited April 19, 2014 by seriych Quote Share this post Link to post Short link Share on other sites
sech_92 469 #173144 Posted April 19, 2014 шрифт придется моноширинный использовать это само собой Quote Share this post Link to post Short link Share on other sites
sirmax 5,499 #173146 Posted April 19, 2014 * гекто. гекса- 6. ок Quote Share this post Link to post Short link Share on other sites
NikolayHAOS 274 #173204 Posted April 19, 2014 (edited) Мда... перешел из http://www.koreanrandom.com/forum/topic/11630-%D1%81%D1%82%D1%80%D0%BE%D0%B3%D0%B0%D1%8F-%D0%BC%D0%BE%D0%B4%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F-%D0%BD%D0%BE%D1%87%D0%BD%D1%8B%D0%B5-%D1%81%D0%B1%D0%BE%D1%80%D0%BA%D0%B8-xvm-nightly-builds/page-27?do=findComment&comment=173179 Данное введение влияет и на сниппеты, как минимум на размер шрифта, а может и на положение. Миникарту задевает. И что и где редактировать? без тщательного вникания и не разберешься, что и где править. Надеюсь все утрясется. И вы найдете какое либо решение с существующими конфигами, чтоб не редактировать все по новой, дописывая в строки параметры типа "flag" :-) (один и немногих чье значение понял не задумываясь, а вот с остальным синтаксисом, действительно будет сложновато.) Edited April 19, 2014 by NikolayHAOS Quote Share this post Link to post Short link Share on other sites
sech_92 469 #173215 Posted April 19, 2014 да, вопрос хороший: как с обратной совместимостью? Quote Share this post Link to post Short link Share on other sites
demon2597 5,468 #173361 Posted April 20, 2014 (edited) Крутая штука будет, мне нравится, только всё никак не дойду потестить:). Жирный + Edited April 20, 2014 by demon2597 Quote Share this post Link to post Short link Share on other sites
Hawk1983x 203 #173377 Posted April 20, 2014 Жирный + Жирный - если не будет совместимости между старым и новым форматом... 1 Quote Share this post Link to post Short link Share on other sites
demon2597 5,468 #173381 Posted April 20, 2014 (edited) Жирный - если не будет совместимости между старым и новым форматом... с помощью этой штуки можно сотворить вообще как тебе нравится, какой старый формат, я про него забыл уже:) теперь всё перепилю Edited April 20, 2014 by demon2597 Quote Share this post Link to post Short link Share on other sites
seriych 2,178 #173388 Posted April 20, 2014 Жирный - если не будет совместимости между старым и новым форматом...я сразу почуял, что очередной скрипт сбацать надо :-) 1 Quote Share this post Link to post Short link Share on other sites