Jump to content
  • Sky
  • Blueberry
  • Slate
  • Blackcurrant
  • Watermelon
  • Strawberry
  • Orange
  • Banana
  • Apple
  • Emerald
  • Chocolate
  • Charcoal

The Simon

  • Content Count

  • Joined

  • Last visited

About The Simon

  • Rank
    Junior Member
  • Birthday 05/03/1998

Profile Information

  • Gender

Contact Methods

  • Minecraft

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Hi! I have two screens and two graphics cards on my server, I want it to use one of them every time I boot the computer. As it is right now it chooses one of the two graphics cards randomly whenever I boot and binding them or changing the primary component with rc doesn't seem to fix the issue. Right now I simply spam click the power button until it selects the right monitor.
  2. I had an idea to use 3D models to make a nice transition between my wall and the floor, but as all 3D models all have in common is that they usually become a bit darker than their original counterpart. I have tried a bunch of solutions to fix this; giving it a light level, placing a light source behind it, changing the tint. You guys got any tips I could try to possibly fix this issue? Otherwise, I will have to do another solution other than 3D prints.
  3. The Simon

    Power Saving

    Hi! Been working on a Control Station for my Robot. It has most of the essential features done; movements, scanning, interactions, etc. But I have reached a stage when it's mostly optimizations which are left to do, one of them is power usage. The Robot has a battery tier 3 upgrade installed, but as it is now it can still only run for about 20 minutes before it runs out of power and shuts down. This is not ideal due to not be able to remotely turning on a computer directly and needs either a Player or other Robot interaction to turn it back on again. Components are a good culprit in this, and can easily be turned off until needed. Signals can be compressed, interactions can be guessed. But as far as software and such I am at a loss. Any suggestion I could use to extend the battery life of my Robot would be great. Things I have learned about power usage is that os.sleep() reduce power usage during the specified time. Each new character on a screen increases power usage, so it should be turned off when not in use. Signals to the Robot doesn't seem to use power (Linking Card), but signals from the Robot does use power as expected. Coroutines also increase power as expected but reduce the number of available resources inside the computer until the function has finished.
  4. A component that either can be installed inside of a Robot/Drone (possibly in its own slot) or be right-clicked on a computer case will execute the code that was put on the EEPROM during the crafting when pressing the power button. The crafting recipe should contain a Capacitor as an extra power cell for the component to function even if the local machine runs out of power. This could be useful when using a headless Robot/Drone if you want to save its state or want to send a signal it has been forced shutdown, can be a lifesaver in some regards. It would also be neat if it had a boolean statement whenever it should fire when the power in the local machine reaches zero, but the computer API can read the machine's energy level so I wouldn't say that should be a necessity.
  5. Ok, I got it setup after your diagram. Here is a picture of it from above: Edit* I saw now the Extender needs the Relays to be connected, removed the two cables on the sides of the Power Distributor and placed one cable in the middle of the Relays.
  6. Hi! I'm working on a "Main control station" to control my various Robots around the world without having to go there myself. I have been using a Linking Card to send signals to my Robot, but the plan is to use multiple and switch to the one you want to control. Right now I have it installed on my Server but want it in a Relay so I can expand the amount of Linking Cards, but I'm having a hard time getting it to work. I have no idea how to send stuff from it to the Robot. When I send from the Robot to the Server it just flashes indicating it has received a signal, but no signals are fired inside of the Server. So some feedback would be greatly appreciated in order for this to work.
  7. You were right with doing it inside a threat would mess stuff up. After I registered it inside of the main loop it worked as I wanted. And I'll keep in mind to use the Term Libray from now on.
  8. Hi! I am working on a long distance robot control program. I have a Geolyzer and Linked Card installed inside of it for getting an image of the robot's surroundings and then sends the data to my control station where the mod OpenGlasses draws blocks for an illustration. I got it working when I simply registered a event.listen() at the start of the program, but it is kind of an inconvenience if I want other kinds of signals from the robot. So my idea was to only have one registered when it's waiting for the scan data and when it's done it should unregister it. But this new approach doesn't seem to work for some reason. I made it print out its return value when I registered/unregistered it, and it returned 1 and false. I have no idea how to proceed to the next step. Help is appreciated! station.lua local c = require("component") local lights = require("lights") local gButtons = require("gButtonAPI4") local gKeyboard = require("gKeyboard") local event = require("event") local ser = require("serialization") local thread = require("thread") local d = require("computer") local GPU = c.proxy("332a93bc-f0a6-4c71-9460-d7a7d6ee0d2c") local APU = c.proxy("4ba6d276-efab-474c-ba48-bcbd7fd62353") --local glasses = c.glasses local terrain = {} local localPos = {0,0,0} local facing = "W" -- S W N E (+Z -X -Z +X) local digitDisplays = { { "a87d9238-f46e-4b17-b605-6d8771fba4c4", "28dfb050-4f70-4bf8-b221-cc84ab43c660", "fef15435-a434-4e33-a3ca-3f725e02dd7f", "c0941fad-d5fb-4dce-b356-724431e6b66c" }, { "d5a80dc6-963c-4fb5-98ea-711ebb2ff1eb", "c868c412-22f5-4605-8e4a-b4bce3e1320c", "19b54b1e-8970-4305-9294-d3582d85d06d", "c06effa6-bada-4ddc-8578-c46d155b4250" }, { "6191d4e0-715f-4c8c-a98e-8960c79c26ab", "54ab4452-b63f-4b43-a1e1-13208eac1628", "84948db9-81dd-4646-932f-a047ecdef4d7", "f226bacf-7af6-47ad-be01-6bb31fcfda9b" } } local function compress(tab) tab = ser.serialize(tab) tab = c.data.deflate(tab) return tab end local function decompress(val) val = c.data.inflate(val) val = ser.unserialize(val) return val end local function addBlock(pos,color) local x = c.glasses.addCube3D() x.set3DPos(table.unpack(pos)) x.setColor(table.unpack(color)) x.setAlpha(0.7) x.setScale(0.8) return x end local function HSL(hue, saturation, lightness, alpha) if hue < 0 or hue > 360 then return 0, 0, 0, alpha end if saturation < 0 or saturation > 1 then return 0, 0, 0, alpha end if lightness < 0 or lightness > 1 then return 0, 0, 0, alpha end local chroma = (1 - math.abs(2 * lightness - 1)) * saturation local h = hue/60 local x =(1 - math.abs(h % 2 - 1)) * chroma local r, g, b = 0, 0, 0 if h < 1 then r,g,b=chroma,x,0 elseif h < 2 then r,b,g=x,chroma,0 elseif h < 3 then r,g,b=0,chroma,x elseif h < 4 then r,g,b=0,x,chroma elseif h < 5 then r,g,b=x,0,chroma else r,g,b=chroma,0,x end local m = lightness - chroma/2 return (r+m)*255,(g+m)*255,(b+m)*255 end lights.digit(3,digitDisplays[1],0xff033d) lights.digit(5,digitDisplays[2],0xff033d) lights.digit(9,digitDisplays[3],0xff033d) GPU.set(25,5,"Le GPU") APU.set(25,5,"La APU") for i=1,5 do d.beep() end local function receiveScanData(_,_,_,_,_,msg1,msg2,msg3,msg4) print(msg1) if msg1 == "scanData" then else --[[addBlock(table.unpack(decompress(msg1)),{0,255,0}) addBlock(table.unpack(decompress(msg2)),{0,255,0}) addBlock(table.unpack(decompress(msg3)),{0,255,0}) addBlock(table.unpack(decompress(msg4)),{0,255,0})--]] local coord = {decompress(msg1),decompress(msg2),decompress(msg3),decompress(msg4)} for i in pairs(coord) do thisHue = 360 - ((coord[i][1]+5))/9*360 addBlock({coord[i][1],coord[i][2],coord[i][3]},{HSL(thisHue, 1, 0.5, 1)}) if coord[i][2] then print(coord[i][1],coord[i][2],coord[i][3],thisHue) end end end end --event,_,linkingCard,_,_,msg1,msg2,msg3,msg4 --event.listen("modem_message",receiveScanData) gButtons.initialize() --name,group,label,x,y,w,h,color,alpha,callback gButtons.createNewButton("scan",nil,"Scan",5,5,35,14,{255,0,0},0.4,function(x) gButtons.Color(x,{0,255,0}) --c.glasses.removeAll() c.tunnel.send("scan") os.sleep(0.4) gButtons.Color(x) end) local function update() --print(event.pull(1/20,"modem_message")) os.sleep(1/20) thread.create(function() gButtons.update() end) thread.create(function() local _,_,_,_,_,o = event.pull(1/20,"modem_message") --print(o) if o == "scanData" then print(event.listen("modem_message",receiveScanData)) print("Enabled") end if o == "scanDataComplete" then print(event.ignore("modem_message",receiveScanData)) print("Disabled") end end) end while true do update() end remote.lua (Robot) local computer = require("computer") local c = require("component") local event = require("event") local ser = require("serialization") local tty = require("tty") local thread = require("thread") local hardValues = {} local terrain = {} --c.tunnel.send() local function compress(val) val = ser.serialize(val) val = c.data.deflate(val) return val end local function decompress(val) val = c.data.inflate(val) val = ser.unserialize(val) return val end local function scan() local x = {} print("Analyzing ..") for i=-4,4 do for d=-4,4 do table.insert(x,c.geolyzer.scan(i,d)) end end print("Done Analyzing.") return x end thread.create(function() os.sleep(5) tty.clear() print("Initilizing ..") --os.execute("/bin/components.lua") --c.gpu.bind("125bb046-a2c9-4182-8459-785265229229") end):detach() local function receive(_,_,_,_,_,msg1,msg2,msg3,msg4) computer.beep() terrain = {} if msg1 == "scan" then print("Starting Sequence ..") --[[for x in pairs(hardValues) do for z in pairs(hardValues[x]) do for y in pairs(hardValues[x][z]) do c.gpu.set(1,6,x .. " " .. y .. " " .. z) if hardValues[x][z][y] > 0 then table.insert(terrain,{x,y,z}) --print(x .. " " .. y .. " " .. z) break end end end end--]] --local x,z = -4,-4 for x=-4,4 do --x = x + 1 for z=-4,4 do local tile = c.geolyzer.scan(x,z) --z = z + 1 --os.sleep(2) --print(tile) for y=#tile,1,-1 do --print(y) if tile[y] ~= 0 then table.insert(terrain,{x,y-33,z}) --print("Found: ",x,y,z) --break end if y < 31 then break end end end end print("Calculation Complete.") print(#terrain .. " entries.") print("Sending Data ..") c.tunnel.send("scanData") os.sleep(1) for i=1,#terrain,4 do c.tunnel.send( compress(terrain[i]), compress(terrain[i+1]), compress(terrain[i+2]), compress(terrain[i+3]) ) end print("Data Sent.") os.sleep(1) c.tunnel.send("scanDataComplete") end end event.listen("modem_message",receive) local function update() os.sleep(0) end while true do update() end
  9. Thank you! This works fine! Had no idea you could have parenthesis in the NBT tag like that!
  10. Hi! I have some questions about how to get OpenComputers' items with NBT through commands. I would like to give players the OpenOS Floppy Disk when they run a command block, but when I'm trying to give the floppy any of the OC attributes I'm getting an error: Data tag parsing failed: Expected '}' but got ':' at: {oc:data:<--[HERE] This is the command I'm currently using: /give @p opencomputers:storage 1 1 {oc:data:{oc:fs.label:"openos"}, display:{Name:"OpenOS (Operating System)"}}
  11. Hello everyone! Direwo... eh, not quite right. Well, OpenGlasses for 1.12 is out! And I noticed there were no public button API for it, so I made one myself! I have a few functions built-in to make it easier to change stuff, but it was created with simplicity in mind. So if you simply just initialize a button and bind a function to it, it won't do any fancy stuff except for activating the function when you press it, so you have to add your own functionality to it: But with a little bit of extra code: Ok, not that big a difference, you guys are probably more creative than me! I also have a concept called "groups". When creating a button, you can specify what group it should be in. So if you want to change the color of all the buttons to the left side to pink, you can do that. Functions (in no particular order): --Needs to be called before creating any buttons, works as a reset also: gButtonAPI4.initialize() --Creating a new button element: gButtonAPI4.createNewButton(name,group,display,x,y,w,h,color: table,transparently,callback: function) --Has to be inside of your main loop: gButtonAPI4.update() --Prints all registered groups: gButtonAPI4.printGroups() --Change the visibility of the button/group: gButtonAPI4.visibility(button/group,boolean) --Change the color of the button/group: gButtonAPI4.Color(button/group[,color: table])--None for default color. --Same as color, but changes the label: gButtonAPI4.Label(button/group[,text])--None for default label. --Add a button to a group: gButtons.addToGroup(button,group) If you don't want to make a new function for each new button, you can then bind them all to the same function. And add a parameter to your function, the name of the button that was clicked will be returned: local function btniF(buttonx) gButtons.Color(buttonx,{0,255,0}) print("I am " .. buttonx .. "!") os.sleep(0.5) gButtons.Color(buttonx) end I added a Demo program that shows most of the library's functions. Oh, btw, I like the number 4. It's not like this is my fourth attempt creating this or anything! Write a reply if you have any questions, this was my first attempt to create a usable library. gButtonAPI4.lua gButtonsDemo.lua
  12. Hi! I have a elevator program that controls a elevator though buttons on a screen. I have a new screen on each new floor that gets re-bound to the gpu every time to save computer resources. These other screens are never turned off, they only sit there until the elevator is on the same floor as it. So my question is: Does it drain less power (rf/t) to turn off the screens when they are not in use? Or does it not matter whenever they are on or off. In real life if you turn off a computer screen you will save more power, but I'm not sure how it is in OpenComputers.
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and Privacy Policy.