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

Баг ли это? OpenComputers 1.5.19

Вопрос

В версии OpenComputers 1.5.19 (1.7.10) я считаю что есть небольшой баг.

 

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

local computer = require("computer");
for i = 1, 10 do  
  signalName, receiverAddress, senderAddress, port, distance, packet1 = computer.pullSignal();
  print(senderAddress, port, distance, packet1);
end;

При нажатии колесиком мыши, в принт выпадает почти все программа, а если использовать dofile() то вся программа будет вывидена на экран.

В чем проблема? Баг это или что-то неправильно сделано?

 

 

На фото есть пример вывода.

 

post-15592-0-40704600-1445263996_thumb.png

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


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

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

Думаю, тут дело вовсе не в dofile. Нажатие колёсика мыши равнозначно нажатию Ctrl+Ins, т.е. вставке из буфера обмена. Может просто содержимое буфера поменялось?

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


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

pullSignal строго рекомендуется не использовать, для этого есть event.pull(). В Вашем случае, я так понимаю, нужно получать только сообщения с сетевой карты. Так что код выглядеть долен так:

local event = require("event")
for i = 1, 10 do
  signalName, receiverAddress, senderAddress, port, distance, packet1 = event.pull("modem_message")
  print(senderAddress, port, distance, packet1)
end

Здесь как аргумент функции event.pull я передаю фильтр.

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


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

pullSignal строго рекомендуется не использовать, для этого есть event.pull(). В Вашем случае, я так понимаю, нужно получать только сообщения с сетевой карты. Так что код выглядеть долен так:

local event = require("event")
for i = 1, 10 do
  signalName, receiverAddress, senderAddress, port, distance, packet1 = event.pull("modem_message")
  print(senderAddress, port, distance, packet1)
end

Здесь как аргумент функции event.pull я передаю фильтр.

event.pull() слаб перед завалом сигналов со стороны. computer.pullSignal(); может "кэшировать" сигналы и после брать их из очериди или я ошибаюсь?

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


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

 

 

event.pull() слаб перед завалом сигналов со стороны. computer.pullSignal(); может "кэшировать" сигналы и после брать их из очериди или я ошибаюсь?
 

Вроде наоборот. event.pull основана на computer.pullSignal, но с возможностью фильтрации.

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


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

 

Вроде наоборот. event.pull основана на computer.pullSignal, но с возможностью фильтрации.

 

Да, он заточен под это. Мне показалось что при получении большого количества сигналов по сети, event.pull() теряет некоторые пакеты

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


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

Ещё можно пользоваться event.listen(ИМЯ СИГНАЛА,ФУНКЦИЯ)-вызывает функцию при получении нужного сигнала.

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


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

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

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

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

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

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

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

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

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


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