Pofigist
-
Публикации
53 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные пользователем Pofigist
-
-
Хочу в файл /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 (внизу страницы)
-
Без использования библиотек я вижу это так:
1. Создается буфер текста, который ты выводишь.
2. Есть переменные отвечающие за то, какая строка отображается самой верхней.
3. При нажатии кнопок, перемещении ползунка эта переменная изменяется, полностью меняя то, какая часть массива отображается.
-
Данная функция имеет такой вид:
var = load(codestring, arg2, arg3, tableEnviroment)
Возвращает она функцию, сформированную из строчки кода, переданной в параметре codestring.
Параметр tableEnviroment это таблица, задающая "окружение", т.е. все функции и переменные будут взяты из этой таблицы.
У меня конкретный вопрос: что делают параметры arg2 и arg3? Какие типы они имеют?
Сейчас не совсем уверен, но на сколько я знаю arg3 может быть "t", "b" или "tb". Этот аргумент указывает на то, читать ли функцию если она представлена как текст или как байт код или и то и то. Но не уверен. P.S. Чтение байткода нужно разрешать в конфиге.
-
Я лишь ответил на вопрос, что можно придумать с несколькими адаптерами. Конечно я понимаю, что не всем дано понимать сарказм, но стоит быть чуточку добрее что ли.Придумывать своё – это круто! Не круто называть первую подвернувшуюся идею супер-пупер системой и оправдывать ею использование четырех модемов в одном компьютере.
Вообще любое зашифрованное сообщение можно расшифровать, но если один голубь будет быстр, второй - увертлив, а третий будет лететь очень высоко -- согласись, гораздо труднее подбить их всех.Вопрос, что мешает охотнику подбить этих трёх голубей и прочитать полный текст послания?-
1
-
-
А что мешает передавать сообщение напрямую на заданный адрес? Никто по идее не сможет перехватить сообщение. Да и если не ошибаюсь в каком то моде были машины поддерживающие алгоритмы кодирования информации.
Так ничто не мешает, но зато это типа - реализм. В жизни же вафля не способна передать данные на определенную антенну. А то что есть мод для шифрования, не мешает брать и придумывать свое.
-
...
2. Ну мы же не знаем что это за программа там. К примеру один модем сервера передает на компьютер адрес того модема, который будет "обслуживать" этот компьютер и компьютер начинает игнорировать сигналы от любых других модемов. Так можно обеспечить безопасность работы программы, не используя связанных карт или send'а. Чем не своеобразный метод безопасности?
По поводу третьего мне долго описывать. Я не про кодер, да и шифрованием не увлекаюсь, но думаю, что передавая шифрованное послание кусками, через разные модемы, которые будут расшифровываться исходя из адресов модемов, что послали данные - не плохая идея.
-
Я вот одного понять не могу, зачем в компе несколько модемов нужно. Чтобы разные порты прослушивать? Разве нельзя всё на одном сделать? Один ведь модем может спокойно несколько портов прослушивать. Или дело в адресе модема к которому привязываются другие ЭВМ? По моему один модем вполне может справиться с любой задачей.
Значит нужны определенные адреса. Или например симуляция на сервере работы нескольких пк. Вариантов много. Я бы например использовал несколько модемов для супер-пупер системы шифрования.
-
Вот именно. И чем для новичка был проще вариант с повторяющимся require?
Меньше думать
Для кого-то for ... in ... do - сложна -
А теперь нормальный способ получения прокси под все модемы.
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
-
-
А это еще зачем? Ты вроде бы любитель не выполнять 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
-
-
эта команда меняет компонент, но с другой сетевой платы начинает отправлять сигналы только после перезагрузи команды
Потому что require("component").modem как раз таки и получает прокси компонента. Просто прописывай require после setPrimary и будет тебе счастье. Соответственно, если есть желание использовать несколько модемов сразу то нужно несколько require, но проще будет разобраться с прокси. Если нужно могу помочь.
-
1
-
-
В последней сборке OC может один сервер содержать в себе до 4 мадемов, в зависимости от конфигурации; но при выполнение команды send или broadcast и сигнал выходит с одной карты.
Вопрос в том, как переключить главный компонент в modem, сетевой карте?
Была идея с изменением главного компонента, но главный компонент меняется после res. программы
А что мешает устанавливать главный компонент в самой программе?
-
- библиотеку os не нужно подключать(эту строку можно удалить)local os = require("os")
- не знаю есть ли такая команда в os, но она точно есть в computer и так или иначе должна заканчиваться скобками.os.shutdown -
Как работает команда internet.reqest ?
Дайте готовый вариант, чтобы как в коде.
На gamepedi'и по моему все четко сказано
Запускает HTTP запрос по заданному URL с заданными POST данными (если есть). Ответ обрабатывается как http_response сигнал. Возможно использование вместо нее "обертки" с итератором internet.request
Если уж не знаешь что такое HTTP и POST данные то тут уже гуглоид в помощь.
-
...
Вот заметил я, что всюду ты свои проекты рекламишь, ну да ладно

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

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

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

-
Незнаю как решить проблему с циклом потому-что комп просто зависает, только перезапуск помогает
Поставить проверку ивентом и break если нажата какая-то кнопка, может?
-
Меняет расположение. Хранятся они физически в виде обычных файлов, в обычных папках, в <world>/opencomputers/<disk address>/.
Имелось ввиду не расположение файловой системы в реальности, а рабочий после запуска файл. То был init.lua, ну да ладно

-
А вот у меня вопрос. На компе стоит всего один жесткий диск, но система показывает три компонента filesystem. Откуда еще два? Сначала думал, что один от eeprom, но то отдельный компонент, так что я в недоумении.
-
Читай на здоровье. Внизу страницы, раздел "Программные интерфейсы (API)"
Благодарю! Теперь бы еще разобраться с локальными функциями.. XD И еще небольшой вопрос: какой файл работает при работе в самой OpenOS, в плане при перемещении по папкам и т.д.?
-
...
1. Строка взята из EEPROM.
2. Сам лазаю по либам.
3. Разобраться в базовых библиотеках


Как редактировать файлы с помощью Lua?
в Разные (отсортировать)
Опубликовано:
file:flush в обычной записи файлов, насколько я знаю - не требуется. file:write и так все записывает.