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

Laine_prikol

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

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

  • Посещение

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

    3

Сообщения, опубликованные пользователем Laine_prikol


  1. не могу запретить выход из программы по Ctrl+Alt+C. event.shouldInterrupt() не работает. Пробовал в цикле и без. вообще не работает!

        local event = require "event"
         
        function event.shouldInterrupt()
            return false
        end
    

    Minecraft 1.11.2

    OpenComputers 1.7.0.40. OpenOS 1.6.7


  2.  

    @@Laine_prikol,

     

     

     

     

     

    Фигня в том, как уже заметили в Ирке, что большинство публичных IRC-серверов тупо забанят или кикнут клиента за массовый флуд.

    А такой бот несомненно будет флудить.

     

    Поэтому есть вероятность, что потребуется поднять свой IRC сервер. А тут уже вопрос, что удобнее - возиться со своим сервером, или воспользоваться мостом Рида.


  3. Иногда надо связать несколько компьютеров на большом расстоянии или между мирами, или даже между серверами. Так как у нас есть интернет-карта, можно провернуть несложный хак - пустить информацию через внешний сервер. Но чтобы не писать серверную часть, можно использовать готовый протокол с готовыми серверами. Получается крутая связанная карта для многих компов.

     

    Данная программа реализует IRC мост, по которому могут общаться не только опенкомпы, но и любые устройства с интернетом.

    Например, можно с мобильника дать команду своим компьютерам на нескольких игровых серверах.

     

    Использование:

    Скачать программу pastebin get CmLFFF7g /bin/imodem.lua

    Проверить наличие интернет-карты в компьютере

    Запустить программу imodem

    В течении некоторого времени будет устанавливаться связь, а затем можно работать с модемом.

    Чтобы послать сообщение всем устройствам на канале, есть функция imodem.broadcast( сообщение: строка )

    Чтобы послать сообщение по определенному адресу - imodem.send( получатель: строка, сообщение: строка )

    Для разрыва связи и прекращения работы - imodem.stop()

     

    А чтобы принимать сообщения, достаточно ловить событие modem_message, как у обычных модемов.

     

    Адрес сервера и канал можно изменить в коде программы, желательно иметь сервер без обрезания ников и защиты от флуда.

    А зачем IRC? Нельзя же просто обычным http воспользоваться? Например на хостинг залить какой-нибудь txt в котором будут команды, а через какой нибудь фронт на php сделать редактирование этого txt, и чтобы при каждой скачки файла с сервера, OpenComputers сравнивал что написано в этом файле

    • Нравится 1

  4. Изменил pass() на lock(), тогда выдает следующее... <img src="http://uploadme.ru/images/2017/05/05/IMG_5584.jpg" alt="IMG_5584.jpg" border="0" />

    Пробовал вроде что-то похожее впихивать в начало. Тогда та же ошибка, только "require" в кавычках. Завтра попробую вписать твой вариант в начало, просто боюсь, что тоже не сработает... уже не первый день пытаюсь разобраться, что-то в инете найти - все вбестолку, расстроился очень.

    Вместо read() надо io.read() И вообще мне кажется что ты хочешь запустить программу для ComputerCraft на OpenComputers. Там многое надо менять. И ещё на пожалуйста делай скриншоты на F2, не фоткай экран. Хоть там видно всё, но лучше делай скрины так легче будет


  5. Ну, придумать самому, или реквизировать вот отсюда.

    Ух ты, там оказывается в этой функции можно ставить какие либы будут загружается при запуске OpenOS


  6.  

     

    @@Laine_prikol,

    1) Кинь код на pastebin или еще куда-нибудь, чтобы у всех, кто хочет помочь тебе, была возможность видеть код полностью. Иначе тяжело разбираться, что у тебя не работает.

    2) Приведи отступы в порядок. Тяжело же разбираться с этим:

    KQiSuKt.png

     

     

    https://pastebin.com/RPf0PFRP вот пастбин

  7. А где обнуляется переменная tempload?

    Сделал, теперь не очищается экран при переходе в папку вот код:

    function realoadlist()
    	getfiles(directory)
    	gpu.fill(1, 1, w, h, " ")
    	for i = 1,24 do
    	gpu.set(1, i, "█")
    	gpu.set(2, i, fileindex[i])
    		if filesystem.isDirectory(fileindex[i]) then
    		gpu.setForeground(0xfdff00)
    		gpu.set(1, i, "█")
    		gpu.setForeground(0xffffff)
    		end
    	end
    end
    
        while true do
          local id, _, x, y = event.pull("touch")
          if id == "touch" then
    	  if filesystem.isDirectory(fileindex[y]) == true then
    		gpu.fill(1, 1, w, h, " ")
    		directory = fileindex[y]
    		getfiles(directory)
    		realoadlist()
    		end
    		if filesystem.isDirectory(fileindex[y]) == false then	
    		os.execute(fileindex[y])
          end
    	  if x == 1 and y == 25 then
    		getfiles(directory)
    		realoadlist()
    		end
        end
    end
    
    
    P.S С term.clear() тоже самое

  8. А функция чтения содержимого директории разве не должна очищать таблицу с именами перед занесением в нее новых?

    Всё равно не работает вот сделал очистку таблицы:

    function getfiles(dir)
    	for file in filesystem.list(dir) do
    	  tempload = tempload + 1
    	  fileindex[tempload] = nil
    	  fileindex[tempload] = file
    	  end
    end
    

    И другой вариант просто превращал все файлы в none:

    for k in pairs (fileindex) do
        fileindex [k] = "none"
    end
    

  9. Делаю файловый менеджер, когда нажимаю на папку нечего не обновляется и не меняются папки?
    Код нажатия:

     

        while true do
          local id, _, x, y = event.pull("touch")
          if id == "touch" then
    	  if filesystem.isDirectory(fileindex[y]) == true then
    		directory = fileindex[y]
    		getfiles(directory)
    		realoadlist()
    		end
    		if filesystem.isDirectory(fileindex[y]) == false then	
    		os.execute(fileindex[y])
          end
    	  if x == 1 and y == 25 then
    		getfiles(directory)
    		realoadlist()
    		end
        end
    end
    
    

     


    Код чтение файлов:

     

    function getfiles(dir)
    	for file in filesystem.list(dir) do
          tempload = tempload + 1
    	  fileindex[tempload] = file
    	  end
    end	
    
    

     


    Код отрисовки:

     

    function realoadlist()
        getfiles(directory)
        term.clear()
        for i = 1,24 do
        gpu.set(1, i, "█")
        gpu.set(2, i, fileindex[i])
            if filesystem.isDirectory(fileindex[i]) then
            gpu.setForeground(0xfdff00)
            gpu.set(1, i, "█")
            gpu.setForeground(0xffffff)
            end
        end
    end

     

     


  10. Классная программа,вот только командный блок на сервере никак не возьмешь.

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


  11. Программа позволяет рисовать блоками в воздухе при помощи командного блока подключённого через адаптер или дебаг-карты. В программе есть 8 блоков которыми можно рисовать. Также при выходе все блоки удаляются. Чтобы программа работала, надо включить поддержку командного блока в конфиге мода на 543 строке:

          # Whether to enable the command block driver. Enabling this allows
          # computers to set and execute commands via command blocks next to
          # adapter blocks. The commands are run using OC's general fake player.
          enableCommandBlockDriver=true
    

    Загрузка и использование:

    pastebin get 060LXELq blockpaint.lua

    Поставьте командный блок и адаптер вот в таком положении:

    post-18530-0-74887400-1490343233_thumb.png

    или просто вставьте debug-карту в ваш компьютер

    Запускаете программу и рисуете!

    post-18530-0-69770900-1490343339_thumb.png post-18530-0-24125000-1490343391_thumb.png

    Обновление

    Добавлена поддержка debug-карты

    • Нравится 5

  12. Я думаю это в большей степени задача прикладного программиста, а не системы.

    В любой нормальной системе есть оповещение что недостаточно места.


  13. У меня не получилось установить оное ингейм, валится на подгрузке иконки. Пока в код не лез, но вот скрин проблемы:

     

    9oWMPSR.png

     

    P.s. До меня внезапно дошло, что может не хватать места. Ща вставлю второй хард и попробую снова.

    [uPD] Да, именно так, теперь вроде нормально поставилось.

    Почему в OC не сделают адекватную ошибку о том что нет места


  14. Надо не "конвертировать в нормальный вид" (неужели буквенный хаос на скринах - это нормально?), а парсить HTML теги и потом на основе них рендерить страничку.

     

    По поводу цветов и CSS - это всё отмазки. Естественно ты не сможешь сделать рендер как в современном браузере, но это не должно тебя останавливать.

    Для примера - глянь на такую штуку как консольный браузер W3M.

     

    Google:

     

    xscreenshot1.png.pagespeed.gp+jp+jw+pj+w

     

    А вот какой-то текстовый сайт. Он на чешском языке, но это не важно. Важно то, что тут хорошо видна CSS разметка текста:

     

    151-a.jpg

    Конечно этот браузер будет нормально работать с сайтами 1995 года или с оченнннь простой вёрсткой. Вот например наш форум открытый в примерно таком браузере

    post-18530-0-18977300-1489929113_thumb.png

    Вёрстка летит куда-то в ад. Конечно, всё равно это лучше чем у меня в OC. Но ресурсов даже на простую вёрстку не хватает, потому-что в самой OpenOS передача файлов ограничена, и если загружать что-то более-менее нормальное падает либа buffer.lua


  15.  

    Какой нафиг браузер?

    Браузер отображает документ из тегов, а не выкусывает их оттуда.

    Тем более таким деревянным методом, есть циклы и таблицы, Карл.

    P.S

    А если кто - то будет давить на то что он луа не знаешь, так какого хрена браузеры писать если луа не знаешь?

     

     

    e267423a15c54ac99c8685bba81b07d1.png

     

     

    Я даже специально в описании поставил кавычки - "Браузер html" это даже не браузер, а простой конвертер из html в нормальный для ОС вид. Да и всё-равно как говорилось ниже: ресурсов компов ОС не хватает чтобы нормально отображать html и css, не хватает ни цветов ни оперативки, для нормального интернета сейчас нужно не более 1 гб оперативной памяти, и 24 битный цвет.

×
×
  • Создать...