Jump to content
Korean Random
goodman

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

Recommended Posts

Передай её в percent_wins()   как строку и вставляй.

я пробовал вот так: 

def percent_wins(w,b,r,t):  # t = {{l10n:toWithSpaces}}
...
return '{}{}{}'.format(int(value),t,p)

выдает 

    (32, 61, 52.45901639344262,  до )
                                 ^
SyntaxError: invalid syntax

и чет как ни пробовал, никак не получается... Поможешь?

Edited by Kapany3uk

Share this post


Link to post

Short link
Share on other sites

А в xc что прописано? 

"format": "({{py:my_percent_wins({{v.wins}}, {{v.battles}}, {{v.winrate}}, {{l10n:toWithSpaces}})}}%)"

зы надо заключить макрос перевода в кавычки/скобки? какие если да?

Edited by Kapany3uk

Share this post


Link to post

Short link
Share on other sites
"format": "({{py:my_percent_wins({{v.wins}}, {{v.battles}}, {{v.winrate}}, {{l10n:toWithSpaces}})}}%)"

зы надо заключить макрос перевода в кавычки/скобки? какие если да?

 

Да, в одинарные кавычки. 

Share this post


Link to post

Short link
Share on other sites

Да, в одинарные кавычки. 

спасибо, все получилось ))

post-24956-0-00169200-1500727568.jpg

 

Вот теперь бы все тоже самое, только для аккаунта, в виде виджета, чтобы не лазить постоянно в достижения и можно было бы разместить в любом удобном месте на экране ))

Edited by Kapany3uk

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

Ааа, понятно. Посмотрю на досуге. 

попытался импортировать stats.py - выдало AttributeError: 'module' object has no attribute 'stat'

Share this post


Link to post

Short link
Share on other sites

Посмотри как в damageLog.py импортируется. Только там, по моему,  для боя статистика. 

Share this post


Link to post

Short link
Share on other sites

Посмотри как в damageLog.py импортируется. Только там, по моему,  для боя статистика. 

в ангаре на вкладке "достижения/техника" есть вся инфа, которую хотелось бы вынести "на первый план", но так и не смог отыскать в "mods\packages\xvm_**\python\*.ру" ничего похожего...

Share this post


Link to post

Short link
Share on other sites
в ангаре на вкладке "достижения/техника" есть вся инфа, которую хотелось бы вынести "на первый план"

 

Cписок доступных функций:

#####################################################################
# imports

from helpers import dependency
from skeletons.gui.game_control import IBootcampController
from skeletons.gui.shared import IItemsCache       

#####################################################################
# handlers

def hangar_info():
    itemsCache = dependency.instance(IItemsCache)
    if dependency.instance(IBootcampController).isInBootcamp():
        return
    else:
        for attr in dir(itemsCache.items.getAccountDossier().getRandomStats()):
            if attr.find('get') == 0:
                print attr

hangar_info()

 

Наименование доступных к выводу:

INFO: getAchievement
INFO: getAchievements
INFO: getArmorUsingEfficiency
INFO: getAvgDamage
INFO: getAvgDamageAssistedStun
INFO: getAvgDamageBlocked
INFO: getAvgDamageReceived
INFO: getAvgEnemiesSpotted
INFO: getAvgFrags
INFO: getAvgStunNumber
INFO: getAvgXP
INFO: getBattlesCount
INFO: getBattlesCountBefore8_8
INFO: getBattlesCountBefore9_0
INFO: getBattlesCountVer2
INFO: getBattlesCountVer3
INFO: getBattlesCountWithStun
INFO: getBattlesStats
INFO: getCapturePoints
INFO: getDamageAssistedEfficiency
INFO: getDamageAssistedRadio
INFO: getDamageAssistedStun
INFO: getDamageAssistedTrack
INFO: getDamageBlockedByArmor
INFO: getDamageDealt
INFO: getDamageEfficiency
INFO: getDamageReceived
INFO: getDeathsCount
INFO: getDrawsCount
INFO: getDroppedCapturePoints
INFO: getFrags8p
INFO: getFragsCount
INFO: getFragsEfficiency
INFO: getHeHits
INFO: getHeHitsReceived
INFO: getHitsCount
INFO: getHitsEfficiency
INFO: getLossesCount
INFO: getLossesEfficiency
INFO: getMarksOfMastery
INFO: getMaxDamage
INFO: getMaxDamageVehicle
INFO: getMaxFrags
INFO: getMaxFragsVehicle
INFO: getMaxXp
INFO: getMaxXpVehicle
INFO: getNearestAchievements
INFO: getNoDamageShotsReceived
INFO: getOriginalXP
INFO: getPierced
INFO: getPiercedReceived
INFO: getPotentialDamageReceived
INFO: getRecord
INFO: getShotsCount
INFO: getShotsReceived
INFO: getSignificantAchievements
INFO: getSpottedEnemiesCount
INFO: getStunNumber
INFO: getSurvivalEfficiency
INFO: getSurvivedBattlesCount
INFO: getTopAchievements
INFO: getVehicles
INFO: getWinAndSurvived
INFO: getWinsCount
INFO: getWinsEfficiency
INFO: getXP
INFO: getXpBefore8_8

 

Пример вызова нескольких параметров для дальнейшего использования:

 

'hangar_example.py'

#####################################################################
# imports

from gui.Scaleform.daapi.view.lobby.hangar.Hangar import Hangar
from helpers import dependency
from skeletons.gui.game_control import IBootcampController
from skeletons.gui.shared import IItemsCache
import math
from xfw import * 

#####################################################################
# handlers

@registerEvent(Hangar, '_Hangar__updateParams')
def Hangar__updateParams(self):
    if dependency.instance(IBootcampController).isInBootcamp():
        return
    as_event('ON_HANGAR_UP')

@xvm.export('winsCount', deterministic=False)
def winsCount():
    itemsCache = dependency.instance(IItemsCache)
    winsCount = itemsCache.items.getAccountDossier().getRandomStats().getWinsCount()
    return winsCount

@xvm.export('battlesCount', deterministic=False)
def battlesCount():
    itemsCache = dependency.instance(IItemsCache)
    battlesCount = itemsCache.items.getAccountDossier().getRandomStats().getBattlesCount()
    return battlesCount

@xvm.export('winsEfficiency', deterministic=False)
def winsEfficiency():
    itemsCache = dependency.instance(IItemsCache)
    winsEfficiency = itemsCache.items.getAccountDossier().getRandomStats().getWinsEfficiency() * 100
    return winsEfficiency

'widgetsTemplates.xc'

  "example_hangar_field": {
    "enabled": true,
    "layer": "top",
    "type": "extrafield",
    "formats": [
      {
        "updateEvent": "PY(ON_HANGAR_UPDATE_PARAMS)",
        "x": -415,
        "y": 10,
        "width": 150,
        "height": 53,
        "screenHAlign": "center",
        "screenVAlign": "top",
        "shadow": { "enabled": true, "distance": 0, "angle": 90, "color": "0x000000", "alpha": 100, "blur": 4, "strength": 2 },
        "textFormat": { "font": "$FieldFont", "size": 19, "color": "0xBCBCBC", "align": "center", "valign": "top" },
        "format": "{{py:winsCount}} {{py:battlesCount}} {{py:winsEfficiency}}"
      }
    ]
  }

 

Edited by night_dragon_on
  • Upvote 4

Share this post


Link to post

Short link
Share on other sites

@sirmax, можно как-нибудь подсмотреть формулу, по которой рассчитывается количество побед для достижения следующего процента побед в ангаре во вкладке "Достижения/Техника"

в общем-то не критично, но у меня получается разница (в 1 победу  :heh: )

post-24956-0-11091100-1500809391_thumb.jpg

да и хотелось бы повторить весь блок статистики из достижений (включая вн8, РЭ и т.п.), но вот формулу трудновато самому "с нуля" придумать ))

Share this post


Link to post

Short link
Share on other sites

@sirmax, можно как-нибудь подсмотреть формулу, по которой рассчитывается количество побед для достижения следующего процента побед в ангаре во вкладке "Достижения/Техника"

в общем-то не критично, но у меня получается разница (в 1 победу  :heh: )

attachicon.gifshot_046.jpg

да и хотелось бы повторить весь блок статистики из достижений (включая вн8, РЭ и т.п.), но вот формулу трудновато самому "с нуля" придумать ))

Может этот код поможет?Там исходники любезно оставил автор,принцип работы схожий.

П.С:опять же,тот же автор оставил исходник статистики ВН8,там формула есть...вроде)

Edited by Slava7572

Share this post


Link to post

Short link
Share on other sites

@sirmax, а может добавишь возможность использовать эти макросы и их окраску (отметил ** на скрине) для вывода такого виджета статистики игрока прямо в ангаре?

 

post-24956-0-07713200-1500817909_thumb.jpg

 

как вариант - пополнить список глобальных макросов {{my-***}} и добавить их работоспособность в ангаре...

 

 

Может этот код поможет?

ссылка? 

Edited by Kapany3uk

Share this post


Link to post

Short link
Share on other sites

 

ссылка?

Так в шапке,внизу гита,там исходники.А,тю,сорри,скопировал,но забыл забиндить))

Edited by Slava7572

Share this post


Link to post

Short link
Share on other sites

@ktulho, сессионную  статистику нет возможности замутить через ру- ?

Возможно, но у меня желание нет. На данный момент, вроде, в ru секторе популярны 3 мода, реализующий данный функционал.

Share this post


Link to post

Short link
Share on other sites

Возможно, но у меня желание нет. На данный момент, вроде, в ru секторе популярны 3 мода, реализующий данный функционал.

А было бы круто,минус сторонний мод.....А вообще сложно допустим адаптировать уже готовый код,но средствами ХВМ?К примеру вотстат,автор его давно забросил(спасибо огромное,что Андрей(Ekspoint) его поддерживает),но исходники оставил и не был против,если его будут поддерживать,в каком виде думаю значения не имеет,такое в ХВМ пользовалось бы популярностью не меньше,чем тот же демедж лог))

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