Перейти к содержанию

ECS

Гуру
  • Публикаций

    289
  • Зарегистрирован

  • Посещение

  • Победитель дней

    101

ECS стал победителем дня 30 марта

ECS имел наиболее популярный контент!

Репутация

1 548 Очень хороший

Информация

  • Пол
    Мужчина
  • Город
    Санкт-Петербург
  • Интересы
    Плавание, охота, туризм, кодинг

Контакты

  • Skype
    eliteclubsessions

Посетители профиля

1 925 просмотров профиля
  1. @MisterFunny01, так бы и сказал сразу. Ну чо, берешь либо готовую либу для отрисовки пикч, либо пишешь собственную. Далее создаешь пикчи либо в готовом пикчредакторе, либо в самописном, либо вообще по пиксельному массиву, создаваемому напрямую в коде. Далее получаешь список файлов из директории, фильтруешь расширения, и рисуешь пикчи. В чем проблема-то? Данный пример для готовой либы. Как обстоят дела конкретно в твоем случае - я хз. local filesystem = require("filesystem") local image = require("image") local gpu = require("component").gpu local directoryImage = image.load("/Papka.pic") local screenWidth, screenHeight = gpu.getResolution() -- Чистишь вилочкой экран gpu.setBackground(0x0) gpu.fill(1, 1, 160, 50, " ") local path, x, y = "/", 1, 1 -- Пробегаешься по списку дочерених файлов в указанной директории for file in filesystem.list(path) do -- Рисуешь иконку, если это директория if filesystem.isDirectory(path .. file) then image.draw(x, y, directoryImage) end -- Рисуешь текст с именем файла под иконкой gpu.setForeground(0xFFFFFF) gpu.set(x, y + 5, file) -- Определяешь координаты следующей иконки на экране x = x + 10 -- Смещаешься ниже, если иконка зашла слишком "вправо" if x + 10 >= screenWidth then x, y = 1, y + 5 end end
  2. @FelixBanan Дык это, а папки-то у него в каком виде вообще отображаются? Опеносовский ls? Или он хочет софтину для листинга с нуля написать? НиПаНЯяяТна
  3. Рили не понятно, о чем идет речь, прости. Что за папки, в какой софтине - в ls.lua или в какой-то иной? Что подразумевается под иконкой - однопиксельный значок или изображение?
  4. @Teen_Romance, замищательно! Держи тяночку. Она тоже искала идшники в таблицах, но что-то пошло не так...
  5. Ну как где? "pe4[stack.id]" - тут и сравнивает. Если таблица pe4 содержит элемент с ключом, эквивалентным значению поля id таблицы stack, то результатом будет значение элемента таблицы pe4 по требуемому ключу. Да, для того, чтобы ветвь if выполнилась, все условные элементы должны отличаться от nil. И нет, первая часть условия далеко не всегда будет истинна: если требуемый слот не содержит предметов, то переменная stack будет иметь значение nil. Для работы программы нужно банально пробежаться по всем слотам сундука, проверить, есть ли что-либо в слоте - и если есть, то проверить, является ли id предмета в слоте валидным (т.е. содержится ли он в таблице pe4). По крайней мере, я именно так понял условие задачи.
  6. Это просто более удобный и быстрый вариант проверки наличия id предмета из сундука в твоей таблице pe4. Можно, конечно, делать сие через цикл - но зачем? Ключом элемента таблицы может быть что угодно: хоть число, хоть строка, хоть функция, хоть таблица - это уж как тебе удобно. Просто если поле id у предмета - это "minecraft:cobblestone", то и таблица pe4 для корректного поиска должна выглядеть соответствующе: pe4 = { ["minecraft:cobblestone"] = true, ["minecraft:wood"] = true, } А конструкция "if stack and pe4[stack.id]" работает именно так, как ты и предположил - сначала проверяет наличие предмета в слоте, а затем уже сверяет id с твоей таблицей
  7. Мяу, ну написали же русским языком, что getStackInSlot(номер слота) возвращает таблицу с информацией о предмете, если таковой имеется в слоте - либо nil в том случае, если слот пустой, для чего и нужна проверка на "пустотность". Шаг 1. Получил инфу о предмете в слоте stack = getStackInSlot(i) Шаг 2. Убедился, что в слоте есть предмет if stack then Шаг 3. Обработал информацию о предмете в слоте так, как требуется. НЕ НУЖНО вызывать getStackInSlot() еще раз. Переменная stack уже хранит результат вызова getStackInSlot() if stack.id == 8 then Конкретно в твоем случае ошибка происходит по той причине, что getStackInSlot возвращает nil, а ты пытаешься получить поле от возвращаемых данных по ключу id - вот и получаешь ошибку attempt to index a nil value. Слот пустой, id не существует. Делай проверку разово - и работай с переменной stack. Также я не совсем понимаю, почему ты используешь два цикла for i = 1, 10 / for j = 1, 10, когда число предметов в ME-сети явно может превышать 100. Наверняка там должен иметься метод getInventorySize, или getItemCount, или еще какой-то схожий - используй его. И еще: для сравнения id предметов с таблицей pe4 также придется делать отдельную логику. Что-то наподобие: local pe4 = { [1] = "камушек", [8] = "доски" } ... stack = cry.getStackInSlot(i) if stack and pe4[stack.id] then print("рассматривается валидный предмет") end Кроме того, как заметил @Asior, мы понятия не имеем, что это за компонент такой под названием "crystal". Так что если выяснится, что информация о его stack'ах вообще не содержит никаких id, либо его id является строковым наподобие "minecraft:stone" - то тут уж ты сам виноват. ПоДуМоЙ
  8. @Teen_Romance, local stack for i = 1, 10 do stack = cry.getStackInSlot(i) if stack then -- Делай чо надобно end end
  9. @MisterFunny01, что значит "выделить только папки"? Ты же выше писал, что нужно отображение иконок вместе с именем файла, а теперь про выделение какое-то. Нипанятна! Но если что, папку от файла можно отличить через print(filesystem.isDirectory("/MyFile.lua")) > false А расширение файла можно получить через регулярку local name = "MyFile.lua" print(name:match("[^%/]+(%.[^%/]+)%/?$")) > .lua
  10. Приятное обновление для проводника: добавлен табличный режим отображения списка файлов со всеми вытекающими фичами. Как мне кажется, для небольших размеров окна этот вариант более практичен в плане удобства навигации
  11. @Sneeex Разве что отключить обои, это основная статья расходов оперативы: примерно под 200 Кбайт жрут в зависимости от графонистости. К примеру, у меня после их отключения оператива загружается лишь на 44%: Еще можно в настройках активировать выгрузку неиспользуемых библиотек и отключить отрисовку иконок приложений - тогда расход останется на ~30%. Ну, и еще можно поставить серверную стойку на 4 планки оперативы 3.5 уровня - тогда все уж точно будет в шоколаде
  12. @ProShow, спасибо, фиксанул. Увы, теперь это чисто майносовская прошивка с возможностью запуска опеноси - т.е. фича internet recovery будет ставить майнось вместо запуска скрипта по URL. Ну что ж... ¯\_(ツ)_/¯
  13. @MisterFunny01, если речь о майноси, то индивидуально для каждого файла - никак. Иконки можно кастомизировать у приложений, а потом уже назначать ассоциации расширений файлов для открытия выбранным приложением. Конкретнее - смотри содержимое приложухи MineCode IDE.app, там как раз добавлены кастомные иконки и контекстное меню для .cfg/.txt/.lua, да и вообще довольно очевидно все
  14. @redknowy, насчет туторов хз, а вот вики есть. Даже ссылка на нее в README репозитория валяется. Там тебе и интерфейс, и интеграция окон, и ваще все: https://github.com/IgorTimofeev/MineOS/wiki
  15. Тут на днях обновленная софтина Multiscreen в маркет затесалась - добавлена группировка по цветам для гораздо более быстрой отрисовки жирных пикч. Правда, чем жирнее пикча, тем дольше будет обрабатываться каждый моник, но и это уже заметный прогресс:
×
×
  • Создать...