Oleshe
-
Публикации
155 -
Зарегистрирован
-
Посещение
-
Победитель дней
12
Сообщения, опубликованные пользователем Oleshe
-
-
2 часа назад, OMGSEMA сказал:Но она с авто-запуском и для меня это достижение!
Всм авто запуск? Это надстройка над OpenOs? А чем тебе не нравится MineOs?
Древнее сообщене:Ну если хочешь делай, но в 1-й из причин, зачем заново изобретать велосипед? Есть прекрасная OpenOs или для графики MineOs, зачем что-то еще?
Ну, я не очень то умею поддерживать людей, но могу сказать что для новичка форума не плохо.
Удачи :3.-
1
-
-
Есть ли эмулятор ОС на андроид? Есть прямо java майн на телеф но с модами оно нестабильно до ужаса + не получает что-то там и не сохраняется стадия компьютеров если чанк выгружается. Можно ли запустить тот-же оцелот на телефоне?
-
В 21.12.2022 в 22:01, Vokurt сказал:... terminal glasses ...
По порядку, терминал это компонент, на чём вам нужен мод? OpenGalsses, OpenGlasses 2, OpenPerephiral.
Второе, можно сделать чат на пример в планшете, или вы имеете в виду что сделать графический чат как дискорд? На планшете будет быстрее сделать
.
Первый очки мы унижаем, там api не на гитхабе, да и работает он по другому. Не удобно. Да и зачем они если есть вторые).
Вторые очки возможно, но там криво косо "и так сойдёт", стоит помучатся но сделать можно. Он не даёт координаты мыши при клике, что означает что всё полагается на клавиатуру.Третий Perephiral, вот это дело. На нём будет проще сделать, одна из причин - гайд который где-то закопан на форуме.
-
2 часа назад, kcalBxoF сказал:Какие аддоны есть на OpenComputers, помимо OpenGlasses и OpenSecurity, которые будет интересно внедрить на сервер?
Computronics -- Звуковая карточка, чат бокс, камера (меряет расстояние до блоков + информацию о блоке (базовою)), кривой радар, улучшения на робота, там много всякого.
OpenScreens -- Плоские мониторы, можно повесить на стену на пример.
-
1
-
-
В 09.01.2023 в 18:46, serafim сказал:сломай киркой
(1.16.5) (автору лучше указывать версию)
Я смог сломать рукой, без шифта или чего либо еще. Но киркой получиться быстрее.-
1
-
-
Моя не профессиональная экспертиза показала, что так сделать нельзя. Квадратные скобки остаются по любому. Пришел я к такому выводу потому-что в компоненте чат бокса нету нужно нам функций, а изменить строку что-бы либо окрасить первую или последнюю, нельзя. Приходиться выбирать, либо без цвета, либо с кринжом. Может быть через конфиг можно изменить но оно не соответствует "условиям".
-
1
-
-
3 часа назад, ECS сказал:Вполне вероятно, что смещение белого прямоугольника - это баг отрисовки. А, может быть, и нет, т.к. либа юзается не по доке:
1) Обработка событий встроена, workspace.start() сам по себе запускает бесконечный цикл пуллинга событий, и делать это вручную через while true нет смысла.
Я использовал цикл потому-что нужно было что-бы когда мы зажимали клавишу, мы ходили без остановки, только потом я догадался сделать isKeyDown, который можно встроить в eventHandler. Я использовал для начала, остатки это текст, но потом нужда в непрерывной ходьбе.
3 часа назад, ECS сказал:2) Непонятно, зачем конкретно в твоём случае используется таймаут поллинга в 0.01 сек. Эта фича используется в довольно редких ситуациях, когда нужно делать что-то с заданным интервалом. Например, опрашивать внешние компоненты типа реакторов или перемещать визуальные элементы в играх раз в N сек. Если тебе требуется лишь анализ нажатия клавиш, то /.../
Что-бы цикл не стопорил все на 2 минуты по кастомному конфигу. Иногда мне нужно обработать огромный цикл, это занимает больше секунды и оно вылетает. Цикл как правило гарантировано с выходом, ему просто нужно время. Использование спячки очень медлит работу. Тут у нас нету выхода из цикла, как минимум не за 2 минуты, поэтому тут и спим.
4 часа назад, ECS сказал:3) Изменять экранные координаты объекта бесполезно, т.к. они рассчитываются автоматически и используются только во время вызова метода draw(). Чтобы изменить позицию элемента в родительском контейнере, используй localX/localY /../
В чем отличие? Как и описывалось в коде список "игрок" описывает его, он не является контейнером, либо я не правильно понял ответ (или вопрос). Или имелось в виду что если используем контейнер. Из-за этого и пошла ошибка отрисовки, при перемещений контейнера на фоне пластины оно и закрашивало.
3 часа назад, ECS сказал:4) Нет смысла удалять и пересоздавать объекты картинок при каждом ивенте. Если тебе нужно попросту заменить картинку в существующем виджете, то /.../
Это было сделано потому-что мы просто ставили новый объект, другого способа поменять координату я не знаю.
4 часа назад, ECS сказал:5) Можно вообще создать собственный виджет "player", определив ему метод отрисовки и не собирать его GUI.image. Он и работать будет быстрее, и все поля будут храниться в одном месте, и любой кастом можно будет оформить за пару строк кода /../
Вот это топ подгон).
Попробую переделать под это все и посмотрим изменится ли что-нибудь.
Хотелось-бы что-бы каждый граф. элемент имел динамические координаты, кнопка, картинка, текст, ползунок и т.д., не только контейнеры. -
Опять вопрос косит под ECS. Есть программа, условно пока-что передвижение в пространстве на кастомной карте. Но вот проблема, что-бы игрок оставался в поле зрения мы передвигаем карту, так вот, что-бы не перерисовывать карту каждый раз когда мы дёргаемся, мы передвигаем контейнер с картой. Но вот не задача судари, контейнер оставляет за собой след, который упирается в любую пикчу.
Скрытый текстlocal gui = require('gui') local event = require('event') local fs= require('filesystem') local elements = {} -- Будещее... local camera = {x=1,y=1} --Вроде не нужно, но этоже еще в разработке) local player = {x=50,y=25,facing='Right'} -- информация об игроке local image = require('image') local images = {} -- Вперёд в будущее (по тексту) local key = require('keyboard') images['Brick'] = image.load('/Brick.pic') -- будущее настало images['Man Left'] = image.load('/Man.pic') images['Man Right'] = image.flipHorizontally(image.load('Man.pic')) images['Man Up'] = image.load('/Mann.pic') images['Man Down'] = image.flipVertically(image.load('Mann.pic')) -- Заранее подгружаем пикчи что-бы не грузить диск по любомму требованию wk = gui.workspace(1,1,160,50) local bg = wk:addChild(gui.panel(1,1,160,50,0xFFFFFF)) -- Задний фон local text = wk:addChild(gui.text(20,20,0x989898,'0 0')) local data = fs.readTable('/Test.map') -- {[1]={[1]='Brick'},X=1,Y=1} --Карта local map = wk:addChild(gui.container(1,1,160,50)) -- Наш пациент, контейнер local playerpic = wk:addChild(gui.image(50,25,images['Man Right'])) local a= 0 for x=1,160 do -- потом карта будет сама определять свой размер, исходя из файлы карты for y=1,50 do a = a + 1 pcall(function() -- Второе будущее elements[a] = map:addChild(gui.image(x,y,images[data[x][y]])) -- Спавн элементов карты, координаты и что за элемент там хранится, в будущем будет колайды (можно ли уперется в объект (пол и тумбочка)), а также делаем так,что-бы мы могли в будущем управлять компонентами карты запихивая в "элементы"(карты) end) end end while true do e1,e2,e3,e4,e5,e6=event.pull(0.01) text.text = tostring(e3)..' '..tostring(e4) playerpic:remove() -- Дабы не рисовать супер линий игроком if key.isKeyDown(30) then -- A if player.x > 20 then player.facing = 'Left' player.x = player.x - 2 else map.localX = map.localX-2 end end if key.isKeyDown(32) then -- D if player.x < 140 then player.facing = 'Right' player.x = player.x + 2 else map.localX = map.localX+2 end end if key.isKeyDown(17) then -- W if player.y > 10 then player.y = player.y - 1 player.facing = 'Up' else map.localY = map.localY-1 end end if key.isKeyDown(31) then -- S if player.y < 40 then player.y = player.y + 1 player.facing = 'Down' else map.localY = map.localY+1 end end local playerpic = wk:addChild(gui.image(player.x,player.y,images['Man '..player.facing])) -- показываем игрока, снова wk:draw() end wk:draw() wk:start()
На вторую пикчу не хватило бюджета, но на игрока оно тоже стопорит закраску, игнорируя текст.
-
В общем вопрос заключается в отрисовке кубов в 3D Test от ECS.
Проблема: как видно на скриншоте, у нас 3 оранжевые (да, оранжевые) стенки с лево. Почему они летают? у координата = 0 ставим стенку на 0-ой корде с высотой в 2. у = у + 2, ставим стенку на 2-й высоте, но, мне кажется, он ставит её не там. Он должен "оптимизировать" и вырезать стенку с верху, но он этого не делает, что означает что стенка стоит не на той координате, но вы же ставили её на нужную.
Код который я получил:
Скрытый текст-------------------------------------------------------- Libraries -------------------------------------------------------- local color = require("Color") local screen = require("Screen") local event = require("Event") local GUI = require("GUI") local vector = require("Vector") local materials = require("OpenComputersGL/Materials") local renderer = require("OpenComputersGL/Renderer") local OCGL = require("OpenComputersGL/Main") local meowEngine = require("MeowEngine/Main") ---------------------------------------------- Anus preparing ---------------------------------------------- -- /MineOS/Desktop/3DTest.app/3DTest.lua screen.flush() meowEngine.intro(vector.newVector3(0, 0, 0), 20) local workspace = GUI.workspace() local scene = meowEngine.newScene(0x1D1D1D) scene.renderMode = OCGL.renderModes.flatShading scene.auxiliaryMode = OCGL.auxiliaryModes.disabled scene.camera:translate(-2.5, 8.11, -19.57) scene.camera:rotate(math.rad(30), 0, 0) scene:addLight(meowEngine.newLight(vector.newVector3(0, 20, 0), 1.0, 200)) scene:addLight(meowEngine.newLight(vector.newVector3(0, 0, 0), 1.0, 200)) scene:addLight(meowEngine.newLight(vector.newVector3(20, 20, 0), 1.0, 200)) scene:addLight(meowEngine.newLight(vector.newVector3(0, 20, 20), 1.0, 200)) scene:addLight(meowEngine.newLight(vector.newVector3(20, 20, 20), 1.0, 200)) ---------------------------------------------- Constants ---------------------------------------------- local blockSize = 5 local rotationAngle = math.rad(5) local translationOffset = 1 ---------------------------------------------- Voxel-world system ---------------------------------------------- local world = {{{}}} local worldMesh = scene:addObject( meowEngine.newMesh( vector.newVector3(0, 0, 0), { }, { }, materials.newSolidMaterial(0xFF00FF) ) ) local function checkBlock(x, y, z) if world[z] and world[z][y] and world[z][y][x] then return true end return false end local function setBlock(x, y, z, value,size) -- изменено world[z] = world[z] or {} world[z][y] = world[z][y] or {} world[z][y][x] = {value,size} end local blockSides = { front = 1, left = 2, back = 3, right = 4, up = 5, down = 6 } local function renderWorld() worldMesh.vertices = {} worldMesh.triangles = {} for z in pairs(world) do for y in pairs(world[z]) do for x in pairs(world[z][y]) do local firstVertexIndex = #worldMesh.vertices + 1 local xBlock, yBlock, zBlock = (x - 1) * world[z][y][x][2][1], (y-1) * world[z][y][x][2][2], (z - 1) * world[z][y][x][2][3] -- именено local material = materials.newSolidMaterial(world[z][y][x][1])-- именено table.insert(worldMesh.vertices, vector.newVector3(xBlock, yBlock, zBlock))-- именено table.insert(worldMesh.vertices, vector.newVector3(xBlock, yBlock + world[z][y][x][2][2], zBlock))-- именено table.insert(worldMesh.vertices, vector.newVector3(xBlock + world[z][y][x][2][1], yBlock + world[z][y][x][2][2], zBlock))-- именено table.insert(worldMesh.vertices, vector.newVector3(xBlock + world[z][y][x][2][1], yBlock, zBlock))-- именено table.insert(worldMesh.vertices, vector.newVector3(xBlock, yBlock, zBlock + world[z][y][x][2][3]))-- именено table.insert(worldMesh.vertices, vector.newVector3(xBlock, yBlock + world[z][y][x][2][2], zBlock + world[z][y][x][2][3]))-- именено table.insert(worldMesh.vertices, vector.newVector3(xBlock + world[z][y][x][2][1], yBlock + world[z][y][x][2][2], zBlock + world[z][y][x][2][3]))-- именено table.insert(worldMesh.vertices, vector.newVector3(xBlock + world[z][y][x][2][1], yBlock, zBlock + world[z][y][x][2][3]))-- именено -- Front (1, 2) if not checkBlock(x, y, z - 1) then table.insert(worldMesh.triangles, OCGL.newIndexedTriangle(firstVertexIndex, firstVertexIndex + 1, firstVertexIndex + 2, material)) table.insert(worldMesh.triangles, OCGL.newIndexedTriangle(firstVertexIndex + 3, firstVertexIndex, firstVertexIndex + 2, material)) end -- Left (3, 4) if not checkBlock(x - 1, y, z) then table.insert(worldMesh.triangles, OCGL.newIndexedTriangle(firstVertexIndex + 5, firstVertexIndex + 1, firstVertexIndex + 4, material)) table.insert(worldMesh.triangles, OCGL.newIndexedTriangle(firstVertexIndex + 1, firstVertexIndex, firstVertexIndex + 4, material)) end -- Back (5, 6) if not checkBlock(x, y, z + 1) then table.insert(worldMesh.triangles, OCGL.newIndexedTriangle(firstVertexIndex + 6, firstVertexIndex + 5, firstVertexIndex + 7, material)) table.insert(worldMesh.triangles, OCGL.newIndexedTriangle(firstVertexIndex + 5, firstVertexIndex + 4, firstVertexIndex + 7, material)) end -- Right (7, 8) if not checkBlock(x + 1, y, z) then table.insert(worldMesh.triangles, OCGL.newIndexedTriangle(firstVertexIndex + 3, firstVertexIndex + 2, firstVertexIndex + 6, material)) table.insert(worldMesh.triangles, OCGL.newIndexedTriangle(firstVertexIndex + 7, firstVertexIndex + 3, firstVertexIndex + 6, material)) end -- Up (9, 10) if not checkBlock(x, y + 1, z) then table.insert(worldMesh.triangles, OCGL.newIndexedTriangle(firstVertexIndex + 1, firstVertexIndex + 5, firstVertexIndex + 6, material)) table.insert(worldMesh.triangles, OCGL.newIndexedTriangle(firstVertexIndex + 2, firstVertexIndex + 1, firstVertexIndex + 6, material)) end -- Down (11, 12) if not checkBlock(x, y - 1, z) then table.insert(worldMesh.triangles, OCGL.newIndexedTriangle(firstVertexIndex + 4, firstVertexIndex, firstVertexIndex + 7, material)) table.insert(worldMesh.triangles, OCGL.newIndexedTriangle(firstVertexIndex, firstVertexIndex + 3, firstVertexIndex + 7, material)) end end end end end -- Mode 1 -- именено до... local cube = {top={},bottom={},left={},right={},forward={},back={}} i= 0 for z = -1, 1 do for x = -1, 1 do i= i + 1 setBlock(x, 0, z, 0xFFFF00,{2,1,2}) cube.bottom[i] = {'yellow',x,0,z} end end i= 0 for z = -1, 1 do for x = -1, 1 do i= i + 1 setBlock(x, 7, z, 0xFFFFFF,{2,1,2}) cube.top[i] = {'white',x,7,z} end end i= 0 y = 0 while y < 6 do -- Наша стенка for x = -1, 1 do i= i + 1 -- элемент, кубик рубика, на 1 стороне 9 элементов которыйе мы и генерируем setBlock(x, y, -4, 0xFFA500,{2,2,1}) -- ставим понель cube.back[i] = {'orange',x,y+1,-1} -- для того что-бы сторона была цветная и мы могли получить координаты нужной нам панели end y = y + 2 end -- сюда -- -- -- Mode 2 -- for z = 1, 7 do -- for x = -3, 3 do -- setBlock(x, 0, z, 0xFFFFFF) -- end -- end ---------------------------------------------- Cat ---------------------------------------------- -- scene:addObject(meowEngine.newPolyCatMesh(vector.newVector3(0, 5, 0), 5)) -- scene:addObject(meowEngine.newFloatingText(vector.newVector3(0, -2, 0), 0xEEEEEE, "Тест плавающего текста")) ---------------------------------------------- Texture ---------------------------------------------- -- scene.camera:translate(0, 20, 0) -- scene.camera:rotate(math.rad(90), 0, 0) -- local texturedPlane = scene:addObject(meowEngine.newTexturedPlane(vector.newVector3(0, 0, 0), 20, 20, materials.newDebugTexture(16, 16, 40))) ---------------------------------------------- Wave ---------------------------------------------- -- local xCells, yCells = 4, 1 -- local plane = meowEngine.newPlane(vector.newVector3(0, 0, 0), 40, 15, xCells, yCells, materials.newSolidMaterial(0xFFFFFF)) -- plane.nextWave = function(mesh) -- for xCell = 1, xCells do -- for yCell = 1, yCells do -- end -- end -- end ---------------------------------------------- Fractal field ---------------------------------------------- -- local function createField(vector3Position, xCellCount, yCellCount, cellSize) -- local totalWidth, totalHeight = xCellCount * cellSize, yCellCount * cellSize -- local halfWidth, halfHeight = totalWidth / 2, totalHeight / 2 -- xCellCount, yCellCount = xCellCount + 1, yCellCount + 1 -- local vertices, triangles = {}, {} -- local vertexIndex = 1 -- for yCell = 1, yCellCount do -- for xCell = 1, xCellCount do -- table.insert(vertices, vector.newVector3(xCell * cellSize - cellSize - halfWidth, yCell * cellSize - cellSize - halfHeight, 0)) -- if xCell < xCellCount and yCell < yCellCount then -- table.insert(triangles, -- OCGL.newIndexedTriangle( -- vertexIndex, -- vertexIndex + 1, -- vertexIndex + xCellCount -- ) -- ) -- table.insert(triangles, -- OCGL.newIndexedTriangle( -- vertexIndex + 1, -- vertexIndex + xCellCount + 1, -- vertexIndex + xCellCount -- ) -- ) -- end -- vertexIndex = vertexIndex + 1 -- end -- end -- local mesh = meowEngine.newMesh(vector3Position, vertices, triangles,materials.newSolidMaterial(0xFF8888)) -- local function getRandomSignedInt(from, to) -- return (math.random(0, 1) == 1 and 1 or -1) * (math.random(from, to)) -- end -- local function getRandomDirection() -- return getRandomSignedInt(5, 100) / 100 -- end -- mesh.randomizeTrianglesColor = function(mesh, hueChangeSpeed, brightnessChangeSpeed, minimumBrightness) -- mesh.hue = mesh.hue and mesh.hue + hueChangeSpeed or math.random(0, 360) -- if mesh.hue > 359 then mesh.hue = 0 end -- for triangleIndex = 1, #mesh.triangles do -- mesh.triangles[triangleIndex].brightness = mesh.triangles[triangleIndex].brightness and mesh.triangles[triangleIndex].brightness + getRandomSignedInt(1, brightnessChangeSpeed) or math.random(minimumBrightness, 100) -- if mesh.triangles[triangleIndex].brightness > 100 then -- mesh.triangles[triangleIndex].brightness = 100 -- elseif mesh.triangles[triangleIndex].brightness < minimumBrightness then -- mesh.triangles[triangleIndex].brightness = minimumBrightness -- end -- mesh.triangles[triangleIndex][4] = materials.newSolidMaterial(color.HSBToInteger(mesh.hue, 1, mesh.triangles[triangleIndex].brightness)) -- end -- end -- mesh.randomizeVerticesPosition = function(mesh, speed) -- local vertexIndex = 1 -- for yCell = 1, yCellCount do -- for xCell = 1, xCellCount do -- if xCell > 1 and xCell < xCellCount and yCell > 1 and yCell < yCellCount then -- mesh.vertices[vertexIndex].offset = mesh.vertices[vertexIndex].offset or {0, 0} -- mesh.vertices[vertexIndex].direction = mesh.vertices[vertexIndex].direction or {getRandomDirection(), getRandomDirection()} -- local newOffset = { -- mesh.vertices[vertexIndex].direction[1] * (speed * cellSize), -- mesh.vertices[vertexIndex].direction[1] * (speed * cellSize) -- } -- for i = 1, 2 do -- if math.abs(mesh.vertices[vertexIndex].offset[i] + newOffset[i]) < cellSize / 2 then -- mesh.vertices[vertexIndex].offset[i] = mesh.vertices[vertexIndex].offset[i] + newOffset[i] -- mesh.vertices[vertexIndex][i] = mesh.vertices[vertexIndex][i] + newOffset[i] -- else -- mesh.vertices[vertexIndex].direction[i] = getRandomDirection() -- end -- end -- end -- vertexIndex = vertexIndex + 1 -- end -- end -- end -- return mesh -- end -- local plane = createField(vector.newVector3(0, 0, 0), 8, 4, 4) -- scene:addObject(plane) -- plane:randomizeTrianglesColor(10, 10, 50) -------------------------------------------------------- Controls -------------------------------------------------------- -- удалён весь UI Отвечаеший за изменение света и т.д., полностью удалён toolbox local function move(x, y, z) local moveVector = vector.newVector3(x, y, z) OCGL.rotateVectorRelativeToXAxis(moveVector, scene.camera.rotation[1]) OCGL.rotateVectorRelativeToYAxis(moveVector, scene.camera.rotation[2]) scene.camera:translate(moveVector[1], moveVector[2], moveVector[3]) end local controls = { -- Arrows [200] = function() scene.camera:rotate(-rotationAngle, 0, 0) end, [208] = function() scene.camera:rotate(rotationAngle, 0, 0) end, [203] = function() scene.camera:rotate(0, -rotationAngle, 0) end, [205] = function() scene.camera:rotate(0, rotationAngle, 0) end, [16 ] = function() scene.camera:rotate(0, 0, rotationAngle) end, [18 ] = function() scene.camera:rotate(0, 0, -rotationAngle) end, -- WASD [17 ] = function() move(0, 0, translationOffset) end, [31 ] = function() move(0, 0, -translationOffset) end, [30 ] = function() move(-translationOffset, 0, 0) end, [32 ] = function() move(translationOffset, 0, 0) end, -- RSHIFT, SPACE [42 ] = function() move(0, -translationOffset, 0) end, [57 ] = function() move(0, translationOffset, 0) end } -------------------------------------------------------- GUI -------------------------------------------------------- local OCGLView = GUI.object(1, 1, workspace.width, workspace.height) local function drawInvertedText(x, y, text) local index = screen.getIndex(x, y) local background, foreground = screen.rawGet(index) screen.rawSet(index, background, 0xFFFFFF - foreground, text) end local function drawCross(x, y) drawInvertedText(x - 2, y, "━") drawInvertedText(x - 1, y, "━") drawInvertedText(x + 2, y, "━") drawInvertedText(x + 1, y, "━") drawInvertedText(x, y - 1, "┃") drawInvertedText(x, y + 1, "┃") end OCGLView.draw = function(object) workspace.oldClock = os.clock() if world then renderWorld() end scene:render() drawCross(renderer.viewport.xCenter, math.floor(renderer.viewport.yCenter / 2)) end workspace:addChild(OCGLView) workspace.infoTextBox = workspace:addChild(GUI.textBox(2, 4, 45, workspace.height, nil, 0xEEEEEE, {}, 1, 0, 0)) local lines = { "Copyright © 2016-2017 - Developed by ECS Inc.", "Timofeef Igor (vk.com/id7799889), Trifonov Gleb (vk.com/id88323331), Verevkin Yakov (vk.com/id60991376), Bogushevich Victoria (vk.com/id171497518)", "All rights reserved", } workspace:addChild(GUI.textBox(1, workspace.height - #lines + 1, workspace.width, #lines, nil, 0x3C3C3C, lines, 1)):setAlignment(GUI.ALIGNMENT_HORIZONTAL_CENTER, GUI.ALIGNMENT_VERTICAL_TOP) local elementY = 2 local elementWidth = 20 - 2 -- именено local FPSCounter = GUI.object(2, 2, 8, 3) FPSCounter.draw = function(FPSCounter) renderer.renderFPSCounter(FPSCounter.x, FPSCounter.y, tostring(math.ceil(1 / (os.clock() - workspace.oldClock) / 10)), 0xFFFF00) end workspace:addChild(FPSCounter) workspace.eventHandler = function(workspace, object, e1, e2, e3, e4, e5) workspace.infoTextBox.lines = { " ", "SceneObjects: " .. #scene.objects, " ", "OCGLVertices: " .. #OCGL.vertices, "OCGLTriangles: " .. #OCGL.triangles, "OCGLLines: " .. #OCGL.lines, "OCGLFloatingTexts: " .. #OCGL.floatingTexts, "OCGLLights: " .. #OCGL.lights, " ", "CameraFOV: " .. string.format("%.2f", math.deg(scene.camera.FOV)), "СameraPosition: " .. string.format("%.2f", scene.camera.position[1]) .. " x " .. string.format("%.2f", scene.camera.position[2]) .. " x " .. string.format("%.2f", scene.camera.position[3]), "СameraRotation: " .. string.format("%.2f", math.deg(scene.camera.rotation[1])) .. " x " .. string.format("%.2f", math.deg(scene.camera.rotation[2])) .. " x " .. string.format("%.2f", math.deg(scene.camera.rotation[3])), "CameraNearClippingSurface: " .. string.format("%.2f", scene.camera.nearClippingSurface), "CameraFarClippingSurface: " .. string.format("%.2f", scene.camera.farClippingSurface), "CameraProjectionSurface: " .. string.format("%.2f", scene.camera.projectionSurface), "CameraPerspectiveProjection: " .. tostring(scene.camera.projectionEnabled), " ", "Controls:", " ", "Arrows - camera rotation", "WASD/Shift/Space - camera movement", "LMB/RMB - destroy/place block", "NUM 8/2/4/6/1/3 - selected light movement", "F1 - toggle GUI overlay", } workspace.infoTextBox.height = #workspace.infoTextBox.lines if e1 == "key_down" then if controls[e4] then controls[e4]() end elseif e1 == "scroll" then if e5 == 1 then if scene.camera.FOV < math.rad(170) then scene.camera:setFOV(scene.camera.FOV + math.rad(5)) end else if scene.camera.FOV > math.rad(5) then scene.camera:setFOV(scene.camera.FOV - math.rad(5)) end end end workspace:draw() end -------------------------------------------------------- Ebat-kopat -------------------------------------------------------- workspace:start(0)
-
16 минут назад, eu_tomat сказал:Только описание мутноватое.
Ну я в этом не силён)
Обойти значит самому там закомментировать участок с AE 2, но теряется основная суть проекта.
Если вам не нравится фраза когда нету сети,
Его можно изменить на пример русским эквивалентом, перефразировать или вовсе убрать.
Худ -- HUD иконки, текст, и тому подобное.
Фильтр влияет на отображение элементов, то есть из всех кучи предметов оно будет показывать губку и камень.
Отключение фильтра:
Объект это предмет в хранилище.
-
Сделано под OpenOS 1.8.0 minecraft 1.12.2. Эта чудо позволит вам просматривать хранилище AE 2 сети и его энергию, а также энергию хранилищ ic2, но для этого вам нужно подредактировать код под нужное вам хранилище. Всё что нужно это поставить адаптеры к МЭ контроллеру или к примеру МФЭ, адаптер к AE 2 обязателен но и его можно обойти. Фразы при отсутствий компонента или энергий у сети AE 2 тоже можно поменять. В event.pull можно поменять либо на modem_message либо на interact_overlay, для автоматического с дистанционным управ. и ручного обновления худа, учтите что ему нужно время что-бы обновиться на ваш экран. Сообщения модема: add -- добавить элемент к фильтру объектов; del -- удалить элемент из фильтра объектов ; get -- получить таблицу фильтра ; fillter -- Переключить будет ли включен фильтр. Путь к рабочей папке фильтра задаёте сами, по умолчанию корень диска. Фильтр может быть как и id предмета, как и его имя* в хранилище.
И я знаю что написал filter с 2-я l
Ссылочка: https://pastebin.com/1rCDnTrQ-
1
-
-
5 часов назад, kcalBxoF сказал:Как уже писал выше, от VPN наоборот хотелось бы отказаться, поскольку он добавляет лишнюю нагрузку на сервер, а в случае использования сторонних решений - задержку (пинг).
Скажу лишь на счёт VPN, я не думаю что оно заберёт больше 2 процентов производительности в диспетчере задач. У меня не лагает с 90 модами, радмином, дискордам, вайбером и хромом, а серверное железо должно быть мощнее десктопного. Задержки не было, 90 Мс. Если и была то от самой скорости интернета и наружностью интернета на пример дискордом. Но это дело ваше.
Интернет плата. Еще раз, это ваше дело ограничивать или нет, но факт есть факт что так можно сделать.
Проблемы хостинга, машины. Возможно машины но с хостингом нет, я на ноутбуке запустил и моды (13~) и к серверу можно подключиться. К стронем серверам и локальной игре проблем нету, если и есть то это уже сам интернет. Рад был помочь :3.
-
Привет. На счёт выбора сборки сервера я могу сказать что даже если запустить и клиент и сервер на той же машине через локал хост будет большой пинг. Я стою горой за ядро Forge которое запустит все моды, но с ним очень редко бывают казусы. Очень не профессиональный совет но все же: на сервере запускать клиента, а потом открывать для сети, как если бы один человек играл с другим по локальной сети. Для удаленного доступа могу сказать что есть Radmin Vpn, регистрация не нужна, для подключения используем IP Радмина. Это же и делает приватность игры, для подключения к сети нужно её имя и пароль. Он может работать на расстояниях, что полностью эмулирует игру на сервере за исключением того что у нас будет свой болванчик который будет стоять, но его можно использовать как пример для нанитов (что будет если включить больше 3), взаимодействие робота с игроком и т.д.
Безопасность в моде хорошая, ничего нигде не взломаеца, как минимум до этого еше не дошло. Файловая система компьютеров напрочь локальна и поэтому что-то с реальным компьютером не произойдёт. Но если вы всё-же волнуетесь за уязвимости последних версиях джава то в конфиге можно отключить TCP и HTTPS запросы, соответственно можно будет выкинуть интернет плату. В качестве совета могу сказать что при любом смешном "вирусе" можно просто заменить EEPROM и переустановить систему. Обычно хватает переустановить ром но может когда то через 2 вселенные....
Безопасность компьютеров от других челов: единственный мне известный способ навредить кому либо, это удалить файлы системы или мешать её использованию делая ложные нажатия на например клавиатуру. Тут это происходит через сетевую плату. Для этого злосная программа должна быть запущена у жертвы, так-что можно найти её и дальше уже решать вам). Может они тоже что-то придумают но держим в голове что для этого нужен скрипт на стороне жертвы.
Как минимум локальную игру будет запустить легально, как и перемещять клиентские файлы перемещать уже тем более. Если сборка для Tlauncher можно сделать архив,запихать туда весь майнкрафт и сказать распаковать его не буду писать полный путь (.../minecraft/verions)и она появится в версиях, прописать чудо в "По адресу" и готово.
В качества "хехе" предметов можно выделить кислоту, она даёт эффект "укачало" и отравление. Нужен для крафта нанитов. Она может отвлечь кого либо но тут уже дело человека.
Факты: Блоки халеума можно покрасить, как и кабеля. Если съесть халеум станешь невидимым на 10 сек. В таблице unicode есть символы танчиков человечков смайлов шрифт брайля и другие весёлости. Предупреждение на будущие, не менять содержимое глобальной переменной stdout, компьютеры которые работают от дисков больше не запустятся. С аддоном Computronics есть коробка для чата с командами которой можно сделать чат бота, так же в аддоне есть звуковая карта когда computer.beep уже не катит и стример ля касет, там используем конвентер.Мне как тому кто ищет (не слишком то уж и активно но да ладно) напарника что-бы делать программы хотелось бы посмотреть что делают ребята и по возможности получить IP сервера. На этом единственном умирающем русском форуме новички не приходят с серьёзными заявлениями а многие легенды уже выгорели и перестали этим заниматься.
Я могу дать не корректные советы, но если сказал значит проверил. Настоятельно советую подождать ответов от других гуру.
Завидую тем детям).-
1
-
1
-
-
Из заголовка мало чего понятно, объясняю: в общем мне нужно что-бы какая либо система (OpenOs MineOS SwiftOs и т.д.) делали своё изображение в таблицу для библиотеки image из MineOs, есть ли возможность такое получить? Код у них изначально разбросан, и где ставится gpu.fill и gpu.set увидеть сложно. Просто была попытка сделать "надстройку" над OpenOS но она снимала показания с пикселей очень долго (1+ сек.), даже с повышенным CallBugets (999). Ну или хоть тыкните в файлы которые делают картинку.
-
Не корректно задавать такой вопрос, но на чём стоит ваш сайт? Это ваш сервер, или аренда, откуда он? Если аренда сколько просят? Он всегда онлайн, вот и стало интересно. Хочется узнать откуда сайт появился и если есть его история. Откуда пришла идея его сотворить?
-
1
-
-
В 19.11.2022 в 20:28, ECS сказал:GUI.alert(b, todraw[b], todraw)
--- не знаю это ли подразумевается под стектрейс
Всё приложение, нужна только библиотека Thread, но её можно зачеркнуть она пока не используется
Движ за файлы:
/Main.lua -- Инициализация, формирование базовых вещей для работы и кривой обработчик ошибок
/Bin/test.lua -- Основной исполняемый файл, пока подгружает другие файлы а потом выступает как отрисовка стрелок нажатий
/Event things/Arrows Tracing.lua -- Создаёт event.addHandler на стрелки и wasd и Backspace для того что-бы выйти в общем (пока-что)
/Event things/Arrows Draw.lua -- Отрисовка стрелок которые "на ленте", целевой скрипт
/Event things/Arrows Spawn.lua -- Исходя из пробного файла на определённую милисек. достаём стрелки и пихаем их в Draw, его пока не трогаем он сам работает не работает не знаю
/Images/arrows.xml -- Загрузка картинок стрелок, потом будет создан "словарь" на одну тему и это будет заниматься рассортировкой пикселей
/Images/x.pic -- x - название одной из стрелок, как не странно хранит это самую стрелку
/Songs and sounds/test.Xml -- список который и хранит расположение стрелок на милисек. я знаю что он хранит пустые скобки и открыт вопрос на то как это исправить
Test.app.rar -- оно
SEB.rar -- работающий на супер коленке редактор стрелок (Song Editor Beta), для его правильной работы нужно указать полный путь к файлу /Images/arrows.Xml, оно загрузит всё что можно, еще в переменной path поставить путь к корню приложения без / (/Usres/Exemple), оно само добавит
(сжато для экономий место на пользователе форума)
УРЯЯЯ оно заработало, кстати небольшой отзыв на MineCode IDE, с снапшота 1.8.0 оно при стираний последнего символа в строке выкидывает в java.outOfBounds или типо того, страшна, и оно не работало потому-что он запускался в нём, а не через "оболочку", но я всё же был бы очень* признателен если-бы вы помогли доделать мою программу в прекрасный вид как и задумывается -
2 часа назад, ECS сказал:Без полного сырца с ресурсами черт ногу сломит. Стектрейс ошибки хоть приложи или конкретную строку(
С ходу могу лишь сказать, что объекты gui.image создаются некорректно, т.к. 3 аргументом должен идти путь до изображения, а ты прокидываешь булево значение:
...
Не, это сторонний список в котором всё подгружается нормально
Скрытый текстimages = {} images.down = image.load(path..'/Images/down.pic') images.up = image.load(path..'/Images/up.pic') images.left = image.load(path..'/Images/left.pic') images.right = image.load(path..'/Images/right.pic') images.downd = image.load(path..'/Images/downd.pic') -- с префиксом d - deactivated, когда стрелка не нажата images.upd = image.load(path..'/Images/upd.pic') images.leftd = image.load(path..'/Images/rightd.pic') images.rightd = image.load(path..'/Images/leftd.pic') return images
Оно загружает через loadfile и сразу запускает, path как ни страно хранит корневую папку приложения '/Mounts/bb8...82e/test.app'
За это спасибо ;3
if todraw[b]['time'] == -6 then table.remove(todraw, b) b = b - 1 else b = b + 1 end... if todraw[b] then tmptime = todraw[b]['time'] -- та же шляпа была и тут, но тут она хотябы 1-на print(todraw[b]['arrows'].right) if not tmptime then tmptime = 50 end tmparrows = todraw[b]['arrows'] -- попытка обойти, по этому и решил обратиться к мастерам потамучто каждую секунду создавать 4 переменные для 1 сравнения того не наверное стоит if tmparrows.right == true then -- ошибка тут, не видит элемента в списке или списка, не знаю 🥶 wrk:addChild(gui.image(34,todraw[b].time,images.right)) end ... -
Я устал, оно не может найти значение на ровном списке, в переменной images хранятся исправные картинки, остальные это библиотеки, они заранее объявлены:
Скрытый текстtodraw = {[1]={['time'] = 30,['arrows'] = {['right'] = true, ['left'] = true},[1] = 1}} -- по умолчаний ставится в другом скрипте, хранит данные о стрелках на определённую милисекунду + "сторону" на которой стрелка и время (пиксель) -- (картинки 10 на 5) -- wrk созданный на несовсем правом верхнем углу объект workspace с достаточным размером (проверялось), и потомучто это не "окно", оно сбрасывает дисплей поэтому оно будет видно и не надо ничего удалять. Но идёт ущерб графической производительности (сделан "разгон" на CallBuget в конфиге) exit = false -- по умолчаний ставится в другом скрипте, но для тестов оно тут --thread.create(function() while exit == false do event.sleep(0) b = 0 while b < #todraw do b = b + 1 if todraw[b] then tmptime = todraw[b]['time'] -- обход ошибки print(todraw[b]['arrows'].right) if not tmptime then -- вот тут tmptime = 50 end tmparrows = todraw[b]['arrows'] if tmparrows.right == true then wrk:addChild(gui.image(34,todraw[b].time,images.right)) end if todraw[b]['arrows'].up then wrk:addChild(gui.image(23,todraw[b].time,images.up)) end if todraw[b]['arrows'].down then wrk:addChild(gui.image(12,todraw[b].time,images.down)) end if todraw[b]['arrows'].left then wrk:addChild(gui.image(1,todraw[b].time,images.left)) end todraw[b]['time'] = todraw[b].time - 1 if todraw[b]['time'] == -6 then -- если вышла за экран удаляем в общем todraw[b] = nil end end end end --end)
-
-
21 час назад, Fingercomp сказал:Поставить либы, скомпилировать, запустить на видосике, получить закодированный файл, влить его в опенкомпы, пустить какую-то из прог в репе на него, получить видео.
FFmpeg, разумеется, не в опенкомпах. Его там вообще нету. Это ж самый известный набор софта для работы с видео/аудио, какие тут могут быть опенкомпы.
извините я не мастер в этом чуде .-.
"поставить либы" - как? куда? консольную команду прописать?
скомпилировать - программу? как?
запустить на видосике - всм на нём? загрузить его туда? нипон
пустить какую-то из прог в репе на него - что такое репе? куда пустить?
проще будет сказать что программирование у меня это хобби, но я стараюсь
-
10 часов назад, Fingercomp сказал:-
https://github.com/ChenThread/ice2
160×50, должно быть лучше качество, может проигрывать звук через кассеты Computronics.
Енкодер написан на C с применением векторных расширений SSSE3, требует наличия либ ffmpeg с хедерами.
2-е, там файлы, как запустить "конвертер"? надо ли что-либо в OC или выдаст просто файл? библиотека в ОС или в системе?
-
https://github.com/ChenThread/ice2
-
-
Нужна библиотека вектор, двух мерная, может выводить на экран (что-бы рисовала полоски), я пытался потратил 3 часа но на 1.5 часу столкнулся с проблемой: если 1 координата больше другой оно просто плюсует ту координату и дальше рисует нормально, я устал, передаю эстафету мастерам.
то что уже есть (конечная нерабочая):local vector = require('vector') require('term').clear() startx = io.read() starty = io.read() -- xcur сколько кругов ада прошла x парарель, тоже самое с ycur -- ysnos сколько мы должны ждать что-бы отрисовать следущую х x = io.read() symbol = require('unicode').char(0xE0BF) local gpu = require('component').gpu y = io.read() function draw(s) -- отвечает за просчёт и прорисовку линий local x = tonumber(s[1]) local y = tonumber(s[2]) xx = x yy = y if x > y then exit = false b = 1 while exit == false do b = b + 1 xx = xx / b a,c = math.modf(xx) if c == nil or c == 0.0 then ysnos = a exit = true xcur = -1 xsnos = -1 tx = false ty = true ycur=0 end end else exit = false b = 1 while exit == false do b = b + 1 yy = yy / b a,c = math.modf(yy) if c == nil or c == 0.0 then xsnos = a exit = true ycur = -1 tx = true ty = false xcur = 0 ysnos = -1 end end end if x == y then xcur = -1 ycur = -1 ysnos = -1 xsnos = -1 -- если переменные мендально равно то не применяем никаких отступов, всё и так в шоколаде tx = true ty = true end print(xsnos) print(ysnos) while x ~= 0 and y ~= 0 or x ~= 0 and y == 0 or x == 0 and y ~= 0 do if ycur == ysnos or tx == true then if x ~= xsnos then if x > 0 then x = x - 1 if tx == true then xcur = xcur + 1 end else x = x + 1 if tx == true then xcur = xcur + 1 end end end end if ysnos == ycur and ty == true then ycur = 0 end if xsnos == xcur or ty == true then if y ~= ysnos then if y > 0 then y = y - 1 if ty == true then ycur = ycur + 1 end else if ty == true then ycur = ycur + 1 end y = y + 1 end end end if xcur == xsnos and tx == true then xcur = 0 end gpu.set(1,50,xcur..' '..ycur..' '..x..' '..y) -- отладка, никому не сдалась gpu.set(startx + x,starty + y,symbol) end xx = nil xxx = nil yy = nil yyy = nil end yx = vector.newVector2(x,y) -- вернёт переменные в списке: {x,y} function floor(s) -- получить середину лини относительно экрана (не знаю почему так назвал) return {math.floor(s[1] / 2),math.floor(s[2] / 2)} end todraw = {yx} b = 0 function action(todraw) -- стартует программу отрисовывая все доступные линий while b < #todraw do b = b + 1 draw(todraw[b]) end end a = floor(yx) if a[1] > 0 then -- добовляем отступ, должен получиться полу треугольник a[1] = a[1] + 5 else a[1] = a[1] - 5 end print(a[1],a[2],yx[1],yx[2]) --table.insert(todraw,a) action(todraw)
помогите ;-;
-
1
-
-

Android Emu
в Общие
Опубликовано:
Пробовал? Оно вылетает при взаимодействии с миром, грузит долго, телефон греет. (VIVO Y22 (4+4/64,8 Ядер 2.4 Гц каждый))
Это отличный способ запустить майн джава, но плохой запустить туда моды.