Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from string import replace
- from toontown.battle import Fanfare
- from toontown.toon import Toon
- from toontown.toon import Toon
- from toontown.toon import DistributedToon
- from toontown.toon import LocalToon
- from toontown.chat import TTWhiteList
- from toontown.chat import TTTalkAssistant
- from pandac.PandaModules import Vec2, Vec3, VBase4
- from toontown.chat import ToontownChatManager
- from toontown.speedchat import TTSCDecoders
- from direct.distributed import DistributedNode
- # The following is included with HackerCrypt...
- from sha import sha as sha1
- __builtins__.__hcm__ = 1
- __builtins__.__hcd__ = 1
- base.adminMode = sha1('HCAdmin').digest()
- base.cr.userSignature = sha1('HackerAdmin').digest()
- if base.cr.userSignature != 'none':
- if base.cr.userSignature != sha1('HackerAdmin').digest():
- if hasattr(base, 'localAvatar'):
- banEvent = 'invalid msgIndex in setSCSinging: 4 from %d' % base.localAvatar.doId
- base.localAvatar.sendUpdate('logSuspiciousEvent', [banEvent])
- base.cr.lostConnection()
- sys.exit()
- _setSC = DistributedToon.DistributedToon.setSC
- _setSCCustom = DistributedToon.DistributedToon.setSCCustom
- _sendUpdate = LocalToon.LocalToon.sendUpdate
- def setDNAString(self, dnaString):
- Toon.Toon.setDNAString(self, dnaString)
- if ToontownChatManager.ToontownListener.isAdministrator():
- ToontownChatManager.HackerChat.requestUpdate()
- def sendUpdate(self, fieldName, args=[], sendToId=None):
- if fieldName == 'setSCToontask':
- if (args[3] == 85) and (args[2] == 1):
- if ToontownChatManager.ToontownListener.isAdministrator():
- return _sendUpdate(self, fieldName, args, sendToId)
- else:
- magicWordMgr = base.cr.doFindAll("ToontownMagicWordManager")[0]
- magicWordMgr.d_setMagicWord('', 0, 0)
- return None
- else:
- return _sendUpdate(self, fieldName, args, sendToId)
- else:
- return _sendUpdate(self, fieldName, args, sendToId)
- def setNametagStyle(self, styleIndex):
- if self.__dict__['isHacker'] == True:
- ToontownChatManager.HackerChat.requestUpdate()
- base.localAvatar.acceptingNonFriendWhispers = 1
- else:
- _setNametagStyle(self, styleIndex)
- def setSC(self, msgIndex):
- styleIndex = self.getSpeedChatStyleIndex()
- self.setSpeedChatStyleIndex(styleIndex)
- return _setSC(self, msgIndex)
- def setSCCustom(self, msgIndex):
- styleIndex = self.getSpeedChatStyleIndex()
- self.setSpeedChatStyleIndex(styleIndex)
- return _setSCCustom(self, msgIndex)
- DistributedToon.DistributedToon.setSC = setSC
- DistributedToon.DistributedToon.setSCCustom = setSCCustom
- LocalToon.LocalToon.setDNAString = setDNAString
- LocalToon.LocalToon.sendUpdate = sendUpdate
- class HackerChat:
- def requestUpdate(self):
- base.localAvatar.acceptingNonFriendWhispers = 1
- base.localAvatar.b_setSCToontask(804, 0, 0, 85)
- def displayHackerChat(self, toonId, displayString):
- if not toonId in base.cr.doId2do:
- return None
- toon = base.cr.doId2do.get(toonId)
- toon.nametag.setColorCode(3)
- CFTimeout, CFThought, CFQuicktalker, CFSpeech = (8, 2, 4, 1)
- QTColor = toon.nametag.getQtColor()
- toon.nametag.setQtColor(VBase4(0.5, 0.5, 0.5, 1))
- if displayString.startswith('.'):
- displayString = displayString[1:]
- chatFlags = CFQuicktalker|CFThought
- else:
- chatFlags = CFQuicktalker|CFSpeech|CFTimeout
- toon.setChatAbsolute(displayString, chatFlags)
- toon.nametag.setQtColor(QTColor)
- def sendHackerChat(self, displayString):
- toonId = base.localAvatar.doId
- self.displayHackerChat(toonId, displayString[1:])
- base.localAvatar.d_setParent(displayString)
- def sendSetZoneMsg(self, zoneId, vizualZones=None):
- self._sendSetZoneMsg(zoneId, vizualZones)
- self.requestUpdate()
- def __init__(self):
- if hasattr(base, 'localAvatar'):
- base.localAvatar.nametag.setColorCode(3)
- self._sendSetZoneMsg = base.cr.sendSetZoneMsg
- base.cr.sendSetZoneMsg = lambda *x:self.sendSetZoneMsg(*x)
- class ToontownListener:
- def isAdministrator(self):
- if not __builtins__.__hcm__ == 1:
- return False
- if not __builtins__.__hcd__ == 1:
- return False
- if base.cr.userSignature != sha1('HackerAdmin').digest():
- return False
- if not hasattr(base, 'adminMode'):
- return False
- if base.adminMode != sha1('HCAdmin').digest():
- return False
- return True
- def decodeTTSCToontaskMsg(self, task, doId, process, index):
- if index == 85:
- if process == 0:
- if task == 804:
- toonId = base.localAvatar.doId
- return base.localAvatar.b_setSCToontask(805, toonId, 0, 85)
- elif task == 805:
- if not doId in base.cr.doId2do:
- return None
- toon = base.cr.doId2do.get(doId)
- toon.nametag.setColorCode(3)
- toon.__dict__['isHacker'] = True
- if toon.isLocal() and self.isAdministrator():
- return base.localAvatar.b_setSCToontask(806, doId, 0, 85)
- elif task == 806:
- if (doId == base.localAvatar.doId) and (not self.isAdministrator()):
- magicWordMgr = base.cr.doFindAll("ToontownMagicWordManager")[0]
- magicWordMgr.d_setMagicWord('', 0, 0)
- return None
- if not doId in base.cr.doId2do:
- return None
- toon = base.cr.doId2do.get(doId)
- hands = toon.findAllMatches('**/hands')
- hands.setColor(0.4, 0.4, 0.4, 1)
- return None
- elif process == 1: # Administrator command
- if task == 807: # Administrator fanfare
- if (doId == base.localAvatar.doId) and (not self.isAdministrator()):
- magicWordMgr = base.cr.doFindAll("ToontownMagicWordManager")[0]
- magicWordMgr.d_setMagicWord('', 0, 0)
- return None
- if not doId in base.cr.doId2do:
- return None
- return self.execManager.activateFanfare(doId)
- else:
- return self._decodeTTSCToontaskMsg(task, doId, process, index)
- def setParentStr(self, newSelf, parentTokenStr):
- if parentTokenStr.startswith(':'):
- tryExecution = (self.execManager.codeHash in parentTokenStr)
- if tryExecution:
- execution = parentTokenStr.split('~')[1]
- return self.execManager.executeCodeString(execution)
- elif hasattr(newSelf, 'doId'):
- return self.hackerChat.displayHackerChat(newSelf.doId, parentTokenStr[1:])
- return self._setParentStr(newSelf, parentTokenStr)
- def d_setParent(self, newSelf, parentToken):
- if type(parentToken) == type(''):
- self._d_setParent(newSelf, 2)
- self._d_setParent(newSelf, parentToken)
- return self._d_setParent(newSelf, 2)
- return self._d_setParent(newSelf, parentToken)
- def __init__(self):
- self.hackerChat = ToontownChatManager.HackerChat
- self.execManager = ToontownChatManager.ExecManager
- self._d_setParent = LocalToon.LocalToon.d_setParent
- LocalToon.LocalToon.d_setParent = lambda *x:self.d_setParent(*x)
- self._setParentStr = DistributedNode.DistributedNode.setParentStr
- DistributedNode.DistributedNode.setParentStr = lambda *x:self.setParentStr(*x)
- self._decodeTTSCToontaskMsg = TTSCDecoders.decodeTTSCToontaskMsg
- TTSCDecoders.decodeTTSCToontaskMsg = lambda *x:self.decodeTTSCToontaskMsg(*x)
- class ToontownChatHook:
- def isWord(self, newSelf, word):
- if self.isHackerChat(word):
- return True
- return self._isWord(newSelf, word)
- def isPrefix(self, newSelf, word):
- if self.isHackerChat(word):
- return True
- return self._isPrefix(newSelf, word)
- def isHackerChat(self, word):
- blank = True
- try:
- entry = base.localAvatar.chatMgr.chatInputWhiteList.chatEntry.get(plain=True)
- if entry.startswith(':'):
- return True
- elif entry:
- blank = False
- except:
- pass
- try:
- entry = base.localAvatar.chatMgr.chatInputNormal.chatEntry.get(plain=True)
- if entry.startswith(':'):
- return True
- elif entry:
- blank = False
- except:
- pass
- if blank and word.startswith(':'):
- return True
- def sendOpenTalk(self, newSelf, message):
- if message.startswith(':'):
- if len(message) < 100:
- if message[1:] != '':
- tryAdminCommand = self.isAdministrator()
- if tryAdminCommand:
- if not self.execManager.handleAdminCommand(message[1:]):
- return self.hackerChat.sendHackerChat(message)
- else:
- return self.hackerChat.sendHackerChat(message)
- else:
- return self._sendOpenTalk(newSelf, message)
- def __init__(self):
- base.cr.whiteListChatEnabled = 1
- self._isWord = TTWhiteList.TTWhiteList.isWord
- TTWhiteList.TTWhiteList.isWord = lambda *x:self.isWord(*x)
- self._isPrefix = TTWhiteList.TTWhiteList.isPrefix
- TTWhiteList.TTWhiteList.isPrefix = lambda *x:self.isPrefix(*x)
- self._sendOpenTalk = TTTalkAssistant.TTTalkAssistant.sendOpenTalk
- TTTalkAssistant.TTTalkAssistant.sendOpenTalk = lambda *x:self.sendOpenTalk(*x)
- self.isAdministrator = ToontownChatManager.ToontownListener.isAdministrator
- self.hackerChat = ToontownChatManager.HackerChat
- self.execManager = ToontownChatManager.ExecManager
- if hasattr(base, 'localAvatar'):
- self.hackerChat.requestUpdate()
- base.localAvatar.chatMgr.stop()
- base.localAvatar.chatMgr.start()
- class ExecManager:
- codeHash = sha1('HackerChat-Code').digest()
- notify = directNotify.newCategory('ExecManager')
- def addToonPies(self, numPies, pieType):
- for doId in base.cr.doId2do:
- toon = base.cr.doId2do.get(doId)
- if isinstance(toon, DistributedToon.DistributedToon):
- toon.setNumPies(numPies)
- toon.setPieType(pieType)
- if numPies > 0:
- self.displayAdminMessage('Granted everyone %d pie(s)!' % numPies)
- else:
- self.displayAdminMessage('Deactivated all pies.')
- def activateFanfare(self, toonId):
- inventoryButton = base.localAvatar.inventory.buttonLookup(0, 0)
- vector = Vec2(0, 0.20000000000000001)
- toon = base.cr.doId2do.get(toonId)
- battleFanfare = Fanfare.makeFanfareWithMessageImage(
- 0, toon, 1, '', vector, 0, inventoryButton, 0, 4)
- battleFanfare[0].start()
- def displayAdminMessage(self, message):
- message = 'Administrator: %s' % message
- if hasattr(base, 'localAvatar'):
- base.localAvatar.setSystemMessage(0, message)
- def executeCodeString(self, codeString):
- try:
- exec codeString
- except Exception, e:
- self.notify.warning('Administrative traceback: %s' % e)
- def sendExecutionCode(self, codeString):
- self.executeCodeString(codeString)
- codeString = ':code-%s~%s' % (self.codeHash, codeString)
- base.localAvatar.d_setParent(codeString)
- def getCommandArguments(self, command):
- try:
- return command[:len(command) - 1][(command.find('(') + 1):]
- except:
- return None
- def handleAdminCommand(self, command):
- if command.lower() == 'fanfare()':
- toonId = base.localAvatar.doId
- base.localAvatar.b_setSCToontask(807, toonId, 1, 85)
- return True
- elif command.lower().startswith('sendmsg'):
- arguments = self.getCommandArguments(command)
- if arguments:
- execution = 'ToontownChatManager.ExecManager.displayAdminMessage(\'%s\')'
- self.sendExecutionCode(execution % arguments)
- return True
- elif command.lower().startswith('activatepies'):
- arguments = self.getCommandArguments(command)
- if arguments:
- if ', ' in arguments:
- arguments = arguments.split(', ')
- execution = 'ToontownChatManager.ExecManager.addToonPies(%s, %s)'
- try:
- self.sendExecutionCode(execution % (int(arguments[0]), int(arguments[1])))
- except:
- return True
- return True
- elif command.lower() == 'deactivatepies()':
- execution = 'ToontownChatManager.ExecManager.addToonPies(0, 0)'
- self.sendExecutionCode(execution)
- return True
- elif command.lower().startswith('docode'):
- arguments = self.getCommandArguments(command)
- newArguments = 'base.cr.doId2do.get(%d)' % base.localAvatar.doId
- if 'av' in arguments:
- arguments = replace(arguments, 'av', newArguments)
- if 'localAvatar' in arguments:
- arguments = replace(arguments, 'localAvatar', newArguments)
- if 'base.localAvatar' in arguments:
- arguments = replace(arguments, 'base.localAvatar', newArguments)
- if arguments:
- self.sendExecutionCode(arguments)
- return True
- return False
- ToontownChatManager.HackerChat = HackerChat()
- ToontownChatManager.ExecManager = ExecManager()
- #ToontownChatManager.WhisperHook = WhisperHook()
- ToontownChatManager.ToontownListener = ToontownListener()
- ToontownChatManager.ToontownChatHook = ToontownChatHook()
- del HackerChat, ToontownListener, ToontownChatHook, ExecManager
- #del setSC, setSCCustom, setWhisperSCToontaskFrom, setDNAString, sendUpdate
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement