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

Лидеры


Популярный контент

Показан контент с высокой репутацией 01.07.2019 во всех областях

  1. 1 балл
    Хочу поделится с вами своей библиотекой, которую использую практически в каждой программе с графическим интерфейсом. С ее помощью можно генерировать любые "окна" на свой вкус, работать с ними, а затем получать результат работы в обычном массиве. Cкачать библиотеку: pastebin get wtWVFpKZ lib/windows.lua Подробное описание основной функции и ее аргументов: Примеры работы с библиотекой:
  2. 1 балл
    До поры до времени я преспокойно себе использовал OpenOS'овскую библиотеку для запросов и горя не знал. Однако вскоре все больше и больше убеждался в необходимости написания более функционального аналога, устав чистить вилочкой множество однотипных "велосипедов". Основные преимущества библиотеки: Рекурсивная сериализация Lua-таблиц в формат URL-кодированной строки Обработка серверных ошибок по принципу "success, reason" без необходимости использовать pcall в каждой программе Возможность прямой загрузки файлов с сервера в указанную директорию Возможность исполнения файла по URL как Lua-программы Поддержка ручной почанковой обработки загружаемых данных Команда для загрузки: wget https://raw.githubusercontent.com/IgorTimofeev/OpenComputers/master/lib/web.lua /lib/web.lua -f web.serialize( string/table data ): string serializedData Преобразует входной аргумент в сериализованную строку, соответствующую спецификации HTTP-запросов. Помимо строк и чисел поддерживаются также таблицы с множеством вложенных таблиц: print( web.serialize({ string = "Hello world", number = 123, array = { arrayString = "Meow", arrayInArray = { arrayInArrayNumber = 456 } } }) ) Результат: web.encode( string data ): string encodedData Экранирует специальные символы, делая строку подходящей для осуществления запросов с множеством специфических данных: print( "http://buttex.ru/test.php?message=" .. web.encode( "Привет, как дела?" ) ) Результат: web.request( string url, [string/table postData, table headers] ): string result, string reason Всем знакомый запрос к указанной URL, возвращающий строковый ответ с сервера. При указании аргумента postData сервер получит соответствующие данные в POST-массив, а при указании headers он получит кастомные заголовки. Для примера я создал PHP-скрипт на домашнем сайте, возвращающий GET/POST-данные запроса, так мы сможем легко отслеживать успешность передачи содержимого: <?php echo("\nСодержимое 'GET':\n"); print_r($_GET); echo("\nСодержимое 'POST':\n"); print_r($_POST); ?> Если требуется осуществить обращение к серверу, принимающему исключительно GET-запросы, используем сериализацию данных для удобства и присоединим результат к исходной URL: local result = web.request( "http://buttex.ru/test.php?" .. web.serialize({ string = "Hello", number = 123 }) ) print(result) В результате сервер вернул переданные данные GET-запроса: Осуществим POST-запрос к скрипту, указав таблицу в качестве аргумента postData: local result = web.request( "http://buttex.ru/test.php", { string = "Hello", number = 123 } ) print(result) Теперь сервер вернул переданные данные POST-запроса: web.download( string url, string path ): boolean result, string reason Метод для загрузки файла по URL в указанную директорию. Возвращает true в случае успеха и false, reason в случае неудачи. К примеру, следующий код загрузит в корень диска программу "матрица": web.download("https://raw.githubusercontent.com/IgorTimofeev/OpenComputers/master/Screensavers/Matrix.lua", "/matrix.lua") web.run( string url, ... ): ... Крайне полезная фича для быстрого запуска файла в виде Lua-программы, в которую передаются все указанные через "..." аргументы. Возвращает данные скрипта в случае успеха и false, reason в случае неудачи. Для примера запустим все ту же "матрицу: print( web.run( "https://raw.githubusercontent.com/IgorTimofeev/OpenComputers/master/Screensavers/Matrix.lua" ) ) Результат: web.rawRequest( string url, string/table postData, table headers, function chunkHandler, [int chunkSize]): boolean result, string reason Напоследок метод, позволяющий осуществить ручную обработку загружаемых данных почанково. Для примера напишем программу, выдающую содержимое страницы vk.com через print() маленькими порциями по 20 символов. Разумеется, никаких postData и headers указывать не требуется: print( web.rawRequest( "https://vk.com/", nil, nil, function(chunk) print(chunk) end, 20 ) ) Результат:
  3. 1 балл
    Мало чего обновил почти за год. Память без значений выводится, 1024 чего? бита? байта? кб? мб? гб? энергию можно сжать (энергия: 1500 из 2000 (65%)) так же и с памятью работу устройства выводить в формате дн:чч:мм:сс так как вывод в секундах ни о чем не говорит после 120 секунд (тупо дальше лень считать) активные компоненты можно показать зачем адрес робота то? нигде не юзается. объем инвентаря можно рассчитать (активно 64 слота, доступно 10 (20%)) Можно было бы и получше сделать, если не лезет так прокрутку делай, на 2-3 страницы.
  4. 1 балл
    И всё таки за 6 месяцев и 9 дней я смог сделать скриншот заодно обновив до версии 2.1 (были баги с роботом)
  5. 1 балл
    Программа обновлена до версии 2.0! Скриншоты будут позже. Ссылка на 1.01 также в шапке
  6. 1 балл
    Хеллоу all, читающий этот comment. В русском языке too few слов для раскрытия этой темы, поэтому приходится заимствовать английские words. Возникли some вопросы: if compt.inventory_controller == nil then error("inventory_controller not found") endА разве component позволяет такой способ проверки? Насколько я помню, ошибка случится ещё на первой строке этого фрагмента. Для этого даже component.isAvailable придумали. Можешь пояснить, что обрабатывается в перехваченных proxy.dropIntoSlot и proxy.suckFromSlot? proxy.dropIntoSlot = function(facing, slot, count) if count == nil and self.isPotential(slot) then self.removePotentialSlot(slot) item.setSlot(slot, nil) else local item = self.getSlot(slot) if item.size == count then self.setSlot(slot, nil) else item.size = item.size - count end end return nativeDropIntoSlot(facing, slot, count) endКакой инвентарь анализируется в этом участке кода? Вряд ли инвентарь робота, т.к. номер слота в данном случае не имеет к нему отношения. И вряд ли какой-либо внешний инвентарь, т.к. не учитывается сторона, с которой находится инвентарь. А ещё интересно узнать, почему ты отказался от проверки count==nil и результатов, возвращаемых оригинальными proxy.dropIntoSlot и proxy.suckFromSlot. Разве такой отказ не может привести к рассинхронизации кэша?
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...