Jump to content
Korean Random
goodman

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

Recommended Posts

@ktulho, если будет возможность,  сделай пожалуйста такой макрос:

{{py:xvm.score_panel.sign}}        // возвращает '<', '>' или '=', в зависимости от отношения фрагов союзников и противников

Share this post


Link to post

Short link
Share on other sites

 

@ktulho, если будет возможность,  сделай пожалуйста такой макрос:

{{py:xvm.score_panel.sign}}        // возвращает '<', '>' или '=', в зависимости от отношения фрагов союзников и противников

score_panel.rar заменить в py_macro score_panel.py аналогичным файлом из архива и будет дополнительный макрос

{{py:score_panel.sign}}
Edited by CrazyST
  • Upvote 1
  • Downvote 1

Share this post


Link to post

Short link
Share on other sites

@CrazyST, работает. Осталось в дефолт запулить и в док дописать.

Edited by H_E_K_P_O_M_A_H_T_

Share this post


Link to post

Short link
Share on other sites

Единственное пожелание 

 '='  ==>  '='
    return '>' if panel.ally_frags > panel.enemy_frags else '<' if panel.ally_frags < panel.enemy_frags else '='

Share this post


Link to post

Short link
Share on other sites

Единственное пожелание

ну так и закинул бы сразу )))

score_panel.rar

пусть только кто-то теперь pull request сделает.

Share this post


Link to post

Short link
Share on other sites

ну так и закинул бы сразу )))

 

не - так не честно получится, моя тока просить :)  У Сани нет возможности запулить - в отпуске он.

Share this post


Link to post

Short link
Share on other sites

сделай пожалуйста такой макрос:

 

Добавил соответствующий макрос.

 

Остальные макросы для панели счета подверглись смене наименования (новые смотрим в доках или сразу в пулле).

Учитывайте изменения при последующей актуализации вашего конфига.

 

Изначально когда добавлял код в качестве примера в дефолт названия выбирал наобум можно сказать. Сейчас сделал сокращение в названии макросов, смотрится лучше при записи в конфигурационном файле и сама строка с кодом не растянется на пол экрана.

{{py:score_panel.enemy_frags_inverse}} 

Против:

{{py:sp.enemyAlive}}

Edited by night_dragon_on
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Добавил соответствующий макрос.

 

Рома спс. Про длинные названия макросов хотел было написать, но подумав решил этого не делать, т.к тот, кто их придумывал не захочет названия менять или что хуже - ещё и обидится на меня   :hmm:

Share this post


Link to post

Short link
Share on other sites

т.к тот, кто их придумывал не захочет названия менять или что хуже - ещё и обидится на меня

 

Я же их добавил изначально, тут не на что обижаться. Со стороны автора как то не правильно будет держать обиду на того кто всего лишь хотел улучшить/подправить/оптимизировать его начальную задумку с целью улучшения (но это лишь мое субъективное мнение, люди разные как мы знаем бывают).

 

Если так ко всем изменениям подходить то и продвижения в развитии XVM-ма не будет  :gg:

Edited by night_dragon_on

Share this post


Link to post

Short link
Share on other sites

Ни у кого в логе такого больше нет?:

[ERROR] Traceback (most recent call last):
  File "./res_mods/mods/packages\xvm_main\python\python_macro.py", line 128, in load_macros_lib
    execute(code, file_name, {'xvm': XvmNamespace})
  File "./res_mods/mods/packages\xvm_main\python\python_macro.py", line 112, in execute
    raise ExecutionException("{} at file '{}' line {}: {}".format(error_name, file_name, line_number, message))
ExecutionException: NameError at file 'res_mods/configs/xvm/py_macro\noBinoculars.py' line 21: global name 'base' is not defined

Смущает ошибка noBinoculars.py...

Share this post


Link to post

Short link
Share on other sites

Ни у кого в логе такого больше нет?:

[ERROR] Traceback (most recent call last):
  File "./res_mods/mods/packages\xvm_main\python\python_macro.py", line 128, in load_macros_lib
    execute(code, file_name, {'xvm': XvmNamespace})
  File "./res_mods/mods/packages\xvm_main\python\python_macro.py", line 112, in execute
    raise ExecutionException("{} at file '{}' line {}: {}".format(error_name, file_name, line_number, message))
ExecutionException: NameError at file 'res_mods/configs/xvm/py_macro\noBinoculars.py' line 21: global name 'base' is not defined

Смущает ошибка noBinoculars.py...

Прикрепите noBinoculars.py.

Share this post


Link to post

Short link
Share on other sites

Прикрепите noBinoculars.py.

Вот:

noBinoculars.rar

 

Там код то малюсенький, npp открыл))

from AvatarInputHandler.control_modes import SniperControlMode
from xfw import *
import xvm_main.python.config as config
#####################################################################
# handlers
def __init__():
    if config.get('battle/camera/enabled') and config.get('battle/camera/sniper/noBinoculars'):
        @overrideMethod(SniperControlMode, '_SniperControlMode__setupBinoculars')
        def setupBinoculars(base, self, isCoatedOptics):
            return
        base(self, isCoatedOptics)
    else:
        return
__init__()
Edited by SEREGA_SF

Share this post


Link to post

Short link
Share on other sites

 Может так должно быть :

def __init__():
    if config.get('battle/camera/enabled') and config.get('battle/camera/sniper/noBinoculars'):
        @overrideMethod(SniperControlMode, '_SniperControlMode__setupBinoculars')
        def setupBinoculars(base, self, isCoatedOptics):
            return

__init__()
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

CrazyST куда-то потерялся, объясните неучу.

Вот тут он кусок кода выложил



def NbattlesToWR(step=0.01,stepscount=0):
    itemsCache = dependency.instance(IItemsCache)
    winsCount = itemsCache.items.getAccountDossier().getRandomStats().getWinsCount()
    battlesCount = itemsCache.items.getAccountDossier().getRandomStats().getBattlesCount()
    winsEfficiency = itemsCache.items.getAccountDossier().getRandomStats().getWinsEfficiency() * 100
    if step < 0.01 :
        step = 0.01
    else :
        step = round(step*100)/100
    stepscount = round(stepscount)
    if stepscount == 0 :
        wrn = round(winsEfficiency/step)*step
    elif stepscount > 0 :
        wrn = math.floor(winsEfficiency/step)*step + step * stepscount
    else :
        wrn = math.ceil(winsEfficiency/step)*step + step * stepscount
    if wrn == winsEfficiency :
        return 'Ровно <font color="#FFCC66">{}%</font>'.format(wrn)
    f = wrn > winsEfficiency
    if f :
        b = math.ceil((100 * winsCount - wrn * battlesCount) / (wrn - 100))
    else :
        b = -math.ceil(winsCount*100 / wrn - battlesCount)
    if round(wrn*100)/100 == int(wrn) :
        wrn = int(wrn)
    if b > 0 :
        return '<font color="#60FF00">{}</font>{}<font color="#FFCC66">{}%</font>'.format(int(b),'{{l10n:toWithSpaces}}',wrn)
    elif b < 0 :
        b = abs(b)
        return '<font color="#FE7903">{}</font>{}<font color="#FFCC66">{}%</font>'.format(int(b),'{{l10n:toWithSpaces}}',wrn)
    else :
        return '<font color="#FFCC66">{}</font>{}<font color="#FFCC66">{}%</font>'.format(int(b),'{{l10n:toWithSpaces}}',wrn)


его куда вписывать и как? В hangar_stat от Kapany3uk или отдельный ру-макро нужно создавать? Не ковырялся я с ними никогда, вообще для меня темный лес.

 

ЗЫ. Еще хотелось, чтобы sirmax в mystat. добавил средний урон по акку.

Edited by steaxch

Share this post


Link to post

Short link
Share on other sites

Смущает ошибка noBinoculars.py...

 

Зачем ставить доп. макрос (к тому же хреново переделанный из оригинального поста) если я уже как два патча назад добавил соответствующий функционал в XVM.

Видимо так пользователи и не научились следить за списком изменений в моде.

 

'ChangeLog-ru.txt'

XVM-6.6.3:
  [ОБЩЕЕ]
  * международный релиз World of Tanks 9.18

  [КАМЕРА]
  * новый параметр: "camera"/"sniper"/"noBinoculars" позволяет отключить затемнение и озеленение в снайперском прицеле

Edited by night_dragon_on
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

night_dragon_on, вообще то слежу, но тут видимо лоханулся)) до сих пор думал, что аддоном сделано)) Спс что глаза открыл.

Share this post


Link to post

Short link
Share on other sites

Парни,есть старенький скриптик с таким кодом:

import BigWorld

@xvm.export('shell_damage.shell_damage', deterministic=False)
def shell_damage():
    vehicle = BigWorld.player()
    shotDescr = vehicle.vehicleTypeDescriptor.shot
    if shotDescr['shell']['kind'] == 'HIGH_EXPLOSIVE':
        return "%i" % (shotDescr['shell']['damage'][0] // 2)
    else:
        return "%i" % (shotDescr['shell']['damage'][0]) 

Работал нормально,но в этом патче в логе ошибки посыпались:

2017-08-30 02:47:17: [ERROR] Traceback (most recent call last):

  File "./res_mods/mods/packages\xvm_main\python\python_macro.py", line 157, in process_python_macro
    return (func(), deterministic)
  File "./res_mods/mods/packages\xvm_main\python\python_macro.py", line 150, in <lambda>
    return (lambda: func(*args), deterministic)
  File "res_mods/configs/xvm/py_macro\shell_damage.py", line 7, in shell_damage
    if shotDescr['shell']['kind'] == 'HIGH_EXPLOSIVE':
  File "scripts/common/items/components/legacy_stuff.py", line 56, in __getitem__
AssertionError: Operation is not allowed

arg='shell_damage.shell_damage()'

Помогите поправить,моих знаний недостаточно(((

Share this post


Link to post

Short link
Share on other sites
или отдельный ру-макро нужно создавать

 

В любой py-файл (новый или уже имеющийся).

Главное его правильно вызвать из конфига.

Edited by night_dragon_on

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.

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