Guest User

Untitled

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