Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @name exclamationchat
- @inputs E:wirelink
- @persist CoopData:table GroupName:string Crypted:table PongData:array CryptoSym:string PlayerSym:string Failure:string Version
- Version = 3
- PlayerSym = httpUrlDecode("%F0%9F%91%A8")
- CryptoSym = httpUrlDecode("%F0%9F%94%92")
- Failure = httpUrlDecode("%E2%9D%8C")
- Success = httpUrlDecode("%E2%9C%85")
- runOnTick(1)
- runOnChat(1)
- dsSetScope(2)
- runOnSignal("chat_data", 2, 1)
- runOnSignal("chat_connect", 2, 1)
- runOnSignal("pong", 2, 1)
- function string crypt(Str:string, Key:number) {
- local Buff = ""
- for (I=1, Str:length()) {
- Buff+=toChar(bXor(toByte(Str:sub(I, I)), Key))
- }
- return Buff
- }
- if (dsClk()) {
- switch (dsClkName()) {
- case "chat_connect",
- printColor(vec(34, 139, 34), dsGetEntity():name(), vec(152, 251, 152), " connected to chat ", vec(50, 205, 50), "["+dsGetGroup()+"]")
- break
- case "chat_data",
- local SpecSym = ""
- local CData = dsGetTable()
- local Color = teamColor(CData["player", entity]:team())
- local Group = dsGetGroup()
- local Message = CData["message", string]
- local Name = CData["player", entity]:name()
- local MVersion = toByte(Message:sub(1, 1))
- Message = Message:sub(2, Message:length())
- if (toByte(Message:sub(1, 1))==255) {
- IsCrypted = 1
- Message = Message:sub(2, Message:length())
- }
- if (IsCrypted & Crypted[Group, number]) {
- Message = crypt(Message, Crypted[Group, number])
- if (toByte(Message:sub(1, 1))==254) {
- DecryptResult = Success
- }else {
- DecryptResult = Failure
- }
- Message = Message:sub(2, Message:length())
- SpecSym = CryptoSym + DecryptResult
- }elseif (IsCrypted & !Crypted[Group, number]) {
- Message = Message:sub(2, Message:length())
- SpecSym = Failure
- }
- 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")}
- printColor(vec(50, 205, 50), SpecSym+"["+Group+" ", Color, Name, vec(50, 205, 50), "]: ", vec(152, 251, 152), Message)
- break
- case "ping",
- dsSend("pong", dsGetGroup(), owner())
- break
- case "pong",
- Player = dsGetEntity()
- PongData:pushVector(teamColor(Player:team()))
- PongData:pushString(PlayerSym+Player:name())
- break
- }
- }
- function invisChat() {
- hideChat(1)
- timer("showchat", 10)
- }
- switch (clkName()) {
- case "showchat",
- hideChat(0)
- break
- case "showpong",
- local SpecSym = ""
- if (Crypted[GroupName, number]) {
- SpecSym = CryptoSym
- }
- PongData:insertVector(1, vec(50, 205, 50))
- PongData:insertString(2, SpecSym+"["+GroupName+"]")
- printColor(PongData)
- break
- }
- if (chatClk()) {
- CMDS = lastSaid():explode(" ")
- CMD = CMDS:string(1)
- Args = CMDS:string(2)
- switch (CMD) {
- case "join",
- dsJoinGroup(Args)
- GroupName = Args
- dsSend("chat_connect", GroupName, owner())
- printColor(vec(50, 205, 50), "[2inGroup] ", vec(152, 251, 152), "You have joined to ", vec(34, 139, 34), Args)
- invisChat()
- break
- case "joinsec",
- dsJoinGroup(Args)
- GroupName = Args
- CryptoPass = CMDS:string(3):toNumber()
- if (CryptoPass<1 | CryptoPass>255) {printColor(vec(255, 0, 0), "Key must be between 0 and 255"), break}
- dsSend("chat_connect", GroupName, owner())
- printColor(vec(50, 205, 50), CryptoSym+"[2inGroup] ", vec(152, 251, 152), "You have joined to ", vec(34, 139, 34), Args)
- Crypted[GroupName, number] = CryptoPass
- invisChat()
- break
- case "ping",
- PongData:clear()
- dsSend("ping", GroupName, owner())
- timer("showpong", 500)
- invisChat()
- break
- default,
- if (lastSaid():sub(0, 1)=="!" & lastSaid():sub(0, 3)!="!RL") {
- local SpecSym = ""
- local Buff = lastSaid():sub(2)
- if (Crypted[GroupName, number]) {
- Buff = toChar(254) + Buff
- dsSend("chat_data", GroupName, table(
- "message" = toChar(Version)+toChar(255)+crypt(Buff, Crypted[GroupName, number]),
- "player" = owner()
- ))
- Buff = Buff:sub(2, Buff:length())
- SpecSym = CryptoSym
- }else {
- dsSend("chat_data", GroupName, table(
- "message" = toChar(Version)+Buff,
- "player" = owner()
- ))
- }
- printColor(vec(50, 205, 50), SpecSym+"["+GroupName+" ", teamColor(owner():team()), owner():name(), vec(50, 205, 50), "]: ", vec(152, 251, 152), Buff)
- invisChat()
- }
- elseif (lastSaid():sub(0, 1)=="@" | lastSaid():sub(0, 1)=="\"") {
- local Buff = lastSaid():sub(2)
- dsSend("chat_data", GroupName, table(
- "message" = toChar(Version)+Buff,
- "player" = owner()
- ))
- printColor(vec(50, 205, 50), "["+GroupName+" ", teamColor(owner():team()), owner():name(), vec(50, 205, 50), "]: ", vec(152, 251, 152), Buff)
- invisChat()
- }
- break
- }
- }
Add Comment
Please, Sign In to add comment