Zer0Galaxy
-
Публикации
1 220 -
Зарегистрирован
-
Посещение
-
Победитель дней
189
Сообщения, опубликованные пользователем Zer0Galaxy
-
-
А можно будет использовать event.listen?
Конечно. Именно его я и планирую использовать в реализации проекта FTP
-
А как свои сайты добавлять?
Если на существующий сервер - обращайся к владельцу сервера. Если свой сервер хочешь - напишу инструкцию как.
А пока планируется переход на новый протокол ОН. Это позволит передавать пакеты произвольной длины (сейчас ограничение 8кБ), а так же будут генерироваться события on_massage по приходу пакета, что позволит обойтись без функции on.receive()
-
1
-
-
Я тоже делал. А вот на ОС решил и чую, зарываюсь. Намного сложнее тут ось построена.
-
swg2you, я смотрю, ты как и некоторые здесь, любитель переопределять системные функции. Предлагаю тебе и другим желающим реализовать совместно проект FTP. Для доступа к дисковому пространству удаленного компьютера по вайфаю или ОпенНет.
Это должна быть резидентная программа, которая подменяет функции библиотеки filesystem таким образом, что обращение к папке, расположенной на другом компьютере, выглядит как работа с локальным диском.
-
Так и не догадался как открыть второй экранРеализовал поддержку нескольких экранов -
Хм... Интересно, а откуда брать софт?
-- Web-server by Zer0Galaxy on = require("opennet") fs = require("filesystem") ser = require("serialization").serialize webDir='/web/' maxPacketSize=8000 pwd="secret" local myIP,err=on.getIP() if not myIP then print(err) return end local sendIP, command commands={} function commands.ping() return "pong" end function commands.ver() return "Web-server ver 1.1" end function commands.get(path) path=path or 'index' file=io.open(webDir..path,'r') if not file then file=io.open(webDir..'404','r') end if file then text=file:read("*a") file:close() else text="Файл "..path.." не найден" end if #text>maxPacketSize then text="Файл слишком большой" end return text end function commands.list(path) local result={} path=webDir..(path or "") for name in fs.list(path) do result[#result+1]=name end return ser(result) end function commands.put(path,text,passwd) if passwd==pwd then file=io.open(webDir..path,'w') if not file then return "Неверное имя файла" end file:write(text) file:close() return "Файл сохранен" end return "Неверный пароль" end while true do local dat = {on.receive()} sendIP, command = dat[1], dat[2] if command then if commands[command] then on.send(sendIP, command, commands[command](table.unpack(dat,3)) ) else on.send(sendIP, false, command, "Недопустимая команда" ) end end endНадо только подумать над содержимым страниц
А веб-сервер и в ДЦ поставить можно.
Конечно можно
-
1
-
-
Кто возьмет на себя поднятие и поддержание web-сервера?
-
Что за компонент test?
Хочу:
1. Вставку из буфера обмена
2. Поддержку модемов и связанных плат
-
Роутер подняли, поднимите и интернет сервер.
Так роутер работает или нет? Может сегодня будет время, поставлю DNSИменно мы с монстриком ничего не запускали, мы только проверили, поставив апишку. -
А как, интересно ты будешь проходить лавовые озера?Можно дополнить программу, чтобы она проверяла лаги и работала медленней. Тогда, теоретически, можно будет путешествовать под землей через всю карту, тупо свернув игру.-
1
-
-
Хм. Тема называется "ДРУГОЙ способ реализации ...". То о чем пишешь ты это, надо полагать, способ первый.Если нужно наследование, можно сделать простейший класс, но с двоеточием (не знаю что вы его пугаетесь (?)): -
Зачем между задним роботом и игроком блок земли? Он без этого блока толкаться не может?
-
Предлагаю добавить swg2you в белый список, как проявившего серьезный интерес к программированию на Луа.
-
Нет. Ты не путай функцию библиотеки и функцию класса.
local class = require("имя_библиотеки").classВ данном случае переменная class будет содержать указатель на уже существующую функцию и занимать в памяти аж восемь байт. Но это, к сожалению, не имеет никакого отношения к ООП поскольку класс это не тоже самое, что и библиотека.
Способ же, который упомянул топикстартер, действительно создает объект. Но для каждого экземпляра объекта такой способ создает новые экземпляры функций-методов, а функции могут занимать в памяти килобайты.
-
1
-
-
Пока не уловил сути. Они что, тебя по земле толкать начинают? Типа на автомобильчике едешь? А если неровность какая встретится?
-
а почему бы не вызвать функцию прямо из класса? или после инициализции удалять объект импортированной функции...
Приведи пример, пожалуйста. А то не понятно какую функцию из какого класса? Зачем удалять какой объект?
-
Первый же пример выдал
bios:338: [string "test"]:7: '=' expected
Нет в Minecraft-Lua безусловных переходов, похоже. (тестировалось под КК)
-
Я написал небольшой и простой код для робота.
Его задача копать 10х10 карьер до бедрока.
Пожалуйста, не запускайте эту программу в основном мире. Только в майнерс-мирах.
-
>Вот это - явно какое то шаманство и запрещенные техники. Я такого еще никогда за 2 года программирования на Lua не видел.
Не разочаровывай меня, это же основы языка.А в самом деле, не сочти за труд, объясни что это за операторы :: и goto. Я, конечно догадываюсь, что это определение метки и переход по метке, но в Луа с таким сталкиваюсь впервые.
-
И зачем так сложно? Не проще либу стандартную написать? и вызывать также require("liba")
local API = {}
function API.hello()
print("Hello!")
end
API.var1 = 12345324
API.var2 = true
API.var3 = "aasdp"
...
...
...
return API
В твоем случае либа всегда будет возвращать указатель на один и тот же объект
Obj1=require("liba") Obj2=require("liba") Obj1.var1=54321 print(Obj2.var1) -->54321т.е. при изменении поля одного объекта изменятся соответствующие поля других объектов этого же класса.
В случае же, который предложил Ktlo, создаются новые переменные для полей нового объекта и новые функции для методов.
Я видел статью про ООП (Объектно-Ориентированного Программирования), написанную на этом форуме, и вот, что могу сказать, он может быть немного непонятен новичкам в Lua. Я всегда пользовался другим способом создания "классов".
Я тоже начинал рассмотрение ООП в Луа именно с такого способа, но мне не понравилось в нем то, что для каждого экземпляра объекта создаются свои экземпляры функций-методов. Т.е сколько ты объектов создашь, столько идентичных функций будет храниться в памяти компьютера.
В случае реализации ООП через двоеточие, все объекты одного типа и их наследники используют один и тот же экземпляр функции.
С нетерпением жду описания наследования.
PS: далось вам это двоеточие. Вы гоняетесь за внешней похожестью, а ООП на самом деле это не синтаксис компилятора, а уровень мышления программиста.
-
У тебя деление и умножение местами перепутано, по ходу...
Может и перепутано. Я пользовался Википедией
-
Действительно простая. А ведь можно еще проще
write("Enter fahrengeit: ") write("Turned: " .. (read() - 32) * 5 / 9)Да, и не забывай про скобки
-
А зачем эмулировать event? os.pullEvent есть, os.listen сделать просто на параллели и os.pullEvent
Зачем эмулировать компонент? Есть же peripheral.wrap и peripheral.call
А функции computer api выполняет os
Затем, чтобы можно было программы, написанные для ОС, отлаживать на эмуляторе СС
-
Имею эмулятор СС, но не имею эмулятора ОС. Может быть можно, написав несколько подобных функций, сэмулировать ОС на эмуляторе СС? Вот require мы уже имеем. Теперь надо создать библиотеки computer, component, event и т.д и будем иметь полновесный эмулятор ОС.

OpenTimberMan - необычная ферма дерева
в Роботы
Опубликовано:
Неплохо было бы, если б робот и саженцы сажал при наличии оных.