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

Лидеры


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

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

  1. 8 баллов
  2. 5 баллов
    Просто сейчас лето, пора отпусков и пр. Не до майнкрафта пока) Просто сейчас осень, учёба началась и пр. Не до майнкрафта пока) Просто сейчас зима, праздники и пр. Не до майнкрафта пока) Просто сейчас весна, экзамены и пр. Не до майнкрафта пока)
  3. 2 балла
  4. 2 балла
    @BrightYC Нашел странный баг на 1.7.10, надо проверить фикс. Добавлен подсчет предметов после упаковки, теперь робот выгружает ресы не только при износе инструмента и подзарядке. Удивительно, но я пропустил самое главное.
  5. 2 балла
    Элементарно, причем в две строчки:
  6. 1 балл
    Если больше никакие значения таблицы не требуются, то можно так: grow = geolyzer.alanyze(sides.front).metadata
  7. 1 балл
    Пусть роботы сами начнут играть в майнкрафт, без контроля человека, как у Крутого.=d Пусть сами познают майн, а какой-нибудь один из роботов сделает такой же форум, где роботы будут ныть, что строить или копать больше нечего
  8. 1 балл
    Да, без аддонов будет очень сложно или даже невозможно. Но если потренироваться быть хакером, то многие стены превращаются в двери. В зависимости от настроенной дальности сенсора OpenPeripheral строим сеть сенсоров, расставленных чаще или реже. Рано или поздно в зоне покрытия заспавнятся нужные мобы. Подвести к мобу робота и ударить того каким-то предметом не проблема. Чтобы не строить сетку сенсоров объёмной, ровняем площадку для спавна мобов, полностью заполняя блоками пространство под площадкой, и полностью освобождая от блоков пространство над ней. Это задачу, наверное, можно и ванильными датчиками движения решить. Заспавнившиеся мобы обычно как-то двигаются, хотя и вяло, если не видят игрока. Робот умеет бросать око Края. А всё тот же сенсор OpenPeripheral умеет находить координаты любых предметов, и летящего к порталу ока тоже. Да, сенсор работает только стационарно при подсоединении к компьютеру, но робот способен передвинуть эту установку в любое положение и включить её. Средствами ванильного OC найти портал сложнее, но тоже можно. 1) Роботы-копальщики могут натолкнуться на неломаемые блоки, которые с большой вероятностью окажутся блоками портала Края. 2) Геосканер может обнаружить блоки с плотностью бедрока, но расположенные специцическим образом. 3) При непосредственном контакте геосканер точно определяет тип блока. 4) Око края с вероятностью 80% выпадает в ограниченной от броска области. Если заранее подготовить площадку достаточного размера, и после броска из центра роботом прососать всю площадку, то вместе с найденным глазом будет найдено и направление к порталу. Триангуляция поможет сэкономить время и ресурсы при поиске портала. Активировать портал тоже можно роботами. @BrightYC Ты у нас вроде любишь играться с дронами. Если не трудно, проверь, можно ли дроном пройти через портал в другое измерение. Робот, насколько я помню, пройти не может. Но мобы через порталы проходят. А как поведёт себя дрон? Если пройдёт дрон, то он пронесёт и робота. А дракона роботы могут даже из ванильных луков убить. Конечно, робот управляет стрельбой неполноценно в сравнении с игроком, но при желании можно просчитать все доступные роботу траектории полёта стрел. Даже если нет нормальных радаров, быстро и точно определяющих положение дракона, того можно просто заспамить вслепую стреляющими роботами. Пусть, они сами будут массово гибнуть, но Край они разберут на атомы, рано или поздно.
  9. 1 балл
    @ArtHacker ну, там короче при загрузке защищается список таблиц, куда входит и os , однако либа filesystem не полностью загружается при загрузке из-за package.delay, например файлик boot/02_os.lua содержит в самом конце строчку require("package").delay(os, "/lib/core/full_filesystem.lua") а файл boot/90_filesystem.lua эту require("package").delay(fs, "/lib/core/full_filesystem.lua") ну, а теперь как именно работает эта функция, после её использования устанавливается временная метатаблица, которая после первого обращения к любому индексу этой таблицы самоудаляется и запускает файл, который указан вторым аргументом. Проблема возникает из-за того, что таблица os защищается (т.е. скрипт, который запустит full_filesystem стирается до своего запуска), а filesystem нет. Фиксить эту проблему можно перед защитой искусственно обратиться к какому-то рандомному индексу проблемных таблиц, хотя, очевидно, что такой метод это дикий костыль, хоть и простой в реализации.
  10. 1 балл
    a = 'vasia,' print('hello '..a..' world')
  11. 1 балл
    Мало чего обновил почти за год. Память без значений выводится, 1024 чего? бита? байта? кб? мб? гб? энергию можно сжать (энергия: 1500 из 2000 (65%)) так же и с памятью работу устройства выводить в формате дн:чч:мм:сс так как вывод в секундах ни о чем не говорит после 120 секунд (тупо дальше лень считать) активные компоненты можно показать зачем адрес робота то? нигде не юзается. объем инвентаря можно рассчитать (активно 64 слота, доступно 10 (20%)) Можно было бы и получше сделать, если не лезет так прокрутку делай, на 2-3 страницы.
  12. 1 балл
    И всё таки за 6 месяцев и 9 дней я смог сделать скриншот заодно обновив до версии 2.1 (были баги с роботом)
  13. 1 балл
    Ну что я могу сказать спасибо большое
  14. 1 балл
    Упс. Файлик install пытается установить немного другое. Сделай тоже самое с другим файликом. Допустим: edit mineos.lua
  15. 1 балл
    require("component").eeprom.set([[ local handle, data, chunk = component.proxy(component.list("internet")()).request("https://raw.githubusercontent.com/IgorTimofeev/MineOS/master/Installer/Main.lua"), "" while true do chunk = handle.read(math.huge) if chunk then data = data .. chunk else break end end handle.close() load(data)() ]]) require("computer").shutdown(true) это установщик MineOS. открой файл командой edit install.lua вставь туда код, что я тебе скинул. Нажми CTRL+S и CTRL+W. Запусти файл написав install.lua Должно установить, по идее.
  16. 1 балл
    Ну, devfs в OpenOS уже давно есть. А это то же самое по своей сути. Если сделать таблицу, в которой заимплементить все функции прокси filesystem, её можно будет примонтировать и использовать.
  17. 1 балл
    По идее достаточно одной команды ln для ссылки на всю директорию /proc. Но зачем? Если я верно понял вопрос, цель заключается не в получении доступа к параметрам хостовой системы на Linux, а в том, чтобы сделать OpenOS ещё более похожей на Linux. Не понятно лишь, с какой целью. Дополнительная функциональность точно поднимет требования к оперативной памяти, но насколько оправданы эти траты?
  18. 1 балл
    Я конечно с линуксом на вы, но вроде там есть команда ln которая позволяет создать типа ссылку на оригинальный файл. Если циклом прогнать по всем папкам эту команду то думаю вы получите то что хотите. P.S. помидорами не кидать я реально с линуксом мало знаком.
  19. 1 балл
    Если ты пишешь свою ОС - ты пишешь и свой API к файловым системам. Ничего не мешает тебе сделать сколько угодно и каких угодно виртуальных ФС, или папок, или файлов. Для примера - тут где-то валялась программа, которая позволяла объединять жесткие диски в один, с тем чтобы обойти лимит на максимальный размер диска, и иметь возможность работать с файлами по 4+ мегабайт. Она как раз создает виртуальную ФС над стандартной. В реальности файл разбит на множество частей - а программы которые с ним работают этого не замечают. Так же этого файла в принципе может не существовать, и он может генериться системой на лету - и программы тоже не заметят. Короче не вижу препятствий.
  20. 1 балл
    Во первых, какой радар? Из computronics'a? Если так, то просто: local component = require("component") local redstone = component.redstone local radar = component.radar local whiteList = {"BrightYC"} --Вайтлист, он не будет проверять этих игроков. Второй и последующие игроки пишутся через запятую. Первый - нет. local sideOutput = 0 --Подробнее https://minecraft-ru.gamepedia.com/OpenComputers/Sides_API redstone.setOutput(sideOutput, 0) local function scanPlayers() local players = radar.getPlayers() for i = 1, #players do for j = 1, #whiteList do if players[i].name ~= whiteList[j] then return false else return true end end return false end end while true do if not scanPlayers() then --Если были найдены игроки redstone.setOutput(sideOutput, 15) --Подаём сигнал os.sleep(3) --Ждём 3 секунды redstone.setOutput(sideOutput, 0) --Убираем сигнал end os.sleep(.15)--Ожидаем 0.15 секунд для следующего сканирования end
  21. 1 балл
    Так же, после фикса пытался запустить, робот 2 раза написал "непреодолимое препятствие", оказалось что он чуть выше взлетел точки старта. Вот лог: Не могу понять, он ресурсы выгружает не на точке старта что-ли? Эндер-сундука нет.
  22. 1 балл
    Самое простое, что могу предложить это на каждый улей повесить по компьютеру с транспозером и анализатором. Будет очень избыточно, но можно бесконечно расширять и распараллеливать процесс селекции. Можно анализировать руками, складывать в общее хранилище, откуда они будут забираться для селекции. А вообще, это все довольно быстро делается руками - размножаются нужные породы, пачками скрещиваются, сортируются и размножаются заново.
  23. 1 балл
    По логу вижу, что робот пытается вернуться на базу, но постоянно останавливается для подзарядки. Уже исправил.
  24. 1 балл
    (проект в разработке) Цель данного проекта - создание нейросети и условий для ее самообучения. В идеале, это будет бомжовый робот минимальной комплектации (возможно даже без жесткого диска), который в зависимости от окружающих условий будет определять свою полезность. Также, он будет "программироваться" снаружи с помощью окружения оставленного другими роботами, формирующими "улей". Апогеем будет саморепликация. Кроме достижения цели, важен и процесс. Наблюдать за самообучением и выбором действий у нейросети очень интересно. Нейросеть изнутри: Мигающие точки - нейроны, линии - синапсы (связи), справа эмулятор мира майнкрафт на движке Love 2d. Нейросети устроены похожим образом. Есть входные значения, скрытые слои и выходные значения. В моей программе робот собирает информацию вокруг себя. На вход подается: Есть ли блоки над, под и перед ним Насколько много клеток он "разведовал" за последнее действие Его позиция в виде значений x,y,z от 0 до 1 Иногда я тестирую со значениями стороны куда он смотрит, возможностью двигаться, расстоянию до последней удачной копки Нейросеть "думает" и выдает 5 значений, которые соответствуют действиям движения 1) вперед, 2) вниз, 3) вверх, 4) вправо, 5) влево. Робот выполняет большее из этих значений. Далее, после действия, я вычисляю коэффициент полезности r [0..1] для этого действия. -- swingSucces: количество вскопанных блоков за действие [0..3] -- input.exploreSucces: коэффициент разведки [0..1], где 0 - уже разводовал все 3 блока, 1 - впервые проверил эти 3 блока -- logic(input.sweetsD < input.old.sweetsD): расстояние до последней удачной копки увеличилось 0, или уменьшилось 1 r = (swingSucces + input.exploreSucces + logic(input.sweetsD < input.old.sweetsD)) / 5 Нейросеь обучается, и в выбранное выходное значение приписывается r a остальные уменьшаются\увеличиваются на 1-r for i=1, #output do output[i] = switch i when actKey (output[i]+val^2)/2 when rndKey (output[i]+(1-val))/2 when oppositeKey (output[i]+(1-val))/4 else output[i] nn:propagate(output) Теперь матан. В начале я использовал обычный Персептрон, найденный готовый на ЛУА, но который мне пришлось править. Проблема в том, что он не может учитывать последние состояния. Нейросети с памятью называются "Long short-term memory" или LSTM, где каждый нейрон выглядит вот так: Найдя библиотеку synaptic.js, хитрыми путями я извлек из нее готовую LSTM сеть, которая получилась на 53 000 строк. Но это не проблема, если зайдет, я перепрограммирую ее на LUA. Текущее состояние сети - отстой. Я неправильно ее обучаю, так как не знаю какие значения выдавать для "обратного распространения ошибки". Круча разные коэффициенты, у меня получилось научить ее двигаться по спирали, как карьерный робот. Сейчас, когда я добавил во входные значения расстояние до последней удачной копки, он научился "кушать" как яблоко, но с огромный количеством лишних действий. В самом майне блоков намного больше и это выглядит вот так. На первом скрине работал 1 робот, на втором штук 6. Сейчас в их действиях слишком много шума. Я специально не даю им кирки, что бы они не унеслись в бесконечность. Фидбек Мне нужно помощь. Подскажите, что лучше подавать на вход, и как обучать сеть. Главная проблема, что для обучения я должен указать какие значения должны быть на выходах при текущих условиях, а я и сам не знаю. Обычно, робот теряется в пустом пространстве и я не знаю какое действие ему казать как "единственно правильное". А так, буду сюда отписываться и отчитываться о процессе разработки. Update 20.06.19, веб-версия эмулятора
  25. 1 балл
    Хочу поделится с вами своей библиотекой, которую использую практически в каждой программе с графическим интерфейсом. С ее помощью можно генерировать любые "окна" на свой вкус, работать с ними, а затем получать результат работы в обычном массиве. Cкачать библиотеку: pastebin get wtWVFpKZ lib/windows.lua Подробное описание основной функции и ее аргументов: Примеры работы с библиотекой:
  26. 1 балл
    Программа обновлена до версии 2.0! Скриншоты будут позже. Ссылка на 1.01 также в шапке
  27. 1 балл
    local fs = require("filesystem") local f = io.open("/tmp/time", "w") f:write("time") f:close() local timestamp = tonumber(string.sub(fs.lastModified("/tmp/time"), 1, 10)) + 3600 * 3 --Умножаем на часовой пояс, в моём случае GMT +3 local realtime = os.date("%d.%m.%Y %H:%M:%S", timestamp) --Реальное время в формате День.Месяц.Год Час:Минута:Секунда print(realtime) Зачем городить всякие сервера? Код выше позволяет получить время машины на котором играешь(Сервер или твой компьютер)
  28. 1 балл
    Добрый день, игроки. Давайте поговорим о энергетики OpenComputers, и почему улучшение ёмкости не нужно роботу. Вся дальнейшая информация взята из стандартных конфигов мода OpenComputers на версию майнкрафта 1.12.2 актуальной на текущий момент версии мода. Вот энергоёмкость робота: # The amount of energy robots can store in their internal buffer. robot=20000 Мало, не правда ли? А вот энергоёмкость улучшений "энергоёмкость" # The amount of energy a capacitor can store when installed as an # upgrade into a robot. batteryUpgrades=[ 10000, 15000, 20000 ] Видим, что третий уровень даст такой же прирост энергии как и базовая энергоёмкость робота Но это не предел. Есть кое что более крутое в плане предоставлении энергоёмкости. И мы рассмотрим характеристики улучшения "накопление опыта" для робота: # This is the amount of additional energy that fits into a robots # internal buffer for each level it gains. So with the default values, # at maximum level (30) a robot will have an internal buffer size of # two hundred thousand. bufferPerLevel=5000 Что же мы видим. За один уровень нам дают по 5000 энергоёмкости батареи. А с максимальным 30 уровнем у нас будет 150К энергоёмкости дополнительно. И давайте сравнивать. Улучшение "энергоёмкость" 3 уровня занимает в сборщике слот для улучшений 3 уровня, тратит 3 очка сложности сборки и даёт 20К энергоёмкости. Улучшение "накопление опыта" так же занимает в сборщике слот для улучшений 3 уровня, тратит 3 очка сложности сборки, но даёт при этом при 4 уровне накопленного опыта (а он у меня набрался очень быстро не сложной копалкой за 20 минут работы примерно) те же 20К энергоёмкости. А при максимальной прокачке все 150К энергоёмкости. И дополнительно к этому даются дополнительные бонусы описанные в тех же конфигах: Скорость добычи блоков: # The increase in block harvest speed a robot gains per level. The time # it takes to break a block is computed as actualTime * (1 - bonus). # For example at level 20, with a bonus of 0.4 instead of taking 0.3 # seconds to break a stone block with a diamond pick axe it only takes # 0.12 seconds. harvestSpeedBoostPerLevel=0.02 Видимо это опечатка и там имелся ввиду максимальный 30 уровень, а не 20, при котором скорость копки любых блоков в 2,5 раза быстрее стандартной. Вот это ускорение. Кроме того есть шанс не потерять прочность инструмента в зависимости от опыта робота: # The additional "efficiency" a robot gains in using tools with each # level. This basically increases the chances of a tool not losing # durability when used, relative to the base rate. So for example, a # robot with level 15 gets a 0.15 bonus, with the default damage rate # that would lead to a damage rate of 0.1 * (1 - 0.15) = 0.085. toolEfficiencyPerLevel=0.01 Честно говоря не совсем понял приведённый пример. Что вообще в нём происходит. Но у вас есть шанс на то, что предмет не потеряет прочность в руке робота. И это всё даёт одно улучшение. Ещё и ставит условие. Попробуй набрать все 30 уровней и тогда получишь максимальные бонусы. И вот после всей этой вырытой недавно инфы я вдруг натыкаюсь на форуме на вот эту тему http://computercraft.ru/blog/51/entry-602-tcitadel-%E2%84%960/ Смотрю скрины... Боже, как много улучшений ёмкости. Зачем? Поставь улучшение опыта и получишь себе крутого робота. Кстати, скажу больше, есть ещё и лайфхаки с блоками конденсаторов о которых многие вроде меня могли не знать. Интересно? Давайте взглянем в конфиги: # The amount of energy a single capacitor can store. capacitor=1600 # The amount of bonus energy a capacitor can store for each other # capacitor it shares a face with. This bonus applies to both of the # involved capacitors. It reaches a total of two blocks, where the # bonus is halved for the second neighbor. So three capacitors in a # row will give a total of 8.8k storage with default values: # (1.6 + 0.8 + 0.4)k + (0.8 + 1.6 + 0.8)k + (0.4 + 0.8 + 1.6)k capacitorAdjacencyBonus=800 Стандартная вместительность 1600, но есть бонус от соседних блоков накопителей. И как показано в примере три аккумулятора в ряд дают энергоёмкость 8.8К вместо 4.8 без бонусов. Почти в два раза энергоёмкость возросла для этого примера. Возможно кто-то знал, но для меня это вообще открытие. Ещё один лайфхак с энергией в том, что можно улучшения ёмкости для робота заряжать отдельно как предмет в заряднике, но заряжаться они будут долго. Намного быстрее они это делают в роботах. Если конечно у вас установлены слоты под улучшения в роботе. Хотя актуальность этих улучшений минимальна. Лучше робота забить действительно полезными улучшениями вместо энергоёмкости.
  29. 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. Разве такой отказ не может привести к рассинхронизации кэша?
  30. 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 ) ) Результат:
  31. 1 балл
    Немного перемудрил с переменными, смотрите как сразу перекосило ее
  32. 1 балл
    Скептики говорят, что это связано только с низкой популярностью Линукса. А вот, когда пользователи, купившись на ложные обещания защищенности, массово пересядут на Линукс, то непременно начнут работать из-под рута. Вирусописатели, почуяв вкус свежей крови, тут же завалят сеть своими творениями, а тогда уже и хваленые *nix-сервера тоже попадают. Вот, тогда и вспомнит мир Билла Гейтса с его великим творением. OpenOS еще можно спасти. Но для этого надо не антивирусы писать, а постепенно пересаживать игроков на Таум. В нем вирусов нет, только порча.
  33. 1 балл
  34. 1 балл
    Представьте, что вы написали программу, и вам нужно, чтобы некоторые настройки этой программы сохранялись на диск и считывались, да так, чтобы сам файл настроек был читаем, содержал комментарии, легко редактируем с помощью текстовых редакторов и сохранял целостность самого файла после перезаписи (не путал строки). Всё выше перечисленное я добавил в эту небольшую библиотеку, и честно сказать результатом доволен. Скачать можно коммандой с pastebin: pastebin get qDRfwGX3 /libs/settings.lua Функции Формат файла Методы Свойства Операторы (взаимодействие) Пример использования Старые версии (вдруг кому надо...) Библиотека ещё будет дорабатываться, в соответствии с вашими пожеланиями. Надеюсь оцените .
  35. 1 балл
    Вот и правильно, библиотек хоть жопой жуй, а игр - раз, два и обчелся. Нужно больше игр!
  36. 1 балл
    Хочу поделиться с вами крайне полезной в быту библитекой, которую мы с товарищами используем повсеместно. Она позволяет работать с несколькими цветовыми моделями: стандартной RGB, более современной HSB, преобразовывать их в HEX-цвет для OpenComputers и наоборот. Кроме того, она позволяет сжимать 24-битный цвет вида 0xFFFFFF до 8-битного вида 0xFF без потери качества. Команда для загрузки: wget https://raw.githubusercontent.com/IgorTimofeev/OpenComputers/master/lib/colorlib.lua lib/colorlib.lua -f Методы
  37. 1 балл
    Простая программа, дающая возможность наглядно управлять файлами, которые будут поставлены в очередь автозагрузки при включении компьютера. Команда для скачивания: pastebin run Tg2YLrcc Пример выполнения скриптов: Структура файла autorun.lua:
  38. 0 баллов
  39. 0 баллов
    В OpenOS такое сплошь да рядом, виртуальные устройства, API компонентов, все в виде файлов.
  40. 0 баллов
    Помню мод был Modular Powersuits с упоротой бронью, так вот её видимость можно было отключать. вспомнил ИТ и аж прослезился, ох были времена.
  41. 0 баллов
    А вообще нахрена писать свою ОС, есть же MineOS
  42. 0 баллов
    Не, чует мое чутье, что не будет. Да и по себе знаю, если сразу не засел, фиг потом себя заставишь вернуться к начатому. Скорее всего продолжение мы узнаем через пол-года/год, приблизительно такова среднестатистическая переодичность возврата к старым идеям и проектам. Ну или чаще, если кто-то постоянно дает пинка
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...