Jump to content
Korean Random
goodman

Динамические макросы в Python

Recommended Posts

нет, дольше твоей видимости картошка не передает инфу, а для арты это только в арт режиме, вроде

вроде был мод который для танков арт режим показывал. интересно это сработает как для арты.

Share this post


Link to post

Short link
Share on other sites
post-31662-0-35687800-1469228865_thumb.png

 

На основе http://www.koreanrandom.com/forum/topic/31856-%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5-%D0%BC%D0%B0%D0%BA%D1%80%D0%BE%D1%81%D1%8B-%D0%B2-python/page-15?do=findComment&comment=334042 от neLeax с доработками и информацией от Ekspoint http://www.koreanrandom.com/forum/topic/31856-%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5-%D0%BC%D0%B0%D0%BA%D1%80%D0%BE%D1%81%D1%8B-%D0%B2-python/page-16?do=findComment&comment=334081 и http://www.koreanrandom.com/forum/topic/32843-%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C-%D1%81%D1%80%D0%B5%D0%B4%D0%BD%D0%B8%D0%B9-%D0%B4%D0%B0%D0%BC%D0%B0%D0%B3-%D0%BF%D0%BE-%D1%82%D0%B0%D0%BD%D0%BA%D1%83/?do=findComment&comment=337729 плюс с букварем по питону сваял информацию по главному калибру и среднему урону.

 

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

 

Стандартные ограничения - блайнды и попадания за пределами круга отрисовки не учитываются. Если кто-то надомажит больше вас - это не отслеживается. Ну и, прямое попадание по сокоманднику (ведущее к не получению медали) - не отслеживается.

 

upd. 2016-08-13  устранение ошибки при выборе нового танка (не имеющего значения среднего урона)

mainGun_avgDmg_2016-08-13.zip

Edited by 0kosmo
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

attachicon.gifmG_aD.PNG

 

На основе http://www.koreanrandom.com/forum/topic/31856-%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5-%D0%BC%D0%B0%D0%BA%D1%80%D0%BE%D1%81%D1%8B-%D0%B2-python/page-15?do=findComment&comment=334042 от neLeax с доработками и информацией от Ekspoint http://www.koreanrandom.com/forum/topic/31856-%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5-%D0%BC%D0%B0%D0%BA%D1%80%D0%BE%D1%81%D1%8B-%D0%B2-python/page-16?do=findComment&comment=334081 и http://www.koreanrandom.com/forum/topic/32843-%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C-%D1%81%D1%80%D0%B5%D0%B4%D0%BD%D0%B8%D0%B9-%D0%B4%D0%B0%D0%BC%D0%B0%D0%B3-%D0%BF%D0%BE-%D1%82%D0%B0%D0%BD%D0%BA%D1%83/?do=findComment&comment=337729 плюс с букварем по питону сваял информацию по главному калибру и среднему урону.

 

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

 

Стандартные ограничения - блайнды и попадания за пределами круга отрисовки не учитываются. Если кто-то надомажит больше вас - это не отслеживается. Ну и, прямое попадание по сокоманднику (ведущее к не получению медали) - не отслеживается.

 

attachicon.gifmainGun_avgDmg.zip

self.avgDmg = None не None, а 0
в beforeDelete battle_info.avgDmg = 0

Share this post


Link to post

Short link
Share on other sites

Кстати, а не включить ли нам одну из этих панелек в дефолт?

  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

Универсальный скрипт бы в дефолт поддерживаемый командой xvm что бы из него можно было соорудить любую из этих панелей

Share this post


Link to post

Short link
Share on other sites
self.avgDmg = None не None, а 0
в beforeDelete battle_info.avgDmg = 0

 

Тогда на реплеях по среднму дамагу получается ерунда. Картинка по самому началу боя.

post-31662-0-64132400-1469269624_thumb.jpg

Share this post


Link to post

Short link
Share on other sites

Тогда на реплеях по среднму дамагу получается ерунда. Картинка по самому началу боя.

сделай проверку на реплей

import BattleReplay

def is_replay_playing():
    return BattleReplay.g_replayCtrl.isPlaying
   
# Расчет урона до достижения среднего урона по текущей технике.
@xvm.export('mainGun_avgDmg.avgDamage', deterministic=False)
def avgDamage():
    battletype = BigWorld.player().arena.guiType
    if battletype != 1:
        return
    else:
        if battle_info.avgDmg is None:
            return
        if is_replay_playing():
            result = 0
        else:
            differenceDamageAvgDmg = battle_info.avgDmg - battle_info.damage
            if differenceDamageAvgDmg > 0:
                result = 'Средний урон: ' + str(differenceDamageAvgDmg)
            else:
                result = "<font color='#60FF00'> Средний урон: +" + str(abs(differenceDamageAvgDmg))+ "</font>"
    return result

Share this post


Link to post

Short link
Share on other sites

 

сделай проверку на реплей

import BattleReplay

def is_replay_playing():
    return BattleReplay.g_replayCtrl.isPlaying
   
# Расчет урона до достижения среднего урона по текущей технике.
@xvm.export('mainGun_avgDmg.avgDamage', deterministic=False)
def avgDamage():
    battletype = BigWorld.player().arena.guiType
    if battletype != 1:
        return
    else:
        if battle_info.avgDmg is None:
            return
        if is_replay_playing():
            result = 0
        else:
            differenceDamageAvgDmg = battle_info.avgDmg - battle_info.damage
            if differenceDamageAvgDmg > 0:
                result = 'Средний урон: ' + str(differenceDamageAvgDmg)
            else:
                result = "<font color='#60FF00'> Средний урон: +" + str(abs(differenceDamageAvgDmg))+ "</font>"
    return result

 

Мой вариант самый что ни есть рабочий. "Средний дамаг" показывает в начале боя сколько необходимо набить для достижения среднего дамага по технике. По мере нанесения урона показывается разница - сколько необходимо набить до достижения среднего дамага. Если данные по среднему дамагу получить не удается - смысла в этой информации совершенно нет. При проигрывании реплея такой информации полчить нельзя (вроде как). И это логично - какой средний дамаг показывать, в текущее время или в тот момент когда происходил бой? Между этими двумя событиями могут быть - вывод танка из стока, и различные нерфы и апы техники. Поэтому умышленно присваивать значение среднему дамагу ноль - это не корректно. Нет данных -> self.avgDmg=None -> Информация не выводится.

 

По поводу 

beforeDelete battle_info.avgDmg = 0

 

тоже некорректная работа. По факту New_onEnterWorld() выполняется раньше beforeDelete(), поэтому всегда получаем battle_info.avgDmg = 0 или None (то есть не корректное значение). 

Edited by 0kosmo

Share this post


Link to post

Short link
Share on other sites

Ребят,а ХП тим еще не починили?Я попробовал поставить панель neLeax на репе,смещение и масштаб другой,но вроде считает.

Share this post


Link to post

Short link
Share on other sites

Приведу пример для маркера. Выведем короткое название танка в полоске ХП. Пример хоть бесполезный, но думаю наглядный.

В файле markersAliveNormal.xc:

"format": "{{hp}} / {{hp-max}} {{py:xvm.myInfoPanel.shortNameTank('{{name}}')}}"
В файле xvm.py:

from xvm import myInfoPanel

@xvm.export('xvm.myInfoPanel.shortNameTank', deterministic=False)
def myInfoPanel_shortNameTank(userName):
    return myInfoPanel.shortNameTank(userName)
В файле myInfoPanel.py, находящемся по пути \py_macro\xvm\:

import BigWorld

# получаем ID танка игрока, поле которого сейчас обновляется
def getVehicleID(userName):
    vehicles = BigWorld.player().arena.vehicles
    for vehicleID in vehicles:
        vehicle = vehicles.get(vehicleID)
        if userName == vehicle['name']:
            return vehicleID
    return None

# получаем танк со всеми потрохами
def typeDescriptorVehID(userName):
    vehicle = BigWorld.entity(getVehicleID(userName))
    return None if not vehicle else vehicle.typeDescriptor

# короткое название теники
def shortNameTank(userName):
    typeDescriptor = typeDescriptorVehID(userName)
    return '' if not typeDescriptor else typeDescriptor.type.shortUserString
Результат:

 

После патча поломался данный метод.

Получиться его оживить?

Edited by neLeax

Share this post


Link to post

Short link
Share on other sites

После патча поломался данный метод.

Получиться его оживить?

а что сломано?

Share this post


Link to post

Short link
Share on other sites

а что сломано?

Просто не выводится инфа о танке в маркерах. На предыдущем патче работало.

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 где-то что-то писал про py макросы в маркерах. Надо поискать или спросить у него.

Share this post


Link to post

Short link
Share on other sites

После патча поломался данный метод.

Получиться его оживить?

Если получится обновить,выложишь сюда...ну или куда нибудь?Буду признателен)))

ксати,пробовал ставить старый скрипт,сильно съехал влево,масштабирование было чуть меньше обычного и не окрашивались ромбики.Счет был,но т.к. панель съехала,видна была только разница ХП.

Share this post


Link to post

Short link
Share on other sites

 

 

ксати,пробовал ставить старый скрипт,сильно съехал влево,масштабирование было чуть меньше обычного
, у себя выравнял так:
    "totalHP": {
      "enabled": true,
      "updateEvent": "ON_PLAYERS_HP_CHANGED",
      "x": 0,
      "y": 30,
      "width": 200,
      "height": 40,
      "screenHAlign": "center",
      "shadow": { "distance": 1, "angle": 90, "alpha": 80, "blur": 2, "strength": 1.5 },
      "textFormat": { "align": "center", "size": 16 },
      "format": "{{py:xvm.my_total_hp.text()}}"
    },   

Share this post


Link to post

Short link
Share on other sites

 

 

сам не смотрел, но вроде Sirmax где-то что-то писал про py макросы в маркерах. Надо поискать или спросить у него.
писал, что НЕ будут ру-макросы работать в маркерах "из-за технических ограничений"
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

, у себя выравнял так:

    "totalHP": {
      "enabled": true,
      "updateEvent": "ON_PLAYERS_HP_CHANGED",
      "x": 0,
      "y": 30,
      "width": 200,
      "height": 40,
      "screenHAlign": "center",
      "shadow": { "distance": 1, "angle": 90, "alpha": 80, "blur": 2, "strength": 1.5 },
      "textFormat": { "align": "center", "size": 16 },
      "format": "{{py:xvm.my_total_hp.text()}}"
    },   

Да с выравниваем думаю не будет проблем,с остальным как,цвета нет и масштаб в целом уменшился.Я так понимаю из за того,что теперь "autoSize" нет?Цвет уже в .ру надо смотреть,а я в нем ноль))

Share this post


Link to post

Short link
Share on other sites

@Slava7572, если нужна помощь, то приложите папку py_macro, файл battleLabelsTemplates.xc, и желательно скриншот по которому сможете объяснить чего хотите добиться. 

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