Перейти к содержимому
  • 0
1kovand1

Фильтрация event.pull()

Вопрос

Почему не работает фильтрация , например 

event.pull("chat_message")

 все равно пропускает все эвенты.

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


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

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

Что значит "пропускает"? Возвращает любой, не возвращает вообще ничего?

Подробнее объясните.

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


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

 

 

Что значит "пропускает"? Возвращает любой, не возвращает вообще ничего?

Любой возвращает 

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


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

 

event = require("event")

com = require("component")

 

while true do

local f,s,t, fo, fi, si = event.pull(60)

event = require("event")

com = require("component")

 

while true do

local f,s,t, fo, fi, si = event.pull("touch")

if si == nil then

si = "nil"

end

if fi == nil then

fi = "nil"

end

if fo == nil then

fo = "nil"

end

if t == nil then

t = "nil"

end

if s == nil then

s = "nil"

end

if f == nil then

f = "nil"

end

if f ~= "nil" then

print(f.."\n"..s.."\n"..t.."\n"..fo.."\n"..fi.."\n"..si.."\n")

end

end

si = "nil"

end

if fi == nil then

fi = "nil"

end

if fo == nil then

fo = "nil"

end

if t == nil then

t = "nil"

end

if s == nil then

s = "nil"

end

if f == nil then

f = "nil"

end

if f ~= "nil" then

print(f.."\n"..s.."\n"..t.."\n"..fo.."\n"..fi.."\n"..si.."\n")

end

end

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


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

<<много буковок>>

Теперь я с уверенностью могу сказать что видел всё!

Нет отступов, это ещё цветочки.

 

 

 

event.pull(60)

Это вообще лишнее. Весь код сплошной ужас.

 

Попробую написать как надо и догадаться для каких целей тебе это нужно:

local event = require("event")
local com = require("component") --вообще не знаю зачем в данном коде эта библиотека, ну раз тебе она так нужна пусть будет

while true do
	local out = {event.pull("touch")} --евент ожидается пока не будет получины данные
	--local out = {event.pull(60,"touch")} --если евент должен срываться при достижении в данном случае 60 сек без отклика, то ставим эту строку вместо предыдущей
	if out[1] then 
                print(out[1].."\n"..out[2].."\n"..out[3].."\n"..out[4].."\n"..out[5].."\n"..out[6].."\n") --отображаем 6 значений из таблицы
        else --если захочешь поставить второй вариант евента, который срывает его, то его срыв вызовет выход из цикла
		break --вместо выхода из цикла можем написать любой код
	end
end

Вот такой короткий и чёткий код получился.

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

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


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

 

 

Теперь я с уверенностью могу сказать что видел всё!
Нет отступов, это ещё цветочки.
 
 
 

Это вообще лишнее. Весь код сплошной ужас.
 
Попробую написать как надо и догадаться для каких целей тебе это нужно:
local event = require("event")
local com = require("component") --вообще не знаю зачем в данном коде эта библиотека, ну раз тебе она так нужна пусть будет

while true do
	local out = {event.pull("touch")} --евент ожидается пока не будет получины данные
	--local out = {event.pull(60,"touch")} --если евент должен срываться при достижении в данном случае 60 сек без отклика, то ставим эту строку вместо предыдущей
	print(out[1].."\n"..out[2].."\n"..out[3].."\n"..out[4].."\n"..out[5].."\n"..out[6].."\n") --отображаем 6 значений из таблицы
	if not out[1] then --если захочешь поставить второй вариант евента, который срывает его, то его срыв вызовет выход из цикла
		break --вместо выхода из цикла можем написать любой код
	end
end

Вот такой короткий и чёткий код получился.


А если какой-нибудь аргумент будет nil Изменено пользователем 1kovand1

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


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

Попробую написать как надо и догадаться для каких целей тебе это нужно:

print(out[1].."\n"..out[2].."\n"..out[3].."\n"..out[4].."\n"..out[5].."\n"..out[6].."\n") --отображаем 6 значений из таблицы
Вот такой короткий и чёткий код получился.

 

ужасный говнокод.

 

как минимум циклом перебрать значения

for _, v in ipairs(out) do
  print(v)
end

лень циклом?

print(table.concat(out, "\n"))

хочешь через табы написать?

print(table.unpack(out))

через запятую?

print(table.concat(out, ", "))
Изменено пользователем LeshaInc

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


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

Он будет nil только если преждевременно прервать евент, например по истечению времени вот так:

local out = {event.pull(60,"touch")}

В обычном же случае без прерывания по времени, он просто не будет реагировать на ненужные евенты.

Ну а если всё же в нашем случае код прерывается по времени, то для этого случая я написал вот такую часть кода:

if out[1] then --обрабатываем случай когда выходит значение
        print(out[1].."\n"..out[2].."\n"..out[3].."\n"..out[4].."\n"..out[5].."\n"..out[6].."\n")
else --обрабатываем случай когда выходит nil
	break --здесь может быть любой код, но я решил написать break чтобы выйти из цикла.
end

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

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


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

Для общего развития — неограниченные по времени пуллы тоже могут как-то иногда возвращать nil и прерываться преждевременно.

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


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

Для общего развития — неограниченные по времени пуллы тоже могут как-то иногда возвращать nil и прерываться преждевременно.

Каким способом?

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


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

Написано же: "как-то". Без понятия.

Привёл бы пример такого кода хоть. А то какой то Чайник Рассела получается.

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


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

Привёл бы пример такого кода хоть. А то какой то Чайник Рассела получается.

Оно прерывается только когда одновременно планеты встают в ряд, на экваторе танцует шаман, а в шмандерсбурге упал будтердром маслом вверх. Короче, без понятия.

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...