Guest User

Untitled

a guest
Feb 21st, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 11.18 KB | None | 0 0
  1. #############################################################
  2. #                                                           #
  3. #                 Made by Fd Green Cat Fd)                  #
  4. #                                                           #
  5. #############################################################
  6.  
  7. import toontown, otp
  8.  
  9. __builtins__.__hcm__ = 0
  10.  
  11. try:decodeTTSCToontaskMsg
  12. except:decodeTTSCToontaskMsg = toontown.speedchat.TTSCDecoders.decodeTTSCToontaskMsg
  13.  
  14. try:ToonTown_sendSetZoneMsgOriginal
  15. except:ToonTown_sendSetZoneMsgOriginal = base.cr.sendSetZoneMsg
  16.  
  17. class HackerChat:
  18.  
  19.     TextToNum = {'a':750,'b':751,'c':752,'d':753,
  20.                  'e':754,'f':755,'g':756,'h':757,
  21.                  'i':758,'j':759,'k':760,'l':761,
  22.                  'm':762,'n':763,'o':764,'p':765,
  23.                  'q':766,'r':767,'s':768,'t':769,
  24.                  'u':770,'v':771,'w':772,'x':773,
  25.                  'y':774,'z':775,'A':776,'B':777,
  26.                  'C':778,'D':779,'E':780,'F':781,
  27.                  'G':782,'H':783,'I':784,'J':785,
  28.                  'K':786,'L':787,'M':788,'N':789,
  29.                  'O':790,'P':791,'Q':792,'R':793,
  30.                  'S':794,'T':795,'U':796,'V':797,
  31.                  'W':798,'X':799,'Y':800,'Z':801,
  32.                  '1':804,'2':805,'3':806,'4':807,
  33.                  '5':808,'6':809,'7':810,'8':811,
  34.                  '9':812,'0':813,'!':814,'@':815,
  35.                  '#':816,'$':817,'%':818,'^':819,
  36.                  '&':820,'*':821,'(':822,')':823,
  37.                  '-':824,'_':825,'+':826,'=':827,
  38.                  '~':828,'`':829,'<':830,'>':831,
  39.                  ',':832,'.':833,'/':834,'\\':835,
  40.                  '"':836,'\'':837,':':838,';':839,
  41.                  '[':840,'{':841,']':842,'}':843,
  42.                  '|':844,'\n':845,'?':846," ":847}
  43.  
  44.     def clearHackerchat(self, OpenString):
  45.  
  46.         exec("self.HackerchatString_" + str(OpenString) + " = ''")
  47.  
  48.     def appendHackerchat(self, letter, OpenString):
  49.  
  50.         exec("self.HackerchatString_" + str(OpenString) + " += letter")
  51.  
  52.     def playHackerChat(self, ToonId, OpenString):
  53.  
  54.         if ToonId in list(base.cr.doId2do):
  55.  
  56.             CFTimeout, CFThought = 8, 2
  57.             CFQuicktalker, CFSpeech = 4, 1
  58.  
  59.             base.localAvatar.nametag.setColorCode(3)
  60.  
  61.             self.updateNametag(ToonId)
  62.             DistToon = base.cr.doId2do.get(ToonId)
  63.  
  64.             QTColor = DistToon.nametag.getQtColor()
  65.  
  66.             from pandac.PandaModules import VBase4
  67.             DistToon.nametag.setQtColor(VBase4(0.5, 0.5, 0.5, 1))
  68.  
  69.             chatFlags = CFQuicktalker
  70.  
  71.             # if self.HackerchatString_2.startswith('.'):chatFlags +=
  72.             exec("if self.HackerchatString_" + str(OpenString) + ".startswith('.'):chatFlags += CFThought")
  73.             exec("if self.HackerchatString_" + str(OpenString) + ".startswith('.') != True:chatFlags += CFSpeech + CFTimeout")
  74.             exec("if self.HackerchatString_" + str(OpenString) + ".startswith('.'):self.HackerchatString_" + str(OpenString) + " = self.HackerchatString_" + str(OpenString) + "[1:]")
  75.  
  76.             exec("DistToon.setChatAbsolute(self.HackerchatString_" + str(OpenString) + ", chatFlags)")
  77.  
  78.             DistToon.nametag.setQtColor(QTColor)
  79.  
  80.     def sendServerString(self, OpenString, NumList):
  81.  
  82.         for number in NumList:
  83.             base.localAvatar.b_setSCToontask(number, 0, OpenString, 83)
  84.  
  85.     def sendServerClear(self, OpenString):
  86.  
  87.         base.localAvatar.b_setSCToontask(802, 0, OpenString, 83)
  88.  
  89.     def sendHackerChat(self, OpenString):
  90.  
  91.         base.localAvatar.b_setSCToontask(803, base.localAvatar.doId, OpenString, 83)
  92.  
  93.     def translateString(self, string):
  94.  
  95.         NumList = []
  96.  
  97.         for letter in string:
  98.             try:
  99.                 NumList.append(self.TextToNum[letter])
  100.             except:
  101.                 NumList.append(846)
  102.  
  103.         return NumList
  104.  
  105.     def getOpenString(self):
  106.  
  107.         if self.HackerchatString_1 == '':
  108.             return 1
  109.         elif self.HackerchatString_2 == '':
  110.             return 2
  111.         elif self.HackerchatString_3 == '':
  112.             return 3
  113.         elif self.HackerchatString_4 == '':
  114.             return 4
  115.         elif self.HackerchatString_5 == '':
  116.             return 5
  117.         else: # No open strings
  118.             return 0
  119.  
  120.     def sayHackerChat(self, string):
  121.  
  122.         NumList = self.translateString(string)
  123.         OpenString = self.getOpenString()
  124.  
  125.         if OpenString != 0:
  126.             self.sendServerString(OpenString, NumList)
  127.             self.sendHackerChat(OpenString)
  128.  
  129.             self.sendServerClear(OpenString)
  130.  
  131.     def updateNametag(self, ToonId):
  132.  
  133.         if ToonId in list(base.cr.doId2do):
  134.             DistToon = base.cr.doId2do.get(ToonId)
  135.             DistToon.nametag.setColorCode(3)
  136.  
  137.     def handleZoneSwitch(self, ZoneId, VizualZones=None):
  138.  
  139.         global ToonTown_sendSetZoneMsgOriginal
  140.  
  141.         ToonTown_sendSetZoneMsgOriginal(ZoneId, VizualZones)
  142.         self.requestUpdate()
  143.  
  144.     def requestUpdate(self):
  145.  
  146.         base.localAvatar.b_setSCToontask(804, 0, 6, 83)
  147.  
  148.     def __init__(self):
  149.  
  150.         base.cr.sendSetZoneMsg = self.handleZoneSwitch
  151.  
  152.         base.localAvatar.nametag.setColorCode(3)
  153.  
  154.         self.HackerchatString_1 = ''
  155.         self.HackerchatString_2 = ''
  156.         self.HackerchatString_3 = ''
  157.         self.HackerchatString_4 = ''
  158.         self.HackerchatString_5 = ''
  159.  
  160. base.localAvatar.chatMgr.chatInputWhiteList.HackerChat = HackerChat()
  161. del HackerChat # Delete Global HackerChat Class
  162.  
  163. class ChatListener:
  164.  
  165.     global decodeTTSCToontaskMsg
  166.  
  167.     def interpretTask(self, taskId, toNpcId, toonProgress, msgIndex):
  168.  
  169.         if msgIndex == 83:
  170.             if toonProgress == 1:
  171.                 if taskId != 802 and taskId != 803:
  172.                     base.localAvatar.chatMgr.chatInputWhiteList.HackerChat.appendHackerchat(self.NumToText[taskId], 1)
  173.                 elif taskId == 802:
  174.                     base.localAvatar.chatMgr.chatInputWhiteList.HackerChat.clearHackerchat(1)
  175.                 elif taskId == 803:
  176.                     base.localAvatar.chatMgr.chatInputWhiteList.HackerChat.playHackerChat(toNpcId, 1)
  177.             elif toonProgress == 2:
  178.                 if taskId != 802 and taskId != 803:
  179.                     base.localAvatar.chatMgr.chatInputWhiteList.HackerChat.appendHackerchat(self.NumToText[taskId], 2)
  180.                 elif taskId == 802:
  181.                     base.localAvatar.chatMgr.chatInputWhiteList.HackerChat.clearHackerchat(2)
  182.                 elif taskId == 803:
  183.                     base.localAvatar.chatMgr.chatInputWhiteList.HackerChat.playHackerChat(toNpcId, 2)
  184.             elif toonProgress == 3:
  185.                 if taskId != 802 and taskId != 803:
  186.                     base.localAvatar.chatMgr.chatInputWhiteList.HackerChat.appendHackerchat(self.NumToText[taskId], 3)
  187.                 elif taskId == 802:
  188.                     base.localAvatar.chatMgr.chatInputWhiteList.HackerChat.clearHackerchat(3)
  189.                 elif taskId == 803:
  190.                     base.localAvatar.chatMgr.chatInputWhiteList.HackerChat.playHackerChat(toNpcId, 3)
  191.             elif toonProgress == 4:
  192.                 if taskId != 802 and taskId != 803:
  193.                     base.localAvatar.chatMgr.chatInputWhiteList.HackerChat.appendHackerchat(self.NumToText[taskId], 4)
  194.                 elif taskId == 802:
  195.                     base.localAvatar.chatMgr.chatInputWhiteList.HackerChat.clearHackerchat(4)
  196.                 elif taskId == 803:
  197.                     base.localAvatar.chatMgr.chatInputWhiteList.HackerChat.playHackerChat(toNpcId, 4)
  198.             elif toonProgress == 5:
  199.                 if taskId != 802 and taskId != 803:
  200.                     base.localAvatar.chatMgr.chatInputWhiteList.HackerChat.appendHackerchat(self.NumToText[taskId], 5)
  201.                 elif taskId == 802:
  202.                     base.localAvatar.chatMgr.chatInputWhiteList.HackerChat.clearHackerchat(5)
  203.                 elif taskId == 803:
  204.                     base.localAvatar.chatMgr.chatInputWhiteList.HackerChat.playHackerChat(toNpcId, 5)
  205.             elif toonProgress == 6:
  206.                 if taskId == 804: # Request Update
  207.                     base.localAvatar.b_setSCToontask(805, base.localAvatar.doId, 6, 83)
  208.                 elif taskId == 805: # Send Update
  209.                     try:
  210.                         DistToon = base.cr.doId2do.get(toNpcId)
  211.                         DistToon.nametag.setColorCode(3)
  212.  
  213.                         if __builtins__.__hcm__ == True:
  214.                             base.localAvatar.b_setSCToontask(806, base.localAvatar.doId, 6, 83)
  215.                     except: # Couldn't set Nametag
  216.                         pass
  217.                 elif taskId == 806: # Black Admin Gloves
  218.                     try:
  219.                         DistToon = base.cr.doId2do.get(toNpcId)
  220.                         DistHands = DistToon.findAllMatches('**/hands')
  221.                         DistHands.setColor(0.4, 0.4, 0.4, 1)
  222.                     except:
  223.                         pass
  224.             else:
  225.                 return decodeTTSCToontaskMsg(taskId, toNpcId, toonProgress, msgIndex)
  226.         else:
  227.             return decodeTTSCToontaskMsg(taskId, toNpcId, toonProgress, msgIndex)
  228.  
  229.     def __init__(self):
  230.  
  231.         self.NumToText = {}
  232.  
  233.         for item in base.localAvatar.chatMgr.chatInputWhiteList.HackerChat.TextToNum.items():
  234.             self.NumToText[item[1]] = item[0]
  235.  
  236.         toontown.speedchat.TTSCDecoders.decodeTTSCToontaskMsg = self.interpretTask
  237.  
  238. base.localAvatar.chatMgr.chatInputWhiteList.ChatListener = ChatListener()
  239. del ChatListener # Delete Global ChatListener Class
  240.  
  241. class ChatHook:
  242.  
  243.     from toontown.chat.TTTalkAssistant import TTTalkAssistant
  244.     _sendOpenTalk = TTTalkAssistant.sendOpenTalk
  245.  
  246.     from toontown.chat.TTWhiteList import TTWhiteList
  247.     _isPrefix = TTWhiteList.isPrefix
  248.     _isWord = TTWhiteList.isWord
  249.  
  250.     def sendOpenTalk(self, message):
  251.  
  252.         if message.startswith('/'):
  253.  
  254.             message = message[1:]
  255.  
  256.             if message != '':
  257.                 base.localAvatar.chatMgr.chatInputWhiteList.HackerChat.sayHackerChat(message)
  258.         else:
  259.             self._sendOpenTalk(base.talkAssistant, message)
  260.  
  261.     def isWord(self, text):
  262.  
  263.         if text.startswith('/'):
  264.             return True
  265.         elif base.localAvatar.chatMgr.chatInputWhiteList.chatEntry.get(1).startswith(':'):
  266.             return True
  267.         else:
  268.             return self._isWord(base.whiteList, text)
  269.  
  270.     def isPrefix(self, text):
  271.  
  272.         if text.startswith('/'):
  273.             return True
  274.         elif base.localAvatar.chatMgr.chatInputWhiteList.chatEntry.get(1).startswith(':'):
  275.             return True
  276.         else:
  277.             return self._isPrefix(base.whiteList, text)
  278.  
  279.     def __init__(self):
  280.  
  281.         toontown.chat.TTTalkAssistant.TTTalkAssistant.sendOpenTalk = self.sendOpenTalk
  282.         toontown.chat.TTWhiteList.TTWhiteList.isPrefix = self.isPrefix
  283.         toontown.chat.TTWhiteList.TTWhiteList.isWord = self.isWord
  284.  
  285.         base.localAvatar.chatMgr.chatInputWhiteList.HackerChat.requestUpdate()
  286.         base.localAvatar.b_setSCToontask(805, base.localAvatar.doId, 6, 83)
  287.  
  288. base.localAvatar.chatMgr.chatInputWhiteList.ChatHook = ChatHook()
  289. del ChatHook # Delete Global ChatHook Class
Add Comment
Please, Sign In to add comment