djcamoable1

Toontown Hacker Chat Python Coding!

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