Hikooshi
Пользователи-
Публикации
25 -
Зарегистрирован
-
Посещение
-
Победитель дней
2
Тип публикации
Блоги
Профили
Форум
Багтрекер
Магазин
Все публикации пользователя Hikooshi
-
Никогда с таким не сталкивался и вдруг... Например, есть основной цикл, в котором обрабатывается поиск кнопки while true do local _,_,x,y = event.pull("touch") if ... then ... end end Далее вызывается функция со своим вайлом, который выполняется довольно долго Как мне сделать так, чтоб во время этого вайла можно было и другие кнопки нажимать? Листенера прикреплять? И сразу второй вопрос: если функции локальны и такая локальная функция прикреплена к листенеру, то как потом отключить такого листенера, если закрывать программу через Ctrl+Alt+C или если программа вылетает?
-
На версии майна 1.7.10 была возможность экспортить, пушить, пулить предметы через me_interface; на 1.12.2 - нет. Кто-нибудь с этой проблемой разбирался и если да, то как ее решали, не применяя базы данных? может в конфиге что подкрутить надо? Версия OC 1.74.153
-
да, но если слипнуть без while'а, то тоже будет работать
-
ты неправильно поставил ударение на слово "еще", имелось в виду, типа "та самая версия в которой еще транспозеры работают", они поломаны были на 1.73. После реквеста ничего можно не слипать, применяя функцию, скинутую тобой, оно само по себе слипается, потому что там цикл while и он будет выполняться до тех пор, пока в data не будет nil. В случае неправильного айдишника request.read() несколько раз будет data == "", и через полсекунды - data == nil. В случае правильного айдишника так же сначала в течение полусекунды data будет "", потом будет равна полученным данным, потом, когда файл закончится data станет nil и цикл завершится
-
версия 1.74, в которой еще транспозеры правильно работают) кавычки с нилами - то, что программа принтит (обрати внимание на то, где стоит print(data, reason)), пока цикл работает. То есть в течение полусекунды запрос при неправильном айдишнике возвращает пустую строку, как и при правильном айдишнике, через полсекунды возвращает nil и адрес. То есть полсекунды data == "", reason == nil, по прошествии полусекунды data == nil, reason == адрес, выходит из цикла. При правильном айдишнике принтило бы содержимое переменной data, то есть код, полученный с пастбина
-
function get(url) local request, reason = internet.request(url) if not request then return '' end local text = '' while true do local data, reason = request.read() print(data, reason) if not data then request.close() break elseif #data > 0 then text = text..data end end return text end эту функцию где-то находил через нее тоже не получалось сделать как надо, но там у меня в другом месте где-то был косяк. Щас поправил твой вариант, если точнее, то добавил print(data, reason) и понял в чем дело теперь: примерно в течение полусекунды происходит следующее - программа пишет: "" nil "" nil "" nil "" nil "" nil "" nil "" nil nil адрес то есть, все-таки задержка есть, просто здесь ее программа сама как бы создает, в моем же случае я ее прописываю
-
обновляет файлы с пастбина айди файла находится в самом файле в определенном месте, но если в том месте будет любое другое слово, то программа вылетит с ошибкой. Сначала в программе открывается список файлов, считываются из того определенного места значения айдишников, получается таблица [название файла] = "айди". Потом в цикле из этой таблицы берутся айдишники и происходят реквесты internet.request("https://pastebin.com/raw/"..айди). Вот тут самое интересное и начинается: если айдишник это именно айдишник, то все нормально работает, чанки возвращают данные и файл перезаписывается, но если вместо айдишника будет просто слово, например "component" или какой другое, то цикл с чанками выдаст ошибку и, как написано выше, программа просто вылетит. Поэтому хотел сделать фильтр, чтоб при неправильном айдишнике просто код переходил к следующему из таблицы. Если в консоли сделать так: > response = internet.request("https://pastebin.com/raw/правильный айди") > =response.read() то консоль вернет > "" то же самое происходит и в программе, то есть можно было бы сделать так data, result = response.read(); if data then for chunk in response do ... end end Если же в консоли написать так: > response = internet.request("https://pastebin.com/raw/НЕправильный айди") > =response.read() то консоль вернет > nil адрес НО в программе происходит то же самое, что и в консоли при варианте с правильным айди, то есть возвращается пустая строка на месте первой переменной, а не nil, поэтому фильтровать не получается таким способом проблема решена: между internet.request и response.read() добавил os.sleep(1), минимум времени может быть 0.3, хотя, возможно, зависит от сайта
-
можно было бы и так сделать, но в любом случае и в правильном и в неправильном, через .read() возвращается "", если б было как в консоли, то есть при неверной ссылке возвращался бы nil, то фильтровать очень просто можно было бы в общем, есть таблица [название файла] = "его айди". Айдишник считывается из определенного места файла и если на том месте не айдишник, а что-то другое, то цикл for chunk in response do ... end выдаст ошибку и программа завершится. Вот я и ищу способ сделать фильтр
-
еще вопрос если в консоли написать result, response = pcall(internet.request, "https://pastebin.com/raw/".. a), где a - намеренно неверная ссылка d, r =response.read() то консоль вернет значения d == nil r == адрес НО, если то же самое сделать через программу, то вернет d == "" r == nil в чем проблема здесь? хотя меня больше интересует вопрос, как люди делают фильтр неправильных ссылок, ведь result в этих случаях будет true
-
все понятно, и да, через .read() информация читалась, но очень такой способ неудобный. Всем спасибо
-
ошибку нашел, нужно было писать internet.request(), а я вводил component.internet.request(). Теперь объясните, почему через вызов компонента не работает? result, response = pcall(internet.request, " адрес ") for chunk in response do print(chunk) end for chunk in internet.request(" адрес ") do print(chunk) end оба кода в консоли работают одинаково, почему так? В смысле, почему не нужно в данном случае указывать component? версия OC 1.74
-
хмм, это очень интересно
-
именно так я и делал, принт просто ничего не возращал, то есть: > result, response = pcall(internet.request, "http://example.org/") if result then for chunk in response do print(chunk) end end > пустая строка дальше выдается
-
хочу через интерпретатор проверить, как оно работает, но цикл почему-то не возвращает ничего (цикл с чанками), хотя через .read() можно текст вернуть. Вот и спрашиваю, что не так, если в программе этот цикл работает, а в консоли (интерпретаторе) - нет
-
подскажите, в чем дело есть программа pastebin, чтоб с пастбина качать, пробую код функции get() в консоли писать - запрос, вроде, происходит, но чанки не возвращаются и файл ничего не записывается если точнее, то вот эта часть кода for chunk in response do -- if not options.k then string.gsub(chunk, "\r\n", "\n") -- end f:write(chunk) end http-запросы открыты и через саму программу скачать файл получается ах да, через response.read() получается прочитать текст кода, то есть response.read(4) возращает первые четыре символа кода
-
Значит, сейчас нужно искать замену этого дела, вот же ж, спасибо и на том
-
Всем здрасьте Суть вопроса: раньше, например, на версии 1.7.10 майна geolyzer мог возвращать функцией analyze() в таблице значение metadata на версии 1.12.2 этого не происходит. В таком случае это у меня конфиг так прописан, что не происходит возвращения этой переменной? хотя в конфиге такой настройки не находил это мод теперь так работает, что не возвращает metadata блока? другой вариант? Кто сталкивался - отзовитесь, значение этой переменной нужно, например, для работы с Forestry, потому, как блоки Forestry именуются, к примеру name="forestry:resources". Раньше по metadata можно было точно узнать, что за блок, сейчас, соответственно, нет. Раньше - версия 1.7.10, теперь - версия 1.12.2
-
Видео-гайды по OpenComputers. Сделаны для тех, кто начинает разбираться с этим модом или возникают какие-то вопросы. Знатоки, особо не ругайтесь) Начиная с 7 серии разрешение 1080p 1 Серия. Железо 2 Серия. Файловая система 3 Серия. Роботы 4 Серия. Апгрейды роботов 5 Серия. Голопроекторы 6 Серия. Редстоун 7 Серия. Функции роботов + апгрейдов V2.0 8 Серия. Микроконтроллер + Планшет + Дроны. Программирование EEPROM 9 Серия. Сетевые устройства 10 Серия. Нанороботы + путевые точки 11 Серия. Карты, принтер, database http://www.youtube.com/watch?v=_YYoiFvH4Cc 12 серия. Мониторы, видеокарты, эвенты мониторов http://www.youtube.com/watch?v=_DDHR9aEPIs Следующие гайды по моду Computronics. Это не совсем OpenComputers, но многим будут полезны 1 серия: https://www.youtube.com/watch?v=KriJuN-02s8 2 серия: https://www.youtube.com/watch?v=NahPoaGpqhg Стыковочная станция и интерфейс для дрона: https://www.youtube.com/watch?v=0zmFN7VcGYA 3 серия: https://www.youtube.com/watch?v=KNjPwZt7kQM
-
Вот как раз второй вариант и пытался сделать, спасибо. А на счет гайдов - стыдно признавать, но да. Пришла популярность... Вообще мой канал не популярный и изначально задумывалось показать это только паре-тройке друзей, что на моем сервере играют
-
Подскажите, пожалуйста, синтаксис программы, чтобы можно было устанавливать значение каждого вокселя отдельно в текстовом виде. То есть не через интерпретатор каждый раз писать component.hologram.set(x, y, z, value), а чтобы просто было поле ввода текста, в котором как раз эти x, y, z, value и нужно было бы писать. Через pcall(io.read) не получалось, программа ругалась, что первый аргумент булевый, даже если остальные, кроме этого первого задать изначально. P.S. я не так давно начал изучать Lua
