- Sky
- Blueberry
- Slate
- Blackcurrant
- Watermelon
- Strawberry
- Orange
- Banana
- Apple
- Emerald
- Chocolate
- Charcoal
Kye_Duo
-
Content Count
7 -
Joined
-
Last visited
Posts posted by Kye_Duo
-
-
it mostly works:
it will crash trying to set the warp distance after warping, resetting the program fixes this.
it won't properly update the coordinates on the screen, but does store the coordinates and will correct itself if you restart the program
the energy needs to be setup so that it will update every few seconds
the summon doesn't work, but that may be due to API changes in warp core, will have to check the code to make sure they haven't changed.
and the screen doesn't update after a jump.
it acts like several variables aren't being recalled after a jump or something.
I also need to add in a cooldown timer on the screen so that you know that you can't jump just yet and that is why the program appears to not be responding if you try and jump too soon.
-
Okay try this go to: C:/user/(name)/.appdata/roaming/.minecraft/worlds/(world name)/OC (or is it OpenComputers) then look for the hard drive (example: a63c-15ca-6fse-
(or what ever drive it is on)
353) and then use your favorite text and then make the program, make sure to add .lua at the end (autorun.lua etc...)
I've tried that, and OC didn't want to recognize it....I'll try again.
I also am in my .minecraft folder so much I have it pinned.
edit: it does work, but it seems I loose the ability to edit the program in game....strange.
-
What OS and launcher are you using?
win 10 and stock MC launcher
-
sorry about the long delay getting back to this, thanks for the help. This is a great help. I'll play around with it to see if I can fix that problem.
I would like to know if there is some way to externally edit the program files. Trying to type that all in game would be a chore.
Once this gets fixed, I'll pass it along to the Warp Drive modders and I'll def include you in the credit for the conversion.
-
thanks, that is a major start for me and what I was looking for.
do you know of a way to externally modify OC programs?
-
I'm trying to setup a warp drive controller program in OC, there exists one for CC, but it doesn't work out of the box.
I am a total noob when it comes to OC programming so I need help
also, is there an external way to write programs for OC like you could with CC?
here is the original CC code, what would I need to do to convert it to run on OC?
I've started to convert it, but I'm in way over my head.
print("loading...") -- set alarm side if you need this Alarm = "top" local colors = require("colors") Style = { CDeflt = colors.white, BGDeflt = colors.blue, CTitle = colors.black, BGTitle = colors.cyan, CWarn = colors.white, BGWarn = colors.red } function SetColorDeflt() term.setBackgroundColor(Style.BGDeflt) term.setTextColor(Style.CDeflt) end function SetColorTitle() term.setBackgroundColor(Style.BGTitle) term.setTextColor(Style.CTitle) end function SetColorWarn() term.setBackgroundColor(Style.BGWarn) term.setTextColor(Style.CWarn) end function Clear() term.clear() term.setCursorPos(1,1) end function Show(Text) term.write(Text) local xt,yt = term.getCursorPos() term.setCursorPos(1, yt+1) end function ShowTitle(Text) SetColorTitle() term.setCursorPos(12, 1) Show(Text) SetColorDeflt() end function ShowMenu(Text) term.write(Text) local xt, yt = term.getCursorPos() for i = xt, 51 do term.write(" ") end term.setCursorPos(1, yt+1) end function ShowWarning(Text) SetColorWarn() term.setCursorPos(10, 19) term.write(" "..Text.." ") SetColorDeflt() end function SaveData() local file = fs.open("shipdata.txt", "w") file.writeLine(textutils.serialize(SData)) file.close() end function ReadData() local file = fs.open("shipdata.txt", "r") SData = textutils.unserialize(file.readAll()) file.close() end function Explode(d, p) local t, ll t = {} ll = 0 if(#p == 1) then return {p} end while true do l = string.find(p ,d, ll, true) if l ~= nil then table.insert(t, string.sub(p, ll, l-1)) ll = l+1 else table.insert(t, string.sub(p, ll)) break end end return t end function ShowDirection() if SData.Direction == 1 then Show(" Direction = Up") elseif SData.Direction == 2 then Show(" Direction = Down") elseif SData.Direction == 0 then Show(" Direction = Front") elseif SData.Direction == 180 then Show(" Direction = Back") elseif SData.Direction == 90 then Show(" Direction = Left") elseif SData.Direction == 255 then Show(" Direction = Right") end end function CalcRealDistance() if IsInHyper then RealDistance = SData.Distance * 100 MinimumDistance = 1 JumpCost = (1000 * Weight) + (1000 * SData.Distance) else if SData.Direction == 1 or SData.Direction == 2 then MinimumDistance = GUp + GDown RealDistance = SData.Distance + MinimumDistance elseif SData.Direction == 0 or SData.Direction == 180 then MinimumDistance = GFront + GBack RealDistance = SData.Distance + MinimumDistance elseif SData.Direction == 90 or SData.Direction == 255 then MinimumDistance = GLeft + GRight RealDistance = SData.Distance + MinimumDistance end MinimumDistance = MinimumDistance + 1 JumpCost = (10 * Weight) + (100 * SData.Distance) end end function CalcNewCoords(cx, cy, cz) local res = {x=cx, y=cy, z=cz} if SData.Direction == 1 then res.y = res.y + RealDistance elseif SData.Direction == 2 then res.y = res.y - RealDistance end local dx = warp.get_dx() local dz = warp.get_dz() if dx ~= 0 then if SData.Direction == 0 then res.x = res.x + (RealDistance * dx) elseif SData.Direction == 180 then res.x = res.x - (RealDistance * dx) elseif SData.Direction == 90 then res.z = res.z + (RealDistance * dx) elseif SData.Direction == 255 then res.z = res.z - (RealDistance * dx) end else if SData.Direction == 0 then res.z = res.z + (RealDistance * dz) elseif SData.Direction == 180 then res.z = res.z - (RealDistance * dz) elseif SData.Direction == 90 then res.x = res.x + (RealDistance * dz) elseif SData.Direction == 255 then res.x = res.x - (RealDistance * dz) end end return res end function ShowInfo() ShowTitle(Title) Show("Core:") Show(" x, y, z = "..X..", "..Y..", "..Z) local energy = warp.get_energy_level() Show(" Energy = "..math.floor(energy / 1000000).." % ("..energy.."EU)") Show(" Attached players = "..warp.get_attached_players()) Show("Dimensions:") Show(" Front, Right, Up = "..GFront..", "..GRight..", "..GUp) Show(" Back, Left, Down = "..GBack..", "..GLeft..", "..GDown) Show(" Size = "..Weight.." blocks") Show("Warp data:") ShowDirection() local dest = CalcNewCoords(X, Y, Z) Show(" Distance = "..RealDistance.." ("..JumpCost.."EU, "..math.floor(energy/JumpCost).." jumps)") Show(" Dest.coordinates = "..dest.x..", "..dest.y..", "..dest.z) if SData.Summon then Show(" Summon after = Yes") else Show(" Summon after = No") end end function Confirm() ShowWarning("Are you sure? (y/n)") local event, keycode = os.pullEvent("key") if keycode == 21 then return true else return false end end function Warp() rs.setOutput(Alarm, false) sleep(1) warp.set_direction(SData.Direction) if IsInHyper then warp.set_mode(2) else warp.set_mode(1) end warp.do_jump() end function SetDistance() Clear() ShowTitle("<==== Set distance ====>") SData.Distance = 0 CalcRealDistance() MaximumDistance = MinimumDistance + 127 if IsInHyper then term.write("Distance * 100 (min "..MinimumDistance..", max "..MaximumDistance.."): ") else term.write("Distance (min "..MinimumDistance..", max "..MaximumDistance.."): ") end sleep(0.3) SData.Distance = tonumber(read()) if SData.Distance == nil then SData.Distance = 1 end if SData.Distance < MinimumDistance or SData.Distance > MaximumDistance then SData.Distance = 1 ShowWarning("Wrong distance. Try again.") os.pullEvent("key") CalcRealDistance() else if not IsInHyper then SData.Distance = SData.Distance - RealDistance end warp.set_distance(SData.Distance) CalcRealDistance() end end function SetDirection() local drun = true while(drun) do Clear() ShowTitle("<==== Set direction ====>") ShowDirection() term.setCursorPos(1, 16) SetColorTitle() ShowMenu("Use directional keys") ShowMenu("W/S keys for Up/Down") ShowMenu("Enter - confirm") SetColorDeflt() local event, keycode = os.pullEvent("key") if keycode == 200 then SData.Direction = 0 elseif keycode == 17 then SData.Direction = 1 elseif keycode == 203 then SData.Direction = 90 elseif keycode == 205 then SData.Direction = 255 elseif keycode == 208 then SData.Direction = 180 elseif keycode == 31 then SData.Direction = 2 elseif keycode == 28 then drun = false end end end function SetDimensions() Clear() sleep(0.3) ShowTitle("<==== Set dimensions ====>") term.write(" Front ("..GFront..") : ") GFront = tonumber(read()) term.write(" Right ("..GRight..") : ") GRight = tonumber(read()) term.write(" Up ("..GUp..") : ") GUp = tonumber(read()) term.write(" Back ("..GBack..") : ") GBack = tonumber(read()) term.write(" Left ("..GLeft..") : ") GLeft = tonumber(read()) term.write(" Down ("..GDown..") : ") GDown = tonumber(read()) term.write("Setting dimensions...") warp.dim_setp(GFront, GRight, GUp) warp.dim_setn(GBack, GLeft, GDown) end function Summon() Clear() ShowTitle("<==== Summon players ====>") local players = Explode(",", warp.get_attached_players()) for i = 1, #players do Show(i..". "..players[i]) end SetColorTitle() ShowMenu("Enter player number") ShowMenu("or press enter to summon everyone") SetColorDeflt() sleep(0.3) term.write(":") local input = read() if input == "" then warp.summon_all() else input = tonumber(input) warp.summon(input - 1) end end function JumpToBeacon() Clear() ShowTitle("<==== Jump to beacon ====>") sleep(0.3) term.write("Enter beacon frequency: ") local freq = tostring(read()) rs.setOutput(Alarm, true) if Confirm() then rs.setOutput(Alarm, false) warp.set_mode(4) warp.set_beacon_frequency(freq) warp.do_jump() end rs.setOutput(Alarm, false) end function JumpToGate() Clear() ShowTitle("<==== Jump to JumpGate ====>") sleep(0.3) term.write("Enter jumpgate name: ") local name = tostring(read()) rs.setOutput(Alarm, true) if Confirm() then rs.setOutput(Alarm, false) warp.set_mode(6) warp.set_target_jumpgate(name) warp.do_jump() end rs.setOutput(Alarm, false) end function SetShipName() Clear() ShowTitle("<==== Set ship name ====>") sleep(0.3) term.write("Enter ship name: ") SData.Shipname = tostring(read()) os.setComputerLabel(SData.Shipname) warp.set_core_frequency(SData.Shipname) SaveData() os.reboot() end if fs.exists("shipdata.txt") then ReadData() else SData = { Summon = false, Distance = 1, Direction = 0, Shipname = "" } end SetColorDeflt() Side = { "bottom", "top", "back", "left", "right" } for i = 1,5 do if peripheral.getType(Side[i]) == "warpcore" then warp = peripheral.wrap(Side[i]) break end end if type(warp) ~= "table" then ShowWarning("No warpcore controller detected") os.pullEvent("key") os.shutdown() end if SData.Shipname == "" then SetShipName() end Title = "<Jump-S 1.6.1 \""..SData.Shipname.."\">" if SData.Summon then warp.summon_all() end GFront, GRight, GUp = warp.dim_getp() GBack, GLeft, GDown = warp.dim_getn() IsInHyper = warp.is_in_hyperspace() repeat X = warp.get_x() sleep(0.3) until X ~= nil Y = warp.get_y() Z = warp.get_z() Weight = warp.get_ship_size() CalcRealDistance() warp.set_mode(1) mainloop = true while(mainloop) do Clear() ShowInfo() term.setCursorPos(1, 15) SetColorTitle() ShowMenu("D - Dimensions, M - Toggle summon, N - Ship name") ShowMenu("S - Set Warp Data, J - Jump, G - Jump to JumpGate") ShowMenu("B - Jump to Beacon, H -Jump to Hyperspace") ShowMenu("C - Summon, X - Shutdown WarpCore and Exit") SetColorDeflt() local event, keycode = os.pullEvent("key") if keycode == 31 then SetDirection() SetDistance() SaveData() elseif keycode == 50 then if SData.Summon then SData.Summon = false else SData.Summon = true end SaveData() elseif keycode == 32 then SetDimensions() SaveData() elseif keycode == 36 then rs.setOutput(Alarm, true) if Confirm() then Warp() end rs.setOutput(Alarm, false) elseif keycode == 46 then Summon() elseif keycode == 48 then JumpToBeacon() elseif keycode == 34 then JumpToGate() elseif keycode == 35 then rs.setOutput(Alarm, true) if Confirm() then rs.setOutput(Alarm, false) warp.set_mode(5) warp.do_jump() end rs.setOutput(Alarm, false) elseif keycode == 45 then mainloop = false elseif keycode == 49 then SetShipName() end end if SData.Summon then SData.Summon = false SaveData() end Clear() print("wish you good") warp.set_mode(0) sleep(0.5) os.shutdown()
Warp Drive controller for OC
in Programming
Posted
last one is easy, rename it autorun.lua