Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local maxCoord = 139967
- local minCoord = -maxCoord
- local dimensionRange = 1295;
- local maxX = 625
- local maxZ = 625
- local coordRange = maxCoord - minCoord + 1;
- local mc = coordRange + 2
- local pc = 93563
- local qc = 153742
- -- goal -625, -625 = OV9A-A2A-VI
- local numCoordSymbols = 7
- local symbolChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
- local numSymbols = string.len(symbolChars)
- local stargate = peripheral.find("stargate")
- local stargateLoop = {-maxX, -maxZ, {}}
- if fs.exists("stargateLoop") then
- stargateLoopFile = fs.open("stargateLoop", "r")
- stargateLoop = textutils.unserialize(stargateLoopFile.readAll())
- end
- local function round(x)
- return math.floor(x)
- end
- local function symbolToChar(i)
- --return symbolChars[i]
- return string.sub(symbolChars, i + 1, i + 1)
- end
- local function intToSymbols(i, n)
- local s = ""
- local temp = n
- while temp > 0 do
- s = symbolToChar(i % numSymbols) .. s
- i = round(i / numSymbols)
- temp = temp - 1
- end
- return s
- end
- local function interleaveCoords(x, z)
- local p6 = 1
- local c = 0
- while (x > 0) or (z > 0) do
- c = c + p6 * (x % 6); x = round(x / 6); p6 = p6 * 6;
- c = c + p6 * (z % 6); z = round(z / 6); p6 = p6 * 6;
- end
- return c
- end
- local function hash(i, f, m)
- h = (((i + 1) * f) % m) - 1
- return h
- end
- local function addressForChunk(chunkX, chunkZ)
- local c = interleaveCoords(hash(chunkX - minCoord, pc, mc), hash(chunkZ - minCoord, pc, mc))
- return intToSymbols(c, numCoordSymbols)
- end
- local function LoopChunks()
- local x = stargateLoop[1]
- local z = stargateLoop[2]
- while true do
- local addr = addressForChunk(x, z)
- if (stargate.dial(addr)) then
- table.insert(stargateLoop[3], addr)
- stargate.disconnect()
- else
- print(addr .. " at " .. x .. ", " .. z .. " failed.")
- end
- stargateLoop[1] = x
- stargateLoop[2] = z
- local file = fs.open("stargateLoop", "w")
- file.write(textutils.serialize(stargateLoop))
- file.close()
- if (x == maxX and z == maxZ) then
- x = -maxX
- z = -maxZ
- elseif x == maxX then
- x = -maxX
- z = z + 1
- end
- x = x + 1
- sleep(0.0001)
- end
- end
- LoopChunks()
Advertisement
Add Comment
Please, Sign In to add comment