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

Asummonster

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

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

  • Посещение

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

    12

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


  1.  

    я же написал: спасибо, то есть у мя заработало...

     

    Не увидел

     Очевидно, для eeprom дрона создается новая папка на сервере. Т.е. eeprom получает уникальный id и стакаться уже ни с кем не может.

    К стати, как снимать дрона? А то я поставил, а снять не могу.

    ШИФТ + ПКМ


  2. Это в том случае, если Сябро собирается строить свою сеть, никак не связанную с нашей. Но тогда и библиотеку он напишет свою, скорее всего. Если интегрироваться в существующую сеть, нужна библиотека минимум второго уровня т.е. для работы через связанные платы.

     

    Не бойся вайфая. В ОС он намного безопаснее, чем в СС

    Я после перечитывания c9 этом не уверен....

    2f753aae63.jpg


  3. Переменная с АПИ дрона у тебя называется drone, а вызываешь метод ты из нилловой переменной, вместо drone ты написал dron


    Меня вообще кто-то видит? Зеро,тут другая ошибка. Он метод вызывает фиг знает откуда.


    e5fe402e97.jpg


  4. Вот код для компьютера:

    local modem=require("component").modem
    local keyboard=require("keyboard")
    local event = require("event")
    local term = require("term")
    modem.open(111)
    modem.setStrength(10)
    while true do
    local x=term.read()
    local y=term.read()
    local z=term.read()
    term.write("sending")
    modem.broadcast(111,x,y,z)
    end
    

    Вот для дрона:

    drone = component.proxy(component.list("drone")())
    modem = component.proxy(component.list("modem")())
    modem.open(111)
    while true do
    local name,receiverAddress, senderAddress, port, distance, x, y, z = computer.pullSignal(1)
      if name == "modem_message" then
    --local tabletAddress=""
    --if(sender==computer.address() or tabletAddress)then
    dron.move(x,y,z)
    --end
    end
    end
    
    

    По идее дрон должен смещаться на x,y,z, переданные через беспроводной модем, но он тупо вырубается(

    Посмотри на первую строку: drone = component.proxy(component.list("drone")())

    И на строку с управлением: dron.move(x,y,z)


  5. Но сервера же где-то нужно будет ставить, а ДЦ пока нет... Я даже за комп не могу толком сесть сейчас... :(Скорее всего будет проводная сеть по ДЦ что бы менее уязвим был... Так маршрутизатор есть? Wi-Fi тоже будет :) надо же планшетам работать

    Используй пока библиотеку для сети первого уровня ( на ней работают роутеры, днс, прокси). Ей не нужна огромная и сложная системма.


  6. Из того,что я прочитал - такой демон может отвечать,к примеру,на автоматическое монтирование дисков(ивент peripheralAdded, на сколько я помню), автоматически прогружать в глобал АПИ компонентов(что бы каждый раз не писать modem=component.modem), работать корзиной и т.п. Вобщем - может быть не только вирусом. Часики swg тоже демон,в винде его бы назвали "служба гаджета часов"

    • Одобряю 1

  7. Пфф...

    Вот это ЛАБИРИНТИК:

    Отпечатывал=)Твоей прогой=)В магике есть функция создания лабиринтов=)

     

    Отпечатывал=)Твоей прогой=)В магике есть функция создания лабиринтов=)

    Около 3-х часов ждал=) 126x126x126


  8. Я нашел еще один уже давно написаный поиск пути, прямо с реализацией создания карты мира у самого робота. Теперь робот может проходить лабиринты самостоятельно!

    Подробнее тут.

     

    Видео-презентация

    Пришло время тестировать!=)

    P.S. Вот лабиринтик=): https://yadi.sk/i/IwhAkg8UhCSHp


  9. Истина!

    Таблицы громоздки. Хранение одного большого экрана отожрет почти всю планку памяти тиер1, строкой хранить на несколько порядков компактнее.

    А как хранить строкой?Хотя,у меня есть идея....


  10. Самый легкий вариант не всегда самый лучший. Теоретически каждое знакоместо должно занимать в файле 2-3 байта. 1 байт - цвет и 1-2 байта - символ. А если еще упаковку применить ...

    По моему,25 килобайт за скриншот 80x25 не очень много весит, но я подумаю об изменении формата.


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

    Могу записывать просто в строку

    Я просто выбрал самый лёгкий и надёжный вариант


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

     

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

     

    Такой вот баг.

     

    Нужно сходить с роботом в майнерс мир, подорвать крипера и потестить, что скажет робот при попытке прохождения через "невидимую стену" и как он её видит.

    Да леегко он блок увидит. Это клиентские текстуры/обработка взрыва крипера работают.

  13. Монстрик. Вот эта хреновина

    local robot = require("robot")
    
    attempt = 0
    while not robot.forward() do
    	robot.swing()
      	attempt = attempt + 1
    
      	if attempt>15 then 
      		return false, 'имя блока впереди: инфа с геолайзера'
      	end
    end
    

    и так бьет 15 раз, но робот у него проехать не может все равно и возвращает воздух.  Это может быть только существо :) (например, админ в инвизе :giggle: )

    А вдруг там зомби с 93 хп?Я такого ан новом ИТ видел=)Либо вайла шалит=)


  14. Программа позволяет создавать снимки экрана.

    Сохраняет она его в файл /screenshots/Screenshot-Год-День-Час-Минута.ast

    Формат ast

    Скрытый текст

    Первые 4 байта - ширина и высота в hex, далее идут символы, которые были на экране или управляющие символы, которые означают смену цвета, после которых идёт цвет - 6 байт hex.

    Для выхода из программы после распечатывания экрана надо по нему нажать(создать ивент touch).

    Вот код "AsumScreenshoter"'а:

    local mode = ({...})[1]
    if mode==nil then
      print("Использование: screenshot init для создания ивента сохранения экрана(Кнопка Print Screen, папка screenshots)\n screenshot <имя файла> для просмотра(По окончанию просмотра нажмите на экран)"); os.exit()
      return
    end
    local fs = require("filesystem")
    local unicode = require("unicode")
    local gpu =  require("component").gpu
    local event =  require("event")
    local function dec2hex(n, s) local h = string.format("%x", n) return string.rep("0", s-string.len(h))..h end
    local function hex2dec(s) return tonumber("0x"..s) end
    local function createScreenshotFile()
      DD, HH, MM, SS = os.date("%Y"), os.date("%H"), os.date("%M"), os.date("%S")
      if not fs.isDirectory("/screenshots") then fs.makeDirectory("/screenshots")
      end
      return io.open("/screenshots/Screenshot-"..DD.."-"..HH.."-"..MM.."-"..SS..".ast", "w")
    end
    local function getScreen()
      local W, H = gpu.getResolution()
      local screenshot = dec2hex(W, 2)..dec2hex(H, 2)
      local lfg, lbg
      for y=1, H do
        for x=1, W do
          local symbol, fgcolor, bgcolor = gpu.get(x, y)
          if lfg ~= fgcolor then
            lfg = fgcolor
            screenshot = screenshot .. "␑"
            screenshot = screenshot .. dec2hex(fgcolor, 6)
          end
          if lbg ~= bgcolor then
            lbg = bgcolor
            screenshot = screenshot .. "␒"
            screenshot = screenshot .. dec2hex(bgcolor, 6)
          end
          screenshot = screenshot .. symbol
        end
      end
      return screenshot
    end
    local function writeScreen()
      local file=createScreenshotFile()
      file:write(getScreen())
      file:flush()
      file:close()
    end
    local function printScreen(filename)
      local screenshot=io.lines(filename)()
      local oldw, oldh = gpu.getResolution()
      local header = screenshot:sub(1, 4)
      screenshot = screenshot:sub(5)
      local W = hex2dec(header:sub(1, 2))
      local x = 0
      local H = hex2dec(header:sub(3, 4))
      local y = 0
      gpu.setResolution(W, H)
      while y < H do
        y = y + 1
        x = 0
        while x < W do
          local sym = unicode.sub(screenshot, 1, 1)
          if sym == "␑" then
            gpu.setForeground(hex2dec(unicode.sub(screenshot, 2, 7)))
            screenshot = unicode.sub(screenshot, 8)
          elseif sym == "␒" then
            gpu.setBackground(hex2dec(unicode.sub(screenshot, 2, 7)))
            screenshot = unicode.sub(screenshot, 8)
          else
            x = x + 1
            gpu.set(x, y, sym)
            screenshot = unicode.sub(screenshot, 2)
          end
        end
      end
      event.pull("touch")
      gpu.setResolution(oldw, oldh)
    end
    local function saveScreenByKey(_, _, key1, key2)
      if key1==0 and key2==183 then
        writeScreen()
      end
    end
    if mode=="init" then
      event.listen("key_down", saveScreenByKey)
      else printScreen(mode)
    end

    Надеюсь вы будете пользоваться этой программой!=)

    Для того,что бы начать делать скриншоты, после каждой перезагрузки надо запустить приложение с параметром init 

    Для того,что бы создать скриншот после инициализации-надо нажать кнопку Print Screen


  15. В банке на 2 этажа ниже, под менялой байтом, поставили такое вот табло, оно обогатит тех, кто знает, как использовать QR

    Код меняется каждые 20-24 часов, на скрине виден 25й код, следующим будет 24й

     

    Ссылки на тему?:)Я уже подумал,что плюшка:)


  16. А где картинки?

    Картинки дублирования экрана?

    Могу добавить=)

     

    Ты так и не научился код правильно и читабельно писать. Подправил ОП, поставил отступы в 2 пробела (!!!), а не в 4 (ты не на Си кодить пришёл), поставил нормально конструкцию if/then(/else)/end, сделал место с кодом красивым. Учись:

    if yourConditionGoesHere then
      -- 2 отступа, ДВА! И не лепи в одну строку!
    else
      -- Тут то же самое.
    end
    

    N++ 4 делает

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