Kotyarko_O Posted February 25, 2017 Author Share Posted February 25, 2017 ошибка у автора в шапке в архиве Действительно. Исправил, спасибо. 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Kapany3uk Posted March 11, 2017 Share Posted March 11, 2017 @Kotyarko_O, было бы неплохо, помимо сравнения масс, добавить сравнение КД и сравнение обзора. Причем градиентная окраска теперь "зашита" в xvm/utils.py, осталось только "залить" макросы сравнения :) @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted March 11, 2017 Author Share Posted March 11, 2017 было бы неплохо, помимо сравнения масс, добавить сравнение КД и сравнение обзора. Да. Попробую заняться в ближайшее время. 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted March 14, 2017 Author Share 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 Link to comment Short link Share on other sites More sharing options...
Kapany3uk Posted March 14, 2017 Share 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 Link to comment Short link Share on other sites More sharing options...
TornadoCat Posted March 16, 2017 Share Posted March 16, 2017 Обновлено. [*]Обновлены коэффициенты для расчёта перезарядки орудия и ДПМа (с учётом экипажа и оборудования). Правка на уровне скрипта ? Конфиг правок не требует ? 1 @ Quote Link to comment Short link Share on other sites More sharing options...
pioner28rus Posted March 16, 2017 Share Posted March 16, 2017 похоже не хватает "enabled": true, в infoPanel.xc 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted March 16, 2017 Author Share Posted March 16, 2017 Конфиг правок не требует ? По процитированному изменению - нет. похоже не хватает "enabled": true, в infoPanel.xc Спасибо, поправил. 1 @ Quote Link to comment Short link Share on other sites More sharing options...
niZMo Posted March 17, 2017 Share Posted March 17, 2017 а {{dmg_per_min_equip}} и {{pl_dmg_per_min_equip}} вообще работают? У меня выдают время КД. XVM последний релиз, скрипт свежий. 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted March 17, 2017 Author Share Posted March 17, 2017 а {{dmg_per_min_equip}} и {{pl_dmg_per_min_equip}} вообще работают? У меня выдают время КД. Действительно. Исправил, спасибо. 2 @ Quote Link to comment Short link Share on other sites More sharing options...
pioner28rus Posted March 18, 2017 Share Posted March 18, 2017 Kotyarko_O может пора в дефолт? ;) 4 1 @ Quote Link to comment Short link Share on other sites More sharing options...
night_dragon_on Posted April 11, 2017 Share 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 Link to comment Short link Share on other sites More sharing options...
KL1SK Posted May 1, 2017 Share Posted May 1, 2017 Kotyarko_O Можно как-то сделать плавное исчезновение? Типа динамической альфы по событию с заданым временем.Например event > a100 > 3s. > a0. @ Quote Link to comment Short link Share on other sites More sharing options...
cektop Posted May 1, 2017 Share Posted May 1, 2017 Kotyarko_O Можно как-то сделать плавное исчезновение? Типа динамической альфы по событию с заданым временем.Например event > a100 > 3s. > a0. Да и хорошо бы отображение хар-к собственной техники привязать к таймеру "delay". @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted May 1, 2017 Author Share Posted May 1, 2017 Можно как-то сделать плавное исчезновение? Типа динамической альфы по событию с заданым временем.Например event > a100 > 3s. > a0. Да и хорошо бы отображение хар-к собственной техники привязать к таймеру "delay". Можно. Но в ближайшее время заняться чем-либо "танковым" возможности нет. @ Quote Link to comment Short link Share on other sites More sharing options...
cektop Posted May 1, 2017 Share Posted May 1, 2017 Можно. Но в ближайшее время заняться чем-либо "танковым" возможности нет. Ничего страшного. Мы же не настаиваем, просто идейки подкидываем) @ Quote Link to comment Short link Share on other sites More sharing options...
fantom_OMSK Posted May 24, 2017 Share 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 Link to comment Short link Share on other sites More sharing options...
Kapany3uk Posted May 25, 2017 Share 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 Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted May 26, 2017 Author Share Posted May 26, 2017 попробовал использовать 'compareColor' и получается, что код сравнивает значения как строковые, не преобразовывая их в числовые: выдает, к примеру, что 38 больше 160... Не могу сейчас проверить. Попробуй с этим скриптом: infoPanel.rar 1 @ Quote Link to comment Short link Share on other sites More sharing options...
bes1 Posted May 27, 2017 Share 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 Link to comment Short link Share on other sites More sharing options...
Recommended Posts
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.