Jump to content
Korean Random

wotunion

User
  • Content Count

    298
  • Joined

  • Last visited

  • Days Won

    6

Everything posted by wotunion

  1. Из res\packages\hangar_v2.pkg\spaces копируем содержимое папки hangar_v2 в res_mods\0.9.15\spaces\hangar_premium_v2
  2. Я об импорте модуля из папки folder/file1.py file2.py В file2.py пишем import folder.file1 Для такой конструкции нужен файл __init__.py в folder, можно пустой Я не проверял, работает ли в xvm
  3. import BigWorld import xvm_battle.python.fragCorrelationPanel as panel actual_arenaUniqueID = None hp_max_team = [0, 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: actual_arenaUniqueID = arenaUniqueID hp_max_team[current_team] = panel.teams_totalhp[current_team] return round((100. * current_hp(current_team)) / hp_max_team[current_team], 0) Хах, одновременно запостили Также and hp_max_team == 0 лишнее Какая именно? Так неправильно, нужно hp_max_team = [0, 0] global hp_max_team
  4. ммм. может сбрасывать по завершению боя типа @registerEvent(score_panel._FragCorrelationPanel, 'destroy') def destroy_hp(*args, **kwargs): try: hp_max_team = 0 except Exception, ex: err(traceback.format_exc())
  5. как в самом первом варианте py макросов
  6. Короче ограничения по фс Вообще байткод для того и сделан, чтобы шустрее интерпретация осуществлялась, может поддержку pyc как опцию стоит ввести?
  7. Вот это действительно круто. можно и папочку переименовать в py_scripts или подобное а конструкция импорта модуля из папки типа import folder.subfolder_py_file сработает?
  8. Так там основа не сам py макрос, а переделанеый fragcorrelationpanel.py Несущественная разница по выводу тоталхп По кол-ву ивентов - нагрузка пропорциональна, но существенна ли она - смотрите опытным путем Кол-во полей тоже оказывает влияние Хотя есть смутные сомнения: py-макросы из папки автоматом грузятся?
  9. Сори, как время будет, занят еще, на форум и то на 2 мин захожу Upd.Хотя имплементация цвета совершенно не такая, какую обсуждали, остались градиенты
  10. Что-то пропустил, я мало читал, с какой сборки? А, нашел, позавчера, ну тогда втопку
  11. Кстати, макросы на тоталхп и цвет по той самой формуле,что обсуждали, у меня готовые лежат, ждут поддержки импорта модулей в реализации py-макросов
  12. Привет Yes, for example: "bgColor": "0x000000", (background color) "alpha": 70, (alpha for field) "winChance": { "enabled": true, "updateEvent": "ON_VEHICLE_DESTROYED", "x": 230, "y": 2, "width": 50, "height": 20, "alpha": 70, "autoSize": "left", "bgColor": "0x000000", "shadow": { "distance": 1, "angle": 90, "alpha": 80, "blur": 5, "strength": 1.5 }, "currentFieldDefaultStyle": { "color": "0xF4EFE8", "size": 15 }, "format": "{{xvm-stat?{{l10n:Chance to win}}: {{chancesStatic}}{{chancesStatic? / |}}{{chancesLive}}}}" },
  13. Ну, или вернуть диспатчер в PP да, логами подтверждается, что в if (ud != data) в public static function update(playerId:Number, data:Object):Boolean ud и data будут равны всегда для dead, по вышеназванной причине Вот кусочек: Сейчас попробую
  14. as_xvm_onBattleStateChanged вызывается, потому что dead по факту изменяется на true, иначе GlobalEventDispatcher.dispatchEvent( { type: Events.E_PLAYER_DEAD, value: playerId } ); никогда бы не генерировалось, а оно генерируется, если allowSpottedStatus=false var updated:Boolean = BattleState.update(playerId, data); if (updated) { //Logger.add("updated: " + playerName); GlobalEventDispatcher.dispatchEvent(new EBattleStateChanged(playerId)); if (dead) { GlobalEventDispatcher.dispatchEvent( { type: Events.E_PLAYER_DEAD, value: playerId } ); } } Что-то или в BattleState.update или dead всегда True Да, точно
  15. Не совсем понял, выставить ему дефолтный "зашитый" True? А если if (dead) { GlobalEventDispatcher.dispatchEvent( { type: Events.E_PLAYER_DEAD, value: playerId } ); } выставить перед if (updated) Так: data["dead"] = dead; if (dead) { GlobalEventDispatcher.dispatchEvent( { type: Events.E_PLAYER_DEAD, value: playerId } ); } ... if (updated) Максимум 30 генераций за бой, spotted больше будет
  16. @sirmax, Я нашел, если "allowSpottedStatus": false, то не обновляется, так раньше не было (и если "allowHpInPanelsAndMinimap": false, частично тоже) В одном из коммитов был убран диспатчер ивента E_PLAYER_DEAD из PlayersPanel.as, а отсюда (BattleMain.as): ивент вроде не генерируется при вышеуказанных условиях
  17. Нет, не забыл) Где-то через недельку приступлю, времени нет Мне показалось, или в релизной версии 6.2.2 обновление полей сломалось? (смотрю дин.шанс)
  18. Имхо, подпись будет только загромождать интерфейс, нужность только дин.шанса - спорно, мне, например, интересен больше стат.шанс в сравнении с дин. Проще отключить по-умолчанию поле, оставив два макроса, а подпись - добавляется на усмотрение пользователя, если он хочет видеть только шанс одного типа
  19. @sirmax, Хм. А как вот с этим теперь адаптировать хп-макросы? """ XVM (c) www.modxvm.com 2013-2016 """ from macros import totalHp isInstanceCreated = False instanceTotalHp = None #print "starting m_total_hp" @xvm.export('m_total_hp', 'totalHP') def totalHP(value, *args, **kwargs): global isInstanceCreated global instanceTotalHp if not isInstanceCreated: instanceTotalHp = totalHp() isInstanceCreated = True #print "Instance created" if not instanceTotalHp.isInit: return if value == "ally": #print "m_total_hp output: ally color: " + str(instanceTotalHp.hpColors[0]) + " ally hp: " + str(instanceTotalHp.teams_totalhp[0]) + " / " + "enemy color: " + str(instanceTotalHp.hpColors[0]) + " enemy hp: " + str(instanceTotalHp.teams_totalhp[1]) return instanceTotalHp.teams_totalhp[0] if value == "enemy": return instanceTotalHp.teams_totalhp[1] if value == "c:ally": return instanceTotalHp.hpColors[0] if value == "c:enemy": return instanceTotalHp.hpColors[1] python_macro.py class IllegalChecker(ast.NodeVisitor): illegal_functions = ('__import__', 'eval', 'execfile') def __init__(self): super(IllegalChecker, self).__init__() self.errors = [] def visit_Exec(self, node): self.errors += 'Illegal statement "exec {}"'.format(node.body.id), def visit_Import(self, node): names = ', '.join(map(lambda alias: alias.name, node.names)) self.errors += 'Illegal statement "import {}"'.format(names), def visit_ImportFrom(self, node): names = ', '.join(map(lambda alias: alias.name, node.names)) self.errors += 'Illegal statement "from {} import {}"'.format(node.module, names), def visit_Name(self, node): if node.id in self.illegal_functions: self.errors += 'Illegal id call "{}"'.format(node.id), def visit_Call(self, node): if isinstance(node.func, ast.Attribute): return if node.func.id in self.illegal_functions: self.errors += 'Illegal function call "{}"'.format(node.func.id), xvm.log Illegal statement "from __future__ import division" Illegal statement "import traceback" Illegal statement "import BigWorld" Illegal statement "from Avatar import PlayerAvatar" Illegal statement "from gui.Scaleform.daapi.view.battle import score_panel" Illegal statement "from gui.Scaleform.daapi.view.battle.markers import MarkersManager" Illegal statement "from gui.battle_control import g_sessionProvider" Illegal statement "from gui.battle_control.battle_constants import FEEDBACK_EVENT_ID" Illegal statement "from xfw import *" Illegal statement "from xvm_main.python.constants import *" Illegal statement "from xvm_main.python.logger import *" Illegal statement "from xvm_main.python.xvm import Xvm" Illegal statement "from xvm_main.python import config"
×
×
  • Create New...