Asummonster

2ingroup

Feb 24th, 2020
277
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.73 KB | None | 0 0
  1. @name exclamationchat
  2. @inputs E:wirelink
  3. @persist CoopData:table GroupName:string Crypted:table PongData:array CryptoSym:string PlayerSym:string Failure:string Version
  4. Version = 3
  5. PlayerSym = httpUrlDecode("%F0%9F%91%A8")
  6. CryptoSym = httpUrlDecode("%F0%9F%94%92")
  7. Failure = httpUrlDecode("%E2%9D%8C")
  8. Success = httpUrlDecode("%E2%9C%85")
  9. runOnTick(1)
  10. runOnChat(1)
  11. dsSetScope(2)
  12. runOnSignal("chat_data", 2, 1)
  13. runOnSignal("chat_connect", 2, 1)
  14. runOnSignal("pong", 2, 1)
  15. function string crypt(Str:string, Key:number) {
  16. local Buff = ""
  17. for (I=1, Str:length()) {
  18. Buff+=toChar(bXor(toByte(Str:sub(I, I)), Key))
  19. }
  20. return Buff
  21. }
  22. if (dsClk()) {
  23. switch (dsClkName()) {
  24. case "chat_connect",
  25. printColor(vec(34, 139, 34), dsGetEntity():name(), vec(152, 251, 152), " connected to chat ", vec(50, 205, 50), "["+dsGetGroup()+"]")
  26. break
  27. case "chat_data",
  28. local SpecSym = ""
  29. local CData = dsGetTable()
  30. local Color = teamColor(CData["player", entity]:team())
  31. local Group = dsGetGroup()
  32. local Message = CData["message", string]
  33. local Name = CData["player", entity]:name()
  34. local MVersion = toByte(Message:sub(1, 1))
  35. Message = Message:sub(2, Message:length())
  36. if (toByte(Message:sub(1, 1))==255) {
  37. IsCrypted = 1
  38. Message = Message:sub(2, Message:length())
  39. }
  40. if (IsCrypted & Crypted[Group, number]) {
  41. Message = crypt(Message, Crypted[Group, number])
  42. if (toByte(Message:sub(1, 1))==254) {
  43. DecryptResult = Success
  44. }else {
  45. DecryptResult = Failure
  46. }
  47. Message = Message:sub(2, Message:length())
  48. SpecSym = CryptoSym + DecryptResult
  49. }elseif (IsCrypted & !Crypted[Group, number]) {
  50. Message = Message:sub(2, Message:length())
  51. SpecSym = Failure
  52. }
  53. if (MVersion>Version) {printColor(vec(150, 30, 30), "Your version is outdated. You can get up-to-date version here: ", vec(30, 150, 30), "https://pastebin.com/raw/gKrMM0ri")}
  54. printColor(vec(50, 205, 50), SpecSym+"["+Group+" ", Color, Name, vec(50, 205, 50), "]: ", vec(152, 251, 152), Message)
  55. break
  56. case "ping",
  57. dsSend("pong", dsGetGroup(), owner())
  58. break
  59. case "pong",
  60. Player = dsGetEntity()
  61. PongData:pushVector(teamColor(Player:team()))
  62. PongData:pushString(PlayerSym+Player:name())
  63. break
  64. }
  65. }
  66. function invisChat() {
  67. hideChat(1)
  68. timer("showchat", 10)
  69. }
  70.  
  71.  
  72.  
  73.  
  74. switch (clkName()) {
  75. case "showchat",
  76. hideChat(0)
  77. break
  78. case "showpong",
  79. local SpecSym = ""
  80. if (Crypted[GroupName, number]) {
  81. SpecSym = CryptoSym
  82. }
  83. PongData:insertVector(1, vec(50, 205, 50))
  84. PongData:insertString(2, SpecSym+"["+GroupName+"]")
  85. printColor(PongData)
  86. break
  87. }
  88. if (chatClk()) {
  89. CMDS = lastSaid():explode(" ")
  90. CMD = CMDS:string(1)
  91. Args = CMDS:string(2)
  92. switch (CMD) {
  93. case "join",
  94. dsJoinGroup(Args)
  95. GroupName = Args
  96. dsSend("chat_connect", GroupName, owner())
  97. printColor(vec(50, 205, 50), "[2inGroup] ", vec(152, 251, 152), "You have joined to ", vec(34, 139, 34), Args)
  98. invisChat()
  99. break
  100. case "joinsec",
  101. dsJoinGroup(Args)
  102. GroupName = Args
  103. CryptoPass = CMDS:string(3):toNumber()
  104. if (CryptoPass<1 | CryptoPass>255) {printColor(vec(255, 0, 0), "Key must be between 0 and 255"), break}
  105. dsSend("chat_connect", GroupName, owner())
  106. printColor(vec(50, 205, 50), CryptoSym+"[2inGroup] ", vec(152, 251, 152), "You have joined to ", vec(34, 139, 34), Args)
  107. Crypted[GroupName, number] = CryptoPass
  108. invisChat()
  109. break
  110. case "ping",
  111. PongData:clear()
  112. dsSend("ping", GroupName, owner())
  113. timer("showpong", 500)
  114. invisChat()
  115. break
  116. default,
  117. if (lastSaid():sub(0, 1)=="!" & lastSaid():sub(0, 3)!="!RL") {
  118. local SpecSym = ""
  119. local Buff = lastSaid():sub(2)
  120. if (Crypted[GroupName, number]) {
  121. Buff = toChar(254) + Buff
  122. dsSend("chat_data", GroupName, table(
  123. "message" = toChar(Version)+toChar(255)+crypt(Buff, Crypted[GroupName, number]),
  124. "player" = owner()
  125. ))
  126. Buff = Buff:sub(2, Buff:length())
  127. SpecSym = CryptoSym
  128. }else {
  129. dsSend("chat_data", GroupName, table(
  130. "message" = toChar(Version)+Buff,
  131. "player" = owner()
  132. ))
  133. }
  134. printColor(vec(50, 205, 50), SpecSym+"["+GroupName+" ", teamColor(owner():team()), owner():name(), vec(50, 205, 50), "]: ", vec(152, 251, 152), Buff)
  135. invisChat()
  136. }
  137. elseif (lastSaid():sub(0, 1)=="@" | lastSaid():sub(0, 1)=="\"") {
  138. local Buff = lastSaid():sub(2)
  139. dsSend("chat_data", GroupName, table(
  140. "message" = toChar(Version)+Buff,
  141. "player" = owner()
  142. ))
  143. printColor(vec(50, 205, 50), "["+GroupName+" ", teamColor(owner():team()), owner():name(), vec(50, 205, 50), "]: ", vec(152, 251, 152), Buff)
  144. invisChat()
  145. }
  146. break
  147. }
  148. }
Add Comment
Please, Sign In to add comment