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

ProgramCrafter

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

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

  • Посещение

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

    41

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


  1. Привет! Поставил на оцелота (в который раз) майнось, работает, да вот не совсем. В приложениях так и лезут баги:

    1. Двойным кликом по ярлыку на рабочем столе программы совершенно не хотят запускаться.
    2. Интерпретатор Lua: не прокручивается на последние 1-2 строки, где, собственно, последняя команда и её вывод)
    3. Picture Editor не позволяет поменять размер холста на заданный, а при попытке расширить размер холста вправо-вниз вовсе вылетел.
    4. (возможно, забыл) неясно, как открыть несколько вкладок в MineCode IDE.
    5. Finder: не смог удалить файл main.lua из моего приложения (папки).
    6. Finder: не переходит внутрь папок (ни по одинарному клику, ни по двойному, и в контекстном меню этого тоже нет), кроме быстрого доступа.
    7. хотелось бы: функцию input() для терминала
    8. хотелось бы: в контекстном меню для программы опцию "запустить"

     

    "Железо" @ Ocelot Desktop 1.12.0: креативный сервер, тир-3 видеокарта и монитор, четыре планки тир-3.5 памяти (увеличенные ещё конфигом). Разрешение 160x37. Если надо, могу скинуть и workspace оцелота.


  2. В 14.08.2023 в 17:07, eu_tomat сказал:

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

    К сожалению, в самом моде https://github.com/tomdodd4598/NuclearCraft/blob/1.7.10/src/main/java/nc/tile/generator/TileFissionReactor.java лежит именно простыня кода.

    • Спасибо 1

  3. В 22.07.2023 в 00:44, Oleshe сказал:
    
    object.raw.localX = object.x

     

    Это не привязывает параметр localX к object.x.

    Если можно вместо localX использовать x, то прибиндить можно так:

    local object = {x = -20}
    object.raw = object
    
    object.x = 15
    print(object.x,object.raw.x) -- 15  15
    object.x = 0
    print(object.x,object.raw.x) -- 0  0
    object.raw.x = 20
    print(object.x,object.raw.x) -- 20  20

    Если разные имена нужны, придётся пользоваться метатаблицами.

    local raw = {localX = -20}
    local object = setmetatable({raw = raw}, {
      __index = function(self, k)
        assert(k == 'x')
        return raw.localX
      end,
      __newindex = function(self, k, v)
        assert(k == 'x')
        raw.localX = v
      end
    })
    
    object.x = 15
    print(object.x,object.raw.localX) -- 15  15
    object.x = 0
    print(object.x,object.raw.localX) -- 0  0
    object.raw.localX = 20
    print(object.x,object.raw.localX) -- 20  20

    Но вообще, стоило бы лучше продумать архитектуру кода.

    • Нравится 1

  4. Теперь лучше уже проходиться не лучами от центра, а просто по всем пикселям экрана. А освещённость откалибровать, например, так: "если интенсивность равна 1, то точка рядом с центром имеет полную освещённость" - тогда формула будет что-то вроде color.blend(was[1], light.color, light.intensivity / math.max(1, radius ^ 2)).

     

    P.S. Хочу потом увидеть программу, где это будет использоваться.


  5. В 07.07.2023 в 21:39, Oleshe сказал:

    И как кстати сделать больше изменений интенсивности на пиксель что-бы переход был плавнее.

    Взять тир3 видеокарту и монитор.

     

    В 07.07.2023 в 21:39, Oleshe сказал:

    Интенсивность до сих пор не на что не влияет. Есть линий которые не краситься.

    Тогда надо начинать делать по-другому: проходиться по всем пикселям и смотреть, в какой цвет их покрасить, в зависимости от [квадрата] расстояния от центра. (Что-то мне помнится, что освещённость обратно пропорциональна квадрату расстояния до источника света.)


  6. 1. Высоту можно сразу делить на 2, вроде пиксели в OC 8x4.

    2. Логично, что всё концентрируется в центре. Там очень много лучей друг на друга накладываются и перемешиваются до того, что получается сплошной красный цвет. Можно убавлять количество лучей в зависимости от радиуса: for angle = 1,math.max(5,math.ceil(180*radius/light.radius)) do


  7. Скорее всего, надо убрать generator.remove() из ветки else, чтобы робот не доставал уголь обратно из топки.

    Но вообще, ничто не мешает роботу параллельно заряжаться и кликать:

    local component = require("component")
    local robot = require("robot")
    local computer = require("computer")
    
    local generator = component.generator
    local maxEnergy = computer.maxEnergy()
    
    while true do
        local energy = computer.energy()
        local energyPercentage = energy / maxEnergy
    
        if energyPercentage < 0.60 and generator.count() < 64 then
            robot.select(1)
            generator.insert(1)
            robot.select(16)
        end
        
        robot.use()
    end 

     

    • Нравится 2
    • Одобряю 1

  8. 2 минуты назад, eu_tomat сказал:

    И какой результат возвращает spaceUsed(), если файл не создавать?

     

    В 11.06.2023 в 10:23, WheatComp сказал:

    spaceUsed() все время показывает 512, хотя добавил в директорию диска 2 файла по 1 Мб. Как бы обновить показания?

     

    @eu_tomat То есть, при обновлении папки извне OpenComputers это не заметит и занятое место не пересчитает.

    • Нравится 1

  9. 5 часов назад, WheatComp сказал:

    Папка network есть.

    Решение: удалить папку network, потому что в изначальной установке OpenOS её нет, и также проверить папку boot на соответствие чистой (https://github.com/MightyPirates/OpenComputers/tree/master-MC1.7.10/src/main/resources/assets/opencomputers/loot/openos/boot), перезагрузить компьютер.

    • Нравится 2

  10. И ещё идея - делать всё через виртуальных игроков.

    1. Подключаем майнкрафт к серверу через Wireshark/ещё что-то, что захватит трафик (с offlineMode=true шифрования нет).

    2. Кликаем по токарному станку как надо.

    3. Отключаемся, находим нужные пакеты.

    4. Подключаемся (хоть скриптом на локальном компьютере, хоть с самого сервера из OC) к серверу майна и управляем токарным станком.

    • Нравится 2

  11. 4 минуты назад, Doob сказал:

    Чтобы узнать плотность всех блоков на 100% требуется затратить примерно на 30% больше энергии и времени из-за дополнительных сканирований.

    Чтобы узнать плотность на 100%, нужно бесконечно много сканов))

    Потому что сканы могут постоянно попадать в коллизию.


  12. 39 минут назад, eu_tomat сказал:

    Новость же об этом почему-то затерялась.

    Почему именно затерялась - сказать несложно: ведь вместе с починкой роботов сломалась система обмена ЭУР на УР. :)


  13. В 19.10.2022 в 15:43, Taoshi сказал:

    Для связи можно использовать модем (проводной/без проводной)

    Там вроде не программа-БД, а компонент-база данных, который должен быть подключен к тому же компьютеру, что и контроллер МЭ-сети.

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