Jump to content
Korean Random
GPCracker

WoT Script Terminal - отладка Python скриптов для WoT в Sublime Text 3.

Recommended Posts

Немного допилил код, добавил пару весьма нужных пунктов в меню, кой-чего поправил и передислоцировал.

В общем, собрал бету, надеюсь нормально пойдет))

Файлы в разделе релизов репозитория.

  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

Любителям шары.

Версия Sublime Text 3 билд 3103

https://gist.github.com/sublime-crack4/c11dd67cff63fcbf050e

Ломал ST3 build 3103 x64 portable : offset (0xe61fc)   83 f8 01 заменить на  3b c0 90

Registered to Unlimited User License

пока полёт нормальный

Хотя конечно лучше купить, но для меня, нищеброда, 70$ (1900 грн) - нет уж, лучше в семью :)

руссиш меню
http://dimox.name/sublime-text-russian-menu/
Edited by Megagrob

Share this post


Link to post

Short link
Share on other sites

 

 

Установка: Установка стандартная. Мод распаковать в папку с игрой

После последней обновы, Мод для 0.9.13 будет работать на 0.9.14 ? 

Share this post


Link to post

Short link
Share on other sites

После последней обновы, Мод для 0.9.13 будет работать на 0.9.14 ?

Ну в принципе я не вижу весомых причин, чтобы оно не работало. Попробуй переименовать папку 0.9.13 в 0.9.14 :)

Share this post


Link to post

Short link
Share on other sites

 

 

Ломал ST3 build 3103 x64 portable : offset (0xe61fc)   83 f8 01 заменить на  3b c0 90
 

Зачем вообще его ломать???

Неужели сложно раз в день окошко посмотреть?

 

Sublime Text may be downloaded and evaluated for free, however a license must be purchased for continued use. There is currently no enforced time limit for the evaluation.

Share this post


Link to post

Short link
Share on other sites

 

Зачем вообще его ломать???

Неужели сложно раз в день окошко посмотреть?

 

Sublime Text may be downloaded and evaluated for free, however a license must be purchased for continued use. There is currently no enforced time limit for the evaluation.

 

Можете смотреть сколько вам вздумается. А мне проще 3 байта заменить.

Share this post


Link to post

Short link
Share on other sites

Можете смотреть сколько вам вздумается. А мне проще 3 байта заменить.

Здесь место для публикации методов взлома софта?

Share this post


Link to post

Short link
Share on other sites

@GPCracker, в SublimeText 3 вылезает ошибка

Traceback (most recent call last):
  File "C:\Program Files\Sublime Text 3\sublime_plugin.py", line 457, in is_enabled_
    ret = self.is_enabled()
  File "main in C:\Users\Voronin_I_A\AppData\Roaming\Sublime Text 3\Installed Packages\WoTScriptTerminal.sublime-package", line 325, in is_enabled
AttributeError: 'NoneType' object has no attribute 'id'

я пока не пользуюсь - не умею :)) но сообщить - сообщаю...

Share this post


Link to post

Short link
Share on other sites

я пока не пользуюсь - не умею :)) но сообщить - сообщаю...

Уметь там особо ничего не надо... Ставишь и пользуешь.

Что касаемо ошибки - 325 строка, функция is_enabled

return terminal is not None and self.window.active_view().id() in terminal.views
AttributeError: 'NoneType' object has no attribute 'id'

По отчету все совпадает, строка с таким номером действительно принадлежит функции is_enabled

Атрибут 'id' используется только в одном месте, и судя по логам, получается что self.window.active_view() возвращает None

То-есть в момент проверки нет активной вьюшки. Скорее всего, все документы в этот момент были закрыты. Или возник какой-то баг в самом Sublime. Черкну себе в ToDo, допилю тут немного, когда время будет, чтобы не крашилось.

По сути

... and self.window.active_view() is not None and ...
должно быть достаточно. Edited by GPCracker

Share this post


Link to post

Short link
Share on other sites
Уметь там особо ничего не надо... Ставишь и пользуешь

Ха-ха :))

поставил, пытаюсь пользовать - беру скрипт totalHp, запускаю реплей из Sublime 3 -> connect -> execute ... и ничего не происходит... реплей играет, логи пишут что скрипт работает -> на экране никаких изменений -> я ничего не понимаю... через пару часов "плясок с бубном" терпение заканчивается и бросаю это дело до следующего прилива энтузиазма...

Edited by Kapany3uk

Share this post


Link to post

Short link
Share on other sites

Ха-ха :))

1. Нужно ставить в клиент серверную часть, чтобы игровой клиент мог принимать подключения от Sublime.

2. Клиентскую часть на Sublime, как я понял, ты уже развернул, раз меню появилось.

3. У Sublime есть своя внутренняя консоль, вызывается через Ctrl+~, ЕМНИП. Если что-то в плагине идет не так - там будут логи.

4. Не нужно брать сходу скрипты. Тестируется все довольно просто.

4.1. Коннектимся к клиенту. Состояние не важно, главное чтобы он прогрузился.

4.2. Открываем в Sublime лог-файл или лог-панель. Там должен появиться весь лог, если параметр fetch_logs включен (ЕМНИП он включен по дефолту).

4.3. Создаем пустой файлик, где мы будем писать наш скрипт. Пишем туда что-то типа "print 'Hello world!'".

4.4. Запускаем это дело. В лог-файле/лог-панели должна появиться строка "Hello world!".

4.5. PROFIT.

5. Некоторые скрипты интегрируются в клиент на стадии загрузки, поэтому их запуск через терминал без ручной интеграции (контролируемая интеграция) невозможен.

6. Из пункта 5 следует, что терминал используется для отладки модулей с использованием их ручной интеграции или проверки работоспособности каких-то кусков кода. Готовые скрипты следует отлаживать уже нормальным методом (устанавливать как мод). В последствии (если скрипт такое нормально воспримет) можно управлять состоянием этого скрипта через терминал, как и любым другим модулем картофана или пользовательским модом. Если конечно вы знаете, что надо делать.

Edited by GPCracker

Share this post


Link to post

Short link
Share on other sites

Некоторые скрипты интегрируются в клиент на стадии загрузки, поэтому их запуск через терминал без ручной интеграции (контролируемая интеграция) невозможен

Очевидно, TotalHp из таких...

 

А так, до 5 пункта, все ок (немного напрягся про "ставить в клиент серверную часть" - имхо проще написать "установить в клиент")

post-24956-0-37256000-1460454998_thumb.jpg

Share this post


Link to post

Short link
Share on other sites

немного напрягся про "ставить в клиент серверную часть" - имхо проще написать "установить в клиент"

Все дело в том, что та часть, которая является модом игрового клиента картохи, по своей сути является TCP сервером, расшаренным на localhost, а Sublime-плагин - это TCP клиент (+меню), который подключается моду-серверу и через него имеет доступ на выполнение python-скриптов в игровом клиенте картохи.

Для некоторого разграничения понятий клиент и сервер картоха/мое приложение я называю TCP-сервер моего приложения "серверной частью" приложения.

Такая вот сложная для понимания с первого раза логика, но на самом деле тут нет ничего сложного.

 

Что касаемо того, что можно делать через терминал - тут уже полная свобода почти, единственно, нужно четко осознавать, что скрипт запускается асинхронно (отдельным потоком) по отношению ко всему остальному игровому процессу, и некоторые функции уже успели выполниться. Это я к тому, что через терминал хуки нужно ставить осторожно.

Все остальное в принципе работает нормально, можно спокойно к примеру через терминал послать сообщение в чат (ну если в реальном бою / трене), либо просто его туда добавить (только отобразить), скажем, вывести сообщение справа, где фраги, запустить какой-нить звук, добавить чего-нить на экран, передвинуть, отресайзить и т.д. Если отлаживаешь мод, можно к примеру в реалтайме перемещать при помощи терминала всякие панельки, ресайзить их, менять текст, подбирать какие-то параметры и т.д. Причем делать это независимо от остальной логики, главное чтобы это не сбило с толку сам мод, который ты дебажишь.

Много что можно делать, в принципе.

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Через py4wot без каких-либо модов разве нельзя реализовать? гораздо удобней, т.к. не надо каждый патч моды из папки в папку переносить.

Share this post


Link to post

Short link
Share on other sites

Через py4wot без каких-либо модов разве нельзя реализовать? гораздо удобней, т.к. не надо каждый патч моды из папки в папку переносить.

py4wot - это приложение, реализующее консоль. Что-то вроде этого, только написанное на С++, опять же если я правильно понял код.

В питоне для консолей обычно используется несколько другой метод компиляции (ЕМНИП, single вместо exec). В подробности касаемо py4wot я не вдавался особо. Мое приложение работает со скриптами, а не с консольными командами.

К тому же использование сторонних приложений без особой на то необходимости не самая крутая идея. Питон нормально стартует на любой операционной системе, в отличие от С++ кода, заточенного чисто под Windows.

Серверную часть не обязательно запускать в игровом клиенте, она нормально стартует и на простом питоне. Там даже модуль для этого есть.

Плюс использование сетевой инфраструктуры позволяет (если правильно сконфигурировать) использовать мультиконнект и подключаться с другой машины. Два монитора есть не у всех, а вот ноутбук или планшет почти всегда найдется.

Share this post


Link to post

Short link
Share on other sites

@GPCracker, посмотрите лог, пжл.

python.log

 

собственно что напрягает:

INFO: -------------------------------------------------------------------------
INFO: [safeShot_extended]: Конфиг файл [mod_safeShot_extended.json] Успешно загрузился----------------------------------------
INFO: Traceback (most recent call last):
INFO:   File "terminal/server.py", line 67, in __callmethod__
INFO: UnicodeDecodeError: 'utf8' codec can't decode byte 0xca in position 21: invalid continuation byte
INFO: ----------------------------------------

Кто виноват: safeShot или ScriptTerminal ?

Edited by Kapany3uk

Share this post


Link to post

Short link
Share on other sites
Кто виноват: safeShot или ScriptTerminal ?

 

Виноваты кодировки. В "терминале" как я вижу юникод "не работает" и символы на кириллице через него не смогли пройти. 

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites

 

 

символы на кириллице через него не смогли пройти
Исправляемо или забить? Кстати, запись загрузки mod_safeShot_extended периодически выглядит как "чистый" код UTF-8. Наверное, надо попросить @Ekspoint заменить текст вывода в лог с русского на английский...

Share this post


Link to post

Short link
Share on other sites

Кстати, запись загрузки mod_safeShot_extended периодически выглядит как "чистый" код UTF-8. Наверное, надо попросить @Ekspoint заменить текст вывода в лог с русского на английский...

это как?

кодировка такая у меня

def print_info(text):
    try:
        print text.encode('windows-1251')
    except:
        print text

Виноваты кодировки. В "терминале" как я вижу юникод "не работает" и символы на кириллице через него не смогли пройти. 

ага

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