Jump to content
Korean Random
VasyaPRO_2014

Вопросы от нуба (Python)

Recommended Posts

Здравствуйте уважаемые мододелы. Хотелось бы задать несколько вопросов знающим людям.

1.Что делает декоратор (или как он там называется) @staticmethod и где вообще можно посмотреть что делают любые декораторы?

2.Как можно перехватить нажатие клавиш, к примеру чтобы при нажатии клавиши перезагрузить конфиг?

3.Хочу при нажатии таб использовать html строки вместо название танка либо никнейма игрока (либо любой другой способ сделать эти поля цветными). Есть к примеру код:

import BigWorld
from gui.battle_control.battle_arena_ctrl import BattleArenaController

old__makeHash = BattleArenaController._makeHash
def new__makeHash(self,index, playerFullName, vInfoVO, vStatsVO, viStatsVO, ctx, playerAccountID, inviteSendingProhibited, invitesReceivingProhibited, isEnemy):
    makeHash = old__makeHash(self, index, playerFullName, vInfoVO, vStatsVO, viStatsVO, ctx, playerAccountID, inviteSendingProhibited, invitesReceivingProhibited, isEnemy)
    makeHash['vehicle']='<font color="ff0000">'+vInfoVO.vehicleType.shortName+'</font>'
    return makeHash
BattleArenaController._makeHash = new__makeHash

На выходе имею: post-32536-0-82465700-1452171772_thumb.jpg

хотя к примеру этот мод: http://forum.worldoftanks.eu/index.php?/topic/455834-0913statistics-no-xvm/ вроде делает тоже самое и работает.

Share this post


Link to post

Short link
Share on other sites

makeHash['vehicle']='<font color="ff0000">'+vInfoVO.vehicleType.shortName+'</font>'

makeHash['vehicle']="<font color='#ff0000'>%s</font>" % vInfoVO.vehicleType.shortName

может так?

Edited by ShadowHunterRUS

Share this post


Link to post

Short link
Share on other sites

Значит слишком низко перехватил подмену...

А как иначе? Цвет можно менять 100% ибо даже при загрузке игроки меняют свой цвет с серого на более светлый.

Share this post


Link to post

Short link
Share on other sites

makeHash['userName']

там это работает

Странно, у меня не работает.

old__makeHash = BattleArenaController._makeHash
def new__makeHash(self,index, playerFullName, vInfoVO, vStatsVO, viStatsVO, ctx, playerAccountID, inviteSendingProhibited, invitesReceivingProhibited, isEnemy):
    makeHash = old__makeHash(self, index, playerFullName, vInfoVO, vStatsVO, viStatsVO, ctx, playerAccountID, inviteSendingProhibited, invitesReceivingProhibited, isEnemy)
    playerVO = vInfoVO.player
    makeHash['userName']="<font color='#FF0000'>%s</font>" % playerVO.getPlayerLabel()
    return makeHash
BattleArenaController._makeHash = new__makeHash

post-32536-0-46876500-1452191047_thumb.jpg

Share this post


Link to post

Short link
Share on other sites

Может кто либо ответить на остальные вопросы? В частности вопрос №2?

в исходниках модов спотера есть пример

Share this post


Link to post

Short link
Share on other sites

Обработка нажатий клавиш в бою,

Если не нужно именно в бою, то меняйте isInBattle 

import Keys
import BigWorld
import game
from gui import InputHandler
from gui.app_loader import g_appLoader

def key_pressed_function():
    print 'pressed'

def inject_handle_key_event(event):
    is_down, key, mods, is_repeat = game.convertKeyEvent(event)
    isInBattle = g_appLoader.getDefBattleApp() #battle start check
    try:
        if isInBattle:
            if key is Keys.KEY_E and is_down and mods is Keys.MODIFIER_ALT:
                key_pressed_function()
    except Exception as e:
        print ('error in inject_handle_key_event', e)

InputHandler.g_instance.onKeyDown += inject_handle_key_event
InputHandler.g_instance.onKeyUp += inject_handle_key_event
  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

 

Обработка нажатий клавиш в бою,

Если не нужно именно в бою, то меняйте isInBattle 

import Keys
import BigWorld
import game
from gui import InputHandler
from gui.app_loader import g_appLoader

def key_pressed_function():
    print 'pressed'

def inject_handle_key_event(event):
    is_down, key, mods, is_repeat = game.convertKeyEvent(event)
    isInBattle = g_appLoader.getDefBattleApp() #battle start check
    try:
        if isInBattle:
            if key is Keys.KEY_E and is_down and mods is Keys.MODIFIER_ALT:
                key_pressed_function()
    except Exception as e:
        print ('error in inject_handle_key_event', e)

InputHandler.g_instance.onKeyDown += inject_handle_key_event
InputHandler.g_instance.onKeyUp += inject_handle_key_event

Спасибо огромное.

Share this post


Link to post

Short link
Share on other sites


import Keys
from BigWorld import player
from gui import InputHandler
from BigWorld import isKeyDown
from Avatar import PlayerAvatar
from game import convertKeyEvent
from Account import PlayerAccount

class HotKeys:

@staticmethod
def One(ParseKeys):
if len(ParseKeys.split(' and ')) == 2:
return getattr(Keys, ParseKeys.split(' and ')[1])
return getattr(Keys, ParseKeys.split(' and ')[0])

@staticmethod
def Two(ParseKeys):
if len(ParseKeys.split(' and ')) == 2:
return isKeyDown(getattr(Keys, ParseKeys.split(' and ')[0]))
return True


def New_onHandleKeyEvent(event):
Old_onHandleKeyEvent(event)
isDown, key, mods, isRepeat = convertKeyEvent(event)
if isinstance(player(), PlayerAccount): ## Ангар
if key == HotKeys.One('KEY_N and KEY_M') and isDown:
if HotKeys.Two('KEY_N and KEY_M'):
print ''
# Сюда пишем свой код
if isinstance(player(), PlayerAvatar): ## Бой
if key == HotKeys.One('KEY_N and KEY_M') and isDown:
if HotKeys.Two('KEY_N and KEY_M'):
print ''
# Сюда пишем свой код


Old_onHandleKeyEvent = InputHandler.g_instance.handleKeyEvent
InputHandler.g_instance.handleKeyEvent = New_onHandleKeyEvent
"""
def New_onHandleKeyEvent(self, isDown, key, mods):
Old_onHandleKeyEvent(self, isDown, key, mods)
if key == HotKeys.One('KEY_N and KEY_M') and isDown:
if HotKeys.Two('KEY_N and KEY_M'):
print ''
# Сюда пишем свой код


Old_onHandleKeyEvent = PlayerAvatar.handleKey
PlayerAvatar.handleKey = New_onHandleKeyEvent
"""

 

  • Upvote 1

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