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

All Activity

This stream auto-updates     

  1. Today
  2. Last week
  3. You're welcome. I'm glad I could help:) I was digging in the source code and it seems like a commit from January fixed that weird behavior. Some if-statement blocked incoming wireless messages while allowing wired messages to be accepted. In the newest version (1.7.5.245) it should work as intended.
  4. I think I can tell you what to look for though: It seemed really strange that with all 3 touching, communication worked fine. So I set up two computers: one with a normal network card the other with a wireless card tier 1, connected thru a relay with cables (relay without any card). If I send wired messages from the normal network card, they can be recieved by the wireless tier1 card, which they shouldn't. Maybe it's just a mix up that the tier1 card listens to the wired connection instead of the wireless one?
  5. I gladly would leave that to you. I wouldn't even know where to start looking in the source code with a mod as complex as this one... probably wouldn't even remember my github pwd Thnx once more.
  6. There is some issue with the tier 1 card. I usually use tier 2 anyways, therefore I didn't notice. Tried with a tier 1 card and I was able to replicate your findings. So for now, I would simply use a tier 2 card in the robot and computer and everything will work just fine without a relay. I'll probably have a look in the tier 1 card's source code later and file a bug report on github (unless you want to do that)
  7. Done some more testing by placing two minimalistic computers one space apart from each other and swapping out wireless cards tier 1 and 2 (without any relays). I checked the config and with getStrength(), both tiers have their standard settings of 16/400 blocks. When messages are transmitted, the distance shows correctly as 2. It seems the wireless card tier 1 can't recieve any messages whatever the source, but can send them just fine. Not sure if that's a pack incompatibility, a bug or if it's intended that it is "send only" and the wiki is outdated. Thnx again for your help.
  8. I downloaded a modpack with the same OC version (1.7.5.192) and everything worked just fine without any relay. I ran --# receiver modem = require "component".modem modem.open(1) =event.pull("modem_message") --# sender modem = require "component".modem modem.open(1) modem.broadcast(1, "hi") (basically the same as yours) in the lua prompt on both the computer and the robot. There was no relay and the devices where over 10 blocks apart and sending the messages worked from robot to computer and computer to robot. I don't really have an idea what is going on with your setup. You could try to run =modem.getStrength() in the lua prompt at both machines. The default strength is 400, but there might be some custom config settings for your modpack. If the strength is too small, the signal doesn't reach the other machine, and placing them next to each other might cause them to be in range and transmit the message. If that's still doesn't resolve your issue, you could post a screenshot of the components in your robot and computer. You can add snippets to you post with and change the syntax highlighting to lua (lower right corner). Also, if you have code on a computer in Minecraft, you can either upload it to pastebin with pastebin put /path/to/file and then copy your code from pastebin.com (requires an internet card, you can temporarily insert one) or go into the saves folder of your Minecraft world, go to open computers folder and look inside the folder with the same name as the hard drive address of the computer you are using.
  9. Thnx for your time. Yes, I have wireless network cards in the robot (not drone, my mistake), the computer and the relay. I dont know how to post a snippet, if I cant copy from in game... the program is rather long but it doesnt really get past those lines. The only relevant piece missing is "local port = 1" at the beginning. Nevertheless i can reproduce the results in the lua interpreter, using on the receiver side: =component.modem.open(1) =event.pull("modem") and then on the sender side =component.modem.open(1) =component.modem.broadcast(1,"hi") I get the following results: in the configuration above (all 3 touching) -> communication works in both ways all 3 seperated (not touching) -> communication works in neither way (but relay blinks in both directions) computer and relay touching, robot seperate -> communication from robot to computer works, but not other way around (although relay still blinks) robot and relay touching , computer seperate -> communication from computer to robot works, but not other way around (although relay still blinks) without relay no communication works, no matter if touching or not Should the robot touching make any difference at all? Can the charger extend the network? And shouldn't robots not connect to any external components? Especially the last part is strange, because if I run the program in the pictured setup it works until the robot flies next to the computer, at which point the computer shuts down, because it complains about too many connected components. Edit: In the test situation "computer and robot touching" means like in the picture, thru the charger. And does the relay need power? It seems to be working and I also tried hooking it up to a power converter, but "the one probe" always shows it at 0RF.
  10. Hey If done correctly, you don’t need the relay. Communication between multiple computers/drones etc works just fine without. The way your setup behaves is somewhat strange, I can try to replicate this later. Anyways, do you have a wireless network card in both the computer and the robot? (I assume by drone you mean the machine called EDI in your screenshot, right) Also, the code you showed looks somewhat fine I guess, but it would be helpful if you could post both as full program, preferably not as screenshot but as snippets.
  11. I have following setup build in my Compact Claustrophobia world (MC 1.12.2 / OC 1.7.5.192) and cant get it to work as i want. Well, it does work, if I leave it as shown. The computer, the relay and the drone all have wireless network cards and communicate without problem. If I run programs containing following code snippets (left one is the drone, right one the computer - kinda bloated with debug outputs...) everything runs smoothly. But all I want is a wireless connection between computer and drone and I want to position stuff differently. Should I even need the relay, if I only want drone and computer to communicate wirelessly (which stay close, but not touching)? I assume not, but if I take it away, I can't pull any modem messages anymore. Next thing I tried is placing the drone and the relay so they don't touch anything else. Still there are no packets transmitted... well, the relay blinks, when the computer broadcasts, but the drone doesnt receive any modem events. Same result if I remove the relay and have the drone in a non touching position. But when I place relay and drone next to each other (touching) but away from the computer, all the sudden the drone does recieve the message from the computer, but fails at replying (the drone program ends in the "else condition" seen at the very bottom of the snippet, which means it received the next broadcast since the computer didnt get it's message to stop broadcasting). I don't understand what's happening, and I tested and googled for ours by now... really would appreciate any help =)
  12. project dead, but we could talk about the acquisition of the source code if you're intreseted. Darkest Euphoria#9488
  13. It's been a while since I posted this here! At the time I made this topic, our community was a little over 300 members large. Some time and a lot of fun has passed, and we're currently at over 1100 members! We're now officially a 'Discord-community'! If you're not here yet, I really encourage you to join aswell, so you won't miss all the fun See you there! CLICK HERE TO ENTER THE DISCORD SERVER (as of writing we have over 1100 members and are still growing!)
  14. Earlier
  15. If you put the source code on GitHub or something similar I’d be happy to help development.
  16. Is this still being worked on? If not, can you release the source code so others can work on it?
  17. First post here, hi. For the past few months, I’ve been working on an operating system for OpenComputers. It’s a monolithic, UNIX-like operating system. Note that Monolith will not currently work in OCEmu due to the lack of support for`computer.getDeviceInfo`. First, the advantages over OpenOS: - Monolith supports dynamically adding and removing screens, GPUs, and keyboards - it’ll automatically spawn a shell on an available combo and will try to match by tier. - Monolith’s userspace is properly sandboxed - there’s no way to completely crash the kernel from userland. - Monolith includes a fairly complete set of documentation, in the form of manual pages, for many system and user-level APIs. They are also available for online viewing here. - Monolith’s terminal is entirely VT100 - the `term` API is a wrapper around this and included only for compatibility. - The scheduler will automatically collect garbage if memory gets low, and includes a facility that avoids dropping signals. Your system may freeze for half a second or so, but all input will be registered and you’re less likely to OOM. - Monolith ships with the Minitel, and soon GERTi, network stacks out-of-the-box. - Monolith’s package manager, while admittedly somewhat basic, is faster than OPPM. - The provided `readline` implementation is ridiculously featured and the best I’ve written - and it’s even its own API. `io.stdin:read` is by default simply a wrapper around `readline`. - The recommended and default editor, `vled`, has support for optional syntax highlighting through a command-line flag. So far, only Lua is supported. Now, the disadvantages. - Pipes in the shell are currently broken for reasons unknown, though suspected. Redirects are not implemented. - Monolith requires a minimum of 256 kilobytes of RAM, or a single tier 1.5 stick, due to the userspace sandboxing. - Monolith does not *quiiiiiiite* have full OpenOS compatibility, though most programs should theoretically run out of the box - see `wget`, `pastebin`, `components`, and `lshw`, which are pretty much direct copies of the OpenOS implementations. The `event`, `internet`, and `buffer` libraries are also taken from OpenOS. - `vled` is slower (due to use of VT100) and slightly less featured than OpenOS’s `edit`. It’s also a little more obtuse thanks to the fact that it draws heavily from `vim`. - There are a few small and rather strange bugs in my `readline` implementation. They shouldn’t affect normal use too much, though, as they aren’t terribly noticeable except on tier 1 screens. The source code is available here if you want to try it out!
  18. This is a known bug in SGCraft I reported a few months ago. Please check this thread on GitHub for more information.
  19. Im sure you can optimise the dialing program so you can have all the stargate code seperate and just copy and paste the adress and raw message stuff all at the same place, but i cant bother.
  20. Anything not impossible is possible, and this feature doesn't even require much perseverance to implement. Right now we're using owner to store the nickname of one player. We are going to replace it with a table, and therefore the name owner is no longer satisfactory. Let's rename it as trustedPeople and populate it with some test names. local trustedPeople = {"player1", "player2", "player3"} A table is the universal record type in Lua, that is, the type that stores multiple values. But we still need to choose the correct data structure. The table trustedPeople is a sequence. This means its elements are stored sequentially, without gaps, and can be accessed using integer indeces (trustedPeople[1], trustedPeople[2], etc.). Such a data structure is useful if we need an ordered collection of items to iterate over, for example. However, this is not the case here. What we need is essentially a set, which stores unique elements and can tell us in an efficient way if a certain value exists. In Lua, sets are usually implemented as follows: local trustedPeople = { ["player1"] = true, ["player2"] = true, ["player3"] = true, } The stuff in square brackets is called the key, and what follows after the equals sign is the value. If you have the key, you can quickly determine the associated value, which defaults to nil for nonexistent keys. The most important word is quickly. As for the previous data structure, to find if a table contains a trusted person, we would have to iterate over the sequence of authorized players for every element of the table. local ownerNearby = false for _, entry in ipairs(scan) do for _, trusted in ipairs(trustedPlayers) do if entry.name == trusted then ownerNearby = true goto out end end end ::out:: It's very inefficient and complicated. Now, compare it with the code that we would write if we use a set for trustedPlayers: local ownerNearby = false for _, entry in ipairs(scan) do if trustedPlayers[entry.name] then ownerNearby = true break end end However, I like how easy it is to modify the sequence in the code. {"one", "two", "three"} is much more concise than {["one"] = true, ["two"] = true, ["three"] = true}. I'll make it so that we could specify the list of allowed people, and it would be converted to a set by the program. local trustedPeople = {"player1", "player2", "player3"} for index, nickname in ipairs(trustedPeople) do trustedPeople[nickname] = true trustedPeople[index] = nil end Let's incorporate all of that in the original program. local component = require("component") local alarm = component.os_alarm local door = component.os_door local entity = component.os_entdetector local trustedPeople = {"player1", "player2", "player3"} for index, nickname in ipairs(trustedPeople) do trustedPeople[nickname] = true trustedPeople[index] = nil end local previousState = "nobody" while true do local scan = entity.scanPlayers(64) if scan and #scan > 0 then local shouldOpen = false for _, entry in ipairs(scan) do if trustedPeople[entry.name] then shouldOpen = true break end end if shouldOpen and previousState ~= "allowed" then door.open() alarm.deactivate() print("Welcome home!") previousState = "allowed" elseif not shouldOpen and previousState ~= "intruder" then door.close() alarm.activate() print("Hello, whoever you are.") previousState = "intruder" end else door.close() alarm.deactivate() previousState = "nobody" end os.sleep(2) end I've also changed a couple of names so that they would reflect their purpose.
  21. Dude, that is the most helpful response i could have expected. Gonna dive into this now, see if i can get it working, and thank you for having patience with such a nub like me. The fact you didnt just correct my crap code but actually explained it to me is awesome. I am trying to learn not just be shoveled code so I have to ask dumb questions on the next program. People should take note, I am sure this will help alot out, not just me. One more dumb question. Could this be easily modified to add multiple people to the allowed list? Like if I team with someone. I play on a very aggressive guns/heli server and we need quick in/out sometimes.
  22. Iv thrown together what i would call an enchanced version of Kevlaris Control System 2 programs, the message program and the dialing program. These 2 programs can dial a number of gates that you can add yourself, or if you want to dial manually and type in your adress to the computer. Both programs can be run on the same rack (but on different servers, just make sure the dialing program can receive messages from the message program). With just a monitor attached for the message program, preferrably near your stargate. Message program (yes im aware i misspelled nether) Pretty simple. Sends a command to the dialing program depending on what you wanna do. 1. If you wanna add more destinations just copy and paste the highlighted code under itself. Like this if num == "1" then print("Dialing Spawn.") modem.broadcast(port, "dial1") print("Address sent to gate computer.") os.sleep(5) elseif num == "2" then print("Dialing Nether.") modem.broadcast(port, "dial2") print("Address sent to gate computer.") os.sleep(5) 2. Change the "if num == "2" then" to a number of your choosing. (as you can see in the image, 1,2,3,4 are currently being used, so in this case im gonna type 5, but it can be any number you want.) elseif num == "5" then print("Dialing Nether.") modem.broadcast(port, "dial2") print("Address sent to gate computer.") os.sleep(5) 3. Edit the "print("Dialing Nether.")" to whatever you want it to say. elseif num == "5" then print("Dialing Beach.") modem.broadcast(port, "dial2") print("Address sent to gate computer.") os.sleep(5) 4. Edit the "modem.broadcast(port, "dial2")" to something you will remember, you will need it later when we edit the dialing program. elseif num == "5" then print("Dialing Nether.") modem.broadcast(port, "dial3") print("Address sent to gate computer.") os.sleep(5) 5. Now go to the very bottom of the program and find "elseif num ~= "1" or num ~= "2" or num ~= "3" or num ~= "4" then". You will need to add whatever number you typed in step 2. elseif num ~= "1" or num ~= "2" or num ~= "3" or num ~= "4" or num ~= "5" then And we are done with the message program! Now on to the dialing program! Dialing program The computer/server running this program needs to be connected to the stargate before startup. Otherwise the program crashes. Also pretty simple, receiving message from the message computer and then do what you wanna do. You need to change your adress to the one you have ingame. To do that and to even add a whole new adress please follow this step by step tutorial. The dialing program is where you can get lost in code, just follow step by step and you will be fine. 1. Same as in the message program, copy and paste the following code under itself. This code is long, prepare to scroll... elseif raw == "dial1" then print() address = {"Sextans", "Corona Australis", "Andromeda", "Perseus", "Leo", "Aries", "Point of Origin"} os.sleep(0.5) print("Dialing") for i,v in ipairs(address) do print(i,v) end print() function dialNext(dialed) glyph = address[dialed + 1] print("Engaging "..glyph.."... ") sg.engageSymbol(glyph) end eventID = event.listen("stargate_spin_chevron_engaged", function(evname, address, caller, num, lock, glyph) os.sleep(2) if lock then if (event.cancel(eventID)) then print("Event cancelled successfully") end os.sleep(2) print("Engaging...") sg.engageGate() doing = false os.sleep(5) print("30") os.sleep(1) print("29") os.sleep(1) print("28") os.sleep(1) print("27") os.sleep(1) print("26") os.sleep(1) print("25") os.sleep(1) print("24") os.sleep(1) print("23") os.sleep(1) print("22") os.sleep(1) print("21") os.sleep(1) print("20") os.sleep(1) print("19") os.sleep(1) print("18") os.sleep(1) print("17") os.sleep(1) print("16") os.sleep(1) print("15") os.sleep(1) print("14") os.sleep(1) print("13") os.sleep(1) print("12") os.sleep(1) print("11") os.sleep(1) print("10") os.sleep(1) print("9") os.sleep(1) print("8") os.sleep(1) print("7") os.sleep(1) print("6") os.sleep(1) print("5") os.sleep(1) print("4") os.sleep(1) print("3") os.sleep(1) print("2") os.sleep(1) print("1") os.sleep(1) print("Stargate Shutdown") sg.disengageGate() os.sleep(1) else dialNext(num) end end) dialNext(0) doing = true print() while doing do os.sleep(0.1) end ------------------------------------------------------------------------------------------------------------------------------------------------------------- elseif raw == "dial1" then print() address = {"Sextans", "Corona Australis", "Andromeda", "Perseus", "Leo", "Aries", "Point of Origin"} os.sleep(0.5) print("Dialing") for i,v in ipairs(address) do print(i,v) end print() function dialNext(dialed) glyph = address[dialed + 1] print("Engaging "..glyph.."... ") sg.engageSymbol(glyph) end eventID = event.listen("stargate_spin_chevron_engaged", function(evname, address, caller, num, lock, glyph) os.sleep(2) if lock then if (event.cancel(eventID)) then print("Event cancelled successfully") end os.sleep(2) print("Engaging...") sg.engageGate() doing = false os.sleep(5) print("30") os.sleep(1) print("29") os.sleep(1) print("28") os.sleep(1) print("27") os.sleep(1) print("26") os.sleep(1) print("25") os.sleep(1) print("24") os.sleep(1) print("23") os.sleep(1) print("22") os.sleep(1) print("21") os.sleep(1) print("20") os.sleep(1) print("19") os.sleep(1) print("18") os.sleep(1) print("17") os.sleep(1) print("16") os.sleep(1) print("15") os.sleep(1) print("14") os.sleep(1) print("13") os.sleep(1) print("12") os.sleep(1) print("11") os.sleep(1) print("10") os.sleep(1) print("9") os.sleep(1) print("8") os.sleep(1) print("7") os.sleep(1) print("6") os.sleep(1) print("5") os.sleep(1) print("4") os.sleep(1) print("3") os.sleep(1) print("2") os.sleep(1) print("1") os.sleep(1) print("Stargate Shutdown") sg.disengageGate() os.sleep(1) else dialNext(num) end end) dialNext(0) doing = true print() while doing do os.sleep(0.1) end 2. Edit the elseif raw == "dial2" then to the message we remembered from the message program. (or dont, depending if you just want to change your adress) elseif raw == "dial3" then 3. Edit your adress, the adress is your stargate adress. Just type it in word by word the exact adress you have ingame. address = {"Sextans", "Corona Australis", "Andromeda", "Perseus", "Leo", "Aries", "Point of Origin"} ------> address = {"Crater", "Monoceros", "Scorpius", "Serpens Caput", "Aries", "Leo", "Point of Origin"} If you wanna type a 8 or 9 chevron adress, just add in the last word/words. address = {"Crater", "Monoceros", "Scorpius", "Serpens Caput", "Aries", "Leo", "Perseus", "Point of Origin"} 4. And we are done! Enjoy! Pastebin for message program. Pastebin for dialing program. They are also attached to this post. startdialing.lua startmessage.lua
  23. I am sorry, but unless I'm misreading your code, it can't possibly throw an "attempt to index a nil value" error, with any people in proximity or without. And the question is contradictory, stating both that the program crashes and that it freezes (the latter is correct, however). Actually, I'm unsure what the actual question is. Therefore, I'll do the only thing I can here: that is, explain what your code does wrong and how to fix it. Before I can proceed to fix the actual issues in the program's logic, I have to get rid of some minor problems. The first such problem is that the code is indented poorly. Of course, Lua doesn't care how you format your code, but it isn't why you do that. Indentation helps you, the program's author, to keep track of what it does, to visually separate chunks of code. And other people benefit from that too, for properly formatted code is much more readable. Without further ado... local component = require("component") local colors = require "colors" gpu = require("component").gpu alarm = require("component").os_alarm door = require("component").os_door entity = require("component").os_entdetector local w, h = gpu.getResolution() local delay -- sleep time local player -- list of players while true do os.sleep(2) if entity.scanPlayers(64) == true then scan = entity.scanPlayers(64) name = scan[1].name if name ~= "sav" then door.close() alarm.activate() print("Hello " .. scan[1].name) os.sleep(2) alarm.deactivate() elseif name == "sav" then door.open() alarm.deactivate() print("Welcome Home Sav") os.sleep(2) end os.sleep(4) end end ...And the second thing to take care of is the global variables. Unless you need them such (which rarely happens and this is no exception), make them local. Finally, you've already required component, so there is no reason to do so again; and, while fixing that, let's also remove the unused variables: gpu, colors, delay and player. You can re-add them later yourself if you need. local component = require("component") local alarm = component.os_alarm local door = component.os_door local entity = component.os_entdetector local owner = "sav" -- insert your nickname here while true do os.sleep(2) if entity.scanPlayers(64) == true then local scan = entity.scanPlayers(64) local name = scan[1].name if name ~= "sav" then door.close() alarm.activate() print("Hello " .. scan[1].name) os.sleep(2) alarm.deactivate() elseif name == "sav" then door.open() alarm.deactivate() print("Welcome Home Sav") os.sleep(2) end os.sleep(4) end end Great, so now we can start dissecting the code. What does it do? First, we require the component library, get proxies of the components we need, and proceed into the main loop. There we first sleep for 2 seconds... Why do we sleep for 2 seconds, again? I'm not sure; let's keep it there for now. Then we perform a scan, calling entity.scanPlayers(64), which returns a table, and compare if it is equal to true. Wait. There is no way a table can be equal to true, not unless you mess with metamethods, which we don't. Very suspicious. If we interpret the code literally, we skip the whole if, and end up at the start of the loop again. It's not interesting, so let's pretend that somehow the if's condition is satisfied to understand what the author's intent was. And then we perform another scan... hang a minute, another one? Haven't we already done that? Why should we be in dire need of repeating ourselves? Anyway, I think I realized what the code was supposed to do: scan the surroundings and check if there's anyone around. After all, running an alarm without anybody to listen to the marvelous sounds of it is just a waste of energy, isn't it? Let's put it into words in Lua. ... while true do local scan = entity.scanPlayers(64) if scan and #scan > 0 then ... else door.close() alarm.deactivate() end os.sleep(2) end We do the scan as soon as we're in the loop. If the scan result is present (neither a false nor a nil), which means the entity detector had no errors, and the length (#) of that table (#scan) is greater than 0 (#scan > 0), then we'll do something about it. The previous sentence is basically how you'd read the code in English. Note that if scan happens to be empty, we close the door and disable the alarm. And we shouldn't forget to sleep, for the sake of energy conservation. All right, so let's do something about the scan. scan the variable is a table of tables. In other words, scan is a table that stores other tables. Each "other table", in turn, contains information about one player nearby. We have already checked that at least one player is present, but there may be more people gathered around, totally not planning a siege, and we don't yet know whether you are there. You blindly assume you would be the first player in the returned list. Unfortunately, the entity detector couldn't care less about that, and your entry could easily be the second or the last one. Or not present at all, if you happened to carelessly abandon your fortress. Our mini-goal is to walk through all the entries of the table (this is called iterating a table) until your entry is found. If after iterating through all items we have yet to found yours, you're not around. So we close the door and activate the alarm. Otherwise, we do the opposite. This is how you do it: local ownerNearby = false for _, entry in ipairs(scan) do if entry.name == owner then ownerNearby = true break end end if ownerNearby then door.open() alarm.deactivate() print("Welcome home!") else door.close() alarm.activate() print("Hello, whoever you are.") end Something isn't right... The program will keep spamming "Welcome home!" if you're in vicinity, which isn't quite courteous. Let's make it greet you only if you weren't around before that, and do likewise for greeting intruders. To do that, we need to remember the previous state of your program: whether there was nobody, an intruder, or you. local component = require("component") local alarm = component.os_alarm local door = component.os_door local entity = component.os_entdetector local owner = "sav" -- insert your nickname here local previousState = "nobody" while true do local scan = entity.scanPlayers(64) if scan and #scan > 0 then local ownerNearby = false for _, entry in ipairs(scan) do if entry.name == owner then ownerNearby = true break end end if ownerNearby and previousState ~= "owner" then door.open() alarm.deactivate() print("Welcome home!") previousState = "owner" elseif not ownerNearby and previousState ~= "intruder" then door.close() alarm.activate() print("Hello, whoever you are.") previousState = "intruder" end else door.close() alarm.deactivate() previousState = "nobody" end os.sleep(2) end Well, this is the whole program. I didn't test it, so any bugs are yours to find and exterminate.
  24. It's hard to find the error because indentation is a mess, to be honest. I strongly recommend that you learn how to indent the code properly. If you do that, you should get something like https://pastebin.com/D5adZ0HV. Look at the line 97: you can easily notice that the position of elseif seems weird. Backtrack a little to find where it went wrong — and there, the line 44 contains an extraneous end. Now, if you remove it and re-indent the code again, you'll find out that the last line seems out of place. Sure enough, if you just remove that end, there will be no other end to close the if! So you should add end before that last line. After all of that, the original problem will be solved. I'll note that the code uses global variables throughout; it has sections like L59–87 which could be replaced by a for loop (and which could take 4 lines of code instead of 29); event.listen is called incorrectly (the anonymous function should be the second argument of the call but is instead discarded); the repeat loop with a dubious exit condition can be replaced with a more relatable while true do loop. All of those are either present problems or potential issues that can manifest themselves when you least expect them to, and worth fixing.
  25. With the tuned setting on average a max fueld reactor outputs just under 1.7 million RF/t average over its runtime if you include the shutdown phase, netting a total of 1.85319e+13 RF over the course of roughly 7 days. That's a lot of RF. Also you'll get chaos so you can just build... more? If you forego the UI one fully blown server can support like 20 reactors. The max peak RF/t I've gotten out of the thing without it going boom is just under 3.5 million RF/t. Note that there is a hard-limit in the code restricting the extraction of energy to 1/10th of the maximum saturation. The energy generation rate also has a hard limit at each given fuel percentage (I don't know the numbers off the top of my head but they're suprisingly low) so I don't think we'll get much more out of it. EDIT: I just did the math - the MOST a draconic reactor can generate is 3 million RF/t - and it will decide to go boom that exact same tick. That means the 3.5 million RF/t figure is picked from the initial discharge propably... kinda disappointing but yeah - 3 million is the hard limit for sustained power gen.
  26. That's fair enough, would just be nice to see the reactor temp from the screen but I can live without it Thanks for all your help mate
  1. Load more activity
  • Newsletter

    Want to keep up to date with all our latest news and information?
    Sign Up
×
×
  • Create New...

Important Information

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