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

Asior

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

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

  • Посещение

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

    70

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


  1. 10 часов назад, eu_tomat сказал:

    При желании энергию роботов можно поддерживать заменой батарейных апргейдов или апргрейдов опыта. А сами апргрейды можно переносить в инвентарях дронов

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

    Не хватает роботам или модуля распределителя энергии или правок в коде по приоритетам использования батареек. 

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

    • Нравится 1

  2. 19 часов назад, eu_tomat сказал:

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

    Тоже поискал, и как то не нашел, но помню про неё. Есть мой вариант, но оригинал был все-же эпичнее.

     


  3. 23 часа назад, eu_tomat сказал:

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

    А да, точно. Как то не сообразил. Ведь игрок может же прийти в игру, а комп будет не прогружен. Тогда не засчитается что он был онлайн.

    Скорее всего данная программа стоит на спавне, а как известно по механике майна, спавн всегда прогружен, так что для компьютера не составит труда все время проверять онлайн и обновлять таблицу


  4. 1 час назад, whiskas сказал:

    Можна заюзать внешнюю API для получения точного времени

    А можно просто создать файл и глянуть на дату его создания. Тогда чанклодер не требуется, программа просто будет обновлять данные ну скажем раз в 20 сек, этого вполне достаточно чтобы игрок прогрузил обстановку, сообразил что где и куда глядеть


  5. Нужна справка для "особо тупых" это я про себя. Установка прошла быстро, немного сомнений вызвали 3 адреса для установки (как потом оказалось что это диск, дискета и tmp), не мешало бы их указывать в установщике. Проблемы начались после установки. Для начала ничего не понятно с навигацией. Из папки невозможно выбраться, хотя хз, есть там куда выбираться. Как создать файл? Как Удалить? И прочее. Дошло до того что я сидел и код просматривал в поисках кнопок. Кстати при кнопке alt все падает. Потом отыскал коды, смог попрыгать по 2 папкам, и собственно все.

    Так что очень не хватает справки.

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


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


  7. 4 часа назад, Teen_Romance сказал:

    Если не сложно, можно какой то простенький пример вашего метода? 

    local alf = {'a','b','c','d','e','f'}
    local alf2 = {}
    
    local function saveFile(pos1, pos2, pos3) --запись в файл
      local file = io.open('/home/test.csv', 'a')
      print(tostring(pos1)..';'..pos2..';'..pos3..';')
      file:write(pos1..';'..pos2..';'..pos3..';\n')
      file:close()
    end
    
    local function curPhrase(line) --вырезка фразы с разделителем
      local tbl = {}
      for part in line:gmatch("[^;]+") do
        table.insert(tbl, part) 
      end
      return tbl
    end
    
    local function readFile() --подкгрузка базы руды
      f = io.open('/home/test.csv')
      local line = f:read()
      while line ~= nil do
        if line ~= '/n' then
          local vr = curPhrase(line)
          alf2[#alf2+1] = {vr[1], tonumber(vr[2]), tonumber(vr[3])}
        end
        line = f:read()
      end
      f:close()
    end
    
    print('Генерация таблицы')
    for i=1, 10 do
      saveFile(alf[math.random(#alf)], math.random(10), math.random(20))
    end
    print('Загрузка таблицы в ОЗУ')
    readFile()
    for i=1,#alf2 do
      print(alf2[i][1],alf2[i][2],alf2[i][3])
    end
    Скрытый текст

    R6s7yr7.png

     

    OZst4yI.png

    Плюсы данного сохранения, данные для сохранения выбираешь сам.

    Ну а минусы, приходится потом вручную настраивать типы считываемых данных.


  8. Если объемы таблиц не сильно большие, то рекомендую вообще использовать файл как файл подгрузки таблицы. Тоесть при старте программы прогружать таблицу в оперативку и там с ней работать. Постоянно обращаться на диск за таблицей не стоит, так как во первых это довольно долго, а если таблица разрастется до хороших таких объемов то еще и невыгодно будет по памяти.

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

    • Нравится 2

  9. Хотя в последнем давно уже никто не обновлял функции и их описание. И блоки кое какие отсутствуют. Но для старта вполне хватит, а там уже методом тыка или через оригинальную вики можно добить все api


  10. 15 часов назад, Totoro сказал:

    Может багу подвержена какая-то конкретная версия мода OpenComputers?

    С версии 1.7.3 по 1.7.4 больше версий то нет. Не замечали это из за того что во первых ОС так сильно как мы никто не пользуется на других серверах, или у них стоят более старые версии зачастую 1.6 и 1.7.2. Такая бага была и на серваке vladimir. Там вообще была и ванила и сборка с модами. 


  11. Начиная с версии 1.7.3 изменен алгоритм сохранения состояния компьютера при выгрузке его из чанка. Из за ошибки в коде (разраб утверждает что так и задумано, походу сделано для продажи фиксов для ОС хотя может я не так понял смысл). Тык1 Тык2

    Насколько я понимаю, при выгрузке чанка проходит сохранение, а потом спустя ~5 минут очищается все состояние компьютеров. Тоесть при прогрузке чанка, комп пытается восстановить свое состояние, а восстанавливать неоткуда, тогда прилетает ошибка, и комп переходит в режим "выключено".

    Я не сильно силен в этом коде, кто понимает, можете почитать. Проблема явно в этом районе +- 10 строк

    SaveHandler.scala#L211

    Описание проблемы от того кто починил это

    https://pastebin.com/raw/Rh8Nqh0B

    И да, такое наблюдается на всех серверах дримфинити. Там ими не занимаются фактически, так что игроки смирились и придумали схемы автозапуска на импульсе по редстоун сигналу.

     

    • Нравится 2

  12. Вообще то возможен, но насколько я помню на некоторых серваках эта фишка порезана, а то находятся умельцы клепающие лампочки микроскопических размеров. Вроде это настраивается в конфигах. Где не помню, надо читать/искать. А так, да можно заправлять еще в верстаке, просто объединив с светопылью


  13. 5 часов назад, Totoro сказал:

     

    Баги с графикой любопытны. MineOS поддерживает дисплеи / видеокарты второго тира?

    Частично. Там же в требованиях написано, 3 уровень. Вообще удивлен что он поставил её, раньше проверка проходила по железу и если не соответствует требованиям установка отменялась. Так что это вообще не баги а просто исчезновение некоторых оттенков цветов


  14. 1 час назад, eu_tomat сказал:

    В моей же схеме кулеры работают в каждой из позиций. Каждая позиция имеет максимальную эффективность.

    Всмысле в каждой позиции работают? Не работают они, вообще никак.

    Хмм, щас попробовал выкинуть с 1 стержня все куллеры, и удивительно, но оно не нагревается. Правда греться стали другие куллеры, но возникает вопрос, как это вообще так?

    Короче врубаю реактор на режим разноса. До этого на контроле ОС только работал.

    Так, запуск прогнал, это было довольно занимательно если б не пластины то была бы еще одна дырка на карте. Хотя нет, дырка теперь уже есть.

    1 час назад, eu_tomat сказал:

    И реактор не простаивает. Никогда.

    Именно так! Около 2 минут он может быть и выдержит, а потом большой бум. Я незнаю как это никогда не простаивает? Данная схема работает только под контролем ОС и никак иначе. Ну или на системе таймеров.


  15. 5 часов назад, eu_tomat сказал:

    Кстати, кому-нибудь удалось разобраться, при каких условиях работает эта схема?

    Прогнал данную схему на быстром тесте. Все куллеры что черные, тоесть они не работают, заменил на реакторные пластины, чтоб добавить себе немного времени на реакцию (в случае аварии чтоб успел снести контроллер).

    Вырабатывает данная схема 600Eu/t максимальное время работы 66 секунд, время охлаждения 40 секунд.

    Чисто в теории можно попробовать поиграть с куллерами и увеличить время работы, но как минус, охлаждение тоже немного повысится.

    Тестировал при помощи программы:

    local c = require("component")
    local tr = c.transposer
    local red = c.redstone
    
    local time = 0
    local vr = tr.getStackInSlot(1,4)
    local dam = vr.maxDamage - 1000
    print('Куллер: '..vr.label)
    print('Прочность куллера: '..vr.maxDamage)
    red.setOutput(0,255)
    
    while true do
      vr = tr.getStackInSlot(1,4)
      if vr then
        if vr.damage >= dam then
          print('Переход в режим охлаждения')
          red.setOutput(0,0)
          print(time)
          break
        end
      else
        print('BUM! Бегии....')
        red.setOutput(0,0)
        break
      end
      time = time + 0.5
      os.sleep(0.5)
    end
    
    time = 0
    
    while true do
      vr = tr.getStackInSlot(1,4)
      if vr then
        if vr.damage == 1 then
          print('Охлаждение завершено')
          --red.setOutput(0,0)
          print(time)
          break
        end
      else
        print('BUM! Бегии....')
        red.setOutput(0,0)
        break
      end
      time = time + 0.5
      os.sleep(0.5)
    end

    Возможно время немного не точно, но как я думаю лучше наверное перестраховаться чем потом ходить по базе разыскивая куда улетели сапоги во время взрыва :smile3:

    Немного протестировал с различными типами куллеров:

    • Теплоотвод: работа - 32 сек; охлаждение - 102 сек
    • Реакторный теплоотвод: работа - 31 сек; охлаждение - 168 сек
    • Разогнанный теплоотвод: работа - 67 сек; охлаждение - 42 сек
    • Улучшенный теплоотвод: работа - 40 сек; охлаждение - 69 сек

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

    P.S. Пробовал менять самые греющиеся куллеры на охлаждающий стержень (10к) время работы выросло до 247 сек, но реактор этого не выдержит. Уже на 210 секунде все остальные куллеры начали перегорать.


  16. Эмуляторов то не так то много. OCemu, Ocelot (офлайн версии так и нет), и безымянный от @ECS который так же не доделан. Больше эмуляторов которые хоть чтото и как то эмулируют я не помню


  17.  

    1 час назад, Kingdom сказал:

    В автоматизации, тем более, так лучше, не суть, мне нужен код, вот и всё.

    По коду, рекомендую составить запрос в соответствующую тему. Нужна программа и прочее прочее.

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

    Программа на деле то не сложная, навскидку не более 50 строк кода, и это с защитами от дурака.

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