Jump to content
Korean Random
0kosmo

как получить список событий

Recommended Posts

Как можно получить список событий при определенном действии (например в бою или при просмотре реплея). То есть смотрю я реплей и нажимаю кнопку перемотки на 15 секунд назад - а какое событие произошло? Подозреваю что документации нет, но хоть направление раскопок укажите.

Share this post


Link to post

Short link
Share on other sites

Как можно получить список событий при определенном действии (например в бою или при просмотре реплея). То есть смотрю я реплей и нажимаю кнопку перемотки на 15 секунд назад - а какое событие произошло? Подозреваю что документации нет, но хоть направление раскопок укажите.

трейсы фунций нужно создать :))))

пример:

def foo():
    bar()
# нужно заменить на:
@trace
def foo():
    bar()
декоратор trace поместить в __builtin__ в корневом скрипте (Account.py?):

import __builtin__
import BigWorld

tracer_f = open('trace.log', 'w')

def _log(_str):
    if not tracer_f.closed:
        tracer_f.write(_str)

def autoFlushTracerLog():
    tracer_f.flush()
    BigWorld.callback(5.0, autoFlushTracerLog)

autoFlushTracerLog()

def trace(_func):
    def wrapper(*args, **kwargs):
        if not tracing:
            return _func(*args, **kwargs)
        _log('[%s %s]\n' % (_func.func_name, _func.__module__))
        result = _func(*args, **kwargs)
        _log('[/%s]\n' % _func.func_name)
        return result
    return wrapper

__builtin__.trace = trace
__builtin__.tracing = True
А дальше нужно распаковать скрипты клиента в res_mods и заменой по файлам дописать регуляркой @trace:

Найти: ^(([^\n\S]*)def\s[\S\s])
Заменить на: \2@trace\n\1
Затем скомпилить :))))

По идее, лаганет жутко :))))))

Ни в коем случае не пытайся попробовать этот способ)

Просто пошарься по распакованным скриптам клиента...

Edited by ShadowHunterRUS
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

 

 

Ни в коем случае не пытайся попробовать этот способ)

Совет на миллион, делай так, но ты так не делай. :heh:  

  • Downvote 1

Share this post


Link to post

Short link
Share on other sites

трейсы фунций нужно создать :))))

пример:

def foo():
    bar()
# нужно заменить на:
@trace
def foo():
    bar()
декоратор trace поместить в __builtin__ в корневом скрипте (Account.py?):

import __builtin__
import BigWorld

tracer_f = open('trace.log', 'w')

def _log(_str):
    if not tracer_f.closed:
        tracer_f.write(_str)

def autoFlushTracerLog():
    tracer_f.flush()
    BigWorld.callback(5.0, autoFlushTracerLog)

autoFlushTracerLog()

def trace(_func):
    def wrapper(*args, **kwargs):
        if not tracing:
            return _func(*args, **kwargs)
        _log('[%s %s]\n' % (_func.func_name, _func.__module__))
        result = _func(*args, **kwargs)
        _log('[/%s]\n' % _func.func_name)
        return result
    return wrapper

__builtin__.trace = trace
__builtin__.tracing = True
А дальше нужно распаковать скрипты клиента в res_mods и заменой по файлам дописать регуляркой @trace:

Найти: ^(([^\n\S]*)def\s[\S\s])
Заменить на: \2@trace\n\1
Затем скомпилить :))))

По идее, лаганет жутко :))))))

Ни в коем случае не пытайся попробовать этот способ)

Просто пошарься по распакованным скриптам клиента...

 

 

SkepticalFox раскажите пожалуста подробнее насчет "декоратор trace поместить в __builtin__ в корневом скрипте (Account.py?): "  со всем остальным разобрался без проблем. А вот  не догнал где в  скрипте Account  находится __builtin__ и как в него  поместить  декоратор trace.

Тема прикольная но информации мало.. 

Если я правильно понял приведенный код нужно поместить в скрипте (Account.py?) прогнать регуляркой все скрипты и скомпилить их?

Edited by Serfer_78

Share this post


Link to post

Short link
Share on other sites

Если я правильно понял приведенный код нужно поместить в скрипте (Account.py?) прогнать регуляркой все скрипты и скомпилить их?

Приведенный код был just for fun)

Проблема в том, что скомпилить обратно раскомпиленные скрипты абсолютно! невозможно)

Лучше подменить функцию(call_function?) виртуальной машины Python в WorldOfTanks.exe (примерно так это должно выглядеть)

Но для начала нужно её там найти, эту функцию(с помощью IDA)

Там и P7.Trace к месту будет(а то запись в файл повесит к хренам комп), видел его где-то у @Mixaill в репозитории(может он похожим и занимался?..)

Edited by SkepticalFox
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Приведенный код был just for fun)

Проблема в том, что скомпилить обратно раскомпиленные скрипты абсолютно! невозможно)

Лучше подменить функцию(call_function?) виртуальной машины Python в WorldOfTanks.exe (примерно так это должно выглядеть)

Но для начала нужно её там найти, эту функцию(с помощью IDA)

Там и P7.Trace к месту будет(а то запись в файл повесит к хренам комп), видел его где-то у @Mixaill в репозитории(может он похожим и занимался?..)

"Приведенный код был just for fun"

А я уж было повелся))))))

 

 

"примерно так это должно выглядеть)"

Спасибо)) Ознакомлюсь.  

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