Kotyarko_O 1,906 #381346 Posted February 25, 2017 ошибка у автора в шапке в архиве Действительно. Исправил, спасибо. 1 Quote Share this post Link to post Short link Share on other sites
Kapany3uk 948 #383035 Posted March 11, 2017 @Kotyarko_O, было бы неплохо, помимо сравнения масс, добавить сравнение КД и сравнение обзора. Причем градиентная окраска теперь "зашита" в xvm/utils.py, осталось только "залить" макросы сравнения :) Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #383077 Posted March 11, 2017 было бы неплохо, помимо сравнения масс, добавить сравнение КД и сравнение обзора. Да. Попробую заняться в ближайшее время. 1 Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #383334 Posted March 14, 2017 (edited) Обновлено. Обновлены коэффициенты для расчёта перезарядки орудия и ДПМа (с учётом экипажа и оборудования). Добавлена возможность сравнивать некоторые характеристики. Топорненько, правда.Для любого сравнения нужно отдельно получать информацию о технике в прицеле и о собственном танке, поэтому для сравнения показателей нужно оформлять дополнительные макросы, которые обрабатывают только танк игрока. Эти макросы я буду вводить по запросам (ввести сразу все будет бессмысленно).Для начала доступны такие: '{{pl_vehicle_weight}}', '{{pl_gun_reload}}', '{{pl_gun_reload_equip}}', '{{pl_dmg_per_min}}', '{{pl_dmg_per_min_equip}}', '{{pl_vision_radius}}' Ещё добавлены макросы: {{py:isTarget}} - возвращает 'trg', если в прицеле находится какой-либо танк, пусто - в ином случае. {{py:compareDelim(X, Y)}} - символ сравнения относительно двух характеристик X и Y. {{py:compareColor(X, Y)}} - цвет сравнения относительно двух характеристик X и Y. Последние два макроса берут значения из новой секции в конфиге: // Values for {{py:compareDelim(X, Y)}} and {{py:compareColor(X, T)}} macros // Значения для макросов {{py:compareDelim(X, Y)}} и {{py:compareColor(X, T)}} "compareValues": { "moreThan": { "delim": ">", // '<' "color": "#FF0000" }, "equal": { "delim": "=", "color": "#FFFFFF" }, "lessThan": { "delim": "<", // '>' "color": "#00FF00" } } Пример.Сравнение масс танка в прицеле и собственного: {{py:isTarget=trg?<font color='{{py:compareColor({{vehicle_weight}}, {{pl_vehicle_weight}})}}'>{{vehicle_weight}}т. {{py:compareDelim({{vehicle_weight}}, {{pl_vehicle_weight}})}} {{pl_vehicle_weight}}т.</font>|{{pl_vehicle_weight}}т.}} Длинно, да. Но я выше предупреждал, что топорненько =) Отвечу на вопросы, если что-то непонятно. И удивлюсь, если с моего объяснения всё оказалось понятным... Edited March 14, 2017 by Kotyarko_O 6 Quote Share this post Link to post Short link Share on other sites
Kapany3uk 948 #383357 Posted March 14, 2017 (edited) Длинно, да. Но я выше предупреждал, что топорненько =) Дим, а там по-другому никак :)) я вот тоже для себя делал, только скрипт сравнения пытался сделать универсальным - и для цвета и для знака, но в итоге в конфиге еще длиннее получается... 'py' ########################################## def isfloat(value): try: float(value) return True except ValueError: return False # вывод "больше/меньше/равно" при сравнении двух значений @xvm.export('my_compare', deterministic=False) def compare(first,second,more,less,equal): if not isfloat(first) or not isfloat(second): return '' f = float(first) s = float(second) if f > s: value = more elif f < s: value = less else: value = equal return value ##################################################################### # Информационная панель - дополнение данными игрока для сравнения from BigWorld import player @xvm.export('own_vehicle_weight', deterministic=False) def own_vehicle_weight(): return "%i" % (round(player().getVehicleAttached().typeDescriptor.physics['weight'] / 1000, 1)) @xvm.export('own_gun_reload', deterministic=False) def own_gun_reload(): return "%.1f" % (player().getVehicleAttached().typeDescriptor.gun['reloadTime']) @xvm.export('own_vision_radius', deterministic=False) def own_vision_radius(): return "%i" % (player().getVehicleAttached().typeDescriptor.turret['circularVisionRadius']) 'xc' // Информационная панель при наведении на танк. "infoPanel": { "delay": 5, "altKey": 56, "formats": [ "<textformat tabstops='[75]'>\n<font color='{{py:my_compare('{{py:own_gun_reload}}', '{{gun_reload_equip}}', '#F50800', '#80d580', '#F4EFE8')}}'>КД:</font>\t<font color='{{py:my_compare('{{py:own_gun_reload}}', '{{gun_reload_equip}}', '#80d580', '#F50800', '#F4EFE8')}}'>{{gun_reload_equip}}с</font>\n<font color='{{py:my_compare('{{py:own_vision_radius}}', '{{vision_radius}}', '#80d580', '#F50800', '#F4EFE8')}}'>Обзор:\t{{vision_radius}}м</font>\n<font color='{{py:my_compare('{{py:own_vehicle_weight}}', '{{vehicle_weight}}', '#80d580', '#F50800', '#F4EFE8')}}'>Масса:\t{{vehicle_weight}}т</font>", "{{icon_system_name}}", "{{vehicle_name}}" ] }, '{{pl_gun_reload}}', '{{pl_gun_reload_equip}}' а разве эти два значения для игрока не одинаковы? предполагал, что клиент "для себя" отдает только актуальное время с учетом всех плюшек... Edited March 14, 2017 by Kapany3uk Quote Share this post Link to post Short link Share on other sites
TornadoCat 1,027 #383465 Posted March 16, 2017 Обновлено. [*]Обновлены коэффициенты для расчёта перезарядки орудия и ДПМа (с учётом экипажа и оборудования). Правка на уровне скрипта ? Конфиг правок не требует ? 1 Quote Share this post Link to post Short link Share on other sites
pioner28rus 15 #383471 Posted March 16, 2017 похоже не хватает "enabled": true, в infoPanel.xc 1 Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #383472 Posted March 16, 2017 Конфиг правок не требует ? По процитированному изменению - нет. похоже не хватает "enabled": true, в infoPanel.xc Спасибо, поправил. 1 Quote Share this post Link to post Short link Share on other sites
niZMo 23 #383541 Posted March 17, 2017 а {{dmg_per_min_equip}} и {{pl_dmg_per_min_equip}} вообще работают? У меня выдают время КД. XVM последний релиз, скрипт свежий. 1 Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #383571 Posted March 17, 2017 а {{dmg_per_min_equip}} и {{pl_dmg_per_min_equip}} вообще работают? У меня выдают время КД. Действительно. Исправил, спасибо. 2 Quote Share this post Link to post Short link Share on other sites
pioner28rus 15 #383610 Posted March 18, 2017 Kotyarko_O может пора в дефолт? ;) 4 1 Quote Share this post Link to post Short link Share on other sites
night_dragon_on 5,601 #385695 Posted April 11, 2017 (edited) @Kotyarko_O, [for CT 0.9.18, release 0.9.18] {{py:stun_radius}} - Радиус оглушения снаряда (для АРТ-САУ), м {{py:stun_duration_min}} - Минимальное время оглушения (для АРТ-САУ), сек {{py:stun_duration_max}} - Максимальное время оглушения (для АРТ-САУ), сек Code: bitbucket Edited April 11, 2017 by night_dragon_on 2 Quote Share this post Link to post Short link Share on other sites
KL1SK 13 #388144 Posted May 1, 2017 Kotyarko_O Можно как-то сделать плавное исчезновение? Типа динамической альфы по событию с заданым временем.Например event > a100 > 3s. > a0. Quote Share this post Link to post Short link Share on other sites
cektop 3 #388230 Posted May 1, 2017 Kotyarko_O Можно как-то сделать плавное исчезновение? Типа динамической альфы по событию с заданым временем.Например event > a100 > 3s. > a0. Да и хорошо бы отображение хар-к собственной техники привязать к таймеру "delay". Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #388316 Posted May 1, 2017 Можно как-то сделать плавное исчезновение? Типа динамической альфы по событию с заданым временем.Например event > a100 > 3s. > a0. Да и хорошо бы отображение хар-к собственной техники привязать к таймеру "delay". Можно. Но в ближайшее время заняться чем-либо "танковым" возможности нет. Quote Share this post Link to post Short link Share on other sites
cektop 3 #388323 Posted May 1, 2017 Можно. Но в ближайшее время заняться чем-либо "танковым" возможности нет. Ничего страшного. Мы же не настаиваем, просто идейки подкидываем) Quote Share this post Link to post Short link Share on other sites
fantom_OMSK 0 #391732 Posted May 24, 2017 Дим, а там по-другому никак :)) я вот тоже для себя делал, только скрипт сравнения пытался сделать универсальным - и для цвета и для знака, но в итоге в конфиге еще длиннее получается... shot_002.jpg 'py' ########################################## def isfloat(value): try: float(value) return True except ValueError: return False # вывод "больше/меньше/равно" при сравнении двух значений @xvm.export('my_compare', deterministic=False) def compare(first,second,more,less,equal): if not isfloat(first) or not isfloat(second): return '' f = float(first) s = float(second) if f > s: value = more elif f < s: value = less else: value = equal return value ##################################################################### # Информационная панель - дополнение данными игрока для сравнения from BigWorld import player @xvm.export('own_vehicle_weight', deterministic=False) def own_vehicle_weight(): return "%i" % (round(player().getVehicleAttached().typeDescriptor.physics['weight'] / 1000, 1)) @xvm.export('own_gun_reload', deterministic=False) def own_gun_reload(): return "%.1f" % (player().getVehicleAttached().typeDescriptor.gun['reloadTime']) @xvm.export('own_vision_radius', deterministic=False) def own_vision_radius(): return "%i" % (player().getVehicleAttached().typeDescriptor.turret['circularVisionRadius']) 'xc' // Информационная панель при наведении на танк. "infoPanel": { "delay": 5, "altKey": 56, "formats": [ "<textformat tabstops='[75]'>\n<font color='{{py:my_compare('{{py:own_gun_reload}}', '{{gun_reload_equip}}', '#F50800', '#80d580', '#F4EFE8')}}'>КД:</font>\t<font color='{{py:my_compare('{{py:own_gun_reload}}', '{{gun_reload_equip}}', '#80d580', '#F50800', '#F4EFE8')}}'>{{gun_reload_equip}}с</font>\n<font color='{{py:my_compare('{{py:own_vision_radius}}', '{{vision_radius}}', '#80d580', '#F50800', '#F4EFE8')}}'>Обзор:\t{{vision_radius}}м</font>\n<font color='{{py:my_compare('{{py:own_vehicle_weight}}', '{{vehicle_weight}}', '#80d580', '#F50800', '#F4EFE8')}}'>Масса:\t{{vehicle_weight}}т</font>", "{{icon_system_name}}", "{{vehicle_name}}" ] }, а разве эти два значения для игрока не одинаковы? предполагал, что клиент "для себя" отдает только актуальное время с учетом всех плюшек... Дим, а там по-другому никак :)) я вот тоже для себя делал, только скрипт сравнения пытался сделать универсальным - и для цвета и для знака, но в итоге в конфиге еще длиннее получается... shot_002.jpg 'py' ########################################## def isfloat(value): try: float(value) return True except ValueError: return False # вывод "больше/меньше/равно" при сравнении двух значений @xvm.export('my_compare', deterministic=False) def compare(first,second,more,less,equal): if not isfloat(first) or not isfloat(second): return '' f = float(first) s = float(second) if f > s: value = more elif f < s: value = less else: value = equal return value ##################################################################### # Информационная панель - дополнение данными игрока для сравнения from BigWorld import player @xvm.export('own_vehicle_weight', deterministic=False) def own_vehicle_weight(): return "%i" % (round(player().getVehicleAttached().typeDescriptor.physics['weight'] / 1000, 1)) @xvm.export('own_gun_reload', deterministic=False) def own_gun_reload(): return "%.1f" % (player().getVehicleAttached().typeDescriptor.gun['reloadTime']) @xvm.export('own_vision_radius', deterministic=False) def own_vision_radius(): return "%i" % (player().getVehicleAttached().typeDescriptor.turret['circularVisionRadius']) 'xc' // Информационная панель при наведении на танк. "infoPanel": { "delay": 5, "altKey": 56, "formats": [ "<textformat tabstops='[75]'>\n<font color='{{py:my_compare('{{py:own_gun_reload}}', '{{gun_reload_equip}}', '#F50800', '#80d580', '#F4EFE8')}}'>КД:</font>\t<font color='{{py:my_compare('{{py:own_gun_reload}}', '{{gun_reload_equip}}', '#80d580', '#F50800', '#F4EFE8')}}'>{{gun_reload_equip}}с</font>\n<font color='{{py:my_compare('{{py:own_vision_radius}}', '{{vision_radius}}', '#80d580', '#F50800', '#F4EFE8')}}'>Обзор:\t{{vision_radius}}м</font>\n<font color='{{py:my_compare('{{py:own_vehicle_weight}}', '{{vehicle_weight}}', '#80d580', '#F50800', '#F4EFE8')}}'>Масса:\t{{vehicle_weight}}т</font>", "{{icon_system_name}}", "{{vehicle_name}}" ] }, а разве эти два значения для игрока не одинаковы? предполагал, что клиент "для себя" отдает только актуальное время с учетом всех плюшек... Не мог бы ты скинуть архив со своими настройками, хорошо смотрится Quote Share this post Link to post Short link Share on other sites
Kapany3uk 948 #391835 Posted May 25, 2017 @Kotyarko_O, попробовал использовать 'compareColor' и получается, что код сравнивает значения как строковые, не преобразовывая их в числовые: выдает, к примеру, что 38 больше 160... 'возможный fix' info_panel.py (начиная со строки 131 заменить код) def isfloat(value): try: float(value) return True except ValueError: return False @xvm.export('compareDelim', deterministic=False) def compareDelim(value1, value2): if not isfloat(value1) or not isfloat(value2): return '' value1 = float(value1) value2 = float(value2) if value1 > value2: return infoPanelConfig['compareValues']['moreThan']['delim'] elif value1 < value2: return infoPanelConfig['compareValues']['lessThan']['delim'] else: return infoPanelConfig['compareValues']['equal']['delim'] @xvm.export('compareColor', deterministic=False) def compareColor(value1, value2): if not isfloat(value1) or not isfloat(value2): return '' value1 = float(value1) value2 = float(value2) if value1 > value2: return infoPanelConfig['compareValues']['moreThan']['color'] elif value1 < value2: return infoPanelConfig['compareValues']['lessThan']['color'] else: return infoPanelConfig['compareValues']['equal']['color'] архив со своими настройками Основная идея: если параметры техники в прицеле лучше параметров техники игрока, то строка со значением окрашивается в красный цвет, если наоборот (параметр своего танка лучше), то в зеленый. другими словами, видя "зеленое", понимаем, что наш танк лучше: быстрее перезарядка, дальше обзор, выше масса и, соответственно, наносим врагу больше повреждений при таране )) 'battleLabelsTemplates.xc' "infoPanel": { "enabled": true, "updateEvent": "PY(ON_INFO_PANEL)", "x": 250, "y": "{{py:sight.cameraMode=arc?80|{{py:sight.cameraMode=sn?150|150}}}}", "width": 250, "height": 250, "align": "center", "valign": "center", "screenHAlign": "center", "screenVAlign": "center", "shadow": { "blur": 5, "strength": 4 }, "textFormat": { "font": "$FieldFont", "color": "0xF4EFE8", "size": 14, "align": "left" }, "format": "{{py:infoPanelFormat(0)}}" }, "infoPanelVehicleName": { "$ref": { "path":"def.infoPanel" }, "x": 175, "y": "{{py:sight.cameraMode=arc?77|{{py:sight.cameraMode=sn?147|147}}}}", "textFormat": { "font": "$FieldFont", "color": "0xF4EFE8", "size": 16, "align": "center" }, "format": "<b>{{py:infoPanelFormat(1)}}</b>" }, 'battleLabels.xc' ${ "battleLabelsTemplates.xc":"def.infoPanelVehicleName" }, ${ "battleLabelsTemplates.xc":"def.infoPanel" }, 'infoPanel.xc' ... "formats": [ "<textformat tabstops='[75]'>\n<font color='{{py:compareColor('{{gun_reload_equip}}', '{{pl_gun_reload_equip}}')}}'>КД:\t{{gun_reload_equip}}с</font>\n<font color='{{py:compareColor('{{pl_vision_radius}}', '{{vision_radius}}')}}'>Обзор:\t{{vision_radius}}м</font>\n<font color='{{py:compareColor('{{pl_vehicle_weight}}', '{{vehicle_weight}}')}}'>Масса:\t{{vehicle_weight}}т</font>", "{{vehicle_name}}" ] ... важно! для соответствия красок в панели основной идее конфига нужно внести изменения в info_panel.py (см. начало поста) Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #391893 Posted May 26, 2017 попробовал использовать 'compareColor' и получается, что код сравнивает значения как строковые, не преобразовывая их в числовые: выдает, к примеру, что 38 больше 160... Не могу сейчас проверить. Попробуй с этим скриптом: infoPanel.rar 1 Quote Share this post Link to post Short link Share on other sites
bes1 115 #392040 Posted May 27, 2017 (edited) @Kotyarko_O, попробовал использовать 'compareColor' и получается, что код сравнивает значения как строковые, не преобразовывая их в числовые: выдает, к примеру, что 38 больше 160... 'возможный fix' info_panel.py (начиная со строки 131 заменить код) def isfloat(value): try: float(value) return True except ValueError: return False @xvm.export('compareDelim', deterministic=False) def compareDelim(value1, value2): if not isfloat(value1) or not isfloat(value2): return '' value1 = float(value1) value2 = float(value2) if value1 > value2: return infoPanelConfig['compareValues']['moreThan']['delim'] elif value1 < value2: return infoPanelConfig['compareValues']['lessThan']['delim'] else: return infoPanelConfig['compareValues']['equal']['delim'] @xvm.export('compareColor', deterministic=False) def compareColor(value1, value2): if not isfloat(value1) or not isfloat(value2): return '' value1 = float(value1) value2 = float(value2) if value1 > value2: return infoPanelConfig['compareValues']['moreThan']['color'] elif value1 < value2: return infoPanelConfig['compareValues']['lessThan']['color'] else: return infoPanelConfig['compareValues']['equal']['color'] Основная идея: если параметры техники в прицеле лучше параметров техники игрока, то строка со значением окрашивается в красный цвет, если наоборот (параметр своего танка лучше), то в зеленый. другими словами, видя "зеленое", понимаем, что наш танк лучше: быстрее перезарядка, дальше обзор, выше масса и, соответственно, наносим врагу больше повреждений при таране )) 'battleLabelsTemplates.xc' "infoPanel": { "enabled": true, "updateEvent": "PY(ON_INFO_PANEL)", "x": 250, "y": "{{py:sight.cameraMode=arc?80|{{py:sight.cameraMode=sn?150|150}}}}", "width": 250, "height": 250, "align": "center", "valign": "center", "screenHAlign": "center", "screenVAlign": "center", "shadow": { "blur": 5, "strength": 4 }, "textFormat": { "font": "$FieldFont", "color": "0xF4EFE8", "size": 14, "align": "left" }, "format": "{{py:infoPanelFormat(0)}}" }, "infoPanelVehicleName": { "$ref": { "path":"def.infoPanel" }, "x": 175, "y": "{{py:sight.cameraMode=arc?77|{{py:sight.cameraMode=sn?147|147}}}}", "textFormat": { "font": "$FieldFont", "color": "0xF4EFE8", "size": 16, "align": "center" }, "format": "<b>{{py:infoPanelFormat(1)}}</b>" }, 'battleLabels.xc' ${ "battleLabelsTemplates.xc":"def.infoPanelVehicleName" }, ${ "battleLabelsTemplates.xc":"def.infoPanel" }, 'infoPanel.xc' ... "formats": [ "<textformat tabstops='[75]'>\n<font color='{{py:compareColor('{{gun_reload_equip}}', '{{pl_gun_reload_equip}}')}}'>КД:\t{{gun_reload_equip}}с</font>\n<font color='{{py:compareColor('{{pl_vision_radius}}', '{{vision_radius}}')}}'>Обзор:\t{{vision_radius}}м</font>\n<font color='{{py:compareColor('{{pl_vehicle_weight}}', '{{vehicle_weight}}')}}'>Масса:\t{{vehicle_weight}}т</font>", "{{vehicle_name}}" ] ... важно! для соответствия красок в панели основной идее конфига нужно внести изменения в info_panel.py (см. начало поста) А уже есть чтоли реализация сравнений масс танк изменением цвета . Классно былоб Edited May 27, 2017 by _bes_1 Quote Share this post Link to post Short link Share on other sites