Jump to content
Korean Random
vlad_cs_sr

Предложения по стандартному конфигу / Suggestions for default config

Recommended Posts

 

 

Раз в описании формулировка "Нельзя задевать союзников прямыми выстрелами" - значит в учет идут только непосредственно выстрелы.
, значит осталось проверить посинеем ли при сбивании гусли союзника без урона (или рикошет) .

Share this post


Link to post

Short link
Share on other sites
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)

норм работает? если да то заменю у себя тоже :)

протупил, все верно

Share this post


Link to post

Short link
Share on other sites

 

 

норм работает? если да то заменю у себя тоже :)

 

значит осталось проверить посинеем ли при сбивании гусли союзника без урона (или рикошет) .
 

Share this post


Link to post

Short link
Share on other sites

@sirmax, планируется ли изменение парсера, что бы можно было использовать такие конструкции?

"format": "{{py:xvm_mainGun('<img src='img://gui/maps/icons/achievement/32x32/mainGun.png' vspace='-12'> ', {{hitlog.dmg-total}})}}

Или стоит продолжить разрабатывать концепцию @Kapany3uk из этого поста?

Edited by ktulho

Share this post


Link to post

Short link
Share on other sites

Для начала, у тебя тут не валидный синтаксис. 

Вот так попробуй:

 

"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}})}}

Share this post


Link to post

Short link
Share on other sites

 

Для начала, у тебя тут не валидный синтаксис. 

Вот так попробуй:

"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.

Share this post


Link to post

Short link
Share on other sites

В любом случае, лучше из питона возвращать строку, чем гонять ее туда-обратно.


ИМХО, парсер сам читает что находится <> и не передает строку в python.

Проблема не в этом, а в кавычках. Можно попробовать заескейпить так: \\\"


Хотя да, похоже, парсер валится на символах < > =

Edited by sirmax

Share this post


Link to post

Short link
Share on other sites

 

 

В любом случае, лучше из питона возвращать строку, чем гонять ее туда-обратно.
, это да, но про py_macros говорят:

 

 

фича-то хорошая, не спорю, только она вообще не юзер фрэндли

 

 

Можно попробовать заескейпить так: \\\" или так: \\"

Если \\\", то та же самая ошибка. Если \\", то:

JSONxLoaderException: Illegal character "i" at 225:55 in "res_mods\configs\xvm\my\battleLabelsTemplates.xc"

 

 

Хотя да, похоже, парсер валится на символах < > =
и со скобками не все в порядке 

Share this post


Link to post

Short link
Share on other sites

Это из-за форматирования макросов. Можно отключить форматирование вообще для py и l10n (там такие же проблемы), тогда ошибки не будет, но не будет и дефолтного значения. Если оставить дефолтное значение, тогда нельзя будет использовать "|" в макросе. У макросов парсер туповатый, и переделывать его не хочется.

Share this post


Link to post

Short link
Share on other sites

 

 

Это из-за форматирования макросов. Можно отключить форматирование вообще для py и l10n (там такие же проблемы), тогда ошибки не будет, но не будет и дефолтного значения. Если оставить дефолтное значение, тогда нельзя будет использовать "|" в макросе.
, это вроде активно используется в конфигах, поэтому не стоит менять.

 

У макросов парсер туповатый, и переделывать его не хочется.
Может добавить какой нибудь символ, чтобы XVM не парсил строку после него в макросах.

Share this post


Link to post

Short link
Share on other sites

Исправил.


, это вроде активно используется в конфигах, поэтому не стоит менять.

Вместе с py зачем использовать?


Может добавить какой нибудь символ, чтобы XVM не парсил строку после него в макросах.

Ага, и это: "{{py:" :)


тоже работают

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites
Ага, и это: "{{py:" :)

я имел ввиду внутри макроса "{{py:( ' ' )}}".

 

 

Исправил.

, спасибо. 

Проверять на "loader-refactoring"?

Edited by ktulho

Share this post


Link to post

Short link
Share on other sites

Проверять на "loader-refactoring"?

да

я имел ввиду внутри макроса "{{py:( ' ' )}}".

Есть 2 варианта:

"{{py:x('|')}}"

или

"{{py:x('')|...}}"

Во втором варианте нельзя в аргументах использовать символ '|'.

 

Я считаю, что первый вариант предпочтительней. Дефолт можно задать в реализации макроса, как я в последнем коммите в xvm2sup сделал.

 

По-хорошему, надо искать закрывающую скобку, и тогда можно будет включить полное форматирование макросов, но это не так просто, надо будет подумать, как доработать парсер макроса.

Edited by sirmax

Share this post


Link to post

Short link
Share on other sites

@sirmax, а сейчас как правильно написать строку?

"format": "{{py:xvm_mainGun('<img src='img://gui/maps/icons/achievement/32x32/mainGun.png' vspace='-12'> ', {{hitlog.dmg-total}})}} 

Share this post


Link to post

Short link
Share on other sites

 

@sirmax, а сейчас как правильно написать строку?

"format": "{{py:xvm_mainGun('<img src='img://gui/maps/icons/achievement/32x32/mainGun.png' vspace='-12'> ', {{hitlog.dmg-total}})}} 

Конечно нет, нужно экранировать символы.

Share this post


Link to post

Short link
Share on other sites

Попробовал так:

"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, ')')'

Share this post


Link to post

Short link
Share on other sites

Я же выше пример давал:

"format": "{{py:xvm_mainGun('<img src=\"img://gui/maps/icons/achievement/32x32/mainGun.png\" vspace=\"-12\"> ', {{hitlog.dmg-total}})}}"
Edited by sirmax

Share this post


Link to post

Short link
Share on other sites

 

 

Я же выше пример давал
во, вот так работает:
 "format": "{{py:xvm.AvgDmg.mainGun('<img src=\\'img://gui/maps/icons/achievement/32x32/mainGun.png\\' vspace=\\'-12\\'> (', {{hitlog.dmg-total}}, ')')}}" 

Share this post


Link to post

Short link
Share on other sites

во, вот так работает:

 "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 by sirmax
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

 

 

мой вариант выше с двойными кавычками тоже будет работать
, не знал, что в парсере экранирование работает.

Share this post


Link to post

Short link
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...