Advertisement
Theo123456

hgfklièoluytrfdtgefrsrf

Mar 1st, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.82 KB | None | 0 0
  1. local liste_client = {} -- ici, chaque élément sera un couple d'infos : ID client et pseudo
  2.  
  3. local idChannelLogin = 130
  4. local idChannelAdmin = 131
  5. local idChannelAdminRep = 13101
  6. local idChannelMsgRec = 132
  7. local idChannelMsgEnv = 133
  8.  
  9. local keygen = "azerty"
  10.  
  11. local xpos, ypos, monmessage, maxHistoTchat = 3, 18, "", 14
  12.  
  13. function decoration()
  14. local x, y = 0, 0
  15. term.clear()
  16. for x=1,51 do
  17. paintutils.drawPixel(x,1,colors.red)
  18. paintutils.drawPixel(x,16,colors.red)
  19. paintutils.drawPixel(x,19,colors.red)
  20. end
  21. for y=2,18 do
  22. paintutils.drawPixel(1,y,colors.red)
  23. paintutils.drawPixel(51,y,colors.red)
  24. end
  25. for y=2,15 do
  26. paintutils.drawPixel(11,y,colors.red)
  27. end
  28. term.setTextColor(colors.yellow)
  29. term.setBackgroundColor(colors.red)
  30. term.setCursorPos(18,1)
  31. term.write("Tchat by meuced")
  32. term.setBackgroundColor(colors.black)
  33. term.setCursorPos(2,2)
  34. term.write("Presents:")
  35. term.setCursorPos(2,17)
  36. term.write("Votre texte :")
  37. term.setTextColor(colors.white)
  38. term.setCursorPos(2,18)
  39. term.write(">")
  40. term.setCursorBlink(true)
  41. end
  42.  
  43. function majListeEcran()
  44.  
  45. local x, y = 0,0
  46. term.setBackgroundColor(colors.black)
  47. term.setTextColor(colors.white)
  48. for x = 2, 10 do
  49. for y = 3, 15 do
  50. term.setCursorPos(x,y)
  51. term.write(" ")
  52. end
  53. end
  54.  
  55. x, y = 2, 3
  56.  
  57. for key,value in pairs( liste_client ) do
  58. term.setCursorPos(x,y)
  59. term.write(liste_client[key])
  60. y = y+1
  61. end
  62.  
  63. term.setCursorPos(xpos,ypos)
  64. term.setCursorBlink(true)
  65.  
  66. end
  67.  
  68. function login()
  69. term.setTextColor(colors.white)
  70. print("Se connecter au serveur : ")
  71. idsrv = tonumber(read())
  72.  
  73. print("Votre pseudo : ")
  74. local nickname = read()
  75. local tableau = {key=keygen , id=os.getComputerID() , nickname=nickname, action="login"}
  76. local msg = textutils.serialize(tableau)
  77.  
  78. modem.transmit(idChannelLogin,idChannelLogin,msg)
  79. end
  80.  
  81. function logout()
  82. local tableau = {key=keygen , id=os.getComputerID() , action="logout"}
  83. local msg = textutils.serialize(tableau)
  84.  
  85. modem.transmit(idChannelLogin,idChannelLogin,msg)
  86. end
  87.  
  88. function envoiMsg()
  89. -- a faire
  90. -- fonction qui envoie notre texte au serveur
  91. local tableau = {id=os.getComputerID() , mess=monmessage}
  92. monmessage = ""
  93. local msg = textutils.serialize(tableau)
  94.  
  95. modem.transmit(idChannelMsgEnv,idChannelMsgEnv,msg)
  96. end
  97.  
  98. function echangesAdmEnvoi(envquoi)
  99. -- a faire
  100. -- echanges avec le serveur :
  101. -- maj liste presents, etc...
  102.  
  103. modem.transmit(idChannelAdmin,idChannelAdminRep,envquoi)
  104.  
  105. end
  106.  
  107. --========================================--
  108. --========================================--
  109.  
  110. function echangesAdmReception()
  111. -- reception d'infos
  112. while true do
  113. modem.open(idChannelAdminRep)
  114. local event, modemSide, senderChannel, replyChannel, text, senderDistance = os.pullEvent("modem_message")
  115. if senderChannel == idChannelAdminRep then
  116. liste_client = textutils.unserialize(text)
  117. end
  118. majListeEcran()
  119. modem.close(idChannelAdminRep)
  120. --sleep(5)
  121. end
  122. end
  123.  
  124. function receptionMsg()
  125. -- a faire
  126. -- fonction qui recoit du serveur les textes
  127. -- des autres utilisateurs et gère le scroll
  128. local histoTchat = {}
  129. local ytchat = 2
  130. local x, y = 0,0
  131. modem.open(idChannelMsgRec)
  132. while true do
  133. --sleep(5)
  134. ytchat = 2
  135. local event, modemSide, senderChannel, replyChannel, text, senderDistance = os.pullEvent("modem_message")
  136. if senderChannel == idChannelMsgRec then
  137. --term.setCursorPos(12,8)
  138. local msgtabrec = textutils.unserialize(text)
  139. msgrec = "<"..liste_client[msgtabrec.id]..">".." "..msgtabrec.mess
  140. --term.write(#msgtabrec)
  141. --read()
  142. table.insert(histoTchat,msgrec)
  143. if #histoTchat > maxHistoTchat then
  144. table.remove(histoTchat, 1)
  145. end
  146.  
  147. --on efface l'ecran de tchat
  148. term.setBackgroundColor(colors.black)
  149. term.setTextColor(colors.white)
  150. for x = 12, 50 do
  151. for y = 2, 15 do
  152. term.setCursorPos(x,y)
  153. term.write(" ")
  154. end
  155. end
  156. term.setCursorPos(12,2)
  157. for key,value in pairs( histoTchat ) do
  158. term.setCursorPos(12,ytchat)
  159. term.write(value)
  160. ytchat = ytchat+1
  161. end
  162. term.setCursorPos(xpos,ypos)
  163. echangesAdmEnvoi("majliste")
  164. end
  165. end
  166. modem.close(idChannelMsgEnv)
  167. end
  168.  
  169. function client()
  170. -- fonction qui gère la tape des messages
  171. --sleep(1)
  172. echangesAdmEnvoi("majliste")
  173.  
  174. while true do
  175. --sleep(5)
  176. --monmessage = ""
  177. local event, p1 = os.pullEvent()
  178. if (event == "char") and (xpos < 50) then
  179. monmessage = monmessage..p1
  180. term.setCursorPos(xpos,ypos)
  181. term.write(p1)
  182. xpos = xpos+1
  183. elseif event == "key" then
  184. if (p1 == 14) and (xpos > 3) then
  185. monmessage = string.sub( monmessage, 1, string.len( monmessage ) - 1 )
  186. xpos = xpos-1
  187. term.setCursorPos(xpos,ypos)
  188. term.write(" ")
  189. term.setCursorPos(xpos,ypos)
  190. elseif p1 == 28 then
  191. monmessage = tostring( monmessage )
  192. --break
  193. if string.match(monmessage, "^/") then
  194. monmessage = string.sub( monmessage, 2)
  195. if monmessage == "logout" then
  196. logout()
  197. break
  198. end
  199. else
  200. envoiMsg()
  201. end
  202. xpos, ypos = 3, 18
  203. term.setCursorPos(xpos,ypos)
  204. term.write(" ")
  205. term.setCursorPos(xpos,ypos)
  206. end
  207. end
  208.  
  209. end
  210. end
  211.  
  212. --========================================--
  213. --========================================--
  214.  
  215. term.clear()
  216. term.setCursorPos(1,1)
  217. modem = peripheral.wrap("back")
  218.  
  219. login()
  220.  
  221. decoration()
  222.  
  223.  
  224. parallel.waitForAny(echangesAdmReception, receptionMsg, client)
  225.  
  226. print("fin du programme")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement