xXm0dzXx

Untitled

May 19th, 2012
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.07 KB | None | 0 0
  1. rednet.open("right")
  2. rednet.open("left")
  3. rednet.open("bottom")
  4. rednet.open("top")
  5. rednet.open("back")
  6. rednet.open("front")
  7.  
  8. local channel = "";
  9. local user = "";
  10. local ip = os.computerID()
  11. local x2,y2 = term.getCursorPos()
  12. local channelID = 0;
  13. local chatHistory = ""
  14. local messages = 4;
  15. local opmode = false;
  16. local kkmode = false;
  17. local isChatter = false;
  18. local deopmode = false;
  19. local oldUser = ""
  20. local x,y = term.getSize()
  21. local function cPrint(text)
  22. local x,y = term.getSize()
  23. x2,y2 = term.getCursorPos()
  24. term.setCursorPos(math.ceil((x / 2) - (text:len() / 2)), y2)
  25. write(text)
  26. end
  27.  
  28. term.clear()
  29. term.setCursorPos(1,1)
  30.  
  31. function status()
  32. print("Status: " ..channel)
  33. print("--------------------------------")
  34. end
  35.  
  36. function chatbox()
  37. term.clear()
  38. term.setCursorPos(1,1)
  39. status()
  40. print("[" ..channel.. "] "..user.." joined the server!")
  41. term.setCursorPos(1,y)
  42. write("> ")
  43. term.setCursorBlink(true)
  44. while true do
  45. local e, pie, test = os.pullEventRaw()
  46. if e == "terminate" then
  47. rednet.broadcast("["..channel.."] *" ..user.. " left.")
  48. shell.run("clear")
  49. print("Left server.")
  50. error()
  51. elseif e == "rednet_message" then
  52. if test == "pinged " ..channel then
  53. rednet.send(pie, "hehehoohoohaha")
  54. else
  55. if(test == "["..channel.."] /op " ..user)then
  56. oldUser = user
  57. user = "@" .. user
  58. isChatter = true
  59. rednet.broadcast("["..channel.."] *" ..user.. " is now OP!")
  60. term.setCursorPos(1, messages)
  61. messages = messages +1
  62. print("You are now OP!")
  63. elseif(test == "["..channel.."] /deop " ..user)then
  64. rednet.broadcast("["..channel.."] *" ..user.. " is no longer OP!")
  65. user = oldUser
  66. isChatter = false
  67. term.setCursorPos(1, messages)
  68. messages = messages +1
  69. print("You are no longer OP!")
  70. elseif(test == "["..channel.."] /kick " ..user)then
  71. rednet.broadcast("["..channel.."] *" ..user.. " left.")
  72. menu()
  73. elseif(test == "["..channel.."] /ls")then
  74. rednet.send(pie, "["..channel.."] [List:] " ..user)
  75. end
  76. local x,y = term.getSize()
  77. if string.sub(test, 1, string.len("["..channel.."]")) == "["..channel.."]" then
  78. if messages < y then
  79. term.setCursorPos(1, messages)
  80. messages = messages +1
  81. else
  82. local x,y = term.getSize()
  83. term.clear()
  84. term.setCursorPos(1,y)
  85. write("> ")
  86. term.setCursorPos(1,1)
  87. status()
  88. messages = 3
  89. term.setCursorPos(1, messages)
  90. messages = messages +1
  91. end
  92.  
  93. ReceivedMessage = string.sub(test, string.len("["..channel.."]")+2, string.len(test) )
  94. if string.len(ReceivedMessage) > 45 then
  95. print(string.sub(ReceivedMessage,1,45).. "...")
  96. else
  97. print(ReceivedMessage)
  98. end
  99. term.setCursorPos(string.len(chatHistory)+3, y)
  100. end
  101. end
  102. elseif e == "char" then
  103. term.setCursorPos(1, y)
  104. chatHistory = chatHistory.. "" ..pie
  105. term.clearLine()
  106. write("> " ..chatHistory)
  107. elseif e == "key" and pie == 14 then
  108. local x,y = term.getSize()
  109. term.setCursorPos(1, y)
  110. chatHistory = string.sub(chatHistory, 1, string.len(chatHistory)-1)
  111. term.clearLine()
  112. term.setCursorBlink(false)
  113. write("> " ..chatHistory)
  114. term.setCursorBlink(true)
  115. elseif e == "key" and pie == 28 then
  116. if pie == 28 then
  117. if chatHistory == "/exit" then
  118. rednet.broadcast("["..channel.."] *" ..user.. " left.")
  119. chatHistory = ""
  120. messages = 4
  121. menu()
  122. elseif chatHistory == "/ping" then
  123. term.setCursorPos(1, messages)
  124. messages = messages +1
  125. print("[" ..channel.. "] Pong")
  126. elseif chatHistory == "/help" then
  127. term.setCursorPos(1, messages)
  128. messages = messages +1
  129. if isChatter == true then
  130. print("[" ..channel.. "] Commands: /help, /ping, /exit, /op, /kick, /ls")
  131. else
  132. print("[" ..channel.. "] Commands: /help, /ping, /exit, /ls")
  133. end
  134. elseif chatHistory == "/clear" then
  135. term.clear()
  136. term.setCursorPos(1,1)
  137. status()
  138. messages = 3
  139. else
  140. if isChatter == true then
  141. if opmode == true then
  142. rednet.broadcast("["..channel.."] " ..chatHistory)
  143. term.setCursorPos(1, messages)
  144. messages = messages +1
  145. print("["..channel.."] " ..chatHistory)
  146. elseif kkmode == true then
  147. rednet.broadcast("["..channel.."] " ..chatHistory)
  148. term.setCursorPos(1, messages)
  149. messages = messages +1
  150. print("["..channel.."] " ..chatHistory)
  151. elseif deopmode == true then
  152. rednet.broadcast("["..channel.."] " ..chatHistory)
  153. term.setCursorPos(1, messages)
  154. messages = messages +1
  155. print("["..channel.."] " ..chatHistory)
  156. else
  157. if messages > y then
  158. term.clear()
  159. term.setCursorPos(1,1)
  160. status()
  161. messages = 3
  162. end
  163. rednet.broadcast("["..channel.."] [" ..user.. "] " ..chatHistory)
  164. term.setCursorPos(1, messages)
  165. messages = messages +1
  166. print("[" ..user.. "] " ..chatHistory)
  167. end
  168. else
  169.  
  170. if messages > y then
  171. term.clear()
  172. term.setCursorPos(1,1)
  173. status()
  174. messages = 3
  175. end
  176. rednet.broadcast("["..channel.."] <" ..user.. "> " ..chatHistory)
  177. term.setCursorPos(1, messages)
  178. messages = messages +1
  179. print("<" ..user.. "> " ..chatHistory)
  180. end
  181. end
  182. end
  183.  
  184. if chatHistory == "/ls" then
  185. term.setCursorPos(1, messages)
  186. messages = messages +1
  187. print("[List:] " ..user)
  188. rednet.broadcast("["..channel.."] /ls")
  189. end
  190. chatHistory = ""
  191. local x,y = term.getSize()
  192. term.setCursorPos(1, y)
  193. term.clearLine()
  194. write("> ")
  195. opmode = false
  196. kkmode = false
  197. deopmode = false
  198. elseif e == "key" and pie == 57 then
  199. if chatHistory == "/op" or chatHistory == "/op " then
  200. opmode = true
  201. elseif chatHistory == "/kick" or chatHistory == "/kick " then
  202. kkmode = true
  203. elseif chatHistory == "/deop" or chatHistory == "/deop " then
  204. deopmode = true
  205. end
  206. end
  207. end
  208. end
  209.  
  210. function connector()
  211. term.clear()
  212. term.setCursorPos(1,1)
  213. status()
  214. print("Logging in...")
  215. print(user.. " ["..ip.."] logged in to N-IRC!")
  216. print("Connecting to " ..channel.."...")
  217. rednet.broadcast("pinged " ..channel)
  218. id, message = rednet.receive(1)
  219. if message == "hehehoohoohaha" then
  220. print("Connected! Joining...")
  221. rednet.broadcast("[" ..channel.. "] [" ..channel.. "] "..user.." joined the server!")
  222. sleep(0.5)
  223. channelID = id
  224. chatbox()
  225. else
  226. print("Server not existing... Hosting")
  227. print("Connected! Joining...")
  228. isChatter = true
  229. user = "@" ..user
  230. rednet.broadcast("[" ..channel.. "] [" ..channel.. "] "..user.." joined the server!")
  231. sleep(0.5)
  232. channelID = id
  233. chatbox()
  234. end
  235. end
  236.  
  237. function login()
  238. term.clear()
  239. term.setCursorPos(1,1)
  240. cPrint("NeXuS IRC \n")
  241. cPrint("Nickname: ")
  242. nick = read()
  243. cPrint("Channel: #")
  244. chan = read()
  245.  
  246. channel = "#" ..chan
  247. user = nick
  248. connector()
  249. end
  250.  
  251. function menu()
  252. term.clear()
  253. term.setCursorPos(1,1)
  254. cPrint("NeXuS IRC \n \n")
  255. cPrint("1:) Login\n")
  256. cPrint("2:) Exit \n \n")
  257. cPrint("Selection: ")
  258. input = read()
  259. if input == "1" then
  260. login()
  261. elseif input == "2" then
  262. error()
  263. else
  264. menu()
  265. end
  266. end
  267.  
  268. menu()
Advertisement
Add Comment
Please, Sign In to add comment