События — это то, как модуль реагирует на игру. Клиент вызывает ваши методы в определённые моменты: каждый тик, при отрисовке кадра, при получении пакета и т.д.
Чтобы подписаться на событие, метод помечают декоратором @event("имя"). Обработчик вызывается только пока модуль включён.
| Событие | Аргумент | Когда вызывается |
|---|---|---|
@event("update") | — | Каждый игровой тик (20 раз в секунду) |
@event("render2d") | ctx | Отрисовка HUD поверх экрана |
@event("render3d") | ctx | Отрисовка в мире (трейсеры, боксы) |
@event("packet_send") | packet | Перед отправкой пакета на сервер |
@event("packet_receive") | packet | При получении пакета от сервера |
@event("attack") | entity | При атаке игрока по сущности |
@event("key") | key | При нажатии клавиши |
@event("world_load") | — | При входе в мир / смене сервера |
Обработчик может принимать аргумент события — например, сущность при атаке или клавишу при нажатии:
from rockstar import Module, event
class Logger(Module):
name = "Logger"
category = "Misc"
@event("attack")
def on_attack(self, entity):
self.notify(f"Атака по {entity.name} ({entity.health} hp)")
@event("key")
def on_key(self, key):
if key.name == "G":
self.client.send_chat("Привет!")