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

Pofigist

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

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

  • Посещение

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


  1. А сохранять кто будет? Пушкин?

    3. file:flush() --записывает в файл

    4. file:close() --закрывает файл

    Также надо помнить что в file:write пишется тип данных string. Поэтому если посылаешь на запись массив или число не забываем пользоваться tostring()

    file:flush в обычной записи файлов, насколько я знаю - не требуется. file:write и так все записывает.


  2. Хочу в файл /baka.lua записать строчку "lol". Как это сделать? Самому разобраться не получилось, т. к. новичок в Lua. Будьте добры, помогите!

    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 (внизу страницы)


  3. Без использования библиотек я вижу это так:

    1. Создается буфер текста, который ты выводишь.

    2. Есть переменные отвечающие за то, какая строка отображается самой верхней.

    3. При нажатии кнопок, перемещении ползунка эта переменная изменяется, полностью меняя то, какая часть массива отображается.


  4. Данная функция имеет такой вид:

    var = load(codestring, arg2, arg3, tableEnviroment)

    Возвращает она функцию, сформированную из строчки кода, переданной в параметре codestring.

    Параметр tableEnviroment это таблица, задающая "окружение", т.е. все функции и переменные будут взяты из этой таблицы.

     

    У меня конкретный вопрос: что делают параметры arg2 и arg3? Какие типы они имеют?

    Сейчас не совсем уверен, но на сколько я знаю arg3 может быть "t", "b" или "tb". Этот аргумент указывает на то, читать ли функцию если она представлена как текст или как байт код или и то и то. Но не уверен. P.S. Чтение байткода нужно разрешать в конфиге.


  5.  

     

    Придумывать своё – это круто! Не круто называть первую подвернувшуюся идею супер-пупер системой и оправдывать ею использование четырех модемов в одном компьютере.
    Я лишь ответил на вопрос, что можно придумать с несколькими адаптерами. Конечно я понимаю, что не всем дано понимать сарказм, но стоит быть чуточку добрее что ли.

     

     

    Вопрос, что мешает охотнику подбить этих трёх голубей и прочитать полный текст послания?
    Вообще любое зашифрованное сообщение можно расшифровать, но если один голубь будет быстр, второй - увертлив, а третий будет лететь очень высоко -- согласись, гораздо труднее подбить их всех. 
    • Нравится 1

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

    Так ничто не мешает, но зато это типа - реализм. В жизни же вафля не способна передать данные на определенную антенну.  А то что есть мод для шифрования, не мешает брать и придумывать свое.


  7. ...

    2. Ну мы же не знаем что это за программа там. К примеру один модем сервера передает на компьютер адрес того модема, который будет "обслуживать" этот компьютер и компьютер начинает игнорировать сигналы от любых других модемов. Так можно обеспечить безопасность работы программы, не используя связанных карт или send'а. Чем не своеобразный метод безопасности?

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


  8. Я вот одного понять не могу, зачем в компе несколько модемов нужно. Чтобы разные порты прослушивать? Разве нельзя всё на одном сделать? Один ведь модем может спокойно несколько портов прослушивать. Или дело в адресе модема к которому привязываются другие ЭВМ? По моему один модем вполне может справиться с любой задачей.

    Значит нужны определенные адреса. Или например симуляция на сервере работы нескольких пк. Вариантов много. Я бы например использовал несколько модемов для супер-пупер системы шифрования.


  9. А теперь нормальный способ получения прокси под все модемы.

    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)
    
    • Нравится 1

  10. А это еще зачем? Ты вроде бы любитель не выполнять require лишний раз. Зачем же сейчас выполнять require повторно?

    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")
    --Тут мы получаем сообщение на свой же компьютер но уже со второго модема.
    
    • Нравится 2

  11. эта команда меняет компонент, но с другой сетевой платы начинает отправлять сигналы только после перезагрузи команды

     

    Потому что require("component").modem как раз таки и получает прокси компонента. Просто прописывай require после setPrimary и будет тебе счастье. Соответственно, если есть желание использовать несколько модемов сразу то нужно несколько require, но проще будет разобраться с прокси. Если нужно могу помочь.

    • Нравится 1

  12. В последней сборке OC может один сервер содержать в себе до 4 мадемов, в зависимости от конфигурации; но при выполнение команды send или broadcast и сигнал выходит с одной карты.

    Вопрос в том, как переключить главный компонент в modem, сетевой карте?

    Была идея с изменением главного компонента, но главный компонент меняется после res. программы

    А что мешает устанавливать главный компонент в самой программе? 


  13. Как работает команда internet.reqest ?

    Дайте готовый вариант, чтобы как в коде.

    На gamepedi'и по моему все четко сказано

    Запускает HTTP запрос по заданному URL с заданными POST данными (если есть). Ответ обрабатывается как http_response сигнал. Возможно использование вместо нее "обертки" с итератором internet.request

    Если уж не знаешь что такое HTTP и POST данные то тут уже гуглоид в помощь.


  14. ...

    Вот заметил я, что всюду ты свои проекты рекламишь, ну да ладно :D

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

    • Нравится 1

  15. Он вообще не на что не реагирует не на Ctrl+Alt+C не на любые события в программы, только в перезапуск компа помогает

    Просто слишком все быстро происходит. Я бы посоветовал добавить возможность редактирования времени переключения сигналов для цикла и соответственно команду os.sleep(n), чтобы создавалась пауза. Компьютер перестает отвечать так как команды требующие времени на выполнение отходят в стек, который постепенно выполняется. В итоге у тебя набирается куча таких команд(так как нету паузы системы) и экстренный выход(Ctrl+Alt+C) находится где-то в глубочайшей попке стека выполнения. Вот так как-то. :D

    • Нравится 2

  16. А какая это команда, я нуб и в вики нечего подобного не нашёл

    На вики есть тема Internet API+Урок по работе с Pastebin. Но вообще так: 1. Лаунчер актуален, если нужно установить несколько файлов для программы. так как устанавливать лаунчер, который в свою очередь установит лишь один файл - тупо, можно просто напрямую сказать этот файл.

    Теперь к делу. Internet API - может казаться сложным, так что работаем с pastebin и командой wget. Есть такая функция os.execute() Она по сути вводит в консоль что-либо. Грубо говоря это некая симуляция ввода игроком что либо. Пишем в программе os.execute("wget -f <link> <path>") и произойдет загрузка. Обязательно все должно быть указано в кавычках, так как execute принимает строку. Ну а про <link> и <path> думаю понятно, что да как.

    • Нравится 1

  17. Меняет расположение. Хранятся они физически в виде обычных файлов, в обычных папках, в <world>/opencomputers/<disk address>/.

    Имелось ввиду не расположение файловой системы в реальности, а рабочий после запуска файл. То был init.lua, ну да ладно :D


  18.  

    Читай на здоровье. Внизу страницы, раздел "Программные интерфейсы (API)"

    Благодарю! Теперь бы еще разобраться с локальными функциями.. XD И еще небольшой вопрос: какой файл работает при работе в самой OpenOS, в плане при перемещении по папкам и т.д.?

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