Guest User

startup

a guest
Feb 14th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.58 KB | None | 0 0
  1. ring = peripheral.find("stargate")
  2. mon = peripheral.find("monitor")
  3. ringList = {{"Close"}, {"Open"}}
  4.  
  5. if fs.exists("ringList") then
  6.  ringFile = fs.open("ringList", "r")
  7.  ringList = textutils.unserialize(ringFile.readAll())
  8. end
  9.  
  10. if ring then else
  11.  print("Stargate not found!")
  12.  error()
  13. end
  14.  
  15. if mon then else
  16.  monP = false
  17. end
  18.  
  19. function waitForIris(state)
  20.  while true do
  21.   if ring.irisState() == state then
  22.    break
  23.   end
  24.   sleep(0.001)
  25.  end
  26. end
  27.  
  28. function waitForRing(state)
  29.  while true do
  30.   if ring.stargateState() == state then
  31.    break
  32.   end
  33.   sleep(0.001)
  34.  end
  35. end
  36.  
  37. function dial(adrs)
  38.  ring.closeIris()
  39.  waitForIris("Closed")
  40.  ring.disconnect()
  41.  waitForRing("Offline")
  42.  ring.dial(adrs)
  43.  waitForRing("Connected")
  44.  ring.openIris()
  45. end
  46.  
  47. function printToMon(t, x, y)
  48.  if monP ~= false then
  49.   mon.setCursorPos(x, y)
  50.   mon.write(t)
  51.  end
  52. end
  53. randAdrs = ""
  54. function randDial()
  55.  while true do
  56.  
  57.   if string.len(randAdrs) < 9 then
  58.    if math.random(1, 2) == 1 then
  59.     randAdrs = randAdrs .. string.char(math.random(48, 57))
  60.    else
  61.     randAdrs = randAdrs .. string.char(math.random(65, 90))
  62.    end
  63.   else
  64.    print("Trying "..randAdrs)
  65.    ring.dial(randAdrs)
  66.    randAdrs = ""
  67.   end
  68.   sleep(0.001)
  69.  end
  70. end
  71.  
  72. function monitor()
  73.  if monP ~= false then
  74.   while true do
  75.    x, y = 3, 3
  76.    length = 0
  77.    for i,v in pairs(ringList) do
  78.     printToMon(v[1], x + length, y)
  79.     x = x + 3 + length
  80.     length = string.len(v[1])
  81.     z, t = mon.getSize()
  82.     if x >= z then
  83.      y = y + 2
  84.      x = 3
  85.      length = 0
  86.     end
  87.    end
  88.    sleep(0.001)
  89.    mon.clear()
  90.   end
  91.  end
  92. end
  93.  
  94. function main()
  95.  while true do
  96.   e, v, k, n = os.pullEvent("monitor_touch")
  97.   l, m = 3, 3
  98.   for i,v in pairs(ringList) do
  99.    if l <= k and string.len(v[1]) + l - 1 >= k and m == n then
  100.     if v[1] == "Close" then
  101.      ring.closeIris()
  102.      ring.disconnect()
  103.     elseif v[1] == "Open" then
  104.      ring.openIris()
  105.     else
  106.      dial(v[2])
  107.     end
  108.    end
  109.    len = string.len(v[1])
  110.    l = l + 3 + len
  111.   end
  112.  end
  113. end
  114.  
  115. function saveRingList(file, list)
  116.  ringFile = fs.open(file, "w")
  117.  ringFile.write(textutils.serialize(list))
  118.  ringFile.close()
  119. end
  120.  
  121. function getId()
  122.  while true do
  123.  
  124.   if ring.stargateState() == "Connected" then
  125.    for i,v in pairs(ringList) do
  126.     if v[2] == ring.remoteAddress() then
  127.      ringInfo = {math.random(255), ring.remoteAddress()}
  128.      table.insert(ringList, table.getn(ringList), ringInfo)
  129.      saveRingList("ringList", ringList)
  130.     end
  131.    end
  132.   end
  133.   sleep(0.001)
  134.  end
  135. end
  136.  
  137. parallel.waitForAll(getId, main, monitor, randDial)
Advertisement
Add Comment
Please, Sign In to add comment