Zer0Galaxy
Гуру-
Публикации
1 220 -
Зарегистрирован
-
Посещение
-
Победитель дней
189
Тип публикации
Блоги
Профили
Форум
Багтрекер
Магазин
Все публикации пользователя Zer0Galaxy
-
Разработка новой операционной системы. WinOS.
Zer0Galaxy ответил в тему RccHD в Операционные системы
т.е. ты хочешь сказать, что когда рабочий стол не активен он полностью замораживается? А если с момента переключения на нем что то изменилось? Или приложения, открытые на неактивном столе, тоже приостанавливаются? -
Тебе нужны id мониторов? Используй component.list("screen")
-
Верно. Когда то Алекс и такую функцию выкладывал, но для этого интернет-карта нужна.
-
— Вы имеете право хранить молчание. Все что вы скажете, может быть использовано против вас. — Арифмометр. — Что арифмометр? — Используйте против меня арифмометр. (старый анекдот) Что же это за штука такая, арифмометр? Немногие помнят, что до появления персональных компьютеров и даже до электронных калькуляторов, отечественной промышленностью выпускались механические вычислители – арифмометры. Наиболее массовыми представителями этих механизмов были арифмометр «Феликс» и его последующая модификация «Феликс-М», именуемые в народе «Железный Феликс». Позволяет эта машинка складывать, вычитать, умножать и делить, а при должной сноровке – извлекать квадратные корни. И хотя удовольствие от работы с реальным арифмометром не идет ни в какое сравнение с его виртуальной копией, представляю Вашему вниманию эмулятор данного устройства. Как работать на таком арифмометре, расписывать не буду. Желающие найдут в Интернете массу информацию на эту тему. Скачать эмулятор можно по ссылке: pastebin get HFbiHejB felix_m.lua Для эмулятора Вам потребуется монитор третьего уровня и библиотека forms.
-
Не оно?
-
Функция os.time() возвращает внутриигровое время.
-
Предлагаю хранить байты не в строке, а в таблице чисел. По восемь байт на число (или сколько там?). При этом чтобы вставить/извлечь байт перелопачивать придется не всю длиннющую строку, а один number.
-
Разработка новой операционной системы. WinOS.
Zer0Galaxy ответил в тему RccHD в Операционные системы
На мой взгляд, разрешение ОС-монитора не такое большое, чтобы делить его на окна. Если бы я стал писать многозадачную операционку, разделение экрана я бы реализовал не как в Windows, а как в Androidе. Т.е. из всех запущенных приложение только одно захватывает экран, оно же обрабатывает события мыши и клавы. Остальные приложения крутятся в фоне и если что-то пишут, то на свой виртуальный экран. Но, это лишь мое скромное мнение. -
У дебаги есть функция: Если пол из одинаковой шерсти, то можно сетнуть быстро. Если вся шерсть рандомная, то нельзя. Есть еще командный блок. С его помощью можно копировать блоки из одного места в другое. Сперва делаем заготовку пола в каком либо скрытом от глаз подвале, а потом одной командой копируем.
-
Разработка новой операционной системы. WinOS.
Zer0Galaxy ответил в тему RccHD в Операционные системы
local components={} -- тут будем хранить занятые компоненты local getComponent = function(window, componentType, componentAddress) --[[ window - это окно, которое потребовало компоненту componentType - тип компоненты ( игнорировать GPU ) componentAddress - адрес требуемой компоненты (этот параметр, на мой взгляд, не нужен) ]] for address in component.list(componentType) do -- здесь и далее вызываем родные функции component, а не подмену if components[address]==nil then -- если компонент не занят, занимаем его components[address]=window end if components[address]==window then -- если компонент занят этим окном, return component.proxy(address) -- возвращаем его прокси end end -- вернем nil, если свободных компонент не найдено end local freeComponent = function(componentAddress) -- пометить компонент <componentAddress> как незанятый components[componentAddress]=nil end как то так? -
Разработка новой операционной системы. WinOS.
Zer0Galaxy ответил в тему RccHD в Операционные системы
А что помешает приложению вызвать component.proxy() для доступа к компоненту в обход системы? -
1) Используй io.open(filename), чтобы открыть файл. Например: file=io.open("MyFile") Функция вернет хедер файла, если он существует или nil если нет. 2) Если файл существует, используй функцию file:read("*a"), чтобы прочитать содержимое файла text=file:read("*a") Функция вернет данные из файла в виде строки или пустую строку, если файл пустой. Не забудь закрыть открытый файл file:close(), даже если он пустой. Это правило хорошего тона. 3) Если файл не существует или файл пустой, используй io.open(filename,"w"), чтобы открыть файл на запись file=io.open("MyFile","w") Функция вернет хедер файла или nil если файл по каким то причинам не может быть создан. 4) Используй функцию file:write(data), чтобы записать данные в файл file:write("NewData") Не забудь закрыть файл после окончания записи. Это уже не просто правило хорошего тона, а суровая необходимость.
- 2 ответа
-
- 5
-
-
Разработка новой операционной системы. WinOS.
Zer0Galaxy ответил в тему RccHD в Операционные системы
Эти функции будут вызываться приложением или системой? -
А вот мой пример И делай, пожалуйста, выход из программы по нажатию какой либо клавиши.
-
Круто. Я бы пиксель сделал квадратным. А еще за пикселем можно гаснущий след рисовать.
- 4 ответа
-
- 1
-
-
У меня предложение. Выделить отдельный раздел форума под темы "Пишу офигенную операционку" и все подобные темы складывать туда. Просто, чтоб каждый операционнописатель знал, что он не одинок.
-
А если сгенерировать обычный мир, а потом произвести замену всех известных руд на коблу?
- 97 ответов
-
Так погибают замыслы с размахом, В начале обещавшие успех, От долгих отлагательств.
-
Разработка новой операционной системы. WinOS.
Zer0Galaxy ответил в тему RccHD в Операционные системы
Программы, запускаемые многозадачно, вовсе не обязаны быть ориентированными на многозадачность. Здесь я показывал вариант как можно реализовать такую многозадачность. Вот с подвисанием согласен. Оборудование доступно программам через объект component. Если система подменит этот объект своим, то она сможет разруливать аппаратные коллизии. Например, если одна программа использует редстоун-карту, то другой программе можно не давать к ней доступ. -
Похоже проект настолько секретный, что тему проекта оглашать нельзя, а исполнители не будут знать чем они будут заниматься. Я, пожалуй, откажусь. Вдруг по завершении проекта исполнителей ликвидируют.
-
Можно разделить функцию на две: local function kek1() print('Привет') -- print надо выполнить один раз end local function kek2() if rs.getBundledInput(1,1) > 0 then rs.setBundledOutput(1,5,255) else rs.setBundledOutput(1,5,0) end end kek1() while true do kek2() os.sleep(0.5) end А можно воспользоваться флагом local flag=true local function kek() if flag then print('Привет') -- print надо выполнить один раз flag=false end if rs.getBundledInput(1,1) > 0 then rs.setBundledOutput(1,5,255) else rs.setBundledOutput(1,5,0) end end while true do kek() os.sleep(0.5) end
-
А чего сам не разрабатываешь, если одного человека достаточно? Или это одного не хватает?
-
1) Создаешь каким либо образом строку, содержащую луа-код script="a=1 b=2 print(a+b+с)" 2) создаешь окружение выполнения этого кода. Окружение это просто таблица с функциями и переменными, которые могут быть использованы твоим луа-кодом. В примере строчкой выше неопределенными являются функция print и переменная c. Определим их в окружении. env={} env.c=3 env.print=print Если окружение оставить пустым (равняется nil), будет использовано глобальное окружение. Т.е. твоему коду будут доступны все определенные на данный момент глобальные функции и переменные. 3) вызываешь функцию load code, reason = load(script, "", "", env) Первым параметром передаешь сам код, последним - окружение. Второй параметр используется для формирования сообщения об ошибке, если такая будет. Третий, даже не знаю. Я оставляю его пустым. Первое возвращаемое значение - функция, исполняющая код. Если оно равно nil, значит на этапе компиляции возникла ошибка. Сообщение об ошибке содержится во втором возвращаемом значении. 4) проверяешь результат компиляции и выполняешь скомпилированный код if code then result=code() else print(reason) end
