Перейти к публикации

В ближайшее время постараюсь разобраться с картой сервера/ЛК/бб кодами

Внимание, с 14 февраля до 20 февраля могут проходить работы на сервере, где также находится лаунчсервер. В связи с этим авторизация в лаунчере может не работать

Pofigist

Пользователи
  • Публикации

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

  • Посещение

Все публикации пользователя Pofigist

  1. Не думайте, что я буквально за день написал три библиотеки и вполне рабочий проводник. Это не так. Создание PafOS началось еще недели две-три назад, но учитывая мою лень, реально, на создание того, что я сейчас имею было потрачено от силы 4 часа. Итак: На данный момент моя супер-пупер никому не нужная графическая оболочка называется test.lua и запускается из консоли, как и все программы. Запуск через init? До всего этого мне еще далеко, как и до превращения граф оболочки в полноценную ОС. Да и плохо я понимаю, что из себя она представляет. Операционная Система эта та для которой все базовые библиотеки написаны отдельно? Или та, которая запускается через BIOS? Лично для меня этот вопрос остается загадкой. Но может кто-то может дать ответ, к которому я в будущем буду стремиться. Что же я успел сделать за эти недели? Была слизана создана графическая библиотека. Она основана на двойной буферизации и пока что умеет лишь отображать прямоугольники, картинки и текст, но мне хватает. Быстродействием моя либа похвастать тоже не может, она не анализирует стоящие в ряд одинаковые пиксели и не отображает их разом, но во всяком случае она и не меняет цвет при отображении нового пикселя даже если в системе уже установлен этот цвет. Но я все равно оценю мою либу на суровую двоечку из пяти баллов. На скрине вы можете увидеть итог моей текущей работы - создание полноценного проводника. Безусловно я не прописывал через gpu.set каждый пиксель моего изображения: для картинок была создана отдельная библиотека. Соответственно есть и отдельный формат изображения - PIF(Pofigist Image Format). Особенность или нет - судить вам, но на один пиксель в моем формате уходит всего 2 байта, а на полупиксель - 1 байт, соответственно. На данный момент я не вижу смысла в использовании символов в формате картинок, но если он и будет реализован - это будет новый формат. PIF спокойно поддерживает картинку 160x50, чего достаточно для обычных программ. PIF поддерживает прозрачность, но на это уходит какой либо цвет. Если все 256 цветов используются в изображении то будут определенные проблемы, но на данный момент я доволен форматом. Как можно заметить названия файлов пока что не умещаются и потому написаны далеко не полностью. На данный момент я пока что, скорее всего, просто буду обрезать разрешение, чтобы освободить 4 места для символов. Вы удивитесь, но кроме того как посмотреть на содержимое текущей папки программа так же позволяет перейти в другую папку или вернуться на шаг назад!!1 Ву-упс, кажется что-то пошло не так... Если файлов в папке слишком много некоторые из них могут не отображаться. Ну как некоторые... большинство. Причем все контролируется волей рандома и открыв и закрыв папку пару раз можно убедиться, что неотображаемые файлы меняются... Я долго думал над тем, почему так происходит. На ум пришла идея с проблемой функции Draw, которая вырисовывает изображение, но это мысль была ошибочной. Мною был найден небольшой баг... если не закрывать чтение какого-либо файла и потом вновь его открывать для нового чтения файловая система может разозлиться и послать тебя в Эндер мир. На данный же момент проблема уже решена. file:close() победил баг и все отображается так как надо. Что же мы в итоге имеем? Убогие иконки с разрешением 10x10, кривое отображение имен файлов. Невозможность сделать ничего, кроме как открыть папку или уйти на шаг назад; отсутствие объекта той или иной иконки(системно лишь визуально отображается иконка и создается кликабельная область в ее границах(И я считаю это преимуществом)). И... пафосное название недо-операционки PafOS, которая изначально должна была называться PofOS от моего ника, но пафос все же круче Теперь пара вопросов от нубика: Какая библиотека java(а лучше С#/C++) позволит мне открыть изображение, прочитать изображение по байтам? И есть ли документация по структуре PNG файла? P.S. На вопросы можно не отвечать, а просто оставить мнение о моей разработке Прямых рук Вам, Господа.
  2. file:flush в обычной записи файлов, насколько я знаю - не требуется. file:write и так все записывает.
  3. 1. local file = io.open("<путь к файлу>", "<мод>") - моды: "w" запись файла, "r" - чтение файла, "a" -дозапись в конец. Нам нужно "w" 2. file:write("<текст>") - функция записывающая в файл то что тебе надо. Для чтения используется функция file:read() Подробнее http://www.lua.ru/doc/5.7.html и тут http://minecraft-ru.gamepedia.com/OpenComputers/Filesystem_API (внизу страницы)
  4. Без использования библиотек я вижу это так: 1. Создается буфер текста, который ты выводишь. 2. Есть переменные отвечающие за то, какая строка отображается самой верхней. 3. При нажатии кнопок, перемещении ползунка эта переменная изменяется, полностью меняя то, какая часть массива отображается.
  5. Сейчас не совсем уверен, но на сколько я знаю arg3 может быть "t", "b" или "tb". Этот аргумент указывает на то, читать ли функцию если она представлена как текст или как байт код или и то и то. Но не уверен. P.S. Чтение байткода нужно разрешать в конфиге.
  6. Я лишь ответил на вопрос, что можно придумать с несколькими адаптерами. Конечно я понимаю, что не всем дано понимать сарказм, но стоит быть чуточку добрее что ли. Вообще любое зашифрованное сообщение можно расшифровать, но если один голубь будет быстр, второй - увертлив, а третий будет лететь очень высоко -- согласись, гораздо труднее подбить их всех.
  7. Так ничто не мешает, но зато это типа - реализм. В жизни же вафля не способна передать данные на определенную антенну. А то что есть мод для шифрования, не мешает брать и придумывать свое.
  8. 2. Ну мы же не знаем что это за программа там. К примеру один модем сервера передает на компьютер адрес того модема, который будет "обслуживать" этот компьютер и компьютер начинает игнорировать сигналы от любых других модемов. Так можно обеспечить безопасность работы программы, не используя связанных карт или send'а. Чем не своеобразный метод безопасности? По поводу третьего мне долго описывать. Я не про кодер, да и шифрованием не увлекаюсь, но думаю, что передавая шифрованное послание кусками, через разные модемы, которые будут расшифровываться исходя из адресов модемов, что послали данные - не плохая идея.
  9. Значит нужны определенные адреса. Или например симуляция на сервере работы нескольких пк. Вариантов много. Я бы например использовал несколько модемов для супер-пупер системы шифрования.
  10. Меньше думать Для кого-то for ... in ... do - сложна
  11. А теперь нормальный способ получения прокси под все модемы. local modem = {} --запись всех модемов в таблицу. Можно использовать modem[1-4] для работы for address, compType in component.list("modem") do table.insert(modem, component.proxy(address)) end --Упрощение, перевод четырех модемов в отдельную переменную. Теперь можно писать просто modem1, modem 3 и т.д. local modem1, modem2, modem3, modem4 = table.unpack(modem)
  12. require("component").<component> возвращает прокси основного компонента. Чтобы использовать компонент нам нужен его прокси. Чтобы использовать 4 модема нам нужно получить 4 прокси под каждый из них. Тут то require и помогает. Это конечно не идеальный вариант, но при этом он рабочий и простой для новичка. comp.setPrimary("modem", "xx1") modem1 = require("component").modem comp.setPrimary("modem", "xx2") modem2 = require("component").modem comp.setPrimary("modem", "xx3") modem3 = require("component").modem comp.setPrimary("modem", "xx4") modem4 = require("component").modem --Получили 4 прокси и теперь можем использовать разные модемы. modem4.send("xx2","Hello") --Тут мы получаем сообщение на свой же компьютер но уже со второго модема.
  13. Потому что require("component").modem как раз таки и получает прокси компонента. Просто прописывай require после setPrimary и будет тебе счастье. Соответственно, если есть желание использовать несколько модемов сразу то нужно несколько require, но проще будет разобраться с прокси. Если нужно могу помочь.
  14. А что мешает устанавливать главный компонент в самой программе?
  15. - библиотеку os не нужно подключать(эту строку можно удалить) - не знаю есть ли такая команда в os, но она точно есть в computer и так или иначе должна заканчиваться скобками.
  16. На gamepedi'и по моему все четко сказано Запускает HTTP запрос по заданному URL с заданными POST данными (если есть). Ответ обрабатывается как http_response сигнал. Возможно использование вместо нее "обертки" с итератором internet.request Если уж не знаешь что такое HTTP и POST данные то тут уже гуглоид в помощь.
  17. А чем SDK отличается от текстового редактора? Функциональностью и не более. Берешь базовый Виндосовский блокнот, суешь в него всяких наворотов под кодинг и SDK готова. Опять таки если очень серьезно и программа запускается в отдельной среде и т.д. То тут конечно сложнее. Но, опять таки, я не думаю, что нужно будет смотреть на работу программы и попутно что-то редактировать. Так или иначе, ОС твоя и тебе решать что в ней делать. Считаешь нужным многопоточность - на здоровье. Но до этого нужно решить еще кучу других вопросов и создать хотя бы базу. Собственная ОСь особенно в таких масштабах о которых ты говоришь, достаточно большая, может пока лучше стоит ставить более простые цели? Небольшой редактор, поддержка нескольких дисков/мониторов и т.д.?
  18. Я вот в начале как-то не подумал а сейчас согласен с Квантом. Простая реализация открытия в одной программе нескольких файлов решит проблему и многопоточности не понадобится. Я вижу это так: нажимаем "+" открывается новая вкладка, на ней мы открываем файл и вуаля... два файла открыты.
  19. Ну так да. Если следовать реализму, то многопоточность нужна, но в реале ты врятли встретишь людей которые будут кодить прямо в майнкрафте. Твое дело - так или иначе.
  20. Я сам сейчас занимаюсь подобным. Точнее занимался. Будет настроение - продолжу. Идея сама по себе очень интересная, но и не менее сложная. Сразу хочу сказать, что eeprom трогать не стоит. Он запускает init.lua и этого вполне достаточно, а изменение БИОСа под свою систему - я в этом не вижу смысла. Да и описывать что и как должно быть я тоже не вижу смысла. Все должно приходить по ходу дела. У тебя есть два компа: один с дискетой OpenOS, чтобы форматировать пустой диск; второй - абсолютно чистый комп с видеокартой. Вставил диск в комп, записал нужные файлы, перекинул диск в тестовый ПК и запустил... Процесс немного подбешивает но так и должно быть. По пути тебя ждет много проблем, аля отсутствие loadfile, dofile, require - и все это придется исправлять самому. Иди поэтапно. Как ты видишь себе запуск своей системы? Красивое окошко приветствия? Ну так создай все, чтобы при запуске это окошко появилось. Дальше идет рабочий стол? Вперед и с песней - создавать свой Desktop. В многопоточности же я смысла не вижу. Оперативки в местных компах не так много, да и зачем тебе открывать сразу несколько программ? Разве что какой-то контроллер дома, который следит за всем и вся... В итоге я хочу сказать, что не вижу смысла расписывать свою "стратегию" создания ОС. Если у тебя достаточно времени и нервов - твори. Я далеко не профи программирования, но даже у меня постепенно идет продвижение, когда я не ленюсь. Если хочешь, можем списаться в Вк, например, могу поделиться каким-то базовым опытом.
  21. Pofigist

    Computercraft 2D RPG Game

    Вот заметил я, что всюду ты свои проекты рекламишь, ну да ладно Если человек серьезно занимается разработкой игры, то ясен пень он не будет заниматься этим в майнкрафте. Тут же человек просто делает мини-игру для майна. Тут, опять таки, сообщество майнкрафтеров и если великий создатель поста и займется созданием игры вне Майна, то врятли он напишет об этом тут.
  22. Pofigist

    Computercraft 2D RPG Game

    Не оценил, но судя по всему игрушка не плохая. Только вот был бы лаунчер для установки игры скачивая только один файл - было бы замечательно.
  23. Просто слишком все быстро происходит. Я бы посоветовал добавить возможность редактирования времени переключения сигналов для цикла и соответственно команду os.sleep(n), чтобы создавалась пауза. Компьютер перестает отвечать так как команды требующие времени на выполнение отходят в стек, который постепенно выполняется. В итоге у тебя набирается куча таких команд(так как нету паузы системы) и экстренный выход(Ctrl+Alt+C) находится где-то в глубочайшей попке стека выполнения. Вот так как-то.
  24. На вики есть тема Internet API+Урок по работе с Pastebin. Но вообще так: 1. Лаунчер актуален, если нужно установить несколько файлов для программы. так как устанавливать лаунчер, который в свою очередь установит лишь один файл - тупо, можно просто напрямую сказать этот файл. Теперь к делу. Internet API - может казаться сложным, так что работаем с pastebin и командой wget. Есть такая функция os.execute() Она по сути вводит в консоль что-либо. Грубо говоря это некая симуляция ввода игроком что либо. Пишем в программе os.execute("wget -f <link> <path>") и произойдет загрузка. Обязательно все должно быть указано в кавычках, так как execute принимает строку. Ну а про <link> и <path> думаю понятно, что да как.
  25. Pofigist

    [OC] "Лёгкая" библиотека GUI

    У меня очень глупый вопрос "TComponent.__index = TComponent" позволяет обращаться в формате "Бла-бла-бла:функция()"? Ну через двоеточие, короче?
×