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

num_pi

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

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

  • Посещение

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

    7

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


  1. В 17.12.2021 в 19:01, Disc2 сказал:

    @num_pi Во второй проге Gui и проверка предметов тупо в одном цикле.. Оно вообще работает когда там несколько десятков предметов? Кнопки нажимаются?

    Очень плохо.


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

     

    local component = require("component")
    local event = require("event")
    local keyboard = require("keyboard")
    local glasses = component.glasses
    local fs = require "filesystem"
    local timeConstant = 0.5 --время задержки для измерения тпс 
    
    
    local uuid = {
        {["uuid_radar"] = "bf7955f9-b734-4b0d-9372-d5c034fabacf", ["name"] = "radar_home"}
    }
    
    local whitelist = { --Белый список, горят зеленым
        "user1",
        "user2"
    }
    
    local blacklist = { --Не выводим на очки совсем, те кто в ЧОРТном списке. 
        "user3"
    }
    
    local function time()
        local f = io.open("/tmp/timeFile", "w")
        f:write("test")
        f:close()
        return (fs.lastModified("/tmp/timeFile"))
    end
    
    function addinformation()
        realTimeOld = time()
        os.sleep(timeConstant)
        realTimeNew = time()
        realTimeDiff = realTimeNew - realTimeOld
        TPS = 20000 * timeConstant / realTimeDiff
        tps_widget = glasses.addText2D()
        tps_widget.addTranslation(100, 14, 0)
        tps_widget.setText("TPS: ".. string.format("%.3f", TPS))
        tps_widget.addColor(255,0,0,1)
        tps_widget.setFontSize(18)
    end
    
    function SaveListPlayers(Listplayers, TableListNamePlayers)
        TableListNamePlayers = Listplayers
    end
    
    function players()
        local location = {"Сейчас дома:"}
        for s = 1, #uuid do
            local radar = component.proxy(uuid[s].uuid_radar)
            local Listplayers = radar.getPlayers()
            print("ListplayersCount: " ..#Listplayers)
            print("uuidAmount: " ..#uuid)
            SaveListPlayers(Listplayers,uuid[s])
            if Listplayers[1].name ~= nil then
                print("PlayersAvalabile: " ..Listplayers[1].name)
                function keyuuid()
                    sskeyuuid = uuid[s].name.getID()
                end
                pcall(keyuuid)
                print(sskeyuuid)
                if sskeyuuid == nil then
                        WidgetnameByNAME = uuid[s].name
                        WidgetnameByNAME = glasses.addText2D()
                        WidgetnameByNAME.addTranslation(x + 6,height, 0)
                        WidgetnameByNAME.setText(location[s])
                        WidgetnameByNAME.addColor(255,215,0,1)
                        WidgetnameByNAME.setFontSize(16)
                end
                for i = 1, #Listplayers do
                    print("Listplayers[i].name: "..Listplayers[i].name)
                    WidgetnameByNickName = Listplayers[i].name
                    print("WidgetnameByNickName: " ..WidgetnameByNickName)
                    WidgetnameByNickName = glasses.addText2D()
                    WidgetnameByNickName.addTranslation(x + 10, 12 * i + height, 0)
                    WidgetnameByNickName.addColor(255,0,0,0.4)
                    for p = 1, #whitelist do
                        if Listplayers[i].name == whitelist[p] then
                            WidgetnameByNickName.addColor(0,255,0,0.85)
                                plr = Listplayers[i].name
                                WidgetnameByNickName.setText(plr)
                                WidgetnameByNickName.setFontSize(12) 
                        end
                    end
                    for k = 1, #blacklist do
                        if Listplayers[i].name == blacklist[k] then
                            Listplayers[i].name.removeWidget()
                        end
                    end
                end
                height = height + #Listplayers * 10 + 10
            end
    end
    end
    
    function main()
        if keyboard.isKeyDown(keyboard.keys.w) and keyboard.isControlDown() then
            print("Exiting...")
            os.exit()
        end
        offset = 17
        height = 30
        x, y = 1, 1
        players()
        addinformation()
    end
    
    while true do
    pcall(main)
        os.sleep(6)
        glasses.removeAll()
    end


     


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

    У меня несколько замечаний по этому заказу.

     

    Звучит как "идеальная программа". Думаю, экстремальные оптимизации лучше выполнять коллективно. Один программист может либо не знать о нюансах быстродействия в той или иной ситуации, или забыть в момент написания. А тут кроме OC накладываются ещё и нюансы AE.

     

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

     

    В этом месте сразу приходит идея: не надо каждый раз перепроверять все 500 вещей в базе, а все крафты выполнять централизованно на основе OC. Тогда OC будет знать о всех крафтах и актуальных остатках предметов. А если игрок вручную работает с МЭ-системой, то пусть по окончании операции нажимает плиту, например. Тогда не потребуется выполнять ежесекундно по 20 запросов и выполнять по 100500 сравнений. Это основа всех оптимизаций: выполнять вычисления только тогда, когда это необходимо.

     

    А что не так с метатаблицами кроме неявного вызова функций?

     

     

    Хорошо, вот держи то что я использовал. https://oc.cil.li/topic/1714-ae2-stock-auto-crafting-v13-w-installer/,  https://github.com/KaseiFR/ae2-manager


  4. Описание: Нужна программа для Авто поддержание заданного типа вещей, заданного количества в мэ системе. 

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

     

    Сборка майна версии 1.7.10

    Какие моды есть: OC версии 1.6.2, AE2, openPeripheral, и д.р

     

    Требования к ПО:  Версия мода, 1.6.2. Наименьшая нагрузка на сервер minecraft, которая только возможна. Стабильная и быстрая работа программы, когда вещей в базе будет 500 и более. Отсутствие GUI у приложения, нужен только лог, лог должен записываться локально, в файл, и разбиваться на вложенные папки, такого вида: год -> месяц -> текущий день.log(01.log).  В логе  должна содержатся данная информация: какой предмет крафтился, какое его количество, и завершилась ли операция успешно или провалилась. Добавление и удаление вещей из очереди пре-крафта, будет осуществляться мною из собственной веб админ панели, соответственно как вариант хранения списка вещей для пре-крафта, я предлагаю таблицу, локально сохраненную в файл на диске или можете выбрать свой собственный способ и метод для хранения данных, главное условие, нужен будет api для удаления, изменения, и добавления вещей в список вещей пре-крафта, что бы у меня была возможность дописать свой собственный модуль для взаимодействия клиента в minecraft, с админ панелью, используя ваш код.

     

    Писать без использования мета таблиц!

     

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

     

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