@events.module_toggledотменить нельзя2 методаКогда включают или выключают любой модуль клиента: твой или встроенный.
У модулей нет колбэков on_enable и on_disable, и это событие их заменяет. Оно ловит сам момент переключения.
Тут делают уборку за модулем: отпустить зажатые клавиши, вернуть изменённые настройки, сбросить накопленное состояние.
Второе применение это горячая клавиша. Игрок жмёт бинд, модуль включается, скрипт делает своё дело и тут же гасит модуль обратно. Получается кнопка.
| Метод | Возвращает | Зачем |
|---|---|---|
getModule() | PyModule | Какой модуль переключили. Объект клиента, wrap не нужен |
isState() | bool | True если включили, False если выключили |
mod = Module("AutoWalk", "Movement")
@events.tick
def on_tick(event):
if mod.isEnabled() and world.ingame():
mc.options.forwardKey.setPressed(True)
@events.module_toggled
def on_toggle(event):
if event.getModule().getName() != "AutoWalk":
return
if not event.isState():
# выключили: клавишу надо отпустить руками, клиент этого не сделает
mc.options.forwardKey.setPressed(False)# модуль работает как кнопка: сработал по биндy и выключился
mod = Module("Coords", "Other")
mod.setKey(71) # G
@events.module_toggled
def on_toggle(event):
if event.getModule().getName() != "Coords" or not event.isState():
return
p = world.self()
if p is not None:
client.msg("Я тут: %d %d %d" % (p.getX(), p.getY(), p.getZ()))
mod.setEnabled(False)Общий список всех событий и правила подписки лежат на странице События.