Slava7572 Posted June 22, 2016 Share Posted June 22, 2016 (edited) Только подкорректируй размер шрифта и тень на свой вкус в файле battleLabelsTemplates.xc. TeamHPv2_tank.zip Вот спасибо,ты лучший)))) П.С:прогнал на репе,чуть уменьшил,все работает отлично(правда репа была без приемущества врагов).Но есть одна просьба,не сочти за наглость,можно дула наоборот развернуть,чтоб смотрело в сторону приемущества,сейчас во внутрь смотрит,на врага,что как то не логично))Просто коды поменять местами. Edited June 22, 2016 by Slava7572 @ Quote Link to comment Short link Share on other sites More sharing options...
anatoly999 Posted June 22, 2016 Share Posted June 22, 2016 (edited) Но есть одна просьба,не сочти за наглость,можно дула наоборот развернуть,чтоб смотрело в сторону приемущества,сейчас во внутрь смотрит,на врага,что как то не логично))Просто коды поменять местами. Так в *.py файле в текстовом редакторе поменяй символы местами. Это же не *.pyc файл, его не нужно декомпилировать. 138 строка: indicator = "'" if en > al: indicator = "*" Замени на: indicator = "*" if en > al: indicator = "'" Edited June 22, 2016 by neLeax 1 @ Quote Link to comment Short link Share on other sites More sharing options...
ktulho Posted June 22, 2016 Share Posted June 22, 2016 практически на всех танках пушка самого высокого уровня - топовая. Хотя есть исключения, какие нибудь фугасные танки. На некоторых танках несколько орудий одинакового уровня. Хотелось бы, чтобы топовой принималась пушка, идущая самой правой в дереве развития. Но это вряд ли возможно. Тогда да, наверное единственный вариант принимать за топ самый высокий уровень орудия танка. А если пойти дальше, можно будет сделать таблицу исключений для отдельных машин. Кроме параметра 'level', есть еще параметр 'unlocks'. Если он пустой значит это последний модуль в ветке, если не пустой значит что-то есть. Сравнивая этот параметр, можно уточнить результат сравнения по уровню. Например ПТ "WAFFENTRÄGER AUF PZ. IV" имеет 4 орудия десятого уровня, но 'unlocks' будет пустой скорее всего только у одного. У второго топового орудия значение параметра 'unlocks' ,ИМХО, будет равно [1]. Я думаю, 1 означает следующий танк, а другое значение - следующий модуль. @ Quote Link to comment Short link Share on other sites More sharing options...
Slava7572 Posted June 22, 2016 Share Posted June 22, 2016 (edited) Так в *.py файле в текстовом редакторе поменяй символы местами. Это же не *.pyc файл, его не нужно декомпилировать. 138 строка: indicator = "'" if en > al: indicator = "*" Замени на: indicator = "*" if en > al: indicator = "'" Никогда эти файлы не открывал,а зря.Век живи,век учись)))Спасибо огромное. ________________________________ Теперь как хотел,я бы сказал идеально,на мой вкус само собой. Edited June 23, 2016 by Slava7572 @ Quote Link to comment Short link Share on other sites More sharing options...
0kosmo Posted June 22, 2016 Share Posted June 22, 2016 Только подкорректируй размер шрифта и тень на свой вкус в файле battleLabelsTemplates.xc. TeamHPv2_tank.zip Хочу использовать только основной калибр (py:nelx.mainGun()). Но, насколько понимаю, без использования totalHPally и totalHPenemy не происходит инициализация max_hp[1]. Где бы и как это проинициализировать? @ Quote Link to comment Short link Share on other sites More sharing options...
anatoly999 Posted June 22, 2016 Share Posted June 22, 2016 Кроме параметра 'level', есть еще параметр 'unlocks'. Если он пустой значит это последний модуль в ветке, если не пустой значит что-то есть. Сравнивая этот параметр, можно уточнить результат сравнения по уровню. Например ПТ "WAFFENTRÄGER AUF PZ. IV" имеет 4 орудия десятого уровня, но 'unlocks' будет пустой скорее всего только у одного. У второго топового орудия значение параметра 'unlocks' ,ИМХО, будет равно [1]. Я думаю, 1 означает следующий танк, а другое значение - следующий модуль.Проверил на реплее. unlocks что-то другое показывает. К примеру у стокового ИСа пусто, у топовой Т-43 - 6, у топового Т29 - пусто, у топовой СУ-100 - 7. У одного танка вообще два значения - 5 и 6. @ Quote Link to comment Short link Share on other sites More sharing options...
ktulho Posted June 22, 2016 Share Posted June 22, 2016 unlock чего? Модулей? Два значения это по идее два модуля (танка) идут дальше. @ Quote Link to comment Short link Share on other sites More sharing options...
anatoly999 Posted June 22, 2016 Share Posted June 22, 2016 Хочу использовать только основной калибр (py:nelx.mainGun()). Но, насколько понимаю, без использования totalHPally и totalHPenemy не происходит инициализация max_hp[1]. Где бы и как это проинициализировать? По идее нужно эту часть скопировать в def mainGun(). global actual_arenaUniqueID, max_hp arenaUniqueID = BigWorld.player().arenaUniqueID if actual_arenaUniqueID != arenaUniqueID: actual_arenaUniqueID = arenaUniqueID max_hp[0] = panel.teams_totalhp[0] max_hp[1] = panel.teams_totalhp[1] Тоесть должно получиться так: # Расчет урона до получения медали "Основной Калибр". @xvm.export('nelx.mainGun', deterministic=False) def mainGun(): global actual_arenaUniqueID, max_hp arenaUniqueID = BigWorld.player().arenaUniqueID if actual_arenaUniqueID != arenaUniqueID: actual_arenaUniqueID = arenaUniqueID max_hp[0] = panel.teams_totalhp[0] max_hp[1] = panel.teams_totalhp[1] myDamage = damage() battletype = BigWorld.player().arena.guiType if battletype != 1: return else: result = int(max(round(max_hp[1] * 0.2), 1000)) - myDamage 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) unlock чего? Модулей? Два значения это по идее два модуля (танка) идут дальше. Я вот так написал: typeDescriptor.gun['unlocks'] @ Quote Link to comment Short link Share on other sites More sharing options...
ktulho Posted June 22, 2016 Share Posted June 22, 2016 (edited) @neLeax, надо проверять, если для орудия, так: typeDescriptor().gun['unlock'] Аа, только для своих танков проверяли? стокового ИСа пусто , а пушка у него какая стоит? у топового Т29 - пусто , потому что, после этого орудия нет других модулей и танков. у топовой Т-43 - 6, у топовой СУ-100 - 7 , после топовых орудий идут танки, значит с 1 я не угадал. Надо будет еще подумать, что означают эти цифры. Edited June 22, 2016 by ktulho @ Quote Link to comment Short link Share on other sites More sharing options...
anatoly999 Posted June 22, 2016 Share Posted June 22, 2016 (edited) @neLeax а пушка у него какая стоит? 85 мм Д-5Т-85БМ она последняя в своей ветке. Тогда все правильно, что пусто. Может тогда нужно комбинировано на level и unlocks проверять Аа, только для своих танков проверяли?Да, у своих смотрю. Если у Т-54 стоит 100 мм Д-10Т2С, которая идет последней (там две пушки 9 лвл) то выдает - 6 За сегодня устал, что-то не могу сообразить, что эти числа значат. По основной массе танков если unlocks пусто, то пушка топовая. Edited June 22, 2016 by neLeax @ Quote Link to comment Short link Share on other sites More sharing options...
ktulho Posted June 22, 2016 Share Posted June 22, 2016 (edited) Если у Т-54 стоит 100 мм Д-10Т2С, которая идет последней (там две пушки 9 лвл) то выдает - 6 , за ней же Об.140 идет. У одного танка вообще два значения - 5 и 6. , интересно, а что шло за этим орудием. Edited June 22, 2016 by ktulho @ Quote Link to comment Short link Share on other sites More sharing options...
anatoly999 Posted June 22, 2016 Share Posted June 22, 2016 , за ней же Об.140 идет.Точно. Что-то туплю. , интересно, а что шло за этим орудием.Это Pz.Kpfw. IV Ausf. H с пушкой 7,5 cm Kw.K. 40 L/48. Все верно, за ней еще 2 модуля. @ Quote Link to comment Short link Share on other sites More sharing options...
ktulho Posted June 22, 2016 Share Posted June 22, 2016 (edited) Может 6 - СТ, 7 - ПТ, 1 - ЛТ, 5 - башня, 8 - орудие? Edited June 22, 2016 by ktulho @ Quote Link to comment Short link Share on other sites More sharing options...
anatoly999 Posted June 22, 2016 Share Posted June 22, 2016 (edited) Может 6 - СТ, 7 - ПТ, 1 - ЛТ, 5 - башня, 8 - орудие?Да, получается так:) 5 - арта На Т21 с пушкой 76 mm Gun M1A2 почему-то выдает 7 Edited June 22, 2016 by neLeax @ Quote Link to comment Short link Share on other sites More sharing options...
ktulho Posted June 22, 2016 Share Posted June 22, 2016 Да, получается так:) 5 - арта Что-то не сходится: Это Pz.Kpfw. IV Ausf. H с пушкой 7,5 cm Kw.K. 40 L/48. Все верно, за ней еще 2 модуля. У одного танка вообще два значения - 5 и 6. @ Quote Link to comment Short link Share on other sites More sharing options...
anatoly999 Posted June 22, 2016 Share Posted June 22, 2016 (edited) И на Chi-Ri с пушкой 7.5 cm Autoloading Tank Gun Type 5 тоже 7 выдает, хотя за ним СТ идет Да, действительно что-то не сходится. На КВ-3 с 107 мм ЗиС-6 выдает 8, 9. После орудия идет башня и ТТ На тигре с топовым стволом тоже 7 выдает, за ним ТТ идет. На КВ-3 с 122 мм Д-2-5Т вообще 10 пишет Edited June 22, 2016 by neLeax @ Quote Link to comment Short link Share on other sites More sharing options...
ktulho Posted June 22, 2016 Share Posted June 22, 2016 И на Chi-Ri с пушкой 7.5 cm Autoloading Tank Gun Type 5 тоже 7 выдает, хотя за ним СТ идет Да, действительно что-то не сходится. На КВ-3 с 107 мм ЗиС-6 выдает 8, 9. После орудия идет башня и ТТ . Эти цифры показывают количество чего-то. Определить что идет за модулем можно, завтра попробую набросать функцию. 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Kapany3uk Posted June 23, 2016 Share Posted June 23, 2016 По идее нужно эту часть скопировать в def mainGun(). попробовал калибр из твоей панели - все замечательно, но наносимый урон, расчитанный в ру-файле, не совпадает с фактическим уроном, отраженным в хитлоге хвм попробовал код из поста @Ekspoint - так там мало того, что считает весь свой урон, там еще и учитывается весь урон команды союзников :)) 'пруф' два скрина: до выстрела (уничтожения) и после. - в хитлоге появилась запись (+720 хп), в "основном калибре" нет скрины с того же реплея, но с кодом @Ekspoint - как видно, еще до этого момента цифра основного калибра сильно ниже правильной - здесь 720 хп засчитано и в хитлоге и в расчете основного калибра (еще бы союзников не считал бы) Может допилите "основной калибр" для ру-макросов, чтобы считало как надо?! @ Quote Link to comment Short link Share on other sites More sharing options...
Ekspoint Posted June 23, 2016 Share Posted June 23, 2016 (edited) а так 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.enemy_hp = {} 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.enemy_hp.clear() 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(): for vehicleID in BigWorld.entities.values(): if type(vehicleID) is Vehicle: if IsLive(vehicleID.id) and not IsFriendly(vehicleID.id): battle_info.enemy_hp[vehicleID.id] = vehicleID.health def New_onEnterWorld(self, vehicle): Old_onEnterWorld(self, vehicle) getVehicleHealth() Old_onEnterWorld = PlayerAvatar.vehicle_onEnterWorld PlayerAvatar.vehicle_onEnterWorld = New_onEnterWorld @registerEvent(Vehicle, 'onHealthChanged') def onHealthChanged(self, newHealth, attackerID, attackReasonID): if self.id in battle_info.enemy_hp.keys(): if attackerID == BigWorld.player().playerVehicleID: battle_info.damage += battle_info.enemy_hp[self.id] - newHealth battle_info.enemy_hp[self.id] = newHealth getVehicleHealth() 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) Edited June 23, 2016 by Ekspoint 3 @ Quote Link to comment Short link Share on other sites More sharing options...
ktulho Posted June 23, 2016 Share Posted June 23, 2016 (edited) Можно попробовать вытянуть {{dmg-total}} из хитлога. , это работает, хотя надо по тестировать, лучше на пулеметах. Edited June 23, 2016 by ktulho @ 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.