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

    • Lizzy Trickster

      Latest Stable OpenComputers Version   11/26/16

      The latest released version of OpenComputers is version 1.7.2 for MC 1.7.10, 1.10.2, 1.11.2 & 1.12.2. See more information here! Beta/Dev builds can be found at the Jenkins Build Server (ci.cil.li)

Leaderboard


Popular Content

Showing content with the highest reputation since 03/25/18 in all areas

  1. 1 point
    XyFreak

    Big Reactors Grid Control

    Hi everyone. A while back I promised more releases, so here you go: Big Reactors Grid Control is a multi reactor/turbine controller for Big Reactors and Extreme Reactors. Mission goal: Be the best big reactors controller there is. Nothing more, nothing less. First things first - here's the website: https://tenyx.de/brgc/ Main features Active and passive reactor support Support for multiple reactors and turbines at the same time (n:m) Control active and passive reactors with the same controller Automatic configuration of everything (EVERYTHING!) Setup instructions wget the installer from here: http://xypm.tenyx.de/standalone/brgc_installer.lua Run it Done Big Reactors Grid Control comes with three rc.d files: /etc/rc.d/brgc_reactor.lua /etc/rc.d/brgc_turbine.lua /etc/rc.d/brgc_grid.lua If you want the controller to run at boot time, you can just use OpenOS' rc.d schema. There's a GUI as well as a command line utility for advanced users. To start the gui, simply run "brgc_gui" and watch the magic happen. The gui scales the screen resolution to match the screens ratio and should scale with basically all screen setups. I recommend 3x2 or 4x3 screens. As of now the command line utility allows you to do (almost) everything you can do with the GUI and also allows you to change the controllers configuration at runtime (if you so desire). Check out "brgcctrl help" for further information. How to set up the grid In a basic setup you just interconnect everything: All active reactors can output steam to all turbines. All passive reactors and turbines output energy to the same grid. You CAN have passive reactors and turbines output energy to different energy grids. While this poses absolutely NO problem for passive reactors, you will have to set some turbines to "independent"-mode (more on that below). If you want your reactors and turbines to properly cooperate, you'll also need to connect at least one energy storage block to your energy grid. Currently supported storage "blocks" are: EnderIO Capacitors (requires the mod "Computronics") Draconic Evolution Energy Storage multiblocks. RFTools Energy Cells Thermal Expansion Energy Cells Mekanism Induction Matrices You can connect them using OpenComputers Adapters. Discovering new components As mentioned before the controller tries to autoconfigure everything: Passive Reactors When a new passive reactor is connected to the controller, the controller will first try to measure its maximum energy output. The reactor will have its output increased step by step and the average (interpolated) maximum will be used for that value (CALIBRATING). After calibration has been completed, the controller calculates the most efficient energy output of the reactor. Active Reactors When a new active reactor is connected to the controller, the controller will first try to measure its maximum steam output (CALIBRATING). For this to work correctly the reactor must be able to output at least SOME steam (read: you need a consumer) and you will need to provide sufficient ammounts of water. The controller will detect reactors with a potential steam output greater than 50 B/t and limit its energy accordingly. Turbines When a new turbine is connected to the controller, the controller will first try to measure its maximum energy output (CALIBRATING). For this to work, make sure your turbine is built correctly. This means your turbine can be run at maximum supported steam (25mb/t per blade) without exceeding 1950 RPM. Should your turbine exceed 1950 RPM at any stage, the controller will shut down the turbine and flag it as failed. Note: Your turbine is NOT required to be able to process 2000 mB/t. Smaller turbines work perfectly fine. Screenshots After this wall of text, here're some screenshots (pre 4.2). Setup: Main view: Passive reactor details: Active reactor details: Turbine details: Let's go in order: When you start up the GUI you will be presented with the main view. Here a combined overview of passive reactors, active reactors and turbines will be presented. You can click (or touch) on any of these items to open up a detailed view of the component. Here you can enable/disable the component or change its behaviour. What behaviour? This is where it gets interesting. Passive Reactors You will notice that passive reactors have two modes and an "auto" mode. PWM This is the behaviour everyone knows: The reactor gets turned on when its internal energy storage drops below 10% and gets turned off when the energy storage exceeds 90% of it's maximum capacity. In PWM mode the reactor will generate energy at its most efficient rod level. Overall this mode allows the reactor to generate energy as efficiently as possible as long as your actual energy consumption is below or equal to its optimal energy output. But sometimes you need just a bit more energy and you don't want to upgrade your reactor or build a new one. "Classic" controllers will fail to produce sufficient ammounts of energy here. This leads me to the second behaviour: Load In "Load"-mode the reactor will always aim to produce energy at the same rate as it's consumed. Maybe some people already suspect what that mode is all about: It's a PD-like regulator. While "Load"-mode is not as efficient as PWM-mode in situations where the energy consumption is below the optimal energy output, it will guarantee you're never running into energy shortages - provided you're not exceeding the reactors maximal capacity. Auto "Auto"-mode aims to eliminate the disadvantages of both modes by combining them: If the energy consumption can be satisfied with PWM-mode, PWM will be used. If the energy consumption is above optimal levels, "Load"-mode will be used instead. As a result, "auto"-mode generates energy as efficient as possible while always saturating your energy demands. Active Reactors As of now, active reactors only operate in "load" mode. Steam is consumed and produced way too fast and the reactors internal steam storage does not allow for anything else. Turbines Turbines controlled similar to reactors in "load" mode: The controller will always try to balance the turbines internal energy storage out to 50% by using a PD-like regulator. Turbines can be operated in "ganged"-mode or in "independent"-mode, with "ganged"-mode being the default. The only difference between these two modes is that turbines in "ganged"-mode can be shut down by the controller, while "independent" turbines will always be active, even if they overproduce energy at the lowest RPM allowed. This is handy if one (or more) of your turbines produces energy for a seperate (dedicated) energy grid but has to be controlled by the same controller. If such a turbine is not in "independent"-mode it may be shut down which will lead to energy failure in that grid. That's it for now. If you have any questions, want to report bugs, etc., feel free to drop a message here. Also: Do you want an indepth tutorial on how to use the command line utility? Need a description on what the GUI is actually showing? Have fun XyFreak
  2. 1 point
    How to download? First, you need to install OpenOS from floppy disk to your HDD. Then you can run this command in shell. pastebin run 0nm5b1ju MineOS has a user-friendly installer that allows you to choose language and install OS with several clicks. System requirements: Internet Card OpenOS installed on HDD Tier 3 GPU 2x Tier 3 RAM Tier 3 CPU (not really matters, just speed up) What is it? This is OS X-like operating system that installs over standard OpenOS. Originally it was developed in russian, but gradually I added multy-language support. Basically it allows you to create files, folders and shortcuts, allows to view, edit, copy and paste existing files. If you're tired of using this OS, you can back to OpenOS every time. As for bonus, I've re-designed shell to more comfortable (for me) colors. There are many cool applications specially designed for MineOS. For example, this is Photoshop app - it allows you to create/open/save image files with my special formats. There is also Pastebin app - it is fully functional Pastebin client that allows you to log in into real Pastebin account ang manage your personal files. Also there's an application for 3D-printer. You can easily decorate your house using it. There is Shooting app - the simple program that allows you and your friend to practice in markmanship on server together. There is also Flappy Bird game: And more, more cool apps...
  3. 1 point
    From what I understand you're on the right path. What I think* you're missing is a grouping algorithm. Iterate the table for like-pixels chunks by fore/background color and character to draw together. This should result in less gpu calls overall. I'm working on something similar
  4. 1 point
    BrisingrAerowing

    Big Reactors Grid Control

    @XyFreak It's likely because RFTools Power uses a new API in McJtyLib that uses Longs for power. I'm going to write a quick and dirty driver for said API so that this can work with it. EDIT: Unfortunately OC seems to be capping returned values to the maximum value of a 32 bit integer. Although Vex said that it internally uses doubles, so it should work. Not sure why it doesn't. I'm going to try casting it to a double and see what happens. EDIT2: I GOT IT TO WORK!!! Uploading to CurseForge now!
  5. 1 point
    ben_mkiv

    Hologram Editor

    i've made another little change which adds a 2nd output file when saving the hologram. the format contains an table with subtables for each color with stroke instructions to use with the fill render method of the projector, for some usecases this is faster than setting the voxels one by one. the rendering function is at line 352 and can be used pretty easy in other projects. the outputfile has ".raw" suffix also this script uses the renderfunction, which can be changed in line 100 https://pastebin.com/6EJV1CbX
  6. 1 point
    Looking good, neat program! Some advice for dealing with strings: If you want to print some text on your screen and insert some numbers/other variables/returns of functions etc. into that text, instead of writing one part of the text, writing the number, and write the second part of the text you can just concatenate(connect) the different strings and the numbers using the concat operator .. (2 dots), then print it. In other words, combine all the different parts of the text first, and then write it to the screen. This will reduce the number of lines in your code and less screen operations are performed. io.write("string1") io.write("string2") -- # -> string1string2 -- # you get the same result with io.write("string1".."string2") -- # -> string1string2 -- # you can include numbers with io.write("string"..1.."string"..2) -- # -> string1string2 -- # you dont have to use the strings/numbers directly, variables containing strings and numbers work fine as well local s = "string" local num1 = 1 local num2 = 2 io.write(s..num1..s..num2) -- # -> string1string2 -- # one example of your code would be: line 55 - 59 term.write("Energy available/maximum: "..computer.energy().."/"..computer.maxEnergy().."\n") And one question: do you actually want the program to wait before printing a new set of information on the screen or do you just want to let your program yield in order to avoid "too long without yielding errors"?
  7. 1 point
    XyFreak

    Big Reactors Grid Control

    Currently there are no plans to do that. Fun fact: the installer already downloads packets but it doesn't actually act as packet manager. The whole thing originally emerged from my "xypm" which was able to get packets from the internet tunneling everything over OC network and allowing computers without internet cards to ... install packets (as long as there is a computer on said network with an internet card). My plan is to revive that but...heh.. dunno when.
  8. 1 point
    XyFreak

    Big Reactors Grid Control

    I'll make it official now. Big Reactors Grid Control Version 4.3.1 has been released! Changelog: - Now using the new ER API (0.4.5.48 and higher). Old API is still supported. - Implemented further mitigations for the "too long without yielding" issues. - Included a hack/workaround for a bug with OpenOS 1.7.1 (and earlier) and Lua 5.3 mode. - Fixed a bug where attempting to format a number as an integer (illegal in Lua 5.3 mode). I'm sorry for abusing some of you as beta testers
  9. 1 point
    XyFreak

    Big Reactors Grid Control

    Ok the issue has been fixed @Dreytac @sanovskiy, sorry for missing that... that was stupid of me...
  10. 1 point
    payonel

    Big Reactors Grid Control

    yep, should always require("bit32"), it is not intended to be global (we aren't clearing it from _G in boot). I'll fix in dev. sorry
  11. 1 point
    ZeroNoRyouki

    Big Reactors Grid Control

    Hi there, I've just uploaded the new version of ER (with the new API) on Curse (it's under review at the moment) Have fun!
  12. 1 point
    The main problem here is that "==" is used to compare two values and it returns true or false: 4 == 4 -> true; 4 == 5 -> false The other thing is that the response is not a string, but an iterator that will return the next line whenever you call it. local internet = require'internet' local url = '...' local response = interent.request(url) if response then for line in response do io.write(line.."\n") end end -- # response is an iterator, each time it's called it returns the next line/chunk, this is then stored in the var "line" -- # then you can use the var and print/write it, store it in a table etc
  13. 1 point
    Hello everybody! My first posting and first real OC code, so please be gentle . The reason why I made this is because I got tired of lack of bundled cable support in CC (at the current moment in 1.6.4) and one of the things I greatly enjoyed doing in CC was making button GUI's to control various things for me. This code is highly unoptimized, even as I post this I can see areas that can be greatly optimized, but meh, I'm too lazy atm to do it My one question is how do you change it so you dont have to "sneak-click" the monitor to use the touch feature? One thing to note of importance. The deliberate delay of "os.sleep(0.1)" between switching the redstone state(s) in the bundled cable IS REQUIRED. Any attempt I made and removing it resulted in the code crashing at random points. I assume its due to trying to change 2 different colored cable states at near the same time (possible bug found?). Lastly, being I am fairly "noobish" at lua, any 'constructive' tips you can see I should be aware of to help prevent "bad coding habits" I would greatly apperciate it. Here is a youtube vid of it in action, and the code will follow below. Feel free to use it/edit it/clean it up as you wish! http://youtu.be/DHMHj0o9I5g local component = require("component") local colors = require("colors") local sides = require("sides") local rs = component.redstone local gpu = component.gpu local w, h = gpu.getResolution() local event = require("event") local Blue = 0x0000AA local Green = 0x00AA00 local Red = 0xAA0000 local Black = 0x000000 local state = 1 local function cls() gpu.setBackground(0x000000) gpu.fill(1, 1, w, h, " ") end local function buttonState() if state == 1 then gpu.setBackground(Green) gpu.set(5, 5, " ") gpu.set(5, 6, " Test ") gpu.set(5, 7, " ") gpu.setBackground(Black) gpu.set(5, 9, "green") rs.setBundledOutput(sides.left, colors.red, 0) os.sleep(0.1) rs.setBundledOutput(sides.left, colors.green, 255) os.sleep(0.1) state = 2 else gpu.setBackground(Red) gpu.set(5, 5, " ") gpu.set(5, 6, " Test ") gpu.set(5, 7, " ") gpu.setBackground(Black) gpu.set(5, 9, "red ") rs.setBundledOutput(sides.left, colors.green, 0) os.sleep(0.1) rs.setBundledOutput(sides.left, colors.red, 255) os.sleep(0.1) state = 1 end end local function default() gpu.setBackground(Blue) gpu.set(5, 5, " ") gpu.set(5, 6, " Test ") gpu.set(5, 7, " ") gpu.setBackground(Black) gpu.set(5, 9, "blue ") rs.setBundledOutput(sides.left, colors.red, 0) os.sleep(0.1) rs.setBundledOutput(sides.left, colors.green, 0) os.sleep(0.1) end os.sleep(0) gpu.setResolution(83, 30) gpu.setBackground(Black) gpu.fill(1, 1, w, h, " ") default() while true do local _, _, x, y = event.pull(touch) if x >= 5 and x <= 12 then if y >= 5 and y <= 7 then buttonState() else default() end else default() end end
  14. 1 point
    Dustpuppy

    New ultimate Gui

    Here we are!!! I am finished for the first release....(i hope) If you want to test it, just do "pastebin run Kz9E2JGL" on the computer in your minecraft world. You need an internet card for this. This will install all needed files in /usr/lib/windowmanager and /etc/windowmanager. During the installation you will be ask for the admin user name and the password. You can choose, whatever you want, but best is to use your mc username, because the software will add user to the computer using (funny sentence), like useradd in OS does. After finishing the installation just start it with "windowmanager" Minumum requirements for the computer are, a tier 2 screen, a modem, a keyboard 640k ram and a user who use it. I will do a proper documentation, how to make own programs, after i got some response and when i find the time. For now, just have a look into /usr/lib/windowmanager/programs/program_frame.lua. It's a frame work for making new programs. Or have a look into the other files in this directory. Here's a list of functions that are available. Not complete, but i am working on the documentation. Enjoy and have fun.
×