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

Doob

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

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

  • Посещение

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

    141

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


  1. По-быстрому сделал форк, а то без связи с роботом непонятно, когда за ним идти.

    Добавил возможность копать в аду, подправил форматирование и выкинул кучу реквайров.

     

    pastebin get fDXkDmRE /lib/kopalka.lua

     

    Чтобы получать от робота сообщения о переполнении горшка сундука или окончании работы, просто ловим ивент 'modem_message' в компьютере со связанной картой - партнером робота.

    • Нравится 1

  2. Все никак не могу понять, для чего эта программа?

    Если она пишет файл, почему она не записывает файлы больше 128 символов, где мне взять такой файл?

    Почему бы не сделать дробление файла на части?


  3. А не легче попросить Администрацию залить прогу в робота через папку с сервером?

     

    Часто видишь администрацию на сервере?

    И к тому же, как запустить/изменить прогу на роботе без устройств ввода/вывода?


  4. Ну хорошо, любите протоколы вот вам один из протоколов для облаков - WebDAV.

    Пастебин сложно запоминать id (abvgd777 например).

    Нужна простая система передпчи, чтобы было легко поделиться в игре (типа sharing)

     

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


  5. Ты сможешь перепрошивать eeprom без разборки оборудования. Прости, что долго не отвечал, я в этот раздел редко захожу.

     

    Зачем роботу перепрошивать ЕЕРROM? Это же робот. Я вчера набивал робота и у меня одна единица все оставалась свободной, пришла идея выкинуть моник и клаву, вместо них вставить Wi-Fi и сделать I/O через модем, хоть свободных очков не появляется, но зато есть еще два слота для апгрейдов, если интересно - могу накидать утилиту для использования в планшете, чтобы его использовать вместо встроенных клавы и монитора.


  6. RFID хранит максимум 64 байт

    Лёша, ладно, завтра допилю) Сегодня устал

     

    Магнитная карта крафтится одна, а RGID целых 6, так что переделывай программу, если хочешь, чтобы ее использовали.))


  7. Диаметром же.

     

    Действительно :facepalm:

     

    К алгоритму можно прикрутить управление через чат и снятие денег со счета в банке, но не знаю где разместить игрока. Можно сделать телепортацию через чат на точку спавна TNT, а игроку выдавать инвиз.


  8. Дело было вечером, делать было нечего.
    Реализовал свою версию.
    Дальность рассчитана на 40 блоков (можно вести огонь в кругу радиусом 81 блок), комблок должен находится на уровне поверхности (поправку на высоту делает игрок).

    Суть такова: вводим название программы, направление в Майнкрафтовских градусах (юг = 0, отсчет по часовой +, против часовой -), вводим дальность и жмем [Enter]
    На короткой дистанции большие погрешности, но для TNT это не играет роли.

     

    local cb = require('component').command_block
    
    local tH = {0.02, 0.04, 0.08, 0.1, 0.12, 0.14, 0.18, 0.2, 0.22, 0.24, 0.26, 0.3, 0.32, 0.34, 0.38, 0.42, 0.44, 0.48, 0.5, 0.54, 0.6, 0.62, 0.68, 0.72, 0.76, 0.82, 0.86, 0.92, 1.0, 1.05, 1.11, 1.2, 1.26, 1.32, 1.4, 1.53, 1.56, 1.6, 1.71, 1.81}
    
    local function azimuth(a)
      local x = math.sin(math.rad(a))
      local y = math.cos(math.rad(a))
      x = (x-(x*2))-0.0001
      y = y-0.0001
      return x, y
    end
    
    local tArgs = {...}
    
    if tArgs and #tArgs == 2 then
      local angle = tonumber(tArgs[1])
      local distance = tonumber(tArgs[2])
      if type(angle) == 'number' and type(distance) == 'number' and distance <= #tH then
        local a, b = azimuth(angle)
        cb.setCommand('summon PrimedTnt ~ ~1 ~ {Fuse:100,Motion:['..a..','..tH[distance]..','..b..']}')
        cb.executeCommand()
      else
        print('Расстяние должно быть меньше '..#tH)
      end
    else
      print('Использование:\nboom <направление> <дальность>')
    end
    

     



    Пример работы скрипта

    for i = 0, 360, 10 do shell.execute('boom '..i..' 30') end

    ZGXagnj.png

    В тесте стрелял камнем FallingSand


  9. load() в моде не грузит байт-код, поэтому для перехвата кода надо сделать надстройку к операционной системе, которая будет запускаемые файлы прогонять через себя. Как я понял, это нужно для параллельных вычислений, но это тупиковый путь, для ускорения лучше выполнять код на внешних ресурсах.


  10. Хех. А не легче между клиентами согласовать randomseed?

    Кого? Файлы? Чтобы части файлов проваливались в варп? Надо будет сделать нормальный передатчик файлов, а лучше файловый менеджер, как Midday Commander, но между компьютерами (или вообще приделать к MC аналог FTP)


  11. Только не байт-код. Байт-код в компилируемых языках, а у нас луа — интерпретируемый. (Хотя компилировался-бы, через LuaJIT)

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

  12. А зачем оно сериализирует? Зачем в сообщении с куском кода название файла? + обрезалка по maxPacketSize не спасёт, потому что serialization добавляет кучу "/".

    Хм.. И правда, это дикий костыль, надо будет переделать. А название файла в сообщении, чтобы потом приспособить параллельный прием нескольких файлов.

  13. Нет предела совершенству.

    Сделал более компактную версию без излишеств и современных технологий.

     

     

    tArgs = {...}
    
    if #tArgs ~= 1 then
      print('Usage: tunnel <lenght>')
      os.exit()
    end
    
    local r = require('component').robot
    
    local function dig(s)
      while r.detect(s) do r.swing(s) end os.sleep(0.1)
    end
    
    for i = 1, tArgs[1] do
      dig(3)
      r.move(3)
      r.turn(false)
      for j = 1, 2 do
        dig(3)
        dig(1)
        r.move(1)
        dig(3)
      end
      r.turn(false)
      r.turn(false)
      for k = 1, 2 do
        dig(3)
    	dig(0)
    	r.move(0)
        dig(3)
      end
      r.turn(false)
    end
    

     

    А это можно запустить прямо в интерпретаторе (259 байт):

    r=require('component').robot l,d=io.read(),function(s)while r.detect(s)do r.swing(s)end os.sleep()end for i=1,l do d(3)r.move(3)r.turn(false)for j=1,2 do d(3)d(1)r.move(1)d(3)end r.turn(false)r.turn(false)for k=1,2 do d(3)d(0)r.move(0)d(3)end r.turn(false)end
    
    В терминале пишем 'lua', копируем туда строку, жмем 'Enter', вводим длину туннеля, жмем 'Enter' и все.
    • Нравится 1

  14. Новички используют эту программу, но не знают, какие опасности она таит.

    Нету проверки пустых блоков, в результате робот делает лишние движения.

     

    По-быстрому перевел tunnel из ComputerCraft, хоть и не такая компактная, зато надежная.

    http://pastebin.com/r78QEYFG

    • Нравится 1

  15. pastebin get 6x9YtbrX file_sender

     

    Немного неказисто, но задачу выполняет.

    Чтобы включить ожидание файла пишем: file_sender receive <имя файла> (если хотим заменить оригинальное имя файла)

    Выскочит сообщение выбора модема - вводим 'modem' для обычной платы, 'tunnel' для связанной.

     

    На передающем компе пишем: file_sender send <имя файла>

    Далее так же выбираем нужный тип модема.

     

    Не сделал чтение файла частями, поэтому он весь загружается в оперативу - размер передаваемого файла ограничен свободной памятью.

    К тому-же нет выбора модема-партнера для обычных модемов, все пересылается через broadcast.


  16. У меня вообще никаких проблем с ночью, ибо живу под землей на полу-блоках. Наголосовал на нормальные солярки - круглые сутки энергия не кончается. Самому ничего делать не надо, везде можно послать робота работать за меня.


  17. На ум сразу приходят пару идей:

     

    Сделать менеджер оперативной памяти и грузить программы через него, как через lua.lua

    Если известно имя функции, то string.dump

    Парсить всю память по рабочим индексам, если ~= nil, то занести в таблицу, но как найти нужный код я без понятия и как сразу дампить все окружения тоже.


  18. Подарок лагдромщикам... В RedPower делал проходческий щит на блокбрейкерах. Приходилось сразу выключать, как в чат орали "ЛАГИИИИ", чтобы меня не запалили и не забанили.

    • Нравится 1

  19. Спавнить неподвижного зомби на каждой клетке и проверять радарами на месте ли зомби

     

    Смысл? Если есть дебаг-карта, то и разрешение на взрывы можно выпросить))

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