Pofigist
-
Публикации
53 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные пользователем Pofigist
-
-
А зачем нужна очистка?Очистка term.clear() просто очищает экран и возвращает курсор в самое начало(Верхний левый угол).
Кстати, я все же открыл твою программу. Было бы не плохо называть функции не rep, fin и т.д. а полностью, типа final и т.д. Еще еще встречный вопрос. Зачем создавать переменную, аля height и потом присваивать ее схожей переменной(heightC)? :/
-
Про отступы да, это я знаю.
А зачем нужна очистка?
Локальные переменные да, тоже понимаю
А т.е не писать в ручную то что помещается в цикл?
В смысле не так:
for i=1, 3 do r.forward()
end
r.turnLeft()
for i=1, 3 do r.forward()
end
r.turnLeft
а так?
for i=1, 2 do
for i=1, 3 do r.forward()
r.turnLeft()
end
Да, это значительно удобнее. Символы тоже место в памяти занимают и чем их меньше тем лучше, особенно когда это не влияет на читаемость кода. И раз уж говорим о читаемости, то после do идет перенос строки.
for i=1, 3 do for i=1, 3 do r.forward() end r.turnLeft() endПлюс я немного подправил пример. Тебе ведь, я так понимаю, нужно чтобы робот сделал три шага вперед, а потом повернул влево?
-
По поводу энергии. Возвращает количество энергии.
- computer.energy(): number
Ну и вот для получения максимального количества возможной энергии.
- computer.maxEnergy(): number
Далее. По поводу износа предметов. Нужен "Апдейт - контроллер инвентаря". Название компонента - inventory_controller
А вот эта функция возвращает данные о выбранном слоте
- getStackInInternalSlot(slot:number):table
Возвращается таблица с данными о предмете. Не помню какие именно данные, но метаданные(износ) там точно есть. Разбирайся, короче

-
Особо не разбирался в коде, но знаю как его улучшить.
У тебя есть такие строки:
function buffer.Start() buffer.width, buffer.height = gpu.getResolution() buffer.current = {} buffer.new = {} for y = 1, buffer.height do for x = 1, buffer.width do table.insert(buffer.current, 0x000000) table.insert(buffer.current, 0xFFFFFF) table.insert(buffer.current, " ") table.insert(buffer.new, 0x000000) table.insert(buffer.new, 0xFFFFFF) table.insert(buffer.new, " ") end end endПредлагаю их заменить на:
function buffer.Start() buffer.width, buffer.height = gpu.getResolution() buffer.current = {} buffer.new = {} for y = 1, buffer.height do for x = 1, buffer.width do buffer.current.bac = 0x000000 buffer.current.for = 0xFFFFFF) buffer.current.text = " " --здесь находятся 2 символа. Не знаю по чему у тебя другой к этому подход. end end endРазбираться полностью в коде нет желания, так что извини.
Но о боже, что это?
local function CoordToIndex(x, y) return (buffer.width*(y-1)+x)*3-2 end
Неужели нельзя нормально пользоваться таблицей? Хранить данные вот так:
table = { for = 0x000000, bac = 0x000000, text = "qwertyMAN - красавчег", Gagarin = "Как вы там друзья, празднуете 12 апреля?", new_table = { text = "Это таблица в таблице", msg = "Гравитация - сила", pi = 3,1415, black_matter = "бесконечность не предел" } }Но нет, ты решил на костылях использовать индексную таблицу. Нехорошо так. Иди и читай гайды о таблицах в lua. Тебе же самому будет проще программировать тогда.
По сути у меня и была первая версия где цветам и символам была выделена отдельная таблица. Но посмотрев на одного человека(кого же?!
), я все же решил использовать его метод. Банально потому что Я все же думаю, что одна таблица будет меньше чем 3 таблицы в одной. Тем более что количество данных от этого не уменьшится. -
Проблема была решена. Ошибка закралась там где ее не ждали. Я почему-то использовал параметр высоты для преобразования координат в индекс. Хоть исправление проблемы и не говорит мне о том, почему в отрисовке появлялись клоны, но теперь меня это уже не слишком интересует. Кто ломал голову над моей проблемой(а такие врятли есть - извиняйте за мою тупость).
-
Когда редактируешь библиотеку, перезагружай комп. Иначе не узнаешь исправил ошибку или нет.
Я знаю... Уже был сие опыт.
-
Все доброго времени суток. Собственно решил я заняться созданием велосипеда. Посмотрел коды одного (совсем-совсем) не известного человека и... начал писать свою либу. И все ничего... 78 строк кода написанные одним махом и не единой ошибки! Для меня это рекорд, но вот только сама программка работает как-то... Как-то не так. Проблема заключается в том, что почему-то отрисовываются копии... С объяснением тут будет сложненько потому лучше сразу скрины и саму либу.
github: https://github.com/VladimirPruskalyow/OpenPrograms/blob/master/Library/DBuffer.lua
По поводу: "Да эта либа будет сто лет отрисовывать!!1" - Я знаю, меня сейчас беспокоит не быстродействие а корректная работа.
А вот это я запускал для проверки самой либы...
local buffer = require("DBuffer") buffer.Start() buffer.Square(5, 5, 10, 20, 0xFF00FF, 0xFF0000, "S") buffer.Draw() local a, b, c = buffer.Get(56, 10) io.write(a, "\n", b, "\n", c)Так же стоит отметить, что функция Get проверяет пиксель не того прямоугольника который задан, а (хз откуда взявшегося) клона. Еще я проверял Get'ом buffer.new, и там тоже обнаруживался этот прямоугольник. Соответственно проблема в записи фигуры в буфер?! Но хоть убейте, я не понимаю откуда в 9 строках кода сидит ошибка. И... еще один пунктик. Отрисовка одного пикселя данной в либе функции Set дает такой же эффект: нужный пиксель+3 клона.
P.S. Скрин сделан в Эмуляторе OC, но и в обычном майнкрафте все так же.
P.S.S. Покорно прошу вашей помощи, потому что сам, хоть убейте, ошибки не вижу...
-
Надо все методы которые должна предоставлять библиотека возвратить через return. А еще убрать вторую строку. Она преждевременно просто останавливает интерпретацию кода библиотеки
Паника! Как вернуть метод?

-
Библиотека не возвращает методы
А по подробнее?

-
local PIF = require("PIF") io.write("Введите путь к файлу: ") local path = io.read() local pic = PIF.inTable(path) io.write(pic[1][1], pic[1][2], pic[1][3], pic[1][4]) io.write(pic[2][1], pic[2][2], pic[2][3], pic[2][4]) io.write(pic[3][1], pic[3][2], pic[3][3], pic[3][4]) io.write(pic[4][1], pic[4][2], pic[4][3], pic[4][4])Обращается к библиотеке. А сама она - вот http://pastebin.com/UcPmkWPj
-
Собственно занялся я одной фуфней и встретился с ошибкой которую вообще не понимаю...
Функция принимает путь к файлу и читает его. Начиная с шестого бита происходит запись в двухмерную таблицу. Эту же таблицу функция возвращает... Должна возвращать. Ошибка и сама функция в скриншотах. Возможно я тупой - не серчайте.
-
Зайди в папку lib при помощи команды cd lib и посмотри код набрав edit color.lua
Можешь также в этой папке набрать ls, чтобы посмотреть список других библиотек
И в следующий раз изучи повнимательнее компоненты OpenOS - много чего интересного найдёшь просто от прогулки по системным файлам.
P.S. Насколько я знаю, понятия "двухсторонние таблицы" не существует. Бывают двухмерные, трёхмерные и прочие таблицы, но двухсторонних как то не встречал.
И да, там не две таблицы, а одна. Библиотека возвращает лишь 1 таблицу color
И все равно мне не ясны for в этой либе, особенно второй. Что за for _, k.... "_" - что это?
Плюс если я использую таблицу где кейсы простые цифры, а значения - шестнадцатиричные 0x000000 и т.д. Все равно работать будет?

-
Ходил я по стандартным API OC и нашел либу colors. Там можно обратиться к таблице colors.red и получить ее значение и наоборот - ввести colors[14] и получить red. Хотелось бы узнать как такое осуществляется. Не тупо же две таблицы одна из которых инверсированная по ключам и значениям первой.
-
Взяв виндосовский пэинт и сделав пару скринов, могу сказать что примерно у монитора 2 уровня шаг составляет 0x33. Например цвета 0x6633cc 0xff0099 и подобные.
Ммм... Это не так уж и много. Примерно 256 цветов :/ Ну что же... Время составлять визуальную составляющую замка XD
-
0x000000 — это число в 16-ричной системе счисления. Начинается обязательно с 0x и должен состоять из символов 0123456789abcdefABCDEF.
Очень полезное применение — это цвета, так как True-color имеет ровно 16777216 цветов (24 бита), а это есть 166. Символов в 16-ричной системе счисления как раз 16. Потому используется формат RRGGBB, где RR — красный, GG — зелёный, BB — синий. Например, мой любимый цвет 0x20afff.
Но в OC же поддерживается глубина цвета 8 байт. То-есть для местных мониторов гораздо меньше цветов? Как тогда определить какие поддерживаются а какие нет? (Понятно, что система будет "округлять" цвет до нужного, но все же хотелось бы узнать какие именно используются и их количество.
-
У меня есть основания полагать что это была твоя прога, которая была на компе у игроков, так как там было 3 пароля: Для админа и ещё 2.
В целом очень похоже на твою прогу. Тоже открывает двери, причём у игроков было 2 двери. И кажется 2 пароля как раз открывали эти двери по отдельности. Либо я ошибаюсь и третий пароль просто выходил из проги. Уже и не помню.
Как взломал не скажу, в какой то степени потому что не помню. Но факт в том что на Ctrl+Alt+C закрыть прогу нельзя было и вызывалось сообщение об этом на компе.
Насчёт конфигов, зачем тебе их записывать куда то? Это лишнее. Просто храни в программе всё что нужно как я показал. Так будет и проще и лучше. Я всегда в своих прогах сначала прогружаю библиотеки, потом задаю переменные, и лишь потом пишу функции. И всё что хранится в переменных у меня хранится именно в верхней части кода что очень удобно. Если вдруг кто захочет изменить параметры - сможет легко их изменить, не гуляя по коду в поисках где эта переменная была присвоена (как у тебя происходит с паролем). Так что старайся все важные переменные (которые игроки могут захотеть изменить) прописывать вначале кода. Так будет реально лучше.
Ты говоришь про лень, мне кажется это отмазка. Использовать 1 и 0 вместо true и false - это плохая привычка. У всех кто более менее разбирается в lua или другом языке программирования, глаз режет подобный подход. Будешь учиться писать правильно - будешь привыкать. Привыкнешь к использованию всех типов данных по назначению - будет намного проще и удобнее программировать. Я вон за 3 часа 150 строк кода написал - в итоге рабочий кликер в майнкрафте. Для меня это уже достижение в скорости, но и это не предел.
Вот тебе совет. Бери чужой код и разбирайся. В оптимизации это сильно помогает. А без оптимизации обучение стоит на месте. Тут один игрок мне подсказал как круто использовать оператор %, теперь я с радостью его использую там где мог бы быть костыль. Чужой код рулит.
По поводу конфига. Мне просто как-то привычнее, чтобы настройки находились отдельно от всего кода. Чтоб не было лишнего повода залезать в саму программу. Так же в будущем, подобно ECS, планирую свою граф. оболочку скрутить, а там уже конфиги понадобятся. Но пока что это все в планах. На деле же изучаю чтение и запись из файла.
Кстати, есть ли какая-нибудь информация о 0x000000 формате цвета. Я конечно покопался в твоей библиотеке conv, но хотелось бы и из источника вычитать.
-
Это случайно не тот замок что 2-3 месяца назад я взломал и поменял пароли? Там ещё 2 игрока жили в доме.
И заприватил тоже я, если речь идёт про тот самый комп.
Нет, это был не мой замок

По поводу здравой критики: Я знаю про булевые переменные, но просто было лень. Мой способ чтения конфига был тем хорош, что мог прочитать любое кол-во строк и при этом все равно состоять тупо из трех строчек, но раз уж это быдлокод - новая версия! Кстати интересно было бы узнать, как такой замок можно взломать XD
-
Программа тестировалась на вырубание?
pcall точно спасает от Ctrl+Alt+C / Ctrl + D / Ctrl + C? Помню что-то писал, и не спасало.
Да, спасает. Во всяком случае в моей программе

-
Всем привет.
Я, собственно, новичок в сфере программирования и потому выкладываю свою первую программу, коих вариации наверное дофигульки много. Просьба строго оценивать саму работоспособность программы. Поехали!
Lock.lua - программа блокирующая ваш компьютер и защищающая от чужих ручонок. Ctrl+Alt+C тут не поможет. И только перезапуск кнопкой в самом системнике спасет ситуацию если вы не знаете пароля. Программа способна реагировать на события, такие как: ввод верного пароля и ввод неверного пароля - при этом она может подавать редстоун-сигнал или беспроводное сетевое сообщение(см. Конфиг)
Системные требования:
●Процессор (1 уровень)
●Видеокарта (1 уровень)
●ОЗУ (1 уровень)
●Жесткий диск (1 уровень)
●Интернет карта(для загрузки)
Дополнительно:
●Плата на красном камне
●Плата беспроводной сети
Функционал:
1)Подает редстоун-сигнал на указанную в конфиге сторону при верно-введенном пароле.
2)Подает редстоун-сигнал на указанную в конфиге сторону при неверном пароле.
3)Вещает сигнал "LockSignal" и последующие:
"True_Pass", если был введен правильный пароль.
"Bad_Pass", если был введен неправильный пароль.
"Error", если вдруг что
Конфиг(etc/Lock.cfg):
Конфиг настроек достаточно прост. Ниже перечислены описания строк и их возможные значения.
password=1234 - основной пароль. Теперь может состоять только из цифр!
adminPass=228228 - админский пароль состоящий из цифр. На данный момент нужен лишь на тот случай, когда основной был забыт.
sound=true - включает звуковые оповещения, если стоит true.
redstone=true - Если стоит true, то в системе должна быть плата на красном камне.
RedCorr=3 - работает лишь если redstone=true и подает сигнал на сторону 3, если был введен правильный пароль.
RedIncor=2 -работает лишь если redstone=true и подает сигнал на сторону 2, если был введен неправильный пароль.
network=false - При true в системе нужна беспроводная сетевая плата для корректной работы.
port=512 - номер порта на который будут распространяться сигналы от программы.
Стороны и их числовые эквиваленты(для RedCorr и RedIncor):
Низ - 0
Верх - 1
Тыл - 2
Перед - 3
Право - 4
Лево - 5
Установка:
Простая загрузочка с пастебина.
pastebin get -f zitiaarN Lock.lua
Сам код: http://pastebin.com/zitiaarN
В будущем планируется значительная доработка данной программы, но так как сейчас она уже выполняет свою основную задачу - выкладываю в общий доступ.
Версии:
1.0 - основа основ.
1.1 - исправлен ошибка, когда первый запуск заканчивался ошибкой, так как создавался файл конфига.
1.2 - более читабельный конфиг.
1.3 - добавлены звуковые оповещения при вводе верного и неверного пароля.
P.S. Не вижу особого смысла в скриншотах, так как пока что используется стандартный консольный вывод(Графодрочеры, пока что вас удовлетворить не смогу. :с )

Базовые библиотеки OpenOS+init.lua+BIOS
в Разные (отсортировать)
Опубликовано:
Лазил я по стандартным либам OpenOS и понял, что ничего не понимаю. К примеру:
component.list("screen")()Зачем тут вторые скобки? :/
Но вообще вопрос вот в чем. Сталкивались ли вы с подробным описанием базовых либ OpenOS, пусть даже на английском. Хотелось бы подробненько прочитать.