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

Zer0Galaxy

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

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

  • Посещение

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

    189

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


  1. А как свои сайты добавлять?

    Если на существующий сервер - обращайся к владельцу сервера. Если свой сервер хочешь - напишу инструкцию как.

     

    А пока планируется переход на новый протокол ОН. Это позволит передавать пакеты произвольной длины (сейчас ограничение 8кБ), а так же будут генерироваться события on_massage по приходу пакета, что позволит обойтись без функции on.receive()

    • Нравится 1

  2. swg2you, я смотрю, ты как и некоторые здесь, любитель переопределять системные функции. Предлагаю тебе и другим желающим реализовать совместно проект FTP. Для доступа к дисковому пространству удаленного компьютера по вайфаю или ОпенНет.

    Это должна быть резидентная программа, которая подменяет функции библиотеки filesystem таким образом, что обращение к папке, расположенной на другом компьютере, выглядит как работа с локальным диском.


  3. Хм... Интересно, а откуда брать софт? 

     

     

    -- 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

  4.  

     

    Можно дополнить программу, чтобы она проверяла лаги и работала медленней. Тогда, теоретически, можно будет путешествовать под землей через всю карту, тупо свернув игру.
    А как, интересно ты будешь проходить лавовые озера? 
    • Нравится 1

  5.  

     

    Если нужно наследование, можно сделать простейший класс, но с двоеточием (не знаю что вы его пугаетесь (?)):
    Хм. Тема называется "ДРУГОЙ способ реализации ...". То о чем пишешь ты это, надо полагать, способ первый.

  6. Нет. Ты не путай функцию библиотеки и функцию класса.

    local class = require("имя_библиотеки").class
    

    В данном случае переменная class будет содержать указатель на уже существующую функцию и занимать в памяти аж восемь байт. Но это, к сожалению, не имеет никакого отношения к ООП поскольку класс это не тоже самое, что и библиотека.

    Способ же, который упомянул топикстартер, действительно создает объект. Но для каждого экземпляра объекта такой способ создает новые экземпляры функций-методов, а функции могут занимать в памяти килобайты.

    • Нравится 1

  7. а почему бы не вызвать функцию прямо из класса? или после инициализции удалять объект импортированной функции...

    Приведи пример, пожалуйста. А то не понятно какую функцию из какого класса? Зачем удалять какой объект?


  8.  

    На английском, но с примерами есть тут:

    http://lua-users.org/wiki/GotoStatement

     

    Первый же пример выдал

    bios:338: [string "test"]:7: '=' expected
    

    Нет в Minecraft-Lua безусловных переходов, похоже. (тестировалось под КК)


  9. >Вот это - явно какое то шаманство и запрещенные техники. Я такого еще никогда за 2 года программирования на Lua не видел.

    Не разочаровывай меня, это же основы языка.

    А в самом деле, не сочти за труд, объясни что это за операторы :: и goto. Я, конечно догадываюсь, что это определение метки и переход по метке, но в Луа с таким сталкиваюсь впервые.


  10. И зачем так сложно? Не проще либу стандартную написать? и вызывать также 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: далось вам это двоеточие. Вы гоняетесь за внешней похожестью, а ООП на самом деле это не синтаксис компилятора, а уровень мышления программиста.


  11. А зачем эмулировать event? os.pullEvent есть, os.listen сделать просто на параллели и os.pullEvent

    Зачем эмулировать компонент? Есть же peripheral.wrap и peripheral.call

    А функции computer api выполняет os

    Затем, чтобы можно было программы, написанные для ОС, отлаживать на эмуляторе СС


  12. Имею эмулятор СС, но не имею эмулятора ОС. Может быть можно, написав несколько подобных функций, сэмулировать ОС на эмуляторе СС? Вот require мы уже имеем. Теперь надо создать библиотеки computer, component, event  и т.д и будем иметь полновесный эмулятор ОС.

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