Все скрипты лежат в одной папке внутри клиента. Искать её руками не надо: набери в игровом чате .py dir, и папка сама откроется в проводнике.
Один файл это один скрипт. Имя скрипта равно имени файла без расширения: файл hello.py клиент знает как скрипт hello. Именно это имя ты будешь писать в командах.
Скриптами управляют из игрового чата командой .py. Отдельного меню для этого нет, всё делается в чате.
| Команда | Что делает |
|---|---|
.py dir | Открыть папку со скриптами в проводнике |
.py list | Показать список скриптов. По строке можно кликнуть, скрипт включится или выключится |
.py create <имя> | Создать новый файл скрипта из заготовки |
.py load <имя> | Загрузить скрипт: клиент выполнит файл |
.py unload <имя> | Выгрузить скрипт: всё, что он создал, исчезнет из клиента |
.py toggle <имя> | Загрузить, если выгружен, и наоборот |
.py reload | Перечитать папку и перезапустить все скрипты |
.py delete <имя> | Удалить файл скрипта |
.py install <пакет> | Поставить дополнительную библиотеку Python |
.py sync | Отправить скрипты на сайт вручную, если они не уехали туда сами |
Самый короткий путь от пустого места до работающего модуля.
.py create hello. Клиент создаст файл hello.py..py dir, открывается папка. Открой файл редактором и вставь код ниже..py load hello. Клиент выполнит файл, и в меню появится новый модуль.mod = Module("Hello", "Other")
mod.setDesc("Первый скрипт")
@events.tick
def on_tick(event):
if mod.isEnabled():
client.overlay("Работает!")Дальше важный момент, на котором спотыкаются почти все. Загрузить скрипт и включить модуль это разные вещи. .py load hello выполняет файл и создаёт модуль Hello, но сам модуль при этом выключен, как любой другой в клиенте. Найди его в меню во вкладке Other и включи.
Пока скрипт загружен, клиент следит за его файлом: сохранил файл, скрипт перезапустился сам. Выходить из игры не надо. Получается удобный цикл: поправил код, нажал Ctrl+S, сразу посмотрел, что вышло.
Перед перезапуском клиент убирает старую версию скрипта, и всё, что она успела создать, исчезает само: модули, их настройки, надписи на экране, реакции на игровые события. Чистить за собой не нужно, дублей не будет.
Есть два случая, когда автоперезагрузка не сработает. Оба лечатся одной командой.
.py load <имя>..py load <имя>.Пока пишешь скрипт, тебе постоянно нужно понимать, что внутри него происходит. Способов сказать это несколько, и они попадают в разные места.
| Строка в коде | Куда попадёт |
|---|---|
client.msg("...") | В чат, обычным сообщением |
client.warn("...") | В чат, предупреждением |
client.error("...") | В чат, ошибкой |
client.overlay("...") | Строкой над хотбаром, чат не засоряет |
print("...") | В файл latest.log рядом с клиентом. В чате ничего не появится |
Правило простое: client.msg для того, что должен увидеть игрок, а print для себя. print можно звать сколько угодно, он никому не мешает.