Advertisement
Guest User

Untitled

a guest
Feb 3rd, 2017
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.15 KB | None | 0 0
  1. function save () --Funktion, die eine Nachricht speichert
  2. msg = nil
  3. id, msg, protocol = rednet.receive (5)
  4. end
  5.  
  6. function Login() --Login Funktion
  7. serverid = 1 --Initialisieren der Variabelen und erzeugen des Interfaces
  8. shell.run ("Screen")
  9. term.setCursorPos(1,2)
  10. print ("Login:")
  11. term.setCursorPos(1,3)
  12. print ("Passwort:")
  13. term.setCursorPos(1,19)
  14. write ("Registrieren")
  15. term.setCursorPos(1,18)
  16. write ("Einloggen")
  17. while true do
  18. event, button, x, y = os.pullEvent("mouse_click") --Abfrage, in welche Schaltfläche gecklickt wurde
  19. if y == 2 then --Login Feld
  20. term.setCursorPos (7,2)
  21. username = read()
  22. elseif y == 3 then --Passwort Feld
  23. term.setCursorPos (10,3)
  24. password = read("*")
  25. elseif y == 18 then --Login button
  26. if username ~= nil and password ~= nil then --Überprüfen ob beide Felder ausgefüllt worden sind
  27. rednet.open("right") --Öffnen des rednets
  28. rednet.send(serverid, "loginrequest") --Senden des User-Inputs an den Server
  29. sleep (1)
  30. rednet.send(serverid, username)
  31. sleep (1)
  32. rednet.send(serverid, password)
  33. save() --Warten auf Rückmeldung des Servers
  34. if msg == "loggedin" then --Überprüfen, ob der Server "Loggedin" meldet und dann öffnen des Menu. Gegebenfalls ausführen der Wrong Funktion
  35. print ("Logged In")
  36. sleep(3)
  37. Menu()
  38. else -- Falsch die Login-Daten falsch waren
  39. wrong ()
  40. end
  41. else --Falls kein Username und/oder Passwort angegeben worden ist
  42. wrong()
  43. end
  44. elseif y==19 then --Registrieren Button
  45. newaccount()
  46. end
  47. end
  48. end
  49.  
  50. function wrong() --Funktion für falsche Login-Daten
  51. shell.run ("Screen") --Erzeugen des Interfaces
  52. term.setCursorPos (1,2)
  53. print ("Falsche Login-Daten")
  54. print ("Erneut versuchen")
  55. print ("Eingaben mit Enter bestätigt?")
  56. local event, button, x, y = os.pullEvent("mouse_click") --Abfrage des Klickens
  57. if y == 3 then
  58. Login () -- Funktion für einen neuen Account
  59. end
  60. end
  61.  
  62. function newaccount() --Funktion für die Erstellung eines neuen Accounts
  63. shell.run ("Screen") --Erzeugen des Interfaces
  64. term.setCursorPos (1,2)
  65. print ("Neuer Benutzername: ")
  66. print ("Neues Passwort: ")
  67. term.setCursorPos (1,19)
  68. write ("Neuen Account Erstellen")
  69. term.setCursorPos (21,2)
  70. neuerName = read() --Abfrage des User-Inputs
  71. term.setCursorPos (16,3)
  72. neuesPasswort = read()
  73. local event, button, x, y = os.pullEvent("mouse_click") --Abfrage des Klickens
  74. if y == 19 then
  75. rednet.send (serverid, "Neuer Account") --Übertragen des Triggerbefehls an den Server
  76. sleep (1)
  77. rednet.send (serverid, neuerName) --Senden des User-Inputs an den Server
  78. sleep (1)
  79. rednet.send (serverid, neuesPasswort)
  80. save()
  81. if msg == "erfolgreich" then --Abfrage ob erstellung erfolgreich
  82. shell.run ("Screen")
  83. term.setCursorPos (1,2)
  84. print ("Neuer account mit dem Benutzername: ".. neuerName.. " erfolgreich erstellt.")
  85. print ("Logge dich jetzt ein")
  86. sleep (3)
  87. Login () --Aufrufen der Login Funktion
  88. elseif msg == "bereitsVergeben" then -- Fals der Benutzername schon vergeben ist
  89. shell.run("Screen")
  90. term.setCursorPos (1,2)
  91. print ("Benutzername berreits vergeben, bitte suche dir einen anderen aus")
  92. sleep (3)
  93. newaccount() -- Erneutes Aufrufen der Funktion
  94. end
  95. elseif y == 1 and x>50 then
  96. shell.run("Shutdown")
  97. end
  98. end
  99.  
  100. function Menu() --Funktion für das E-Mail Hauptmenü
  101. shell.run("Screen") --Erstellen des Interfaces
  102. term.setCursorPos(24,1)
  103. term.setBackgroundColor (2048)
  104. write("EMAIL")
  105. term.setBackgroundColor(8)
  106. term.setCursorPos(24,2)
  107. write("[Send]")
  108. term.setCursorPos(24,3)
  109. write("[Mails]")
  110. local event, button, x, y = os.pullEvent("mouse_click") --Überprüfen des Klickens
  111. if y == 2 then
  112. Send() --Funktion zum senden einer Email
  113. elseif y == 3 then
  114. Mails() --Funktion zum Abrufen der Emails
  115. elseif y == 1 and x> 50 then
  116. shell.run("Shutdown")
  117. else
  118. Menu() --Dauerschleife für das Menü
  119. end
  120. end
  121.  
  122. function Send() --Funktion zum Senden einer Email
  123. shell.run("Screen") --Erzeugen des Interfaces
  124. term.setCursorPos(24,1)
  125. term.setBackgroundColor(2048)
  126. write("Email Senden")
  127. term.setBackgroundColor (8)
  128. term.setCursorPos (1,2)
  129. write ("Empfänger:")
  130. term.setCursorPos (1,19)
  131. write ("Senden")
  132. term.setCursorPos (1,3)
  133. write ("Text:")
  134. term.setCursorPos (45,19)
  135. write("Abbruch")
  136. term.setCursorPos (11,2)
  137. local Empfaenger = read() --Abfrage des User-Inputs
  138. term.setCursorPos (6,3)
  139. local text = read()
  140. local event, button, x, y = os.pullEvent ("mouse_click") --Abfrage des Mausklickens
  141. if y == 19 and x < 20 then --Falls auf Senden geklickt wird
  142. rednet.send (serverid, "nachricht") --Triggerbefehl für den Server
  143. sleep (1)
  144. rednet.send (serverid, Empfaenger) --Senden des User-Inputs
  145. sleep (1)
  146. rednet.send (serverid, text)
  147. sleep (1)
  148. rednet.send (serverid, username)
  149. sleep (1)
  150. elseif y == 19 and x>20 then --Falls auf Abbruch geklickt wird
  151. Menu() --Öffnen des Menüs
  152. elseif y == 1 and x>50 then
  153. shell.run("Shutdown")
  154. end
  155. msg = nil --Warten auf Server rückmeldung
  156. save()
  157. shell.run ("Screen")
  158. term.setCursorPos (15,2)
  159. if msg == "received" then --Auswerten der Serverrückmeldung
  160. write ("Nachricht gesendet")
  161. elseif msg == nil then --Falls Server keine Antwort schickt
  162. write ("Nachricht nicht angekommen")
  163. end
  164. sleep (4)
  165. Menu() -- Öffnen des Menüs
  166. end
  167.  
  168. function Sichtberreich() --Funktion zur festlegung des Sichtberreiches in der Email Liste (Scroll-Funktion)
  169. if berreich == nil then --Falls Berreich noch nicht existiert (erste mal aufrufen der Funktion)
  170. berreich = {0,16} --Anlegen der Tabelle "berreich". Vergleichbar mit einem Array
  171. end
  172. event, direction, x, y = os.pullEvent() --Speichern der Scroll Parameter
  173. if direction == - 1 and event == "mouse_scroll" then --Falls nach oben gescrollt wird
  174. berreich[1] = (berreich[1] - 1) --Veringern des Sichtberreiches um 1
  175. berreich[2] = (berreich[2] - 1)
  176. if berreich[1] < 0 then
  177. berreich = {0,16}
  178. end
  179. elseif direction == 1 and event =="mouse_scroll" then --Falls nach unten gescrollt wird
  180. berreich[1] = (berreich[1] + 1) --Erhöhen des Sichtberreiches um 1
  181. berreich[2] = (berreich[2] + 1)
  182. elseif event == "mouse_click" and y>1 and y<19 then
  183. darstellen(berreich[1]+y-2)
  184. elseif event =="mouse_click" and y==1 and x>50 then
  185. shell.run("Shutdown")
  186. elseif event =="mouse_click" and y == 19 then --Falls auf Menu gecklickt wird
  187. Menu()
  188. end
  189. end
  190.  
  191. function darstellen(num) -- Funktion die die num.txt darstellt. Dabei ist num ein Parameter der Funktion.
  192. shell.run("Screen") --Bilschirm löschen
  193. if fs.exists("Mails/"..num..".txt") then --Überprüfen um num.txt existiert. Das == true kann ausgelassen werden.
  194. dir = fs.open ("Mails/"..num..".txt", "r") --Öffnen der Mail und speichern des Handlers als dir
  195. print ("Sender: " ..dir.readLine(1)) --Auslesen des Senders und darstellen
  196. print ("Nachricht: " ..dir.readLine (2)) --Auslesen der Nachricht und darstellen
  197. term.setCursorPos (1, 19) --Erzeugen des Menu-Buttons
  198. write ("Menu")
  199. term.setCursorPos (47,19) --Erzeugen des Liste Buttons
  200. write ("Liste")
  201. dir.close() --Schließen des Handlers !!GANZ WICHTIG!!
  202. term.setBackgroundColor (2048) --Erzeugen der Nächste/Voherige Email Pfeile
  203. term.setCursorPos(1,1)
  204. write("<--")
  205. term.setCursorPos(48,1)
  206. write("-->")
  207. term.setBackgroundColor (8)
  208. local event, button, x, y = os.pullEvent ("mouse_click") --Überprüfen ob auf Menu geklickt wird
  209. if y == 19 and x<20 then --Menu Button wurde gecklickt
  210. Menu()
  211. elseif y == 19 and x>= 20 then --Liste Button wurde gecklickt
  212. EmailListe()
  213. elseif y==1 and x<20 then --Pfeil zurück wurde gecklickt
  214. darstellen (num - 1)
  215. elseif y==1 and x>20 and x<52 then --Pfeil vorwärts wurde gecklickt
  216. darstellen (num + 1)
  217. elseif y==1 and x==52 then --Rote X wurde gecklickt (no function)
  218. shell.run("Shutdown")
  219. else
  220. darstellen(num)
  221. end
  222. else
  223. EmailListe() -- Falls die num.txt nicht existiert öffnen der Email Liste
  224. end
  225. end
  226.  
  227.  
  228. function EmailListe() -- Funktion zum Listen der Emails
  229. z = nil -- init der Variable z
  230. shell.run("Screen")
  231. if fs.exists ("Mails/0.txt") then
  232. for z=0, 16 do
  233. if fs.exists ("Mails/"..z..".txt") == true then
  234. dir = fs.open ("Mails/"..z..".txt", "r")
  235. write ("Nachricht "..z)
  236. print (" Von "..(dir.readLine(1)))
  237. end
  238. end
  239. term.setCursorPos (1,19)
  240. write("Menu")
  241. while true do --Dauerschleife
  242. Sichtberreich() --Scroll Funktion
  243. sleep(0.1)
  244. shell.run("Screen") --Erschaffen des Screens
  245. for z=berreich[1], berreich[2] do --Schreiben der Liste im Sichtberreich
  246. if fs.exists ("Mails/"..z..".txt") == true then
  247. dir = fs.open ("Mails/"..z..".txt", "r") --Öffnen der Mail um den Absender auszulesen
  248. write ("Nachricht "..z) --Aufsteigende Nummerierung (Durch Betreff ändern)
  249. print (" Von "..(dir.readLine(1))) --Absender darstellen
  250. end
  251. end
  252. term.setCursorPos (1,19) --Menu Button erstellen
  253. write("Menu")
  254. end
  255. else --Falls die Datei 0.txt nicht existiert
  256. keineEmails()
  257. end
  258. end
  259.  
  260. function keineEmails()
  261. shell.run("Screen")
  262. print("Es sind keine Emails vorhanden")
  263. sleep(3)
  264. Menu()
  265. end
  266.  
  267. function Mails() -- Funktion um die Emails vom Server zu laden
  268. shell.run ("Screen") --Erzeugen des Interfaces
  269. local x = 0
  270. term.setCursorPos (24,2)
  271. print("E-Mails")
  272. term.setCursorPos (1,3)
  273. print ("Lade E-Mails vom Server ...")
  274. rednet.send (serverid, "refresh") --Senden der Triggerbefehls an den Server
  275. sleep (1)
  276. rednet.send (serverid, username) --Senden des Usernames an den Server
  277. while true do --Endlosschleife
  278. save() --Empfangen der Nachricht vom server
  279. if msg == "ende" then --Falls der Triggerbefehl ende vom server kommt, dann beenden der Endlosschleife
  280. break --Beenden der Endlosschleife
  281. else
  282. sender = msg -- Speichern des senders in einer Variabelen
  283. save() --Empfangen des nöchsten Teils der nachricht
  284. text = msg -- Speichern des Textes in einer Variabelen
  285. dir = fs.open ("Mails/"..x..".txt", "w") --Öffnen der Datei "Mails/x.txt"
  286. dir.writeLine (sender) --Schreiben des Senders und des Textes in die x.txt
  287. dir.writeLine (text)
  288. dir.close() --Schließen der Datei
  289. x = x + 1 --Erhöhung von x um 1
  290. end
  291. end
  292. EmailListe() -- Ausführen der EmailListe Funktion
  293. end
  294.  
  295. function clock() --Uhr oben links
  296. term.setCursorPos (1,1) --Cursor oben links
  297. term.setBackgroundColor(2048)
  298. time = os.time() -- Uhrzeit
  299. formatedtime = textutils.formatTime(time, true) --Formatierte Uhrzeit
  300. write(formatedtime) --Ausgeben der Uhrzeit
  301. term.setBackgroundColor(8)
  302. term.setCursorPos(1,2)
  303. end
  304.  
  305. -- Das Programm ;)
  306. Login()
  307. -- Die 300 knack ich ;)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement