ktulho Posted August 18, 2016 Share Posted August 18, 2016 Раз в описании формулировка "Нельзя задевать союзников прямыми выстрелами" - значит в учет идут только непосредственно выстрелы. , значит осталось проверить посинеем ли при сбивании гусли союзника без урона (или рикошет) . @ Quote Link to comment Short link Share on other sites More sharing options...
Ekspoint Posted August 18, 2016 Share Posted August 18, 2016 from Avatar import PlayerAvatar from Vehicle import Vehicle from constants import VEHICLE_HIT_FLAGS class PlayerDamages(object): def __init__(self): self.teamHits = True def reset(self): self.teamHits = True def showShotResults(self, playerAvatar, results): arenaVehicles = playerAvatar.arena.vehicles VHF = VEHICLE_HIT_FLAGS for r in results: vehicleID = r & 4294967295L flags = r >> 32 & 4294967295L if playerAvatar.team == arenaVehicles[vehicleID]['team'] and playerAvatar.playerVehicleID != vehicleID: if flags & (VHF.IS_ANY_DAMAGE_MASK | VHF.ATTACK_IS_DIRECT_PROJECTILE): self.teamHits = False data = PlayerDamages() @registerEvent(PlayerAvatar, 'showShotResults') def showShotResults(self, results): data.showShotResults(self, results) норм работает? если да то заменю у себя тоже :) протупил, все верно @ Quote Link to comment Short link Share on other sites More sharing options...
ktulho Posted August 19, 2016 Share Posted August 19, 2016 норм работает? если да то заменю у себя тоже :) значит осталось проверить посинеем ли при сбивании гусли союзника без урона (или рикошет) . @ Quote Link to comment Short link Share on other sites More sharing options...
ktulho Posted August 19, 2016 Share Posted August 19, 2016 (edited) @sirmax, планируется ли изменение парсера, что бы можно было использовать такие конструкции? "format": "{{py:xvm_mainGun('<img src='img://gui/maps/icons/achievement/32x32/mainGun.png' vspace='-12'> ', {{hitlog.dmg-total}})}} Или стоит продолжить разрабатывать концепцию @Kapany3uk из этого поста? Edited August 19, 2016 by ktulho @ Quote Link to comment Short link Share on other sites More sharing options...
sirmax Posted August 19, 2016 Share Posted August 19, 2016 Для начала, у тебя тут не валидный синтаксис. Вот так попробуй: "format": "{{py:xvm_mainGun('<img src=\'img://gui/maps/icons/achievement/32x32/mainGun.png\' vspace=\'-12\'> ', {{hitlog.dmg-total}})}} или так: "format": "{{py:xvm_mainGun('<img src=\"img://gui/maps/icons/achievement/32x32/mainGun.png\" vspace=\"-12\"> ', {{hitlog.dmg-total}})}} @ Quote Link to comment Short link Share on other sites More sharing options...
ktulho Posted August 19, 2016 Share Posted August 19, 2016 Для начала, у тебя тут не валидный синтаксис. Вот так попробуй: "format": "{{py:xvm_mainGun('<img src=\'img://gui/maps/icons/achievement/32x32/mainGun.png\' vspace=\'-12\'> ', {{hitlog.dmg-total}})}} или так: "format": "{{py:xvm_mainGun('<img src=\"img://gui/maps/icons/achievement/32x32/mainGun.png\" vspace=\"-12\"> ', {{hitlog.dmg-total}})}} Мы так уже пробовали. Сейчас еще попробую. В обоих случаях: 2016-08-19 10:11:50: [ERROR] Traceback (most recent call last): File "xvm_main/python_macro.py", line 154, in process_python_macro File "xvm_main/python_macro.py", line 141, in get_function ValueError: Function syntax error: xvm.AvgDmg.mainGun(' arg='xvm.AvgDmg.mainGun('' ИМХО, парсер сам читает что находится <> и не передает строку в python. @ Quote Link to comment Short link Share on other sites More sharing options...
sirmax Posted August 19, 2016 Share Posted August 19, 2016 (edited) В любом случае, лучше из питона возвращать строку, чем гонять ее туда-обратно. ИМХО, парсер сам читает что находится <> и не передает строку в python. Проблема не в этом, а в кавычках. Можно попробовать заескейпить так: \\\" Хотя да, похоже, парсер валится на символах < > = Edited August 19, 2016 by sirmax @ Quote Link to comment Short link Share on other sites More sharing options...
ktulho Posted August 19, 2016 Share Posted August 19, 2016 В любом случае, лучше из питона возвращать строку, чем гонять ее туда-обратно. , это да, но про py_macros говорят: фича-то хорошая, не спорю, только она вообще не юзер фрэндли Можно попробовать заескейпить так: \\\" или так: \\" Если \\\", то та же самая ошибка. Если \\", то: JSONxLoaderException: Illegal character "i" at 225:55 in "res_mods\configs\xvm\my\battleLabelsTemplates.xc" Хотя да, похоже, парсер валится на символах < > = и со скобками не все в порядке @ Quote Link to comment Short link Share on other sites More sharing options...
sirmax Posted August 19, 2016 Share Posted August 19, 2016 Это из-за форматирования макросов. Можно отключить форматирование вообще для py и l10n (там такие же проблемы), тогда ошибки не будет, но не будет и дефолтного значения. Если оставить дефолтное значение, тогда нельзя будет использовать "|" в макросе. У макросов парсер туповатый, и переделывать его не хочется. @ Quote Link to comment Short link Share on other sites More sharing options...
ktulho Posted August 19, 2016 Share Posted August 19, 2016 Это из-за форматирования макросов. Можно отключить форматирование вообще для py и l10n (там такие же проблемы), тогда ошибки не будет, но не будет и дефолтного значения. Если оставить дефолтное значение, тогда нельзя будет использовать "|" в макросе. , это вроде активно используется в конфигах, поэтому не стоит менять. У макросов парсер туповатый, и переделывать его не хочется. Может добавить какой нибудь символ, чтобы XVM не парсил строку после него в макросах. @ Quote Link to comment Short link Share on other sites More sharing options...
sirmax Posted August 19, 2016 Share Posted August 19, 2016 Исправил. , это вроде активно используется в конфигах, поэтому не стоит менять. Вместе с py зачем использовать? Может добавить какой нибудь символ, чтобы XVM не парсил строку после него в макросах. Ага, и это: "{{py:" :) скобками не все в порядке тоже работают 1 @ Quote Link to comment Short link Share on other sites More sharing options...
ktulho Posted August 19, 2016 Share Posted August 19, 2016 (edited) Ага, и это: "{{py:" :) я имел ввиду внутри макроса "{{py:( ' ' )}}". Исправил. , спасибо. Проверять на "loader-refactoring"? Edited August 19, 2016 by ktulho @ Quote Link to comment Short link Share on other sites More sharing options...
sirmax Posted August 19, 2016 Share Posted August 19, 2016 (edited) Проверять на "loader-refactoring"? да я имел ввиду внутри макроса "{{py:( ' ' )}}". Есть 2 варианта: "{{py:x('|')}}" или "{{py:x('')|...}}" Во втором варианте нельзя в аргументах использовать символ '|'. Я считаю, что первый вариант предпочтительней. Дефолт можно задать в реализации макроса, как я в последнем коммите в xvm2sup сделал. По-хорошему, надо искать закрывающую скобку, и тогда можно будет включить полное форматирование макросов, но это не так просто, надо будет подумать, как доработать парсер макроса. Edited August 19, 2016 by sirmax @ Quote Link to comment Short link Share on other sites More sharing options...
ktulho Posted August 19, 2016 Share Posted August 19, 2016 @sirmax, а сейчас как правильно написать строку? "format": "{{py:xvm_mainGun('<img src='img://gui/maps/icons/achievement/32x32/mainGun.png' vspace='-12'> ', {{hitlog.dmg-total}})}} @ Quote Link to comment Short link Share on other sites More sharing options...
sirmax Posted August 19, 2016 Share Posted August 19, 2016 @sirmax, а сейчас как правильно написать строку? "format": "{{py:xvm_mainGun('<img src='img://gui/maps/icons/achievement/32x32/mainGun.png' vspace='-12'> ', {{hitlog.dmg-total}})}} Конечно нет, нужно экранировать символы. @ Quote Link to comment Short link Share on other sites More sharing options...
ktulho Posted August 19, 2016 Share Posted August 19, 2016 Попробовал так: "format": "{{py:xvm.AvgDmg.mainGun('<img src=\'img://gui/maps/icons/achievement/32x32/mainGun.png\' vspace=\'-12\'> (', {{hitlog.dmg-total}}, ')')}}" xvm.log: File "<unknown>", line 1 ('<img src='img://gui/maps/icons/achievement/32x32/mainGun.png' vspace='-12'> (', 0, ')') ^ SyntaxError: invalid syntax arg='xvm.AvgDmg.mainGun('<img src='img://gui/maps/icons/achievement/32x32/mainGun.png' vspace='-12'> (', 0, ')')' @ Quote Link to comment Short link Share on other sites More sharing options...
sirmax Posted August 19, 2016 Share Posted August 19, 2016 (edited) Я же выше пример давал: "format": "{{py:xvm_mainGun('<img src=\"img://gui/maps/icons/achievement/32x32/mainGun.png\" vspace=\"-12\"> ', {{hitlog.dmg-total}})}}" Edited August 19, 2016 by sirmax @ Quote Link to comment Short link Share on other sites More sharing options...
ktulho Posted August 19, 2016 Share Posted August 19, 2016 Я же выше пример давал во, вот так работает: "format": "{{py:xvm.AvgDmg.mainGun('<img src=\\'img://gui/maps/icons/achievement/32x32/mainGun.png\\' vspace=\\'-12\\'> (', {{hitlog.dmg-total}}, ')')}}" @ Quote Link to comment Short link Share on other sites More sharing options...
sirmax Posted August 19, 2016 Share Posted August 19, 2016 (edited) во, вот так работает: "format": "{{py:xvm.AvgDmg.mainGun('<img src=\\'img://gui/maps/icons/achievement/32x32/mainGun.png\\' vspace=\\'-12\\'> (', {{hitlog.dmg-total}}, ')')}}" Нужно помнить, что сначала работает парсер JSON, а затем уже парсер питона. В твоем примере получается после JSON: {{py:xvm.AvgDmg.mainGun('<img src=\'img://gui/maps/icons/achievement/32x32/mainGun.png\' vspace=\'-12\'> (', {{hitlog.dmg-total}}, ')')}} а для питона аргументы будут уже такие: <img src='img://gui/maps/icons/achievement/32x32/mainGun.png' vspace='-12'> ( {{hitlog.dmg-total}} мой вариант выше с двойными кавычками тоже будет работать Edited August 19, 2016 by sirmax 1 @ Quote Link to comment Short link Share on other sites More sharing options...
ktulho Posted August 19, 2016 Share Posted August 19, 2016 мой вариант выше с двойными кавычками тоже будет работать , не знал, что в парсере экранирование работает. @ 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.