wotunion Posted May 31, 2016 Share Posted May 31, 2016 Да. Кстати, можно их использовать не только для макросов, но и моды писать. Вот это действительно круто. можно и папочку переименовать в py_scripts или подобное а конструкция импорта модуля из папки типа import folder.subfolder_py_file сработает? @ Quote Link to comment Short link Share on other sites More sharing options...
seriych Posted May 31, 2016 Share Posted May 31, 2016 Да. Кстати, можно их использовать не только для макросов, но и моды писать. А есть какая-то разница с тем, что тот же .pyc кинуть в scripts\client\gui\mods? кроме того, что тут .py, а не .pyc. Или там импортить из XVM нельзя? @ Quote Link to comment Short link Share on other sites More sharing options...
sirmax Posted May 31, 2016 Share Posted May 31, 2016 (edited) А есть какая-то разница с тем, что тот же .pyc кинуть в scripts\client\gui\mods? кроме того, что тут .py, а не .pyc. Или там импортить из XVM нельзя? в целом нет разницы, только у нас отключен импорт нескольких системных модулей. ну и перекомпиливать не надо - это основной плюс и код открыт - это тоже плюс можно и папочку переименовать в py_scripts или подобное Можно рядом дополнительную сделать, чтобы макросы не мешались с модами. Если идея будет пользоваться популярностью, то наверно так и сделаем. а конструкция импорта модуля из папки типа import folder.subfolder_py_file сработает? не проверял, но по идее можно сделать, если не работает Edited May 31, 2016 by sirmax @ Quote Link to comment Short link Share on other sites More sharing options...
wotunion Posted May 31, 2016 Share Posted May 31, 2016 в целом нет разницы, только у нас отключен импорт нескольких системных модулей. а каких? @ Quote Link to comment Short link Share on other sites More sharing options...
seriych Posted May 31, 2016 Share Posted May 31, 2016 (edited) а каких? https://bitbucket.org/XVM/xvm/commits/1b39103936a765acfa1faf60a9d21d0065a2995f illegal_functions = ('__import__', 'eval', 'execfile') illegal_import = ('os', 'sys', 'import_lib') Edited May 31, 2016 by seriych @ Quote Link to comment Short link Share on other sites More sharing options...
wotunion Posted May 31, 2016 Share Posted May 31, 2016 Короче ограничения по фс Вообще байткод для того и сделан, чтобы шустрее интерпретация осуществлялась, может поддержку pyc как опцию стоит ввести? @ Quote Link to comment Short link Share on other sites More sharing options...
sirmax Posted May 31, 2016 Share Posted May 31, 2016 Короче ограничения по фс Вообще байткод для того и сделан, чтобы шустрее интерпретация осуществлялась, может поддержку pyc как опцию стоит ввести? ну если ты сделаешь анализатор pyc в ast, то ок. :) @ Quote Link to comment Short link Share on other sites More sharing options...
wotunion Posted May 31, 2016 Share Posted May 31, 2016 как в самом первом варианте py макросов @ Quote Link to comment Short link Share on other sites More sharing options...
night_dragon_on Posted May 31, 2016 Share Posted May 31, 2016 Да, точно, оно ж глобальное для клиента, и между боями запоминается.Тогда надо привязаться к arenaUniqueID Тут тоже один минус, в таком виде расчет для одной команды будет неверным так как переменная с максимальным начальным значением запаса прочности берется из большего значения толь или иной команды. 'hp_panel.py ; battleLabelsTemplates.xc ; shot-1.png' {{py:xvm.frag_correlation.percent_hp(0)}} {{py:xvm.frag_correlation.percent_hp(1)}} import BigWorld import xvm_battle.python.fragCorrelationPanel as panel actual_arenaUniqueID = None hp_max_team = 0 @xvm.export('xvm.frag_correlation.current_hp', deterministic=False) def current_hp(current_team): return panel.teams_totalhp[current_team] @xvm.export('xvm.frag_correlation.percent_hp', deterministic=False) def percent_hp(current_team): global actual_arenaUniqueID, hp_max_team arenaUniqueID = BigWorld.player().arenaUniqueID if actual_arenaUniqueID != arenaUniqueID and hp_max_team == 0: actual_arenaUniqueID = arenaUniqueID hp_max_team = max(panel.teams_totalhp) return round((100. * current_hp(current_team)) / hp_max_team, 0) Во втором случае расчет для одной команды производится нормально, а для другой остается постоянной переменная с максимальным начальным значением запаса прочности. 'hp_panel.py ; battleLabelsTemplates.xc ; shot-2.png' {{py:xvm.frag_correlation.percent_hp(0)}} {{py:xvm.frag_correlation.percent_hp(1)}} import BigWorld import xvm_battle.python.fragCorrelationPanel as panel actual_arenaUniqueID = None hp_max_team = 0 @xvm.export('xvm.frag_correlation.percent_hp', deterministic=False) def percent_hp(current_team): global actual_arenaUniqueID, hp_max_team arenaUniqueID = BigWorld.player().arenaUniqueID if actual_arenaUniqueID != arenaUniqueID and hp_max_team == 0: actual_arenaUniqueID = arenaUniqueID hp_max_team = panel.teams_totalhp[current_team] return round((100. * current_hp(current_team)) / hp_max_team, 0) Так что тут для правильного расчета нужно будет создавать две отдельных функции import BigWorld hp_max_ally = 0 hp_max_enemy = 0 actual_arenaUniqueID = None @xvm.export('xvm.frag_correlation.percent_hp_ally', deterministic=False) def percent_hp_ally(): global actual_arenaUniqueID, hp_max_ally arenaUniqueID = BigWorld.player().arenaUniqueID if actual_arenaUniqueID != arenaUniqueID and hp_max_ally == 0: actual_arenaUniqueID = arenaUniqueID hp_max_ally = panel.teams_totalhp[0] return round((100. * current_hp(0)) / hp_max_ally, 0) @xvm.export('xvm.frag_correlation.percent_hp_enemy', deterministic=False) def percent_hp_enemy(): global actual_arenaUniqueID, hp_max_enemy arenaUniqueID = BigWorld.player().arenaUniqueID if actual_arenaUniqueID != arenaUniqueID and hp_max_enemy == 0: actual_arenaUniqueID = arenaUniqueID hp_max_enemy = panel.teams_totalhp[1] return round((100. * current_hp(1)) / hp_max_enemy, 0) Или можно как то по другому выкрутится? @ Quote Link to comment Short link Share on other sites More sharing options...
Kapany3uk Posted May 31, 2016 Share Posted May 31, 2016 (edited) Вообще байткод для того и сделан, чтобы шустрее интерпретация осуществлялась, может поддержку pyc как опцию стоит ввести? ну если ты сделаешь анализатор pyc в ast, то ок. :) Парни, вы только не заставляйте пользователей компилировать кастомные файлы - пусть при загрузке автоматом компилятся (а мы ничего и не заметим :)) вот и грусть печаль)) все кинутся компилировать и обфусцировать.. Вот-вот! Edited May 31, 2016 by Kapany3uk @ Quote Link to comment Short link Share on other sites More sharing options...
goodman Posted May 31, 2016 Author Share Posted May 31, 2016 (edited) может поддержку pyc как опцию стоит ввести? вот и грусть печаль)) все кинутся компилировать и обфусцировать.. как тут учиться и подражать удачным примерам? ну и перекомпиливать не надо - это основной плюс и код открыт - это тоже плюс я уж и не пойму... плюс или не будет плюса? Edited May 31, 2016 by goodman 1 @ Quote Link to comment Short link Share on other sites More sharing options...
sirmax Posted May 31, 2016 Share Posted May 31, 2016 вот и грусть печаль)) все кинутся компилировать и обфусцировать.. как тут учиться и подражать удачным примерам? я уж и не пойму... плюс или не будет плюса? мы против обфускации, поэтому и сделали загрузку .py, а не .pyc 1 @ Quote Link to comment Short link Share on other sites More sharing options...
seriych Posted May 31, 2016 Share Posted May 31, 2016 Так что тут для правильного расчета нужно будет создавать две отдельных функцииДля "правильного расчета" вообще нафиг не нужно отображать процент от изначального хп команды, важно лишь соотношение между HP команд. 1 @ Quote Link to comment Short link Share on other sites More sharing options...
sirmax Posted May 31, 2016 Share Posted May 31, 2016 Вообще байткод для того и сделан, чтобы шустрее интерпретация осуществлялась разницы нет, он все равно при загрузке преобразуется в памяти в тот же байткод @ Quote Link to comment Short link Share on other sites More sharing options...
night_dragon_on Posted May 31, 2016 Share Posted May 31, 2016 Для "правильного расчета" вообще нафиг не нужно отображать процент от изначального хп команды, важно лишь соотношение между HP команд. Суть не в отображении процента, а изменение размера фоновой подложки пропорционально изменению ХП. @ Quote Link to comment Short link Share on other sites More sharing options...
demon2597 Posted May 31, 2016 Share Posted May 31, 2016 какие проценты, какие подложки? зачем? сейчас сделано лаконично, понятно и красиво, для чего всё усложнять и прикручивать всякую ерунду? @ Quote Link to comment Short link Share on other sites More sharing options...
Kapany3uk Posted May 31, 2016 Share Posted May 31, 2016 какие проценты, какие подложки? зачем? сейчас сделано лаконично, понятно и красиво, для чего всё усложнять и прикручивать всякую ерунду? "Воу-воу, полегче" :))не дави на инициативу: я вот все жду, пока кто-нить выложит внятный код для анимации (с ддс-ками или пнг-шками) - вот ее очень не хватает в кастомизации... @ Quote Link to comment Short link Share on other sites More sharing options...
goodman Posted May 31, 2016 Author Share Posted May 31, 2016 "Воу-воу, полегче" :)) не дави на инициативу: я вот все жду, пока кто-нить выложит внятный код для анимации (с ддс-ками или пнг-шками) - вот ее очень не хватает в кастомизации... тоже жду интересных идей от наших светлых голов. посмотрю, а там может и у меня понимание появится и идеи в дальнейшем :) @ Quote Link to comment Short link Share on other sites More sharing options...
wotunion Posted May 31, 2016 Share Posted May 31, 2016 Тут тоже один минус, в таком виде расчет для одной команды будет неверным так как переменная с максимальным начальным значением запаса прочности берется из большего значения толь или иной команды. ммм. может сбрасывать по завершению боя типа @registerEvent(score_panel._FragCorrelationPanel, 'destroy') def destroy_hp(*args, **kwargs): try: hp_max_team = 0 except Exception, ex: err(traceback.format_exc()) @ Quote Link to comment Short link Share on other sites More sharing options...
night_dragon_on Posted May 31, 2016 Share Posted May 31, 2016 может сбрасывать по завершению боя Так дело же немного в другом, там процент вычисляется для двух команд (в зависимости от переменой - current_team). При первом расчёте для команды "0", союзников, присваивается максимальное значение хп на начало боя в константу "hp_max_team", производится далее расчёт процента относительно текущего значения хп союзников. В тоже время нам нужно вычислить тот же процент, но уже для команды противника "1", а параметр "hp_max_team" уже имеет ненулевое значение и расчёт продолжает вестись относительно него, что неправильно в этом случае. @ 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.