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

kaka888

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

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

  • Посещение

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


  1. В 20.02.2020 в 12:23, NEO сказал:

    Ты так уверен? вызов пистона в форточках ничем не отличается от линукса. Тем более manage.py создается в проекте, никто не мешает его изменить, случайно.

    Он код не скинул что бы быть таким уверенным.

    Отличается, как оказалось)))


  2. В 08.11.2024 в 22:49, Teen_Romance сказал:

    А как сейчас этой либой и смежными ей можно воспользоваться без установки MineOs? Попросил чатик, он мне написал простенький скрипт чтобы скачать все файлы на комп:
    Чета типо этого

      Показать содержимое
    
    
    local internet = require("internet")
    local filesystem = require("filesystem")
    
    -- Базовый URL репозитория
    local baseURL = "https://raw.githubusercontent.com/IgorTimofeev/MineOS/master/Libraries/"
    -- Список файлов для загрузки
    local files = {
        "Base64.lua",
        "BigLetters.lua",
        "Bit32.lua",
        "Color.lua",
        "Component.lua",
        "Compressor.lua",
        "Event.lua",
        "Filesystem.lua",
        "GUI.lua",
        "Image.lua",
        "Internet.lua",
        "JSON.lua",
        "Keyboard.lua",
        "Network.lua",
        "Number.lua",
        "Paths.lua",
        "SHA-256.lua",
        "Screen.lua",
        "Sides.lua",
        "System.lua",
        "Text.lua",
        "Vector.lua",
        "XML.lua"
    }
    
    -- Целевая директория для сохранения библиотек
    local targetDir = "/lib/"
    
    -- Функция для загрузки файла
    local function downloadFile(url, path)
        local handle, err = internet.request(url)
        if not handle then
            io.stderr:write("Ошибка подключения: " .. (err or "неизвестная ошибка") .. "\n")
            return false
        end
    
        local file, err = io.open(path, "wb")
        if not file then
            io.stderr:write("Ошибка создания файла: " .. (err or "неизвестная ошибка") .. "\n")
            return false
        end
    
        for chunk in handle do
            file:write(chunk)
        end
    
        file:close()
        return true
    end
    
    -- Создание целевой директории, если она не существует
    if not filesystem.isDirectory(targetDir) then
        filesystem.makeDirectory(targetDir)
    end
    
    -- Загрузка файлов
    for _, file in ipairs(files) do
        local url = baseURL .. file
        local path = targetDir .. file
        print("Загрузка " .. file .. " из " .. url)
        if downloadFile(url, path) then
            print("Файл успешно сохранён: " .. path)
        else
            print("Не удалось загрузить: " .. file)
        end
    end
    
    print("Загрузка завершена. Библиотеки сохранены в " .. targetDir)

     

    После установки я попробовал запустить простенькую программу:
     

      Показать содержимое
    
    
    local component = require("component")
    local event = require("event")
    local gpu = component.gpu
    local GUI = require("GUI")
    
    -- Создаем графическое окно
    local workspace = GUI.workspace()
    
    -- Создаем главный контейнер
    local mainContainer = workspace:addChild(GUI.container(1, 1, gpu.getResolution()))
    
    -- Заголовок
    mainContainer:addChild(GUI.label(1, 1, mainContainer.width, 3, 0xFFFFFF, "Простой Калькулятор"))
        :setAlignment(GUI.ALIGNMENT_HORIZONTAL_CENTER, GUI.ALIGNMENT_VERTICAL_TOP)
    
    -- Поля для ввода чисел
    local input1 = mainContainer:addChild(GUI.input(10, 5, 20, 3, 0xFFFFFF, 0x000000, 0xAAAAAA, 0xFFFFFF, 0x000000, "", "Число 1"))
    local input2 = mainContainer:addChild(GUI.input(10, 9, 20, 3, 0xFFFFFF, 0x000000, 0xAAAAAA, 0xFFFFFF, 0x000000, "", "Число 2"))
    
    -- Место для результата
    local resultLabel = mainContainer:addChild(GUI.label(10, 13, 30, 3, 0xFFFFFF, "Результат: -"))
    
    -- Кнопка для выполнения сложения
    local addButton = mainContainer:addChild(GUI.button(10, 15, 20, 3, 0xAAAAAA, 0x000000, 0x888888, 0xFFFFFF, "Сложить"))
    
    -- Обработчик события для кнопки
    addButton.onTouch = function()
        local number1 = tonumber(input1.text)
        local number2 = tonumber(input2.text)
    
        if number1 and number2 then
            resultLabel.text = "Результат: " .. (number1 + number2)
        else
            resultLabel.text = "Ошибка ввода!"
        end
    end
    
    -- Запуск программы
    workspace:draw()
    workspace:start()

     

    И при запуске у меня все время какие то ошибки в либах этих выскакивают:
    /lib/Event.lua: attempt to index a nil value (global 'computer')
    фиксишь его - потом еще в filesystem component nil, потом filesystem  мне комп ломает почему то тем что из за ошибок я файлы редактировать не могу.
    Я не верю что на гите код какой то кривой лежит, но где меня чатик обманул?

    upd:
    я так понял не получится ничего потому что 

     :(

    Так в этой же теме ECS дал ссылку на корректную либу GUI.lua для OpenOS...
     

    Вот доки (там же отроешь и исходники): https://github.com/IgorTimofeev/GUI/blob/0fadb161469d404d477dd9babfdc9a5aa42ff203/README.md


  3. В 20.02.2020 в 08:46, Doob сказал:

    Первое, что бросается в глаза, это запуск скрипта, если нужен третий питон, то обязательно надо писать python3 script.py

    Второе, это ошибка синтаксиса, мои телепатические способности подсказывают, что там должен быть какой-то импорт, но написан он неправильно.

    Файл в студию или можешь потыкать в умной IDE, вроде PyCharm, тогда все станет понятно.

     

    Сделал твой ответ верным :D


  4. 35 минут назад, ECS сказал:

    Печальные баги - это, видимо, GUI.menu(1, 2, ...) вместо GUI.menu(1, 1, ...)? Ты же сам расположил менюху на Y = 1, где уже чиллит титловая строка. Разумеется, менюха ее перекрыла

     

    На всякий случай уточню, что гуйка работает с заранее известными координатами и размерами всех объектов, ничего не рассчитывая автоматически без ведома кодера - это не WPF/UWP с адаптивной версткой, т.к. ресурсы компов люто лимитированы. Исключения, конечно, есть в виде всяких GUI.layout или GUI.table, но это капля в море. Поэтому любая смена позиции или ресайз виджетов требует ручной обработки

     

    А, и еще кое-что: GUI.titledWindow tabbedWindow и иже с ними - просто шаблоны, которые создаются буквально в 10 строчек кода на основе базового объекта окна GUI.window, но с учётом твоих личных нужд. В них попросту заранее выставлены нужные координаты и подогнаны размеры, ничего более

    Какое облегчение, я уж думал версия для OpenOS настолько несовершенна :DD


  5. Наткнулся на печальные баги :(

    При добавлении строки меню (GUI.menu) в titledWindow окно превращается в обычный GUI.window, то есть исчезает вся шапка окна (заголовок окна, фон и три кнопки close, maximize...).

    Таким же образом добавил менюшку в tabbedWindow - эффект похожий (тёмно-серая шапка с кнопками и вкладками обрезается на треть).

     

    В обоих случаях меню, конечно, рисуется, но мне и шапка окна нужна. Что же делать? :o

     

    Вот скрины: https://imgur.com/a/8kFBjXq


  6. В 04.03.2022 в 10:34, ECS сказал:

    Этот параметр сообщает экранному буферу, что нужно отобразить  не только изменившиеся с последней отрисовки пиксели, а вообще все сразу. Обычно эта необходимость возникает при запуске скриптов, работающих с GPU напрямую в обход концепции экранного буфера. То есть в случае майноси практически никогда. Разве что для каких-нибудь старых игр или скринсейверов фича может быть востребованной...

     

    В доке по workspace он указан, хотя и без пояснений. Могу добавить инфу на всякий, если нужно:

     

    image.png.1dda246b8f4ed63840b2616fd6abb322.png

    Теперь всё стало ясно, спасибо :gamer2:


  7. Люди, пацкажыте что за непонятный параметр true в вызове application:draw(true). Этот true передаётся во многих примерах в Wiki в репе ECS/GUI.

    И этот параметр никак не задокументирован, если я не слепой


  8. В 28.02.2022 в 18:53, ECS сказал:

    За работоспособность самой либы не ручаюсь, т.к. с тех времен вышла тысяча и одна обнова под майнось, но инсталлер рабочий:

     

    pastebin run ryhyXUKZ

     

     

    Я тут чекнул твою тему про библиотеку, но там нет инструкции по использованию. Где её можно найти?


  9. 8 часов назад, ECS сказал:

    Хех, она не будет работать вообще никак, т.к. у нее одна зависимость: MineOS целиком.

     

    Если интересны подробности, то вот лонгстори: изначальная версия гуи-либы писалась как простая основа для графической оболочки поверх OpenOS, и "из коробки" она поддерживала лишь наиболее привычные виджеты типа кнопок/картинок/слайдеров (кстати, по ссылке выше как раз та самая версия). MineOS была скорее технодемкой возможностей гуишки. Однако время шло, появилась потребность в перетаскиваемых окошках, файловых модальных диалогах, селекторах цвета и т.п. Также требовалось все больше и больше узкопрофильного функционала - например, почанковое скачивание файлов с обработчиками данных или побитовые приколюхи типа file:readBytesAsNumber(count, isLittleEndian). Все эти мелочи использовались довольно часто как в системных либах по работе с пикчами, так и в прикладном софте типа MIDI-парсера или мини-игр. Изначально я оформлял их в виде дополнительных библиотек типа AdvancedLua или Web, однако просто устал плодить архитектурный говнокод. Контрольным выстрелом оказалась обнова OpenOS (1.6, если не ошибаюсь), где поменялись API process/event, что убило инсталлер MineOS на новых версиях мода. В итоге я решил, что быстрее будет написать чистую ОС с интегрированной UI'шной бизнес-логикой, чем пытаться адаптироваться под существующую

     

    Собственно, вот, интеграция вышла по самые помидоры. Глобальный минус один - либы настолько глубоко засели друг в друге, что проще писать под MineOS, чем пытаться их выдрать и использовать в другой ОС. На всякий случай я сохранил старые версии гуишки в виде легаси - но никаких новых фич и фиксов, конечно, там уже не будет

    Офигенная история)

    Жаль, что не смогу "выдрать" для OpenOS. Просто я в колледже хочу делать лабы по программированию в эмуляторе OpenComputers, а forms.lua не сильно хочется юзать.

    Ну что ж, попробую тогда GUI.lua legacy, спасибо :)


  10. 15 минут назад, ECS сказал:

    За работоспособность самой либы не ручаюсь, т.к. с тех времен вышла тысяча и одна обнова под майнось, но инсталлер рабочий:

     

    pastebin run ryhyXUKZ

     

     

    А если взять вариант либы для MineOS, но юзать её в OpenOS, то она будет работать так же хорошо или как? Ну типа если я все зависимости типа advancedLua, doubleBuffering и т.д. тоже загружу.


  11. В 29.07.2015 в 19:02, Zer0Galaxy сказал:

    pastebin get iKzRve2g lib/forms.lua

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

     

    Библиотека позволяет создавать следующие визуальные компоненты:

    Form (форма) - является контейнером для остальных компонентов. Служит для быстрой смены экранного интерфейса без необходимости удалять и создавать компоненты.

    Button (кнопка) - тут всё понятно.

    Label (метка) - просто строка текста.

    Edit (окно ввода) - позволяет вводить текст.

    Frame (рамка) - просто рамка.

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

    И невизуальные компоненты:

    Event (событие) - обрабатывает системные события.

    Timer (таймер) - позволяет вызывать функцию-обработчик с заданным периодом.

     

    Пример работы с библиотекой:

     

      Показать содержимое

     

    
    
    forms=require("forms")         -- подключаем библиотеку
    
    Form1=forms.addForm()          -- создаем основную форму
    
    exitForm=forms.addForm()       -- и форму диалога выхода
    exitForm.border=2
    exitForm.W=31
    exitForm.H=7
    exitForm.left=math.floor((Form1.W-exitForm.W)/2)
    exitForm.top =math.floor((Form1.H-exitForm.H)/2)
    exitForm:addLabel(8,3,"Вы хотите выйти?")
    exitForm:addButton(5,5,"Да",function() forms.stop() end)
    exitForm:addButton(18,5,"Нет",function() Form1:setActive() end)
    
    Btn1=Form1:addButton(65,21,"Выход",function() exitForm:setActive() end) -- создаем кнопку выхода
    Btn1.color=0x505050                       -- задаем цвет кнопки
    
    forms.run(Form1)               --запускаем gui 

     

     

     

    Попробовать библиотеку в действии можно в дата-центре на компьютере с координатами 10150, 14199. Для этого необходимо запустить файл form.lua

    Привет. Эта библиотека есть на GitHub? Она с 2015 года ни разу не обновлялась?


  12. Привет всем. Хочу делать красивый GUI для своих приложений в OpenOS, но последний опыт с Forms меня очень сильно огорчил. Хотелось бы попробовать GUI от ECS, но не уверен, что в его репе https://github.com/IgorTimofeev/GUI вариант именно для OpenOS, да и там ещё куча зависимостей, которые хрен знает сколько придётся искать.

    Так что жду совета от опытных гаишников - где взять эту либу?


  13. В 20.02.2022 в 14:47, bes_zensuri1 сказал:

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

      Показать содержимое

    function ruletka()
        loadItems2(spisok, multyplier)
        Label23.caption = ""
        Label23:redraw()
        y = 11
        for i = 1, 26 do
            name = spisok[1].item
            y = y + 1 
            for x = i,y do
                name = spisok[x].item
                Label23.caption = Label23.caption.."\n"..name
                Label23:redraw()
            end
            os.sleep(0.1)
            Label23.caption = " "
            Label23:redraw()
        end
        for x = 27,y+1 do
        name = spisok[x].item
        Label23.caption = Label23.caption.."\n"..name
        Label23:redraw()
        end
        for i = 1, #spisok do
            table.remove(spisok)
        end
    end

     

    Label23=Form2:addLabel(44,7,"")
    Label23.color = 0x000000
     

     

    О, привет, Бес.

    Рулетку сам кодишь?


  14. Только что, ProgramCrafter сказал:

    Пока что это только концепт хранилища, я его ещё не строил.

    А кодт сверхмаленького хранилища (как у @Doob) ещё не допилен - иногда перемещает предметы неоптимально.

    Ясно. Но прочитать всё это было интересно)

    • Спасибо 1

  15. 2 часа назад, Robo_start сказал:

    Возможно ли исполнение команд из маинкрафт при помощи робота?

    Если речь о командах в чате (/msg, /list, /call, /money, /ban и пр.), то не может. Робот может писать в [локальный] чат только ОБЫЧНЫЕ сообщения, ну и, в некоторых случаях, видеть какие команды вводят игроки на всём сервере.

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