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

chanmagomed

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

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

  • Посещение

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

    2

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


  1. Здравствуйте товарищи, я смог поставить минеос, не знаю что конкретно помогло, но вот что я сделал:


    Скачал с сайта java.com  последнюю версию java 8, в настройках лаунчера поставил её

    в аргументы java вписал

     -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true

    Ну и напоследок шлифанул впном
    Вот эта команда сработала 
     

    wget -f https://raw.githubusercontent.com/IgorTimofeev/MineOS/master/Installer/OpenOS.lua /tmp/installer.lua && /tmp/installer.lua

    Если что она написана на странице гита миноси.
     

    Теперь что ваще стало, утверждать не берусь, просто пересказываю что нарыл:

    Гит выпустил какие-то новые сертификаты защиты, закрыл старые. Старые версии жавы не знают новые сертификаты, новая версия должна знать, но у меня после перестановки новой жавы не получилось скачать ось.
    Аргументы жавы (написаны выше) полностью отключают проверку любых сертификатов, далая ваш майнкамф дыркой для всех нехороших людей, но если хотите один разок скачать минось, то можно и рискнуть(или нет?).
    Опять же, пробовал отдельно эти аргументы и ничего не вышло, заработало только после подключения впн. Впн отдельно тоже не помог.
    Странная крч  хрень, может просто  команду другую на гите написали, а я подумал что что-то починил)
    Отпишите плз кто попробует эти способы, чо там да как.

    • Одобряю 1

  2. Добрый день, Я пишу выдавальщик предметов с огромного кол-ва слотов, сейчас программа работает медлеено и я ищу способы для ускорения работы с транспозерами и таблицами

    сейчас у меня 4 транспозера с четырьмя сундуками на каждом.

    В каждом сундуке по 117 слотов и в общем 1872 ячейки в системе.

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

    function chest.getStorageItems()
    	local tpTable = {}
    	local thisItems = {}
    	local allItems = {}
    	for k in component.list("transposer") do table.insert(tpTable,k) end
    	for index, tp in pairs(tpTable) do
    		for i=0,5,1 do
    			if (component.invoke(tp, "getInventoryName", i)) and (i~=5) then
    				
    				thisItems = component.invoke(tp, "getAllStacks", i).getAll()
    				for o,thisItm in pairs(thisItems) do
    					if (thisItm.name~="minecraft:air") then
    						local this = false
    						
    						for g,allItm in pairs(allItems) do
    							if  ((this==false) and (allItm.name == thisItm.name) and (allItm.label == thisItm.label)) then 
    								this = true
    								allItm.count = allItm.count+thisItm.size
    							end
    						end
    						if this == false then
    						
    							table.insert(allItems, {name = thisItm.name, count = thisItm.size, label = thisItm.label})
    							
    						end
    						
    					end
    				end
    				
    			end
    				
    		end
    	end
    	return allItems
    end

    Сверху идёт провод, а выдача происходит на север.

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

    Это обновление сейчас занимает 2-3 секунды, можно ли как-то ускорить этот процесс?


  3. Долго тыкать не пришлось, может я не то читаю, но проверил типы - там нумберы, а в ошибке написано, что я даю таблицу.

    заменил на "точно цифры", нет, всё равно говорит что таблица.

    на всякий случай скину последнюю версию, там именно при нажадии на кнопку с предметом вылетает это.

    https://disk.yandex.ru/d/P1Rv6OMftY-ZSQ - файлики

    https://imgur.com/qHyWC8m - скрин 
     


  4. Огого, спасибо! появилась ошибка. Почему-то он при вызове из кнопки передаёт таблицу. Теперь можно поэксперементировать)

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

    Спасибо)429089259__2022-06-09_184454883.thumb.png.6e3dda44a1ae4305655ee149017a2a12.png


  5. Изменил блоки кода в вопросе, в "Chests.lua" функция function chest.issueItem(itm) без itm написана была

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

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

    Программу начал делать через пкм>создать программу прямо на рабочем столе. 

    Потом редачил Созданный main.lua.

    Со странички с библиотекой GUI грабил, либо делал как там, единственная моя самодеятельность - объявление кнопок через цикл (вроде)

    Чтобы увидеть ошибку надо раскоментировать  89 строчку в main.lua


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

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

    пишу под mineOS.

    Первая прога под его гуи апи, поэтому грешу на сборщик кнопок. но как это реализовать по другому не знаю.

    собсна - main.lua

    
    local component=require("component")
    local chests = require("chests")
    local cr=component.redstone
    local ct=component.transposer
    local GUI = require("GUI")
    local system = require("System")
    local items = chests.getStorageItems()
    local slots={}
    ---- Выдача предметов
    
    ----Копирование таблицы в новый экземпляр
    function table.copy(t)
      local u = { }
      for k, v in pairs(t) do u[k] = v end
      return setmetatable(u, getmetatable(t))
    end
    ----подготовка списка предметов для вывода
    function getScreenItems(name)
    local screenItems = {}
    	if name == "" then 
    		for o,_ in pairs(items) do
    			if o<=80 then
    				table.insert(screenItems, items[o])
    				--print(screenItems[#screenItems].label)
    			end
    		end
    	else
    		for itm,_ in pairs(items) do
    			fnd = string.find(unicode.lower(items[itm].label),unicode.lower(name))
    			if fnd~=nill then
    				table.insert(screenItems, items[itm])
    			end
    		end
    	end
    return screenItems	
    end
    screenItems = getScreenItems("")
    ----
    ---------------------------------------------------------------------------------
    
    -- Add a new window to MineOS workspace
    local workspace, window, menu = system.addWindow(GUI.filledWindow(1, 1, 160, 50, 0xE1E1E1,addTitlePanel))
    --window:maximize() -- раскрыть на весь экран 
    -- Get localization table dependent of current system language
    local localization = system.getCurrentScriptLocalization()
    
    -- собираю гуи
    local layout = window:addChild(GUI.layout(1, 1, window.width, window.height, 1, 3))
    layout:setRowHeight(1,GUI.SIZE_POLICY_RELATIVE,0.08)
    layout:setRowHeight(2,GUI.SIZE_POLICY_RELATIVE,0.8)
    --layout.showGrid = true
    local layout1 = layout:setPosition(1, 2, layout:addChild(GUI.layout(1, 1, layout.width, layout.height*0.8, 4, 1)))
    
    --поисковая строка
    finder = layout:setPosition(1,3,layout:addChild(GUI.input(2, 2, 30, 3, 0xEEEEEE, 0x555555, 0x999999, 0xFFFFFF, 0x2D2D2D, "", "Item name")))
    finder.historyEnabled = true
    finder.onInputFinished = function()
    	screenItems = getScreenItems(finder.text)
    	drawbtn(screenItems)
    	workspace:draw()
    end
    -------------------------------
    
    --layout1.showGrid = true
    layout1:setColumnWidth(1,GUI.SIZE_POLICY_RELATIVE,0.25)
    layout1:setColumnWidth(2,GUI.SIZE_POLICY_RELATIVE,0.25)
    layout1:setColumnWidth(3,GUI.SIZE_POLICY_RELATIVE,0.25)
    layout1:setColumnWidth(4,GUI.SIZE_POLICY_RELATIVE,0.25)
    
    -- Сборщик кнопок
    function drawbtn(screenItems)
    	layout1:removeChildren()
    	for i=1,20,1 do
    		for o = 1,4,1 do
    			id=(o-1)*20+i
    			if #screenItems>=id then 
    				btn = layout1:setPosition(o, 1, layout1:addChild(GUI.button(0, 0, (layout.width/4)-2, 1, 0xEEEEEE, 0x000000, 0xAAAAAA, 0x0, screenItems[id].label)))
    				btn.id = id
    				
    			else
    			end
    		end
    	end 
    	for o,_ in pairs(layout1.children) do
    		layout1.children[o].onTouch = function()
    			--GUI.alert(screenItems[o].name)
    			slots=chests.issueItem(screenItems[o])
    			--ct.transferItem(slots[1], 1, _, slots[2])-- ошибка при трансфере
    			
    			
    		end
    	end
    end
    
    drawbtn(screenItems)
    -- Customize MineOS menu for this application by your will
    local contextMenu = menu:addContextMenuItem("File")
    contextMenu:addItem("New")
    contextMenu:addSeparator()
    contextMenu:addItem("Open")
    contextMenu:addItem("Save", true)
    contextMenu:addItem("Save as")
    contextMenu:addSeparator()
    contextMenu:addItem("Close").onTouch = function()
    	window:remove()
    end
    
    -- You can also add items without context menu
    menu:addItem("выдать").onTouch = function()
    	--GUI.alert("It works!")
    	ct.transferItem(slots[1], 1, _, slots[2])
    end
    
    -- Create callback function with resizing rules when window changes its' size
    window.onResize = function(newWidth, newHeight)
      window.backgroundPanel.width, window.backgroundPanel.height = newWidth, newHeight
      layout.width, layout.height = newWidth, newHeight
      layout1.width, layout1.height = newWidth, newHeight*0.8
     
    end
    
    ---------------------------------------------------------------------------------
    
    -- Draw changes on screen after customizing your window
    workspace:draw()
    --GUI.alert(component.transposer.getAllStacks(2).getAll()[1])
    cr.setOutput(2,0)
    
    --print(items[1].label)
    --ct.transferItem(2, 1, _, 1, 1)

    библиотечка chests.lua

    local chest = {}
    local component=require("component")
    local ct=component.transposer
    function chest.getStorageItems()
    	local allItems = {}
    	local thisItems = {}
    	for i=0,5,1 do
    
    		if ((ct.getInventoryName(i)) and (i~=1)) then
    			local thisItems = ct.getAllStacks(i).getAll()
    			for o,_ in pairs(thisItems) do
    				if (thisItems[o].name~="minecraft:air") then
    					local thisIt = false
    					
    					for g,_ in pairs(allItems) do
    						if  ((thisIt==false) and (allItems[g].name == thisItems[o].name) and (allItems[g].label == thisItems[o].label)) then 
    							thisIt = true
    							allItems[g].count = allItems[g].count+thisItems[o].size
    						end
    					end
    					if thisIt == false then
    					
    						table.insert(allItems, {name = thisItems[o].name, count = thisItems[o].size, label = thisItems[o].label})
    						
    					end
    					
    				end
    			end
    			
    		end
    	end
    	return allItems
    end
    function chest.issueItem(itm)
    	local suka = {0,0}
    	local thisIt = false
    	for i=0,5,1 do
    		if ((thisIt==false)and(ct.getInventoryName(i)) and (i~=1)) then
    			local thisItems = ct.getAllStacks(i).getAll()
    			for o,_ in pairs(thisItems) do
    				if (thisItems[o].name~="minecraft:air") then					
    					if (thisIt==false) and (thisItems[o].name == itm.name) and (thisItems[o].label == itm.label) then
    						suka = {i,o}
    						
    						thisIt=true
    					end
    				end
    			end
    			
    		end
    	end
    	thisItems={}
    	return suka
    end
    return chest

    ошибка, наверно это недостаток памяти, хз

     

    изображение_2022-06-09_153822925.png


  7. Решил изучить луа с нуля, по старинке, без этих ваших новомодных ютьюбов. Скачал книжку по луа 5.2, поставил на майнкрафт опенкомпьютер, сижу, учусь. 

    Задачка после первой же главы "Упражнение 1.5. Напишите простой скрипт, который печатает свое имя, не зная его заранее." - не вызвала никаких проблем... по крайней мере, пока я не начал её решать. 

    Пишу в print(arg[0]) - по идее тут должно храниться имя скрипта  >> выдаёт ошибку, мол arg  - нилл валуе.

    Полез гуглить и всё такое - нашёл подтверждение моих первоначальных мыслей, надо юзать arg. Но в муйнткрумпфте  это не работает.

    Есть ли замена этому в OC? 

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