Перейти к публикации

В ближайшее время постараюсь разобраться с картой сервера/ЛК/бб кодами

Внимание, с 14 февраля до 20 февраля могут проходить работы на сервере, где также находится лаунчсервер. В связи с этим авторизация в лаунчере может не работать

KelLiN

event.pull VS event.listen

Рекомендованные сообщения

Часто вижу в коде именно event.pull причем без указания первого аргумента таймаута. В итоге предполагаю опрос на событие каждый тик (или не так ?). Почему никто не использует event.listen ? Не понимание как работает система событий ? Или в listen не передаются какие-либо необходимые события ? Я в jabber боте лет 8 назад только на аналогах event.listen и программировал, после чего ни одна моя программа не обходилась без стандартного куска кода для работы с событиями.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Pull() — если нужно ожидать. Т. е. пока нет ивента, программа стопится.

Listen() — бэкграунд. Работает на фоне, в любой момент.

Первое понятнее новичкам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

pull() без аргумента таймаут разве стопится ? Или по умолчанию таймаут бесконечность ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В pull() таймаут есть, кажется, 5 минут. Во время этого прога стопится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Пытался покопаться в потрохах ОС. Что-то ничего путного не нашел как устроен listen.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не нужно вызывать. Нужна функция.

event.listen("event", cbFunc) вместо event.listen("event", cbFunc())

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не нужно вызывать. Нужна функция.

event.listen("event", cbFunc) вместо event.listen("event", cbFunc())

Вот код программы.

post-11994-0-43485200-1432138424_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

event.listen() вызывает ФУНКЦИЮ при отлавливании определённого события. Так как ты не будешь запускать функцию, тогда пиши event.pull("event")

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

event.listen() вызывает ФУНКЦИЮ при отлавливании определённого события. Так как ты не будешь запускать функцию, тогда пиши event.pull("event")

Тогда надо сначала ЖДАТЬ СООБЩЕНИЕ, потом уже писать. Что если ты не дописал сообщение? Мне нужно ИМЕННО Listen. Чтобы в любой момент писать и одновременно получать. Вот так.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не был бы ты ленивый, поправил бы твой код. А со скриншота перепечатывать - я сам ленивый.
Что-то вроде:

function printMessage(_,_,msg_,_)
  print(msg)
end
event.listen("bitnet_message",printMessage)

while true do
  io.read
  blabla
end

Твой текущий код с pull будет самоблокирующимся. Не сможешь отправить смс пока не примешь любой пакет.

Изменено пользователем KelLiN

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×