@events.tickотменить нельзябез методовКаждый тик клиентского игрока, 20 раз в секунду.
Рабочая лошадка всех скриптов. Тик это один ход игры: в нём пересчитывается физика, движение и всё остальное. Если действие должно происходить регулярно, но не привязано к кадру, его место здесь.
В тике удобно всё, что связано с состоянием игры: следить за здоровьем, искать цель, жать клавиши, разбирать накопленные задачи, обновлять данные для отрисовки. Рисовать в тике нечего, для этого есть render_2d и render_3d.
Событие не отменяемое и без методов: клиент просто сообщает, что прошёл очередной ход.
Своих методов у события нет: клиент просто сообщает, что момент наступил. Всё нужное берут из mc, world и своих переменных.
mod = Module("LowHealth", "Player")
warned = False
@events.tick
def on_tick(event):
global warned
# событие приходит всегда, даже когда модуль выключен и когда мы в меню
if not mod.isEnabled() or not world.ingame():
return
hp = float(mc.player.getHealth())
if hp <= 6.0 and not warned:
client.warn("Мало здоровья: %.1f" % hp)
warned = True
elif hp > 10.0:
warned = Falsetimer = Timer()
@events.tick
def on_tick(event):
# раз в 3 секунды, а не 20 раз в секунду
if timer.finished(3000):
timer.reset()
client.msg("прошло три секунды")Общий список всех событий и правила подписки лежат на странице События.