Ekspoint 2,122 #331640 Posted June 5, 2016 (edited) это всё конечно хорошо, но такой вопрос при очередном обновлении игры все py_macro отвалятся? и что будет с XVM если засунуть не рабочий скрипт? И кто будет обновлять если вдруг скрипты упадут? ведь в дефолт его всё равно макс не пустит. те функции которые я дал картошка мало вероятно будет менять (это те что связаны с дамагом), а если есть баг так просто удали ру файл и все а в дефолт код не пойдет, для макса он дерьмо @neLeax, а зачем ты убрал инфу о максимальном уроне противника? ведь если противник набил больше тебя то калибр ты уже не получишь, так что добавь если хочешь что бы инфа о калибре была более точной Edited June 5, 2016 by Ekspoint 1 Quote Share this post Link to post Short link Share on other sites
anatoly999 137 #331641 Posted June 5, 2016 @neLeax, а зачем ты убрал инфу о максимальном уроне противника? ведь если противник набил больше тебя то калибр ты уже не получишь, так что добавь если хочешь что бы инфа о калибре была более точнойТогда на скорую руку из кода убрал все лишнее, хотел оставить только свой урон. Получилось, что нужное отрезал. Спасибо, буду разбираться. Quote Share this post Link to post Short link Share on other sites
Kapany3uk 948 #331668 Posted June 5, 2016 Тогда на скорую руку из кода убрал все лишнее, хотел оставить только свой урон. Получилось, что нужное отрезал. Спасибо, буду разбираться. и нужно заняться оптимизацией: падение фпс примерно на 30-35 ед. Quote Share this post Link to post Short link Share on other sites
anatoly999 137 #331670 Posted June 5, 2016 (edited) и нужно заняться оптимизацией: падение фпс примерно на 30-35 ед.Ого, вот это реальная проблема. Я сейчас не играю, а на реплее не обращал внимания. Только вот я сам едва ли смогу оптимизировать расчеты, в питоне мало что понимаю. Уже подумываю нафиг выбросить этот основной калибр... По сути, не сильно то и важна данная информация. Или же можно не извращаться и просто в строку хит-лога вывести это значение, как ты и предлагал, минуя все эти сложные расчеты. Просто взяв готовое значение своего урона из хитлога. Edited June 5, 2016 by neLeax Quote Share this post Link to post Short link Share on other sites
Ekspoint 2,122 #331673 Posted June 5, 2016 Ого, вот это реальная проблема. Я сейчас не играю, а на реплее не обращал внимания. Только вот я сам едва ли смогу оптимизировать расчеты, в питоне мало что понимаю. Уже подумываю нафиг выбросить этот основной калибр... По сути, не сильно то и важна данная информация. Или же можно не извращаться и просто в строку хит-лога вывести это значение, как ты и предлагал, минуя все эти сложные расчеты. Просто взяв готовое значение своего урона из хитлога. возьми код с этого поста http://www.koreanrandom.com/forum/topic/31856-динамические-макросы-в-python/?p=330764 вот так как то from xvm_battle.python import fragCorrelationPanel as panel import BigWorld from Avatar import PlayerAvatar from Vehicle import Vehicle from gui.Scaleform.Battle import Battle from xfw import * class Battle_Info(object): def __init__(self): self.damage = 0 self.section = 20 self.max_hp = [0, 0] self.textBar = ["c", "b"] self.actual_arenaUniqueID = None battle_info = Battle_Info() @registerEvent(Battle, 'beforeDelete') def beforeDelete(self): battle_info.damage = 0 battle_info.max_hp = [0, 0] battle_info.actual_arenaUniqueID = None def IsLive(vehicleID): player = BigWorld.player() vehicles = player.arena.vehicles return vehicles[vehicleID]['isAlive'] if player is not None else None def IsFriendly(vehicleID): player = BigWorld.player() vehicles = player.arena.vehicles return vehicles[player.playerVehicleID]['team'] == vehicles[vehicleID]['team'] if player is not None else None def getVehicleHealth(vehicleId): player = BigWorld.player() if hasattr(BigWorld.entity(vehicleId), 'health'): return BigWorld.entity(vehicleId).health else: vehicle = player.arena.vehicles.get(vehicleId) if player is not None: return vehicle['vehicleType'].maxHealth @registerEvent(Vehicle, 'onEnterWorld') def vehicle_onEnterWorld(self, prereqs): self.healthOld = getVehicleHealth(self.id) def show_damage_shot(self, newHealth): damage = self.healthOld - newHealth self.healthOld = newHealth return damage @registerEvent(Vehicle, 'onHealthChanged') def onHealthChanged(self, newHealth, attackerID, attackReasonID): for vehicleID in BigWorld.entities.values(): if type(vehicleID) is Vehicle: if IsLive(vehicleID.id) and not IsFriendly(vehicleID.id): delts_helth = show_damage_shot(self, newHealth) battle_info.damage += delts_helth return battle_info.damage @xvm.export('nelx.total_hp', deterministic=False) def total_hp(team): arenaUniqueID = BigWorld.player().arenaUniqueID if battle_info.actual_arenaUniqueID != arenaUniqueID: battle_info.actual_arenaUniqueID = arenaUniqueID battle_info.max_hp[0] = panel.teams_totalhp[0] battle_info.max_hp[1] = panel.teams_totalhp[1] return panel.teams_totalhp[team] @xvm.export('nelx.total_hp.color', deterministic=False) def color(): return panel.total_hp_color @xvm.export('nelx.total_hp.sign', deterministic=False) def sign(): return '<' if panel.total_hp_sign == '<' else '>' if panel.total_hp_sign == '>' else panel.total_hp_sign @xvm.export('nelx.total_hp.healthBar', deterministic=False) def healthBar(team): bar = int(round( (panel.teams_totalhp[team] * battle_info.section) / float(max(battle_info.max_hp)) )) return '<font face="xvm"><b>' + battle_info.textBar[team] * bar + '</b></font>' @xvm.export('nelx.total_hp.healthBar_background', deterministic=True) def healthBar_background(team): return '<font face="xvm"><b>' + battle_info.textBar[team] * battle_info.section + '</b></font>' @xvm.export('nelx.total_hp.superiority', deterministic=False) def superiority(): al = panel.teams_totalhp[0] en = panel.teams_totalhp[1] max_hp_now = float( max(panel.teams_totalhp) ) superiority = int(round( abs((al - en) / max_hp_now) * 500. , 2 )) fill = '<font size="4" alpha="#00">' + (' ' * superiority ) + '</font>' indicator = '<b>^</b>' if en > al: indicator, fill = fill, indicator return indicator + fill @xvm.export('nelx.total_hp.superiority_text', deterministic=False) def superiority_text(): al = panel.teams_totalhp[0] en = panel.teams_totalhp[1] max_hp_now = float( max(panel.teams_totalhp) ) result = round( ((al - en) / max_hp_now) * 100. , 2) return "<font color='#%s'>%s%</font>" % (color(), result) @xvm.export('nelx.mainGun', deterministic=False) def mainGun(): battletype = BigWorld.player().arena.guiType if battletype != 1: return else: result = int(max(round(battle_info.max_hp[1] * 0.2), 1000)) - battle_info.damage if result <= 0: result = "<font face='xvm' color='#96FF00' size='21'>x</font>" return "<img src='img://gui/maps/icons/achievement/32x32/mainGun.png' width='32' height='32' align='middle' vspace='-9'>%s" % (result) @xvm.export('nelx.damagePercent', deterministic=False) def damagePercent(): if battle_info.damage == 0: result = 0 else: result = round (100. / battle_info.max_hp[1] * battle_info.damage , 1) return "%s% <img src='img://gui/maps/icons/vehParams/damageAvgPerMinute.png' width='24' height='24' align='middle' vspace='-4'>" % (result) 1 Quote Share this post Link to post Short link Share on other sites
BuSH 174 #331719 Posted June 6, 2016 нельзя, тогда уже это будет чит, да и механика игры не позволит тебе узнать больше чем твой радиус видимости При чем здесь механика игры? Речь шла о XMQP. Та и не думаю, что картоха это читом обзовёт. Quote Share this post Link to post Short link Share on other sites
7serafim7 49 #331795 Posted June 7, 2016 А как можно вывести маркеры техники для альтернативной панели счёта? Quote Share this post Link to post Short link Share on other sites
0kosmo 15 #332072 Posted June 8, 2016 Хей народ. Вроде пилили макросы для данных по среднему урону по танку в бою и достижения главный калибр. Сваяли? Если да - где брать. Quote Share this post Link to post Short link Share on other sites
sirmax 5,499 #332111 Posted June 9, 2016 @sirmax,призываю тебя Всемогущий! :) почитай наши мучения с дебаг панелью и подскажи всё таки как получить заветные данные .. оченно надо... и до кучи, таймер боя тоже расковырять бы и отконфигурировать досмерти)) Консолидируйте в одном письме описание задачи и текущее состояние, я посмотрю. это всё конечно хорошо, но такой вопрос при очередном обновлении игры все py_macro отвалятся? и что будет с XVM если засунуть не рабочий скрипт? И кто будет обновлять если вдруг скрипты упадут? ведь в дефолт его всё равно макс не пустит. я не против того, чтобы подобные целостные макросы пустить в дефолт. а в дефолт код не пойдет, для макса он дерьмо К макросам я не буду так придираться, как к основному коду, хотя, конечно, лучше его постепенно улучшить. 3 Quote Share this post Link to post Short link Share on other sites
Kapany3uk 948 #332159 Posted June 9, 2016 @sirmax, я правильно понимаю, что без импорта вида from xvm import total_hp (директория/файл) ру-файлы из кастомных подпапок работать не будут? и зачем импортировать все функции "исходника", когда для вывода отображения достаточно 'total_hp.text' (или не достаточно)? Quote Share this post Link to post Short link Share on other sites
sirmax 5,499 #332162 Posted June 9, 2016 @sirmax, я правильно понимаю, что без импорта вида from xvm import total_hp (директория/файл) ру-файлы из кастомных подпапок работать не будут? и зачем импортировать все функции "исходника", когда для вывода отображения достаточно 'total_hp.text' (или не достаточно)? Да, не будут. Достаточно только text, но вдруг кто-то у себя захочет по частям это вывести. Quote Share this post Link to post Short link Share on other sites
Kapany3uk 948 #332179 Posted June 9, 2016 (edited) вдруг кто-то у себя захочет по частям это вывести при импорте из кастомных папок (5761) 'не работает, ошибка: Non-ASCII character...' если в импортируемом файле есть # комментарии на русском: # ХП команд и/или присутствует символ ≠ выдает ошибку: 2016-06-09 18:19:27: [ERROR] Traceback (most recent call last): File "xvm_main/python_macro.py", line 128, in load_macros_lib File "xvm_main/python_macro.py", line 112, in execute ExecutionException: SyntaxError at file 'res_mods/configs/xvm/py_macro\custom.py' line 15: Non-ASCII character '\xd0' in file C:\Games\World_of_Tanks\res_mods\mods/../configs/xvm/py_macro\Kapany3uk\totalHP.py on line 5, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details и не работает после удаления кириллицы и "расширенных" символов из комментариев все работает... в обоих вариантах, в нерабочем с кириллицей и в рабочем без нее, хвм.лог полон однотипной ошибкой: 2016-06-09 18:29:10: [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 145, in get_function TypeError: 'NoneType' object is not iterable работающий вариант, без кириллицы xvm.log Edited June 9, 2016 by Kapany3uk Quote Share this post Link to post Short link Share on other sites
sirmax 5,499 #332183 Posted June 9, 2016 кодировка файла какая? Quote Share this post Link to post Short link Share on other sites
sergey spb 4 #332185 Posted June 9, 2016 Добрый день!Не подскажете как поменять цвет в показателе результативности (Отметки на орудии) т.е. при повышении процента зеленый при понижении красный.Сейчас стоит : font color='{{v.c_damageRating}}'При повышении процента цвет зеленый при понижении цвет красный (процент перед боем сравниваеться с процентом после боя и т.д.).Спасибо! Quote Share this post Link to post Short link Share on other sites
Kapany3uk 948 #332198 Posted June 9, 2016 (edited) кодировка файла какая? любопытно: до вопроса была такая же, как и у дефолтных ру-файлов: UTF-8 пересохранил в UTF-8 + BOM и ошибка non-ASCII "ушла", отображение заработало. другие ошибки остались xvm.log, сейчас попробую на свежем билде (пока все на 5761) upd ошибки - мой косяк: оставил в конфиге макрос {{py:mainGun}}, хотя из ру-файлов все касательно этого макроса удалил... увидел благодаря fix (+ "arg='{}'".format(arg)) в 5762 Edited June 9, 2016 by Kapany3uk Quote Share this post Link to post Short link Share on other sites
sirmax 5,499 #332203 Posted June 9, 2016 увидел благодаря fix (+ "arg='{}'".format(arg)) в 5762 да, для этого я его и добавил 1 Quote Share this post Link to post Short link Share on other sites
Slava7572 1,685 #332300 Posted June 10, 2016 Смотрю многое переделали в крайних ночниках,старые скрипты будут работать?Типа этого. Quote Share this post Link to post Short link Share on other sites
Ekspoint 2,122 #332301 Posted June 10, 2016 (edited) Смотрю многое переделали в крайних ночниках,старые скрипты будут работать?Типа этого.а че нет тоЯ же говорил что эти функции картошка не меняет Edited June 10, 2016 by Ekspoint Quote Share this post Link to post Short link Share on other sites
Slava7572 1,685 #332304 Posted June 10, 2016 а че нет то Я же говорил что эти функции картошка не меняет Ну я просто в скриптах ноль,а смотрю многое добавили,вот и решил узнать.Спасибо. Quote Share this post Link to post Short link Share on other sites
goodman 664 #332461 Posted June 10, 2016 Консолидируйте в одном письме описание задачи и текущее состояние, я посмотрю. я не понимаю, что нужно импортировать что бы получить fps ping lag из debug panelесли бы ты набросал тестовый код..текущее состояние = 0 Quote Share this post Link to post Short link Share on other sites