night_dragon_on 5,601 #391241 Posted May 19, 2017 (edited) Да, только к камере применяется данный параметр. Edited May 19, 2017 by night_dragon_on Quote Share this post Link to post Short link Share on other sites
demon2597 5,468 #391242 Posted May 19, 2017 Да, только к камере применяется данный параметр. а на сам ручник есть планы? мне кстати непонятно на счет клавиши, я использую полное отключение ручника в pmod, то есть как открепление камеры так и самого тормоза. при этом, если мне надо заглянуть за угн, но не вертеть туда танк, я и так зажимаю правую клавишу мыши и верчу только камеру, ну то есть всё как для обычного танка... чета я запутался, то есть выходит, что если я в настройках поставлю "full", то точно так же смогу с правой зажатой клавишей шевелить камеру так, чтобы танк не шевелился... а смысл тогда вообще в разных настройках? х.з., может я торможу чего-то... но имхо, без отключения ручника это неполноценная фича и pmod использовать в таком случае удобнее (ну для меня по крайней мере) Quote Share this post Link to post Short link Share on other sites
pioner28rus 15 #391289 Posted May 20, 2017 night_dragon_on а на сам ручник есть планы? если будите ручник делать, сделайте возможность выбора, что бы он мог быть не только везде выключен, но и включен для пт постоянно. т.е я хочу менять угн только с помощью клавиатуры. я просил ShuruBB реализовать это в своём моде, он добавил в список КТТС. Quote Share this post Link to post Short link Share on other sites
night_dragon_on 5,601 #391304 Posted May 20, 2017 (edited) имхо, без отключения ручника это неполноценная фича // "full" - отключение ограничения камеры и фиксации корпуса (включается вручную клавишей "x"); Добавил. Edited May 20, 2017 by night_dragon_on 1 Quote Share this post Link to post Short link Share on other sites
HEKPOMAHT 2,165 #391326 Posted May 20, 2017 // "full" - отключение ограничения камеры и фиксации корпуса (включается вручную клавишей "x"); по возможности желательно добавить параметр только для камеры (как было первоначально), чтобы клавиши не искать да и назначениями не заниматься. На данный момент искать и нажимать х не удобно. Quote Share this post Link to post Short link Share on other sites
night_dragon_on 5,601 #391332 Posted May 20, 2017 (edited) Так реализовано в ПМОД-е, опираясь на который подкидывали "хотелки". Так и сделал. Edited May 20, 2017 by night_dragon_on Quote Share this post Link to post Short link Share on other sites
HEKPOMAHT 2,165 #391335 Posted May 20, 2017 Так реализовано в ПМОД-е, опираясь на который подкидывали "хотелки". Так и сделал. может сейчас и так сделано в пмоде, но вот откопал старую версию мода - всё раздельно было. // Тип отключения ручного тормоз на ПТ-САУ. // full - полное отключение тормоза, custom - только открепление камеры. // Type of deactivating of manual brake on Tank Destroyers. // full - completely off the brake, custom - just detach the camera. "TDSniperMovementMode": "custom" ну и естественно отдельная отключалка для модуля Quote Share this post Link to post Short link Share on other sites
night_dragon_on 5,601 #391336 Posted May 20, 2017 (edited) ну и естественно отдельная отключалка для модуля Отдельный выключатель для опции сделать можно. Edited May 20, 2017 by night_dragon_on Quote Share this post Link to post Short link Share on other sites
HEKPOMAHT 2,165 #391337 Posted May 20, 2017 отдельный выключатель для камеры обязателен. может так как-нибудь сделать: "cameraLimit": { "enable": false, "по выбору": full, full (по умолчанию) полное отключение тормоза, custom - только открепление камеры. "hotkey": true }, да и польза от клавиши х тоже сомнительная - кто в бою клавиши искать будет. (я попробовал и больше нет желания :) имхо. Quote Share this post Link to post Short link Share on other sites
night_dragon_on 5,601 #391341 Posted May 20, 2017 (edited) да и польза от клавиши х тоже сомнительная - кто в бою клавиши искать будет. (я попробовал и больше нет желания :) имхо. Клавиша "X" включает обратно фиксацию корпуса. может так как-нибудь сделать Нельзя отключить фиксацию корпуса (ручник) без открепления камеры. Они взаимосвязаны. В отдельном параметре в конфиге "hotkey": true тоже нет смысла. Edited May 20, 2017 by night_dragon_on Quote Share this post Link to post Short link Share on other sites
HEKPOMAHT 2,165 #391343 Posted May 20, 2017 Нельзя отключить фиксацию корпуса (ручник) без открепления камеры. Они взаимосвязаны. да я знаю, комент не полностью написал, так как сейчас в дефолте всё правильно ручник с камерой вместе отключение ограничения камеры и фиксации корпуса это для full а для custom - только открепление камеры. Quote Share this post Link to post Short link Share on other sites
night_dragon_on 5,601 #391347 Posted May 20, 2017 (edited) а на сам ручник есть планы? а для custom - только открепление камеры. отдельный выключатель // TODO: English comments // Отключение предела вращения камеры в снайперском прицеле для техники с ограниченными УГН (углами горизонтальной наводки) орудия. "noCameraLimit": { // true - enable. // true - включить. "enabled": false, // "custom" - отключение ограничения камеры; // "hotkey" - отключение ограничения камеры с зажатой правой кнопкой мыши; // "full" - отключение ограничения камеры и фиксации корпуса (включается вручную клавишей "x"); "mode": "hotkey" } Первый режим - отключаем ограничение вращения камеры, в процессе перемещения корпус техники следует за прицелом на всем протяжении движения; второй режим - отключаем ограничение вращения камеры, в процессе перемещения орудие следует за прицелом до ограничения УГН-ов, далее вращаться будет только камера; ну и третий режим - будет фиксироваться положение ствола и отключится ограничение вращения камеры (режим работы камеры как на технике без ограничения УГН). Edited May 20, 2017 by night_dragon_on 3 Quote Share this post Link to post Short link Share on other sites
HEKPOMAHT 2,165 #391349 Posted May 20, 2017 совсем другое дело Quote Share this post Link to post Short link Share on other sites
demon2597 5,468 #391610 Posted May 23, 2017 @night_dragon_on, спасибо большое. правда даже постестить еще не успел, сильно нет времени Quote Share this post Link to post Short link Share on other sites
Slava7572 1,685 #392008 Posted May 27, 2017 в общем есть такой код: ##################################################################### # imports import BigWorld import xvm_battle.python.fragCorrelationPanel as panel from CurrentVehicle import g_currentVehicle from gui.Scaleform.daapi.view.lobby.hangar.Hangar import Hangar from gui.shared import g_itemsCache from xfw import * import traceback ##################################################################### # constants actual_arenaUniqueID = None playerAvgDamage = None max_hp_enemy = 0 ##################################################################### # handlers @xvm.export('high_сaliber', deterministic=False) def high_caliber(dmg_total): global actual_arenaUniqueID, max_hp_enemy arenaUniqueID = BigWorld.player().arenaUniqueID if actual_arenaUniqueID != arenaUniqueID: actual_arenaUniqueID = arenaUniqueID max_hp_enemy = 0 if panel.teams_totalhp[1] > max_hp_enemy: max_hp_enemy = panel.teams_totalhp[1] battletype = BigWorld.player().arena.guiType if (battletype != 1) or (max_hp_enemy == 0): return else: symbol = '<img src="img://gui/maps/icons/achievement/32x32/mainGun.png" width="26" height="26" align="middle" vspace="-9">' done = '<img src="img://gui/maps/icons/library/done.png" width="20" height="20" align="middle" vspace="-9">' threshold = max_hp_enemy * 0.2 if max_hp_enemy > 5000 else 1000 high_caliber = int(threshold - dmg_total) if high_caliber <= 0: high_caliber = done return '%s%s' % (symbol, high_caliber) if max_hp_enemy >= 1000 else '' @registerEvent(Hangar, '_Hangar__updateParams') def Hangar__updateParams(self): try: global playerAvgDamage playerAvgDamage = g_itemsCache.items.getVehicleDossier(g_currentVehicle.item.intCD).getRandomStats().getAvgDamage() return playerAvgDamage except: err(traceback.format_exc()) @xvm.export('avg_damage', deterministic=False) def avg_damage(dmg_total): global playerAvgDamage battletype = BigWorld.player().arena.guiType if battletype != 1: return elif playerAvgDamage == None: return else: color = 'FFFFFF' symbol = '<img src="img://gui/maps/icons/achievement/32x32/winnerLaurels1.png" width="26" height="26" align="middle" vspace="-9">' none = '<img src="img://gui/maps/icons/achievement/32x32/winnerLaurels3.png" width="26" height="26" align="middle" vspace="-9">' avgDamage = int(playerAvgDamage - dmg_total) if avgDamage <= 0: avgDamage = abs(avgDamage) if avgDamage > 1: color = 'FE7903' if avgDamage > 300: color = 'FFC103' if avgDamage > 500: color = 'F8F400' if avgDamage > 750: color = 'B2F800' if avgDamage > 1000: color = '60FF00' if avgDamage > 1500: color = '00FF77' if avgDamage > 2500: color = '02C9B3' if avgDamage > 3000: color = 'D042F3' return '%s<font color="#%s">%s</font>' % (symbol, color, avgDamage) else: return '%s%s' % (none, avgDamage) @xvm.export('sign_color', deterministic=False) def sign_color(): return panel.total_hp_color @xvm.export('sign_hp', deterministic=False) def sign_hp(): result = panel.teams_totalhp[0] - panel.teams_totalhp[1] return result @xvm.export('sign_hp_color', deterministic=False) def sign_hp_color(): result = panel.teams_totalhp[0] - panel.teams_totalhp[1] return "<font color='#%s'>%s</font>" % (sign_color(), result) Это когда то Рома помог немного изменить его дополнение к ХП по тимам,показывает разницу в цифрах по ХП между тимами(с цветовой дифференциацией),все прекрасно работает уже несколько патчей,но есть один маленький нюанс.Вот эту секцию: @xvm.export('sign_hp', deterministic=False) def sign_hp(): result = panel.teams_totalhp[0] - panel.teams_totalhp[1] return result @xvm.export('sign_hp_color', deterministic=False) def sign_hp_color(): result = panel.teams_totalhp[0] - panel.teams_totalhp[1] return "<font color='#%s'>%s</font>" % (sign_color(), result) Я уже сам дописывал,чтоб убрать лишний .ру файл(до этого был отдельный на разницу по хп),импорты то одинаковые и вроде как все вышло,но почему то не всегда значения появляются сразу и на отсчете то нолик,то нормальная разница,как и должно быть,потом все считает,после первых минут боя(я так понимаю,когда хп отлетает).Работает только цвет,нолик то красный,то зеленый в зависимости от перевеса.При чем такое не всегда,иногда все как положено,сразу значение появляется. Собственно вопрос,можно ли как то убрать эту особенность и оптимизировать код,чтоб значение сразу появлялось,при отсчете? Код самой панели такой(возможно они связаны): ##################################################################### # imports from xfw import * import BigWorld import xvm_battle.python.fragCorrelationPanel as panel ##################################################################### # constants actual_arenaUniqueID = None max_hp_team = [0, 0] percent_filling = 5 section = 20 maxRatio = 95 minRatio = 65 ##################################################################### # handlers @registerEvent(panel, 'update_hp') def update_hp(vehicleID, hp): as_event('ON_UPDATE_HP') @xvm.export('str_replace', deterministic=True) def str_replace(str, old, new, max=-1): return str.replace(old, new, max) @xvm.export('current_hp', deterministic=False) def current_hp(current_team): return panel.teams_totalhp[current_team] @xvm.export('percent_hp', deterministic=False) def percent_hp(current_team): global actual_arenaUniqueID, max_hp_team arenaUniqueID = BigWorld.player().arenaUniqueID if actual_arenaUniqueID != arenaUniqueID: actual_arenaUniqueID = arenaUniqueID max_hp_team = [0, 0] if panel.teams_totalhp[current_team] > max_hp_team[current_team]: max_hp_team[current_team] = panel.teams_totalhp[current_team] return round((100. * current_hp(current_team)) / max_hp_team[current_team], 0) if max_hp_team[current_team] != 0 else None @xvm.export('percent_hp_section', deterministic=False) def percent_hp_section(current_team): return int(round(percent_hp(current_team) / percent_filling, 0)) if percent_hp(current_team) is not None else None @xvm.export('current_hp_symbols', deterministic=False) def current_hp_symbols(current_team, symbol): return percent_hp_section(current_team) * str(symbol) if percent_hp_section(current_team) is not None else section @xvm.export('max_hp_symbols', deterministic=True) def max_hp_symbols(symbol): return str(symbol) * section @xvm.export('sign_hp', deterministic=False) def sign_hp(): if current_hp(0) > current_hp(1): return '>' elif current_hp(0) < current_hp(1): return '<' elif current_hp(0) == current_hp(1): return '=' else: return '' @xvm.export('color_sign_hp', deterministic=False) def color_sign_hp(): if current_hp(0) < current_hp(1): ratio = max(min((100. * current_hp(0) / current_hp(1) - minRatio) / (maxRatio - minRatio), 1), 0) color_sign_hp = panel.color_gradient(panel.hp_colors['neutral'], panel.hp_colors['bad'], ratio) elif current_hp(0) > current_hp(1): ratio = max(min((100. * current_hp(1) / current_hp(0) - minRatio) / (maxRatio - minRatio), 1), 0) color_sign_hp = panel.color_gradient(panel.hp_colors['neutral'], panel.hp_colors['good'], ratio) else: color_sign_hp = panel.color_gradient(panel.hp_colors['neutral'], panel.hp_colors['neutral'], 1) return color_sign_hp Заранее благодарен всем! Quote Share this post Link to post Short link Share on other sites
ktulho 5,790 #392014 Posted May 27, 2017 @Slava7572, а в battleLabelsTemplates.xc как прописано? Quote Share this post Link to post Short link Share on other sites
Slava7572 1,685 #392035 Posted May 27, 2017 (edited) @Slava7572, а в battleLabelsTemplates.xc как прописано? на всякий пожарный всю секцию скопирую,нужная sign_hp // Панель HP(союзники). "panel_hp_ally": { "enabled": true, "updateEvent": "PY(ON_UPDATE_HP)", "x": -163, "y": 5, "width": 240, "height": 22, "alpha": 100, "align": "center", "screenHAlign": "center", "antiAliasType": "advanced", "shadow": { "enabled": true, "distance": 1, "angle": 90, "color": "0x000000", "alpha": 80, "blur": 5, "strength": 1.5 }, "textFormat": { "font": "NDO", "size": 18, "color": "0xFCFCFC", "align": "right", "marginRight": 6, "leading": -19 }, "format": "{{battletype!=event_battles?<font size='17'><b>{{py:current_hp(0)}}</b></font> <font alpha='#CC'>{{py:max_hp_symbols('Q')}}</font><br/><font color='{{py:str_replace('{{.colors.system.ally_alive}}', '0x', '#')}}'>{{py:current_hp_symbols(0, 'Q')}}</font>}}" }, // Панель HP(противники). "panel_hp_enemy": { "enabled": true, "updateEvent": "PY(ON_UPDATE_HP)", "x": 160, "y": 5, "width": 240, "height": 22, "alpha": 100, "align": "center", "screenHAlign": "center", "antiAliasType": "advanced", "shadow": { "enabled": true, "distance": 1, "angle": 90, "color": "0x000000", "alpha": 80, "blur": 5, "strength": 1.5 }, "textFormat": { "font": "NDO", "size": 18, "color": "0xFCFCFC", "align": "left", "marginLeft": 2, "leading": -19 }, "format": "{{battletype!=event_battles?<font alpha='#CC'>{{py:max_hp_symbols('R')}}</font> <font size='17'><b>{{py:current_hp(1)}}</b></font><br/><font color='{{py:str_replace('{{.colors.system.enemy_alive}}', '0x', '#')}}'>{{py:current_hp_symbols(1, 'R')}}</font>}}" }, // Основной калибр. "high_сaliber": { "enabled": true, "updateEvent": "PY(ON_UPDATE_HP)", "hotKeyCode": 56, "onHold": true, "visibleOnHotKey": true, "x": 321, "y": 1, "width": 90, "height": 30, "alpha": 100, "align": "center", "screenHAlign": "center", "antiAliasType": "advanced", "shadow": { "enabled": true, "distance": 1, "angle": 90, "color": "0x000000", "alpha": 80, "blur": 5, "strength": 1.5 }, "textFormat": { "font": "NDO", "size": 17, "color": "0xFFFFFF", "align": "left" }, "format": "{{battletype!=event_battles?<b>{{py:high_сaliber({{hitlog.dmg-total}})}}</b>}}" }, // Средний урон. "avg_damage": { "enabled": true, "updateEvent": "ON_DAMAGE_CAUSED", "hotKeyCode": 56, "onHold": true, "visibleOnHotKey": false, "x": 321, "y": 1, "width": 90, "height": 30, "alpha": 100, "align": "center", "screenHAlign": "center", "antiAliasType": "advanced", "shadow": { "enabled": true, "distance": 1, "angle": 90, "color": "0x000000", "alpha": 80, "blur": 5, "strength": 1.5 }, "textFormat": { "font": "NDO", "size": 17, "color": "0xFFFFFF", "align": "left" }, "format": "{{battletype!=event_battles?<b>{{py:avg_damage({{hitlog.dmg-total}})}}</b>}}" }, // Разница по HP между командами. "sign_hp": { "enabled": true, "updateEvent": "ON_PLAYERS_HP_CHANGED", "x": -323, "y": 1, "width": 90, "height": 30, "screenHAlign": "center", "shadow": { "enabled": true, "distance": 1, "angle": 90, "color": "0x000000", "alpha": 80, "blur": 5, "strength": 1.5 }, "textFormat": { "font": "NDO", "size": 17, "align": "right" }, "format": "<b>{{py:sign_hp_color}}</b> <img src='img://gui/maps/icons/achievement/32x32/champion.png' width='26' height='26' vspace='-9'>" }, Я так думаю "updateEvent" нужно добавить,подкорректировать? П.С:сделал пару скринов для понимания Правда на последней картинке почему то цвет не сработал. Оооочень полезная фича,по большому счету не так часто на саму панель смотрю как на эту цифру)) Edited May 27, 2017 by Slava7572 Quote Share this post Link to post Short link Share on other sites
ktulho 5,790 #392038 Posted May 27, 2017 (edited) @Slava7572, измените событие ON_PLAYERS_HP_CHANGED на PY(ON_UPDATE_HP): // Разница по HP между командами. "sign_hp": { "enabled": true, "updateEvent": "PY(ON_UPDATE_HP)", "x": -323, "y": 1, "width": 90, "height": 30, "screenHAlign": "center", "shadow": { "enabled": true, "distance": 1, "angle": 90, "color": "0x000000", "alpha": 80, "blur": 5, "strength": 1.5 }, "textFormat": { "font": "NDO", "size": 17, "align": "right" }, "format": "<b>{{py:sign_hp_color}}</b> <img src='img://gui/maps/icons/achievement/32x32/champion.png' width='26' height='26' vspace='-9'>" }, Edited May 27, 2017 by ktulho 1 Quote Share this post Link to post Short link Share on other sites
Slava7572 1,685 #392042 Posted May 27, 2017 (edited) @Slava7572, измените событие ON_PLAYERS_HP_CHANGED на PY(ON_UPDATE_HP): // Разница по HP между командами. "sign_hp": { "enabled": true, "updateEvent": "PY(ON_UPDATE_HP)", "x": -323, "y": 1, "width": 90, "height": 30, "screenHAlign": "center", "shadow": { "enabled": true, "distance": 1, "angle": 90, "color": "0x000000", "alpha": 80, "blur": 5, "strength": 1.5 }, "textFormat": { "font": "NDO", "size": 17, "align": "right" }, "format": "<b>{{py:sign_hp_color}}</b> <img src='img://gui/maps/icons/achievement/32x32/champion.png' width='26' height='26' vspace='-9'>" }, Ок,попробую.Спасибо. П.С:теперь все норм,вы лучший ;) Edited May 27, 2017 by Slava7572 Quote Share this post Link to post Short link Share on other sites
androdizel 8 #394969 Posted June 12, 2017 Ок,попробую.Спасибо. П.С:теперь все норм,вы лучший ;) слава друг поделись данной фичей, если нетрудно, желательно какие файлы и куда что добавить, чтобы свой конфиг не ломать. Заранее благодарен))) Quote Share this post Link to post Short link Share on other sites