Jump to content
Korean Random

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


Recommended Posts

, да ты даже не заметишь разницы), Если сделаешь макросы статистики, то я добавлю макрос "резкого" перехода.)

искуситель ))

Link to comment
Short link
Share on other sites

@ktulho, Это возможно сделать? А то нормально-работающего нет. То запрещенный , то из модпака со всякой фигней в анаре. 

Сделать можно, но как показывает практика, такое лучше через флэш делать.

Link to comment
Short link
Share on other sites

 

 

Свои флешки можно подключать через ру-?
, имел ввиду, что через py_macro не очень будет выглядеть. Лучше делать отдельным модом с использованием флэш. 
Link to comment
Short link
Share on other sites

, имел ввиду, что через py_macro не очень будет выглядеть. Лучше делать отдельным модом с использованием флэш. 

я понял. я имею ввиду вообще можно флеш запускать? анимацию какую нибудь например.

Link to comment
Short link
Share on other sites

 

 

А то нормально-работающего нет. То запрещенный , то из модпака со всякой фигней в анаре.

Почему нет? Чем от протанки (отдельный от модпака) не устраивает?

Link to comment
Short link
Share on other sites

Почему нет? Чем от протанки (отдельный от модпака) не устраивает?

без модпака он нормально не работает. и ещё куча всякой ср..ни лишней.

Link to comment
Short link
Share on other sites

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

 

attachicon.gifshot_051.jpg

 

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

 

 

ссылка? 

Давай я сделаю макросы статистики, а ты виджет со статой в дефолтный конфиг? :)

UPD: У меня готово, добавил макросы {{mystat.*}} со статистикой текущего игрока. В виджетах нужно использовать событие обновления ON_MY_STAT_LOADED, так как данные грузятся асинхронно.

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

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

https://bitbucket.org/XVM/xvm/src/b9e983af816bf2b9199a50fed930363dcb604d8d/src/xvm/xvm_lobbyprofile_ui/com/xvm/lobby/ui/profile/components/TechniqueStatisticTab.as?at=default&fileviewer=file-view-default#TechniqueStatisticTab.as-232

  • Upvote 4
Link to comment
Short link
Share on other sites

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

на сколько я понимаю, в строке

value = round( ( 100 * w - p * b ) / ( p - 100 ) )

нужно заменить round на math.ceil и всё будет правильно.

так как округлять нужно только вверх для получения правильного кол-ва побед.

 

а вообще я хотел попросить поделиться готовым py-файлом

ато я питон не знаю и что там нужно импортить и т.д. не в курсе :(

Edited by CrazyST
Link to comment
Short link
Share on other sites

 

 

нужно заменить round на math.ceil и всё будет правильно.
я пробовал, почему-то не взлетело... остановился на 
value = int( ( 100 * w - p * b ) / ( p - 100 ) ) + 1 

Давай я сделаю макросы статистики, а ты виджет со статой в дефолтный конфиг? :)

ок, сделаю.

 

вопрос: как-нибудь можно привязаться по "у" к верхней границе карусели? просто с местоположением виджета пока не определился, как вариант слева внизу, под экипажем и над каруселью, но тут встает проблема, что карусели у всех разные (1/2/3/4 строки, нормал/смолл) и надо как-то это все синхронизировать...

'как-то так'

post-24956-0-00427000-1501795477_thumb.jpg

 

ps. не смог покрасить цифры, макросы вида {{c:mystat.*}} не работают... будет?

 

pps. пару раз "споткнулся" об макросы {{mystat.e}} и {{mystat.xeff}} (рейтинг вроде один, а имена макросов нет )), до макросов {{mystat.b}} и {{mystat.w}} еще не дошел, но думаю не раз "спотыкнуся"в будущем :))

 

надеюсь, что имена макросов - это пока рабочий вариант...

Link to comment
Short link
Share on other sites

 

 

У меня готово, добавил макросы {{mystat.*}} со статистикой текущего игрока.
на сколько я понял это данные с сервера XVM, а значит многие из них не актуальны. особенно {{mystat.b}} {{mystat.w}} и т.д. а значит на их основании нельзя посчитать корректное значение "осталось побед до". можно в ангаре как-то получить текущее количество боёв и побед? {{battles}} и {{wins}} в ангаре не работают :(
Link to comment
Short link
Share on other sites

мда. неправильно я сформулировал вопрос :).

читал я этот пост. вот только ничего у меня не получилось.

теперь бы поменять {{mystat.*}} на данные из ангара.

Edited by CrazyST
Link to comment
Short link
Share on other sites

Сделаю позже

жду с нетерпением...

 

вопрос правда пока снят

from helpers import dependency
from skeletons.gui.shared import IItemsCache
import math
@xvm.export('unnormalman.winsneeded', deterministic=False)
def winsneeded(t):
        itemsCache = dependency.instance(IItemsCache)
        w=itemsCache.items.getAccountDossier().getRandomStats().getWinsCount()
        b=itemsCache.items.getAccountDossier().getRandomStats().getBattlesCount()
        wr=itemsCache.items.getAccountDossier().getRandomStats().getWinsEfficiency() * 100
        wrn = round(wr,2) + 0.005
        wn = math.ceil( ( 100 * w - wrn * b ) / ( wrn - 100 ) )
        return '{}{}{:0.2f}%'.format(int(wn),t,round(wrn,2))

огромное спасибо @night_dragon_on, но от замены на встроенные макросы я не откажусь

Edited by CrazyST
Link to comment
Short link
Share on other sites

огромное спасибо @night_dragon_on

 

Можно еще свое событие на обновление данных сделать, чтобы не обновлять поле каждую секунду эвентом "ON_EVERY_SECOND"

 

'hangar.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_UPDATE_PARAMS')

@xvm.export('battlesToWins', deterministic=False)
def battlesToWins(header):
    itemsCache = dependency.instance(IItemsCache)
    winsCount = itemsCache.items.getAccountDossier().getRandomStats().getWinsCount()
    battlesCount = itemsCache.items.getAccountDossier().getRandomStats().getBattlesCount()
    winsEfficiency = itemsCache.items.getAccountDossier().getRandomStats().getWinsEfficiency() * 100
    wrn = (round(winsEfficiency * 100) + 0.5) / 100
    wn = math.ceil((100 * winsCount - wrn * battlesCount) / (wrn - 100))
    return '( {}{}{:0.2f}% )'.format(int(wn),header,(round(wrn * 100)) / 100)

'widgetsTemplates.xc'

  "battlesToWins": {
    "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:battlesToWins('{{l10n:toWithSpaces}}')}}"
      }
    ]
  }

Edited by night_dragon_on
  • Upvote 1
Link to comment
Short link
Share on other sites

Можно еще свое событие на обновление данных сделать, чтобы не обновлять поле каждую секунду эвентом "ON_EVERY_SECOND"

до этого я точно еще не дорос ))) но и ON_EVERY_SECOND не использую.

обновляю по PY(ON_STATISTICS) из модуля от @ktulho

это событие мне более чем подходит

 

UPD: спасибо за hangar.py. перехожу на него ))

Edited by CrazyST
Link to comment
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...