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

Zer0Galaxy

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

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

  • Посещение

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

    189

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

  1. т.е. ты хочешь сказать, что когда рабочий стол не активен он полностью замораживается? А если с момента переключения на нем что то изменилось? Или приложения, открытые на неактивном столе, тоже приостанавливаются?
  2. Тебе нужны id мониторов? Используй component.list("screen")
  3. Верно. Когда то Алекс и такую функцию выкладывал, но для этого интернет-карта нужна.
  4. — Вы имеете право хранить молчание. Все что вы скажете, может быть использовано против вас. — Арифмометр. — Что арифмометр? — Используйте против меня арифмометр. (старый анекдот) Что же это за штука такая, арифмометр? Немногие помнят, что до появления персональных компьютеров и даже до электронных калькуляторов, отечественной промышленностью выпускались механические вычислители – арифмометры. Наиболее массовыми представителями этих механизмов были арифмометр «Феликс» и его последующая модификация «Феликс-М», именуемые в народе «Железный Феликс». Позволяет эта машинка складывать, вычитать, умножать и делить, а при должной сноровке – извлекать квадратные корни. И хотя удовольствие от работы с реальным арифмометром не идет ни в какое сравнение с его виртуальной копией, представляю Вашему вниманию эмулятор данного устройства. Как работать на таком арифмометре, расписывать не буду. Желающие найдут в Интернете массу информацию на эту тему. Скачать эмулятор можно по ссылке: pastebin get HFbiHejB felix_m.lua Для эмулятора Вам потребуется монитор третьего уровня и библиотека forms.
  5. Функция os.time() возвращает внутриигровое время.
  6. Предлагаю хранить байты не в строке, а в таблице чисел. По восемь байт на число (или сколько там?). При этом чтобы вставить/извлечь байт перелопачивать придется не всю длиннющую строку, а один number.
  7. На мой взгляд, разрешение ОС-монитора не такое большое, чтобы делить его на окна. Если бы я стал писать многозадачную операционку, разделение экрана я бы реализовал не как в Windows, а как в Androidе. Т.е. из всех запущенных приложение только одно захватывает экран, оно же обрабатывает события мыши и клавы. Остальные приложения крутятся в фоне и если что-то пишут, то на свой виртуальный экран. Но, это лишь мое скромное мнение.
  8. У дебаги есть функция: Если пол из одинаковой шерсти, то можно сетнуть быстро. Если вся шерсть рандомная, то нельзя. Есть еще командный блок. С его помощью можно копировать блоки из одного места в другое. Сперва делаем заготовку пола в каком либо скрытом от глаз подвале, а потом одной командой копируем.
  9. 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 как то так?
  10. А что помешает приложению вызвать component.proxy() для доступа к компоненту в обход системы?
  11. 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") Не забудь закрыть файл после окончания записи. Это уже не просто правило хорошего тона, а суровая необходимость.
  12. Эти функции будут вызываться приложением или системой?
  13. А вот мой пример И делай, пожалуйста, выход из программы по нажатию какой либо клавиши.
  14. Круто. Я бы пиксель сделал квадратным. А еще за пикселем можно гаснущий след рисовать.
  15. У меня предложение. Выделить отдельный раздел форума под темы "Пишу офигенную операционку" и все подобные темы складывать туда. Просто, чтоб каждый операционнописатель знал, что он не одинок.
  16. А если сгенерировать обычный мир, а потом произвести замену всех известных руд на коблу?
  17. Так погибают замыслы с размахом, В начале обещавшие успех, От долгих отлагательств.
  18. Программы, запускаемые многозадачно, вовсе не обязаны быть ориентированными на многозадачность. Здесь я показывал вариант как можно реализовать такую многозадачность. Вот с подвисанием согласен. Оборудование доступно программам через объект component. Если система подменит этот объект своим, то она сможет разруливать аппаратные коллизии. Например, если одна программа использует редстоун-карту, то другой программе можно не давать к ней доступ.
  19. Похоже проект настолько секретный, что тему проекта оглашать нельзя, а исполнители не будут знать чем они будут заниматься. Я, пожалуй, откажусь. Вдруг по завершении проекта исполнителей ликвидируют.
  20. Можно разделить функцию на две: 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
  21. Так я все таки не понял. Функция должна выполняться один раз или в цикле? Если один раз, то зачем ее в цикл ставить?
  22. Почему же? Сколько раз выполнится функция в цикле, столько же раз выполнится и print
  23. А чего сам не разрабатываешь, если одного человека достаточно? Или это одного не хватает?
  24. 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
×
×
  • Создать...