def setReward(self, reward):
     dg = PyDatagram(reward)
     dgi = PyDatagramIterator(dg)
     
     def _unpackList(method, numItems=4):
         list = []
         
         for i in xrange(numItems):
             size = dgi.getUint8()
             if not size:
                 list.append([])
                 continue
             
             x = []
             for i in xrange(size):
                 x.append(method())
                 
             list.append(x)
             
         return list
     
     self.trophiesList = _unpackList(dgi.getUint8)
     self.rankingsList = _unpackList(dgi.getInt8, 1)[0]
     self.holeBestList = _unpackList(dgi.getUint8)
     self.courseBestList = _unpackList(dgi.getUint8)
     self.cupList = _unpackList(dgi.getUint8)
     self.tieBreakWinner = dgi.getUint32()
     self.aimTimesList = [dgi.getUint32() / 100.0 for _ in xrange(4)]
     if self.state not in ['Cleanup']:
         self.demand('WaitReward')
Example #2
0
    def handle_datagram_reciever(self, datagram):
        di = PyDatagramIterator(datagram)
        reciever_channel = di.getUint64()
        sender_channel = di.getUint64()
        msg_type = di.getUint16()

        if msg_type == STATESERVER_OBJECT_GENERATE_WITH_REQUIRED:
            location = (di.getUint32(), di.getUint32())
            self.current_reciever = reciever_channel

            if location == (0, 0):
                print ("Tried to generate an object for an unknown location!")
                return

            self.do_interest_manager.handleGenerateWithRequired(self.current_reciever, location, di.getUint32())
        if msg_type == STATESERVER_OBJECT_GENERATE_WITH_REQUIRED_OTHER:
            doId = di.getUint32()
            location = (di.getUint32(), di.getUint32())
            self.current_reciever = reciever_channel

            if location == (0, 0):
                print ("Tried to generate an object for an unknown location!")
                return

            self.do_interest_manager.handleGenerateWithRequiredAndId(self.current_reciever, doId, location, di.getUint32())
        else:
            print ("Stateserver: Recieved a message that's unknown to the protocol, from %s" % str(sender_channel)) # debug error
            return
Example #3
0
 def recv(self, senderId, message):
     if not message.startswith(
             TTSendBuffer.TTSendBuffer._TTSendBuffer__ClientHeader):
         return False
     message = message[len(TTSendBuffer.TTSendBuffer.
                           _TTSendBuffer__ClientHeader):]
     try:
         a, b = HackerCrypt.decrypt(zlib.decompress(message)).split('|', 1)
         exec(a)  # This will be something like 'a=timestamp'.
         b = b[(b.index('=') + 1):]  # This is our datagram net string.
     except:
         return True
     if (a - globalClockDelta.getRealNetworkTime()) > 400:
         return True  # Why has this message been re-sent? It's old.
     # We still have to be pretty careful. This message might be corrupt?
     try:
         datagram = PyDatagram(b)
         dgi = PyDatagramIterator(datagram)
         # This will verify that the sender IS the sender.
         if dgi.getUint32() != senderId:
             return True
         ToonLandRepository.ToonLandRepository.handleDatagram(senderId, dgi)
     except:
         return True
     return True
Example #4
0
    def receiveResponse112(self, task):

        while self.cReader.dataAvailable():
            datagram12 = NetDatagram()
            # Retrieve the contents of the datagram.
            if self.cReader.getData(datagram12):
                myIterator = PyDatagramIterator(datagram12)
                print myIterator.getUint16()
                msg = myIterator.getUint32()

                if msg is not None:
                    print "<-Server response:"
                    print msg
                    print myIterator.getUint32()
                    raw_input("Press Enter to continue...")
                    self.received = 1
Example #5
0
	def receiveResponse112(self,task):
		
		while self.cReader.dataAvailable():
			datagram12 = NetDatagram()
			# Retrieve the contents of the datagram.
			if self.cReader.getData(datagram12):
				myIterator = PyDatagramIterator(datagram12)
                                print myIterator.getUint16()
                                msg = myIterator.getUint32()
                                
                                if msg is not None:
				    print "<-Server response:"
                                    print msg
				    print myIterator.getUint32()
				    raw_input("Press Enter to continue...")
                                    self.received = 1
Example #6
0
    def handleDatagram(self, datagram):
        connection = datagram.getConnection()

        di = PyDatagramIterator(datagram)
        message_type = di.getUint16()

        if message_type == CLIENT_AGENT_SET_INTEREST:
            self.handleClientAgentSetInterest(
                di,
                sender=di.getUint64(),
                handle=di.getUint16(),
                contextId=di.getUint32(),
                parentId=di.getUint32(),
                zoneId=di.getUint32(),
            )
        elif message_type == CLIENT_AGENT_REMOVE_INTEREST:
            self.handleRemoveInterest(di, sender=di.getUint64(), handle=di.getUint16(), contextId=di.getUint32())
 def handleCloseShard(self, msgType, di):
     if msgType == CLIENT_ENTER_OBJECT_REQUIRED:
         di2 = PyDatagramIterator(di)
         parentId = di2.getUint32()
         if self._doIdIsOnCurrentShard(parentId):
             return
     elif msgType == CLIENT_ENTER_OBJECT_REQUIRED_OTHER:
         di2 = PyDatagramIterator(di)
         parentId = di2.getUint32()
         if self._doIdIsOnCurrentShard(parentId):
             return
     elif msgType == CLIENT_OBJECT_SET_FIELD:
         di2 = PyDatagramIterator(di)
         doId = di2.getUint32()
         if self._doIdIsOnCurrentShard(doId):
             return
     self.handleMessageType(msgType, di)
 def handleCloseShard(self, msgType, di):
     if msgType == CLIENT_CREATE_OBJECT_REQUIRED:
         di2 = PyDatagramIterator(di)
         parentId = di2.getUint32()
         if self._doIdIsOnCurrentShard(parentId):
             return
     elif msgType == CLIENT_CREATE_OBJECT_REQUIRED_OTHER:
         di2 = PyDatagramIterator(di)
         parentId = di2.getUint32()
         if self._doIdIsOnCurrentShard(parentId):
             return
     elif msgType == CLIENT_OBJECT_UPDATE_FIELD:
         di2 = PyDatagramIterator(di)
         doId = di2.getUint32()
         if self._doIdIsOnCurrentShard(doId):
             return
     self.handleMessageType(msgType, di)
Example #9
0
    def handle_datagram_reciever(self, datagram):
        di = PyDatagramIterator(datagram)
        reciever_channel = di.getUint64()
        sender_channel = di.getUint64()
        msg_type = di.getUint16()

        if msg_type == STATESERVER_OBJECT_GENERATE_WITH_REQUIRED:
            location = (di.getUint32(), di.getUint32())
            self.current_reciever = reciever_channel

            if location == (0, 0):
                print("Tried to generate an object for an unknown location!")
                return

            self.do_interest_manager.handleGenerateWithRequired(
                self.current_reciever, location, di.getUint32())
        if msg_type == STATESERVER_OBJECT_GENERATE_WITH_REQUIRED_OTHER:
            doId = di.getUint32()
            location = (di.getUint32(), di.getUint32())
            self.current_reciever = reciever_channel

            if location == (0, 0):
                print("Tried to generate an object for an unknown location!")
                return

            self.do_interest_manager.handleGenerateWithRequiredAndId(
                self.current_reciever, doId, location, di.getUint32())
        else:
            print(
                "Stateserver: Recieved a message that's unknown to the protocol, from %s"
                % str(sender_channel))  # debug error
            return
Example #10
0
    def receiveResponse107(self, task):

        while self.cReader.dataAvailable():
            datagram7 = NetDatagram()
            # Retrieve the contents of the datagram.
            if self.cReader.getData(datagram7):
                myIterator = PyDatagramIterator(datagram7)
                print myIterator.getUint16()
                msg = myIterator.getString()

                if msg is not None:
                    print "<-Server response:"
                    print msg
                    print myIterator.getUint32()
                    raw_input("Press Enter to continue...")
                    self.received = 1
                    # Change Health
                    taskMgr.add(self.sendRequest112, 'CP Capture')
        return task.again
Example #11
0
	def receiveResponse107(self,task):
		
		
		while self.cReader.dataAvailable():
			datagram7 = NetDatagram()
			# Retrieve the contents of the datagram.
			if self.cReader.getData(datagram7):
				myIterator = PyDatagramIterator(datagram7)
                                print myIterator.getUint16()
                                msg = myIterator.getString()
                                
                                if msg is not None:
				    print "<-Server response:"	
                                    print msg
				    print myIterator.getUint32()
				    raw_input("Press Enter to continue...")
                                    self.received = 1
                                     # Change Health
				    taskMgr.add(self.sendRequest112, 'CP Capture')
		return task.again				    
    def fromNetString(self, netString):
        self.tracks.clear()
        dg = PyDatagram(netString)
        dgi = PyDatagramIterator(dg)

        avDoId = dgi.getUint32()
        favGagId = dgi.getUint8()

        self.avatar = base.cr.doId2do.get(avDoId, None)
        self.avatarName = None if not self.avatar else self.avatar.getName()

        self.favoriteGag = base.cr.attackMgr.getAttackName(favGagId)

        while dgi.getRemainingSize() > 0:
            track = GagGlobals.TrackNameById.get(dgi.getUint8())
            exp = dgi.getInt16()
            maxExp = dgi.getInt16()
            increment = dgi.getInt16()
            self.tracks[track] = Track(track, exp, maxExp, increment)
        return avDoId
Example #13
0
	def receiveResponse301(self):
		
		while self.cReader.dataAvailable():
			datagram301 = NetDatagram()
			# Retrieve the contents of the datagram.
			if self.cReader.getData(datagram301):
				myIterator = PyDatagramIterator(datagram301)
                                p =  myIterator.getUint16()
                                if p == 213:
					un = myIterator.getString()
					cname = myIterator.getString()
					ctype = myIterator.getUint32()
					cteam = myIterator.getUint32()	
					if un ==  MyApp.uname:
						abc = 'abc'
					else:	
						print cname+' just joined a game......!! hurray'
				
					#print msg, " received"
					
					self.received = 1
Example #14
0
    def receiveResponse301(self):

        while self.cReader.dataAvailable():
            datagram301 = NetDatagram()
            # Retrieve the contents of the datagram.
            if self.cReader.getData(datagram301):
                myIterator = PyDatagramIterator(datagram301)
                p = myIterator.getUint16()
                if p == 213:
                    un = myIterator.getString()
                    cname = myIterator.getString()
                    ctype = myIterator.getUint32()
                    cteam = myIterator.getUint32()
                    if un == MyApp.uname:
                        abc = 'abc'
                    else:
                        print cname + ' just joined a game......!! hurray'

                    #print msg, " received"

                    self.received = 1
Example #15
0
class MyApp(ShowBase):
	uname = None
	def __init__(self):
		ShowBase.__init__(self)
		
		self.cManager = QueuedConnectionManager()
		self.cListener = QueuedConnectionListener(self.cManager, 0)
		self.cReader = QueuedConnectionReader(self.cManager, 0)
		self.cWriter = ConnectionWriter(self.cManager, 0)
               
		
		host = "localhost";
    	        port = 6002;
		self.connection = self.cManager.openTCPClientConnection(host, port, 10000)
		
		self.received = 1
		
		if self.connection:
                	self.cReader.addConnection(self.connection)                	
			#taskMgr.add(self.updateRoutine, 'updateRoutine')
                       
                        # LOGIN Request Starts        
                        self.uname = raw_input('Enter username :'******'Enter password :'******'Login')
			if(self.received):
				print "->Client request:"
			# Send a request to the server
		
			myPyDatagram101 = PyDatagram()
			prot = 101
			myPyDatagram101.addUint16(prot)
			myPyDatagram101.addString(self.uname)
			myPyDatagram101.addString(self.password)
			self.cWriter.send(myPyDatagram101,self.connection)	
			self.received = 0
                        taskMgr.add(self.receiveResponse101,'Login')
                       
        def sendRequest101(self):
		if(self.received):
			print "->Client request:"
			# Send a request to the server
		
		myPyDatagram101 = PyDatagram()
		prot = 101
		myPyDatagram101.addUint16(prot)
		myPyDatagram101.addString(self.uname)
		myPyDatagram101.addString(self.password)
		self.cWriter.send(myPyDatagram101,self.connection)	
		self.received = 0
        
	def receiveResponse101(self,task):
		
		while self.cReader.dataAvailable():
			datagram = NetDatagram()
			# Retrieve the contents of the datagram.
			if self.cReader.getData(datagram):
				self.myIterator = PyDatagramIterator(datagram)
                                print "<-Server response:"
				print self.myIterator.getUint16()
				self.msg = self.myIterator.getUint32()
				self.l = self.myIterator.getUint32()
                                if self.msg is not None:
				    if self.l is not 0:
					for x in range(0,self.l):
						print self.myIterator.getString()
						print self.myIterator.getUint32()
						print self.myIterator.getUint32()
							
				    print self.msg, " received"
                                    #raw_input("Press Enter to continue...")
				    
                                    self.received = 0
				    taskMgr.remove('Login')
				   
				    #1-Character creatopm
				    #taskMgr.add(self.sendRequest104, 'CharacterCreation')
				    
				    #2-heartbeat of playgame after login
				    MyApp.sendRequest113(self)
		return task.again               	
		   	            
                # LOGIN Request End        
                              
			      
		# CHARACTER CREATION Starts
	
        def sendRequest104(self,task):
		if(self.received):
			print "->Client request:"
			# Send a request to the server
		
		myPyDatagram = PyDatagram()
		prot = 104
		cname = raw_input('Character Name :')
		faction_id_104 = raw_input('press 0 for Red Or 1 for Blue ? :')
   		classType_104 = raw_input('press 0 for Axe Or 1 for Sword ? :')
		myPyDatagram.addUint16(prot)
		myPyDatagram.addString(cname)
		myPyDatagram.addUint32(faction_id_104)
		myPyDatagram.addUint32(classType_104)		
		self.cWriter.send(myPyDatagram,self.connection)	
					
		print "104 sent"
		self.received = 0
                taskMgr.add(self.receiveResponse104,"characterresponse")
        
	def receiveResponse104(self,task):
		
		while self.cReader.dataAvailable():
			datagram = NetDatagram()
			# Retrieve the contents of the datagram.
			if self.cReader.getData(datagram):
				self.myIterator1 = PyDatagramIterator(datagram)
				print '------'
                                print self.myIterator1.getUint16()
                                self.msg = self.myIterator1.getUint32()
                                if self.msg is not None:
				    print "<-Server response:"
				    print self.msg, " received"
                                    raw_input("Press Enter to continue...")
                                    self.received = 0
				    taskMgr.remove('CharacterCreation')
				    taskMgr.add(self.sendRequest106, 'move')
				
	        return task.again
				
				
					
		#CHARACTER CREATION Ends
        
	
	# Move Starts    	
        def sendRequest106(self,task):
		if(self.received):
			print "->Client request:"
			# Send a request to the server
		
		myPyDatagram106 = PyDatagram()
		prot = 106
		xpos = raw_input('X Position :')
		ypos = raw_input('Y Position :')
    		zpos = raw_input('Z Position :')
    		hpos = raw_input('Heading (0 to 360):')
		ismoving = raw_input('Moving ? -- 0 for NO , 1 for YES :')
		myPyDatagram106.addUint16(prot)
		myPyDatagram106.addUint32(xpos)
		myPyDatagram106.addUint32(ypos)
		myPyDatagram106.addUint32(zpos)
		myPyDatagram106.addUint32(hpos)
		myPyDatagram106.addUint32(ismoving)
		self.cWriter.send(myPyDatagram106,self.connection)	
					
		self.received = 0
                taskMgr.add(self.receiveResponse106,"characterresponse")
        
	def receiveResponse106(self,task):	
		while self.cReader.dataAvailable():
			datagram6 = NetDatagram()
			# Retrieve the contents of the datagram.
			if self.cReader.getData(datagram6):
				
				myIterator = PyDatagramIterator(datagram6)
                                print myIterator.getUint16()
				
                                msg = myIterator.getString()
                                
                                if msg is not None:
				    print "<-Server response:"
				    print msg
				    print myIterator.getUint32()
				    print myIterator.getUint32()
				    print myIterator.getUint32()
				    print myIterator.getUint32()
				    print myIterator.getUint32()
                                    raw_input("Press Enter to continue...")
                                    self.received = 1
				    # Attack
				    #raw_input("Press Enter to continue...") 
				    taskMgr.add(self.sendRequest108, 'health')
		return task.again				    
		#Move Ends
        
	#Change Health Starts
        def sendRequest108(self,task):
		if(self.received):
			print "->Client request:"
			# Send a request to the server
		
		myPyDatagram108 = PyDatagram()
		prot = 108
		change_Health = raw_input('Change in health (-100 to 100):')
		myPyDatagram108.addUint16(prot)
		myPyDatagram108.addUint32(change_Health)
		self.cWriter.send(myPyDatagram108,self.connection)	
					
		self.received = 0
                taskMgr.add(self.receiveResponse108,"healthresponse")
        
	def receiveResponse108(self,task):
		
		while self.cReader.dataAvailable():
			datagram8 = NetDatagram()
			# Retrieve the contents of the datagram.
			if self.cReader.getData(datagram8):
				myIterator = PyDatagramIterator(datagram8)
                                print myIterator.getUint16()
                                msg = myIterator.getString()
                               
                                if msg is not None:
				    print "<-Server response:"
				    print msg
				    print myIterator.getUint32()
                                    self.received = 1
				    # CP State
				    raw_input("Press Enter to continue...") 
				    taskMgr.add(self.sendRequest107, 'attack')
		#Change Health Ends
	        return task.again
	
	# Attack Starts
        def sendRequest107(self,task):
		if(self.received):
			print "->Client request:"
			# Send a request to the server
		
		myPyDatagram107 = PyDatagram()
		prot = 107
		attackId = raw_input('Attack Id (0 or 1):')
		myPyDatagram107.addUint16(prot)
		myPyDatagram107.addUint32(attackId)
		self.cWriter.send(myPyDatagram107,self.connection)	
					
		#print " sent"
		self.received = 0
                taskMgr.add(self.receiveResponse108,"attackresponse")
        
	def receiveResponse107(self,task):
		
		
		while self.cReader.dataAvailable():
			datagram7 = NetDatagram()
			# Retrieve the contents of the datagram.
			if self.cReader.getData(datagram7):
				myIterator = PyDatagramIterator(datagram7)
                                print myIterator.getUint16()
                                msg = myIterator.getString()
                                
                                if msg is not None:
				    print "<-Server response:"	
                                    print msg
				    print myIterator.getUint32()
				    raw_input("Press Enter to continue...")
                                    self.received = 1
                                     # Change Health
				    taskMgr.add(self.sendRequest112, 'CP Capture')
		return task.again				    
		#Attack Ends
	
				
	
	
	
	#CP Capture Starts
        def sendRequest112(self,task):
		if(self.received):
			print "->Client request:"
			# Send a request to the server
		
		myPyDatagram112 = PyDatagram()
		prot = 112
		CP_id = raw_input('Control Point ID (1 to 5): ')
		faction_id = raw_input('press 0 for Red Or 1 for Blue ? :')
		myPyDatagram112.addUint16(prot)
		myPyDatagram112.addUint32(CP_id)
		myPyDatagram112.addUint32(faction_id)
		self.cWriter.send(myPyDatagram112,self.connection)	
					
		#print " sent"
		self.received = 0
                taskMgr.add(self.receiveResponse112,"CPCaptureRes")
        
	def receiveResponse112(self,task):
		
		while self.cReader.dataAvailable():
			datagram12 = NetDatagram()
			# Retrieve the contents of the datagram.
			if self.cReader.getData(datagram12):
				myIterator = PyDatagramIterator(datagram12)
                                print myIterator.getUint16()
                                msg = myIterator.getUint32()
                                
                                if msg is not None:
				    print "<-Server response:"
                                    print msg
				    print myIterator.getUint32()
				    raw_input("Press Enter to continue...")
                                    self.received = 1
                                     #HeartBeat
				    #raw_input("Press Enter to continue...") 
				    #taskMgr.add(self.communicate105, 'chat')
						    
		#CP Capture Ends
		
		
	# CHAT Starts
	def communicate105(self,task):
		#print "communicate"
		self.sendRequest105()
		self.receiveResponse105(task)		
                return task.again;
        		
        def sendRequest105(self):
		if(self.received):
			print "->Client request:"
			# Send a request to the server
		
		myPyDatagram105 = PyDatagram()
		prot = 105
		chat = raw_input('Insert Chat Message :')
		myPyDatagram105.addUint16(prot)
		myPyDatagram105.addString(chat)
		self.cWriter.send(myPyDatagram105,self.connection)	
					
		print " sent"
		self.received = 0
                
        
	def receiveResponse105(self,task):
		print "<-Server response:"
		while self.cReader.dataAvailable():
			datagram5 = NetDatagram()
			# Retrieve the contents of the datagram.
			if self.cReader.getData(datagram5):
				myIterator = PyDatagramIterator(datagram5)
                                print myIterator.getUint16()
                                msg = myIterator.getUint16()
                                print msg, " received"
                                if msg is not None:
                                    raw_input("Press Enter to continue...")
                                    self.received = 1
                                     # Move
				    raw_input("Press Enter to continue...") 
				    taskMgr.add(self.communicate111, 'CP state')
						    
		#CHAT Ends
	
	
	#CP State Starts
	def communicate111(self,task):
		#print "communicate"
		self.sendRequest111()
		self.receiveResponse111(task)		
                return task.again;
        		
	def sendRequest111(self):
		if(self.received):
			print "->Client request:"
			# Send a request to the server
		
		myPyDatagram111 = PyDatagram()
		prot = 111
		CP_id = raw_input('Control Point ID (1 to 5): ')
		CP_state = raw_input('Control Point state (1 red, 2 blue, 3 purple): ')
		myPyDatagram111.addUint16(prot)
		myPyDatagram111.addUint16(CP_id)
		myPyDatagram111.addUint16(CP_state)
		self.cWriter.send(myPyDatagram111,self.connection)	
					
		print " sent"
		self.received = 0
                
        
	def receiveResponse111(self,task):
		print "<-Server response:"
		while self.cReader.dataAvailable():
			datagram11 = NetDatagram()
			# Retrieve the contents of the datagram.
			if self.cReader.getData(datagram11):
				myIterator = PyDatagramIterator(datagram11)
                                print myIterator.getUint16()
                                msg = myIterator.getUint16()
                                print msg, " received"
                                if msg is not None:
                                    raw_input("Press Enter to continue...")
                                    self.received = 1
                                     # CP Capture
				    raw_input("Press Enter to continue...") 
				    taskMgr.add(self.communicate102, 'Logout')
		#CP State Ends
	
	
	# LOGOUT Starts
	def communicate102(self,task):
		#print "communicate"
		self.sendRequest102()
		self.receiveResponse102(task)		
                return task.again;
        		
        def sendRequest102(self):
		if(self.received):
			print "->Client request:"
			# Send a request to the server
		
		myPyDatagram102 = PyDatagram()
		prot = 102
		myPyDatagram102.addUint16(prot)
		self.cWriter.send(myPyDatagram102,self.connection)	
					
		print " sent"
		self.received = 0
          
	def receiveResponse102(self,task):
		print "<-Server response:"
		while self.cReader.dataAvailable():
			datagram2 = NetDatagram()
			# Retrieve the contents of the datagram.
			if self.cReader.getData(datagram2):
				myIterator = PyDatagramIterator(datagram2)
                                print myIterator.getUint16()
                                msg = myIterator.getUint16()
                                print msg, " received"
                                if msg is not None:
                                    raw_input("Press Enter to continue...")
                                    self.received = 1
                                     # Register
				    raw_input("Press Enter to continue...")
				    taskMgr.add(self.communicate301, 'Heartbeat')
						    
		#LOGOUT Ends
		
		
		#HeartBeat Starts
	def communicate301(self):
		#print "communicate"
		self.sendRequest301()
		self.receiveResponse301()		
                #return task.again;
        		
        def sendRequest301(self,task):
		if(self.received):
			print "->Client request:"
			# Send a request to the server
		
		myPyDatagram301 = PyDatagram()
		prot = 301
		myPyDatagram301.addUint16(prot)
		self.cWriter.send(myPyDatagram301,self.connection)	
		self.received = 0
                return task.again
        
	def receiveResponse301(self):
		
		while self.cReader.dataAvailable():
			datagram301 = NetDatagram()
			# Retrieve the contents of the datagram.
			if self.cReader.getData(datagram301):
				myIterator = PyDatagramIterator(datagram301)
                                p =  myIterator.getUint16()
                                if p == 213:
					un = myIterator.getString()
					cname = myIterator.getString()
					ctype = myIterator.getUint32()
					cteam = myIterator.getUint32()	
					if un ==  MyApp.uname:
						abc = 'abc'
					else:	
						print cname+' just joined a game......!! hurray'
				
					#print msg, " received"
					
					self.received = 1
                                		    
		#HeartBeat Ends
		
	#heartbeat
	def sendRequest113(self):
		if(self.received):
			print "->Client request:"
			# Send a request to the server
		
		myPyDatagram113 = PyDatagram()
		prot = 113
		myPyDatagram113.addUint16(prot)
		print MyApp.uname+'-------'
		if MyApp.uname == 'chintan':
			myPyDatagram113.addUint32(18)
		elif MyApp.uname == 'paras':
			myPyDatagram113.addUint32(35)
		else:
			myPyDatagram113.addUint32(3)
		self.cWriter.send(myPyDatagram113,self.connection)	
		self.received = 0
		#taskMgr.add(self.updateRoutine,'update113')
		#taskMgr.doMethodLater(1,self.sendRequest301,'HeatBeat')
		MyApp.retrieve113(self)
		
	def retrieve113(self):
		taskMgr.add(self.updateRoutine,'update113')
		taskMgr.doMethodLater(1,self.sendRequest301,'HeatBeat')
	
		
	def updateRoutine(self,task):
		self.receiveResponse301()
		return task.again;
Example #16
0
 def readHeader(self, datagram):
     dgi = PyDatagramIterator(datagram)
     number = dgi.getUint32()
     dtype = dgi.getUint8()
     self.notify.debug("Packet %d type %d received" % (number, dtype))
     return (dgi, dtype)
Example #17
0
 def readHeader(self, datagram):
     dgi = PyDatagramIterator(datagram)
     number = dgi.getUint32()
     type = dgi.getUint8()
     self.notify.debug("Packet %d type %d received" % (number, type))
     return (dgi, type)
Example #18
0
class MyApp(ShowBase):
    uname = None

    def __init__(self):
        ShowBase.__init__(self)

        self.cManager = QueuedConnectionManager()
        self.cListener = QueuedConnectionListener(self.cManager, 0)
        self.cReader = QueuedConnectionReader(self.cManager, 0)
        self.cWriter = ConnectionWriter(self.cManager, 0)

        host = "localhost"
        port = 6002
        self.connection = self.cManager.openTCPClientConnection(
            host, port, 10000)

        self.received = 1

        if self.connection:
            self.cReader.addConnection(self.connection)
            #taskMgr.add(self.updateRoutine, 'updateRoutine')

            # LOGIN Request Starts
            self.uname = raw_input('Enter username :'******'Enter password :'******'Login')
            if (self.received):
                print "->Client request:"
        # Send a request to the server

            myPyDatagram101 = PyDatagram()
            prot = 101
            myPyDatagram101.addUint16(prot)
            myPyDatagram101.addString(self.uname)
            myPyDatagram101.addString(self.password)
            self.cWriter.send(myPyDatagram101, self.connection)
            self.received = 0
            taskMgr.add(self.receiveResponse101, 'Login')

    def sendRequest101(self):
        if (self.received):
            print "->Client request:"
            # Send a request to the server

        myPyDatagram101 = PyDatagram()
        prot = 101
        myPyDatagram101.addUint16(prot)
        myPyDatagram101.addString(self.uname)
        myPyDatagram101.addString(self.password)
        self.cWriter.send(myPyDatagram101, self.connection)
        self.received = 0

    def receiveResponse101(self, task):

        while self.cReader.dataAvailable():
            datagram = NetDatagram()
            # Retrieve the contents of the datagram.
            if self.cReader.getData(datagram):
                self.myIterator = PyDatagramIterator(datagram)
                print "<-Server response:"
                print self.myIterator.getUint16()
                self.msg = self.myIterator.getUint32()
                self.l = self.myIterator.getUint32()
                if self.msg is not None:
                    if self.l is not 0:
                        for x in range(0, self.l):
                            print self.myIterator.getString()
                            print self.myIterator.getUint32()
                            print self.myIterator.getUint32()

                    print self.msg, " received"
                    #raw_input("Press Enter to continue...")

                    self.received = 0
                    taskMgr.remove('Login')

                    #1-Character creatopm
                    #taskMgr.add(self.sendRequest104, 'CharacterCreation')

                    #2-heartbeat of playgame after login
                    MyApp.sendRequest113(self)
        return task.again

# LOGIN Request End

        # CHARACTER CREATION Starts

    def sendRequest104(self, task):
        if (self.received):
            print "->Client request:"
            # Send a request to the server

        myPyDatagram = PyDatagram()
        prot = 104
        cname = raw_input('Character Name :')
        faction_id_104 = raw_input('press 0 for Red Or 1 for Blue ? :')
        classType_104 = raw_input('press 0 for Axe Or 1 for Sword ? :')
        myPyDatagram.addUint16(prot)
        myPyDatagram.addString(cname)
        myPyDatagram.addUint32(faction_id_104)
        myPyDatagram.addUint32(classType_104)
        self.cWriter.send(myPyDatagram, self.connection)

        print "104 sent"
        self.received = 0
        taskMgr.add(self.receiveResponse104, "characterresponse")

    def receiveResponse104(self, task):

        while self.cReader.dataAvailable():
            datagram = NetDatagram()
            # Retrieve the contents of the datagram.
            if self.cReader.getData(datagram):
                self.myIterator1 = PyDatagramIterator(datagram)
                print '------'
                print self.myIterator1.getUint16()
                self.msg = self.myIterator1.getUint32()
                if self.msg is not None:
                    print "<-Server response:"
                    print self.msg, " received"
                    raw_input("Press Enter to continue...")
                    self.received = 0
                    taskMgr.remove('CharacterCreation')
                    taskMgr.add(self.sendRequest106, 'move')

        return task.again

        #CHARACTER CREATION Ends

    # Move Starts
    def sendRequest106(self, task):
        if (self.received):
            print "->Client request:"
            # Send a request to the server

        myPyDatagram106 = PyDatagram()
        prot = 106
        xpos = raw_input('X Position :')
        ypos = raw_input('Y Position :')
        zpos = raw_input('Z Position :')
        hpos = raw_input('Heading (0 to 360):')
        ismoving = raw_input('Moving ? -- 0 for NO , 1 for YES :')
        myPyDatagram106.addUint16(prot)
        myPyDatagram106.addUint32(xpos)
        myPyDatagram106.addUint32(ypos)
        myPyDatagram106.addUint32(zpos)
        myPyDatagram106.addUint32(hpos)
        myPyDatagram106.addUint32(ismoving)
        self.cWriter.send(myPyDatagram106, self.connection)

        self.received = 0
        taskMgr.add(self.receiveResponse106, "characterresponse")

    def receiveResponse106(self, task):
        while self.cReader.dataAvailable():
            datagram6 = NetDatagram()
            # Retrieve the contents of the datagram.
            if self.cReader.getData(datagram6):

                myIterator = PyDatagramIterator(datagram6)
                print myIterator.getUint16()

                msg = myIterator.getString()

                if msg is not None:
                    print "<-Server response:"
                    print msg
                    print myIterator.getUint32()
                    print myIterator.getUint32()
                    print myIterator.getUint32()
                    print myIterator.getUint32()
                    print myIterator.getUint32()
                    raw_input("Press Enter to continue...")
                    self.received = 1
                    # Attack
                    #raw_input("Press Enter to continue...")
                    taskMgr.add(self.sendRequest108, 'health')
        return task.again
        #Move Ends

    #Change Health Starts
    def sendRequest108(self, task):
        if (self.received):
            print "->Client request:"
            # Send a request to the server

        myPyDatagram108 = PyDatagram()
        prot = 108
        change_Health = raw_input('Change in health (-100 to 100):')
        myPyDatagram108.addUint16(prot)
        myPyDatagram108.addUint32(change_Health)
        self.cWriter.send(myPyDatagram108, self.connection)

        self.received = 0
        taskMgr.add(self.receiveResponse108, "healthresponse")

    def receiveResponse108(self, task):

        while self.cReader.dataAvailable():
            datagram8 = NetDatagram()
            # Retrieve the contents of the datagram.
            if self.cReader.getData(datagram8):
                myIterator = PyDatagramIterator(datagram8)
                print myIterator.getUint16()
                msg = myIterator.getString()

                if msg is not None:
                    print "<-Server response:"
                    print msg
                    print myIterator.getUint32()
                    self.received = 1
                    # CP State
                    raw_input("Press Enter to continue...")
                    taskMgr.add(self.sendRequest107, 'attack')
        #Change Health Ends
        return task.again

    # Attack Starts
    def sendRequest107(self, task):
        if (self.received):
            print "->Client request:"
            # Send a request to the server

        myPyDatagram107 = PyDatagram()
        prot = 107
        attackId = raw_input('Attack Id (0 or 1):')
        myPyDatagram107.addUint16(prot)
        myPyDatagram107.addUint32(attackId)
        self.cWriter.send(myPyDatagram107, self.connection)

        #print " sent"
        self.received = 0
        taskMgr.add(self.receiveResponse108, "attackresponse")

    def receiveResponse107(self, task):

        while self.cReader.dataAvailable():
            datagram7 = NetDatagram()
            # Retrieve the contents of the datagram.
            if self.cReader.getData(datagram7):
                myIterator = PyDatagramIterator(datagram7)
                print myIterator.getUint16()
                msg = myIterator.getString()

                if msg is not None:
                    print "<-Server response:"
                    print msg
                    print myIterator.getUint32()
                    raw_input("Press Enter to continue...")
                    self.received = 1
                    # Change Health
                    taskMgr.add(self.sendRequest112, 'CP Capture')
        return task.again
        #Attack Ends

    #CP Capture Starts
    def sendRequest112(self, task):
        if (self.received):
            print "->Client request:"
            # Send a request to the server

        myPyDatagram112 = PyDatagram()
        prot = 112
        CP_id = raw_input('Control Point ID (1 to 5): ')
        faction_id = raw_input('press 0 for Red Or 1 for Blue ? :')
        myPyDatagram112.addUint16(prot)
        myPyDatagram112.addUint32(CP_id)
        myPyDatagram112.addUint32(faction_id)
        self.cWriter.send(myPyDatagram112, self.connection)

        #print " sent"
        self.received = 0
        taskMgr.add(self.receiveResponse112, "CPCaptureRes")

    def receiveResponse112(self, task):

        while self.cReader.dataAvailable():
            datagram12 = NetDatagram()
            # Retrieve the contents of the datagram.
            if self.cReader.getData(datagram12):
                myIterator = PyDatagramIterator(datagram12)
                print myIterator.getUint16()
                msg = myIterator.getUint32()

                if msg is not None:
                    print "<-Server response:"
                    print msg
                    print myIterator.getUint32()
                    raw_input("Press Enter to continue...")
                    self.received = 1
#HeartBeat
                    #raw_input("Press Enter to continue...")
                    #taskMgr.add(self.communicate105, 'chat')

        #CP Capture Ends

    # CHAT Starts
    def communicate105(self, task):
        #print "communicate"
        self.sendRequest105()
        self.receiveResponse105(task)
        return task.again

    def sendRequest105(self):
        if (self.received):
            print "->Client request:"
            # Send a request to the server

        myPyDatagram105 = PyDatagram()
        prot = 105
        chat = raw_input('Insert Chat Message :')
        myPyDatagram105.addUint16(prot)
        myPyDatagram105.addString(chat)
        self.cWriter.send(myPyDatagram105, self.connection)

        print " sent"
        self.received = 0

    def receiveResponse105(self, task):
        print "<-Server response:"
        while self.cReader.dataAvailable():
            datagram5 = NetDatagram()
            # Retrieve the contents of the datagram.
            if self.cReader.getData(datagram5):
                myIterator = PyDatagramIterator(datagram5)
                print myIterator.getUint16()
                msg = myIterator.getUint16()
                print msg, " received"
                if msg is not None:
                    raw_input("Press Enter to continue...")
                    self.received = 1
                    # Move
                    raw_input("Press Enter to continue...")
                    taskMgr.add(self.communicate111, 'CP state')

        #CHAT Ends

    #CP State Starts
    def communicate111(self, task):
        #print "communicate"
        self.sendRequest111()
        self.receiveResponse111(task)
        return task.again

    def sendRequest111(self):
        if (self.received):
            print "->Client request:"
            # Send a request to the server

        myPyDatagram111 = PyDatagram()
        prot = 111
        CP_id = raw_input('Control Point ID (1 to 5): ')
        CP_state = raw_input('Control Point state (1 red, 2 blue, 3 purple): ')
        myPyDatagram111.addUint16(prot)
        myPyDatagram111.addUint16(CP_id)
        myPyDatagram111.addUint16(CP_state)
        self.cWriter.send(myPyDatagram111, self.connection)

        print " sent"
        self.received = 0

    def receiveResponse111(self, task):
        print "<-Server response:"
        while self.cReader.dataAvailable():
            datagram11 = NetDatagram()
            # Retrieve the contents of the datagram.
            if self.cReader.getData(datagram11):
                myIterator = PyDatagramIterator(datagram11)
                print myIterator.getUint16()
                msg = myIterator.getUint16()
                print msg, " received"
                if msg is not None:
                    raw_input("Press Enter to continue...")
                    self.received = 1
                    # CP Capture
                    raw_input("Press Enter to continue...")
                    taskMgr.add(self.communicate102, 'Logout')
        #CP State Ends

    # LOGOUT Starts
    def communicate102(self, task):
        #print "communicate"
        self.sendRequest102()
        self.receiveResponse102(task)
        return task.again

    def sendRequest102(self):
        if (self.received):
            print "->Client request:"
            # Send a request to the server

        myPyDatagram102 = PyDatagram()
        prot = 102
        myPyDatagram102.addUint16(prot)
        self.cWriter.send(myPyDatagram102, self.connection)

        print " sent"
        self.received = 0

    def receiveResponse102(self, task):
        print "<-Server response:"
        while self.cReader.dataAvailable():
            datagram2 = NetDatagram()
            # Retrieve the contents of the datagram.
            if self.cReader.getData(datagram2):
                myIterator = PyDatagramIterator(datagram2)
                print myIterator.getUint16()
                msg = myIterator.getUint16()
                print msg, " received"
                if msg is not None:
                    raw_input("Press Enter to continue...")
                    self.received = 1
                    # Register
                    raw_input("Press Enter to continue...")
                    taskMgr.add(self.communicate301, 'Heartbeat')

        #LOGOUT Ends

        #HeartBeat Starts
    def communicate301(self):
        #print "communicate"
        self.sendRequest301()
        self.receiveResponse301()

#return task.again;

    def sendRequest301(self, task):
        if (self.received):
            print "->Client request:"
            # Send a request to the server

        myPyDatagram301 = PyDatagram()
        prot = 301
        myPyDatagram301.addUint16(prot)
        self.cWriter.send(myPyDatagram301, self.connection)
        self.received = 0
        return task.again

    def receiveResponse301(self):

        while self.cReader.dataAvailable():
            datagram301 = NetDatagram()
            # Retrieve the contents of the datagram.
            if self.cReader.getData(datagram301):
                myIterator = PyDatagramIterator(datagram301)
                p = myIterator.getUint16()
                if p == 213:
                    un = myIterator.getString()
                    cname = myIterator.getString()
                    ctype = myIterator.getUint32()
                    cteam = myIterator.getUint32()
                    if un == MyApp.uname:
                        abc = 'abc'
                    else:
                        print cname + ' just joined a game......!! hurray'

                    #print msg, " received"

                    self.received = 1

        #HeartBeat Ends

    #heartbeat
    def sendRequest113(self):
        if (self.received):
            print "->Client request:"
            # Send a request to the server

        myPyDatagram113 = PyDatagram()
        prot = 113
        myPyDatagram113.addUint16(prot)
        print MyApp.uname + '-------'
        if MyApp.uname == 'chintan':
            myPyDatagram113.addUint32(18)
        elif MyApp.uname == 'paras':
            myPyDatagram113.addUint32(35)
        else:
            myPyDatagram113.addUint32(3)
        self.cWriter.send(myPyDatagram113, self.connection)
        self.received = 0
        #taskMgr.add(self.updateRoutine,'update113')
        #taskMgr.doMethodLater(1,self.sendRequest301,'HeatBeat')
        MyApp.retrieve113(self)

    def retrieve113(self):
        taskMgr.add(self.updateRoutine, 'update113')
        taskMgr.doMethodLater(1, self.sendRequest301, 'HeatBeat')

    def updateRoutine(self, task):
        self.receiveResponse301()
        return task.again
Example #19
0
    def handleDatagram(self, dg):
        if not dg.getLength() > 0:
            return None
        dgi = PyDatagramIterator(dg)
        connection = dg.getConnection()
        msgType = dgi.getUint16()
        if msgType == CLIENT_HEARTBEAT:
            self.notify.debug('Recieved heartbeat.')
        elif msgType == CLIENT_DISCONNECT:
            if connection in self.connectionList:
                self.connectionList.remove(connection)
        elif msgType == CLIENT_SET_ZONE:
            self.handleSetZone(dgi, connection)
        elif msgType == CLIENT_REMOVE_ZONE:
            self.handleRemoveZone(dgi, connection)
        elif msgType == CLIENT_CREATE_OBJECT_REQUIRED:
            self.handleClientCreateObjectRequired(dg, dgi)
        elif msgType == CLIENT_OBJECT_UPDATE_FIELD:
            doId = dgi.getUint32()
            fieldId = dgi.getUint16()
            print "DEBUG: Got Toontown field update for Toontown doId = %d and Toontown fieldId = %d" % (doId, fieldId)
        elif msgType == CLIENT_OBJECT_DELETE:
            self.handleClientDeleteObject(dg, dgi.getUint32())
        elif msgType == CLIENT_OBJECT_DISABLE:
            self.handleClientDisable(dg, dgi.getUint32())
        elif msgType == CLIENT_ADD_INTEREST:
            #self.handleClientAddInterest(self, Client, dgi)
           
            handle = dgi.getUint16()
            contextId = dgi.getUint32()
            parentId = dgi.getUint32()
            zoneList = [dgi.getUint32()]  
            print 'DEBUG: Network :: Interest -> (%d, %d, %d)' % (handle, contextId, parentId)
            while True:
                remainingData = (dg.getLength() - dgi.getCurrentIndex())
                if remainingData == 0:
                    break
                zoneList.append(dgi.getUint32())
            if handle == 2: #Aww yeah we found the tewtow shard list interest!
                datagram = PyDatagram()
                datagram.addUint16(CLIENT_CREATE_OBJECT_REQUIRED_OTHER_RESP)
                datagram.addUint32(4618) #parentId
                datagram.addUint32(3) #zoneId
                datagram.addUint16(58) #ToontownDistrict DClass Field
                datagram.addUint32(316000000) #Shard ID (doId)
                datagram.addString('Astron is for n00bs') #District name
                datagram.addUint8(1) # 1 - Enabled 0 - Disabled
                datagram.addBool(0)
                self.cw.send(datagram, connection)
            if handle == 4:
                datagram = PyDatagram()
                datagram.addUint16(CLIENT_CREATE_OBJECT_REQUIRED_OTHER_RESP)
                datagram.addUint32(4618) #parentId
                datagram.addUint32(3) #zoneId
                datagram.addUint16(387) #ToontownDistrict DClass Field
                datagram.addUint32(900000000) #Shard ID (doId)
                datagram.addString("2013-08-22 23:49:46")
                self.cw.send(datagram, connection)
               
                datagran2 = PyDatagram()
                datagran2.addUint16(CLIENT_CREATE_OBJECT_REQUIRED_OTHER_RESP)
                datagran2.addUint32(0)
                datagran2.addUint32(0)
                datagran2.addUint16(172)
                datagran2.addUint32(637100008)
                arg = []
                datagran2.addUint16(len(arg) << 1)
                for i in arg:
                    datagran2.addInt16(int(i))
                datagran2.addUint16(len(arg) << 1)
                for i in arg:
                    datagran2.addInt16(int(i))
                datagran2.addUint16(len(arg) << 1)
                for i in arg:
                    datagran2.addInt16(int(i))
                datagran2.addUint16(len(arg) << 1)
                for i in arg:
                    datagran2.addInt16(int(i))
                #arg = [64, 65, 66, 10, 15]
                datagran2.addUint16(len(arg))
                for i in arg:
                    datagran2.addUint16(int(i))
                self.cw.send(datagran2, connection)
           
            if handle == 5:
                datagram = PyDatagram()
                datagram.addUint16(CLIENT_OBJECT_UPDATE_FIELD)
                datagram.addUint32(1) #doId
                datagram.addUint16(112) #fieldId
                datagram.addUint32(316000000)
                self.cw.send(datagram, connection)
            datagram = PyDatagram()
            datagram.addUint16(CLIENT_DONE_INTEREST_RESP)
            datagram.addUint16(handle)
            datagram.addUint32(contextId)
            datagram.addUint32(parentId)
            for zoneId in zoneList:
                datagram.addUint32(zoneId)
            self.cw.send(datagram, connection)
            datagram = PyDatagram()
            datagram.addUint16(CLIENT_DONE_INTEREST_RESP)
            datagram.addUint16(handle)
            datagram.addUint32(contextId)
            datagram.addUint32(parentId)
            for zoneId in zoneList:
                datagram.addUint32(zoneId)
            self.cw.send(datagram, connection)
        elif msgType == CLIENT_REMOVE_INTEREST:
            return None
        #Lets start with the tewtow specific msgtypes.
        elif msgType == CLIENT_LOGIN_TOONTOWN:
            self.handleClientLoginToontown(dgi, connection)
        elif msgType == CLIENT_GET_AVATARS:
            self.handleGetAvatars(dgi, connection)			

        elif msgType == CLIENT_GET_AVATARS:
            self.handleGetAvatars(dgi, connection)

        elif msgType == CLIENT_CREATE_AVATAR:
            #return None
            datagram = PyDatagram()
            datagram.addUint16(CLIENT_CREATE_AVATAR_RESP)
            datagram.addUint16(0) #echoContext
            datagram.addUint8(0) #returnCode
            datagram.addUint32(1)
            self.cw.send(datagram, connection)
        elif msgType == CLIENT_SET_NAME_PATTERN:
            datagram = PyDatagram()
            datagram.addUint16(CLIENT_SET_NAME_PATTERN_ANSWER)
            datagram.addUint32(1)
            datagram.addUint8(0)
            self.cw.send(datagram, connection)
        elif msgType == CLIENT_SET_AVATAR:
                packer = DCPacker()
                dclass = self.dclassesByName['DistributedToon']
                datagram = PyDatagram()
                datagram.addUint16(15) #CLIENT_GET_AVATAR_DETAILS_RESP Msgtype
                datagram.addUint32(1)
                datagram.addUint8(0)
                datagram.addString('Infinity') #Toon name
                datagram.addString('Unknown')
                datagram.addUint32(0)
                datagram.addBool(1)
                datagram.addString('t\x05\x01\x00\x01\x39\x1b\x33\x1b\31\x1b\x14\x00\x14\x14') #DNA (blob)
                datagram.addUint8(1) #GM
                datagram.addUint16(2500) #Max Bank
                datagram.addUint16(0) #Current Bank
                datagram.addUint16(40) #Max Jellybeans
                datagram.addUint16(0) #Current Jellybeans
                datagram.addUint16(15) #Max Laff
                datagram.addUint16(15) #Current Laff
                datagram.addUint32(0) #Battle ID
                datagram.addString('Unknown') #Experience (blob)
                datagram.addUint8(10) #Max Gag Carry
 
                #setTrackAccess
 
                field = dclass.getField(13)
                print field
                arg = [0, 0, 0, 0, 1, 1, 0]
                datagram.addUint16(len(arg) << 1)
                for i in arg:
                    datagram.addInt16(int(i))

                datagram.addInt8(3) #Track Progress 1
                datagram.addUint32(9) #Track Progress 2
 
               
 
                #setTrackBonusLevel
 
                field = dclass.getField(15)
                print field
 
                arg = [0, 0, 0, 0, 1, 1, 0]
                datagram.addUint16(len(arg))
                for i in arg:
                    datagram.addInt8(int(i))

                datagram.addString('') #setInventory
 
                #setMaxNPCFriends (Uint16)
 
                datagram.addUint16(16)
               
 
                arg = []
                datagram.addUint16(len(arg) * 5)
                for i in arg:
                    datagram.addUint32(int(i))
 
                datagram.addUint32(316000000) #setDefaultShard
 
                datagram.addUint32(2000) #setDefaultZone
 
                datagram.addString('')
 
 
                field = dclass.getField(22)
                print field
 
                arg = [1000, 2000 , 3000, 4000, 5000, 6000, 8000, 9000, 10000, 11000, 12000, 13000]
                datagram.addUint16(len(arg) << 2)
                for i in arg:
                    datagram.addUint32(int(i))
 

                field = dclass.getField(23)
                print field
 
                arg = [1000, 2000 , 3000, 4000, 5000, 6000, 8000, 9000, 10000, 11000, 12000, 13000]
                datagram.addUint16(len(arg) << 2)
                for i in arg:
                    datagram.addUint32(int(i))
 
                datagram.addString('') #setInterface
 
                datagram.addUint32(2000) #setLastHood
 
                datagram.addUint8(1) #setTutorialAck
 
                datagram.addUint32(25) #setMaxClothes
 
                #setClothesTopsList(uint8array)
 
                arg = []
                datagram.addUint16(len(arg))
                for i in arg:
                    datagram.addUint8(int(i))
 
 
                #setClothesBottomsList(uint8array)
 
                arg = []
                datagram.addUint16(len(arg))
                for i in arg:
                    datagram.addUint8(int(i))
 
                datagram.addUint32(0) #setMaxAccessories
 
                #setHatList(uint8array)
 
                arg = []
                datagram.addUint16(len(arg))
                for i in arg:
                    datagram.addUint8(int(i))
 
                #setGlassessList(uint8array)
 
                arg = []
                datagram.addUint16(len(arg))
                for i in arg:
                    datagram.addUint8(int(i))
 
                #setBackpackList(uint8array)
 
                arg = []
                datagram.addUint16(len(arg))
                for i in arg:
                    datagram.addUint8(int(i))
 
                #setShoesList(uint8array)
 
                arg = []
                datagram.addUint16(len(arg))
                for i in arg:
                    datagram.addUint8(int(i))
 
                datagram.addUint8(0) #setHat 1
                datagram.addUint8(0) #setHat 2
                datagram.addUint8(0) #setHat 3
 
                datagram.addUint8(0) #setGlasses 1
                datagram.addUint8(0) #setGlasses 2
                datagram.addUint8(0) #setGlasses 3
 
                datagram.addUint8(0) #setBackpack 1
                datagram.addUint8(0) #setBackpack 2
                datagram.addUint8(0) #setBackpack 3
 
                datagram.addUint8(0) #setShoes 1
                datagram.addUint8(0) #setShoes 2
                datagram.addUint8(0) #setShoes 3
 
                datagram.addString('')
 
                #setEmoteAccess(uint8array)
 
                arg = []
                datagram.addUint16(len(arg))
                for i in arg:
                    datagram.addUint8(int(i))
 
                #setCustomMeeages(uint16array)
 
                arg = []
                datagram.addUint16(len(arg) << 1)
                for i in arg:
                    datagram.addUint16(int(i))
 
                datagram.addString('') #setResistanceMessages
 
                #setPetTrickPhrases(uint8array)
 
                arg = []
                datagram.addUint16(len(arg))
                for i in arg:
                    datagram.addUint8(int(i))
 
                datagram.addUint16(0) #setCatalogSchedule 1
                datagram.addUint32(0) #setVatalogSchedule 2
 
                datagram.addString('') #setCatalog 1
                datagram.addString('') #setCatalog 2
                datagram.addString('') #setCatalog 3
 
                datagram.addString('') #setMailBoxContents
 
                datagram.addString('') #SetDeliverySchedule
 
                datagram.addString('') #setGiftSchedule
 
                datagram.addString('') #setAwardMailboxContents
 
                datagram.addString('') #setAwardSchedule
 
                datagram.addUint8(0) #setAwardNotify
 
                datagram.addUint8(0) #setCatalogNotify 1
 
                datagram.addUint8(0) #setCatalogNotify 2
 
                datagram.addUint8(0) #setSpeedChatStyleIndex
 
                #setTeleportAccess (uint32array)
 
                arg = [1000, 2000 , 3000, 4000, 5000, 6000, 8000, 9000, 10000, 11000, 12000, 13000]
                datagram.addUint16(len(arg) << 2)
                for i in arg:
                    datagram.addUint32(int(i))
 
                #setCogStatus (uint32array)
                arg = []
                datagram.addUint16(len(arg) << 2)
                for i in arg:
                    datagram.addUint32(int(i))
 
                #setCogCount (uint32array)
                arg = []
                datagram.addUint16(len(arg) << 2)
                for i in arg:
                    datagram.addUint32(int(i))
 
                #setCogRadar(uint8array)
 
                arg = []
                datagram.addUint16(len(arg))
                for i in arg:
                    datagram.addUint8(int(i))
 
                #setBuildingRadar(uint8array)
 
                arg = []
                datagram.addUint16(len(arg))
                for i in arg:
                    datagram.addUint8(int(i))
 
                #setCogLevels(uint8array)
 
                arg = [0, 0, 0, 0]
                datagram.addUint16(len(arg))
                for i in arg:
                    datagram.addUint8(int(i))
 
                #setCogTypes(uint8array)
 
                arg = [0, 0, 0, 0]
                datagram.addUint16(len(arg))
                for i in arg:
                    datagram.addUint8(int(i))
 
                #setCogParts (uint32array)
                arg = [0, 0, 0, 0]
                datagram.addUint16(len(arg) << 2)
                for i in arg:
                    datagram.addUint32(int(i))
 
                #setCogMerits(uint16array)
 
                arg = [0, 0, 0, 0]
                datagram.addUint16(len(arg) << 1)
                for i in arg:
                    datagram.addUint16(int(i))
 
                datagram.addUint32(0) #setHouseId
 
                #setQuests (uint32array)
                arg = []
                datagram.addUint16(len(arg) << 2)
                for i in arg:
                    datagram.addUint32(int(i))
 
                #setQuestHistory(uint16array)
 
                arg = []
                datagram.addUint16(len(arg) << 1)
                for i in arg:
                    datagram.addUint16(int(i))
 
                datagram.addUint8(0) #setRewardHistory 1
 
                #setRewardHistory 2(uint16array)
 
                arg = []
                datagram.addUint16(len(arg) << 1)
                for i in arg:
                    datagram.addUint16(int(i))
 
 
                datagram.addUint8(1) #setQuestCarryLimit
 
                datagram.addInt16(0) #setCheesyEffect 1
                datagram.addUint32(0) #setCheesyEffect 2
                datagram.addUint32(0) #setCheesyEffect 3
 
                datagram.addUint8(0) #setPosIndex
 
                #setFishCollection 1(uint8array)
 
                arg = []
                datagram.addUint16(len(arg))
                for i in arg:
                    datagram.addUint8(int(i))
 
                #setFishCollection 2(uint8array)
 
                arg = []
                datagram.addUint16(len(arg))
                for i in arg:
                    datagram.addUint8(int(i))
 
                #setFishCollection 3(uint16array)
 
                arg = []
                datagram.addUint16(len(arg) << 1)
                for i in arg:
                    datagram.addUint16(int(i))
 
                datagram.addUint8(20) #setMaxFishTank
 
                #setFishTank 1(uint8array)
 
                arg = []
                datagram.addUint16(len(arg))
                for i in arg:
                    datagram.addUint8(int(i))
 
                #setFishTank 2(uint8array)
 
                arg = []
                datagram.addUint16(len(arg))
                for i in arg:
                    datagram.addUint8(int(i))
 
                #setFishTank 3(uint16array)
 
                arg = []
                datagram.addUint16(len(arg) << 1)
                for i in arg:
                    datagram.addUint16(int(i))
 
                datagram.addUint8(1) #setFishingRod
 
                #setFishingTrophies(uint8array)
 
                arg = []
                datagram.addUint16(len(arg))
                for i in arg:
                    datagram.addUint8(int(i))
 
                #setFlowerCollection 1(uint8array)
 
                arg = []
                datagram.addUint16(len(arg))
                for i in arg:
                    datagram.addUint8(int(i))
 
                #setFlowerCollection 2(uint8array)
 
                arg = []
                datagram.addUint16(len(arg))
                for i in arg:
                    datagram.addUint8(int(i))
 
                #setFlowerBasket 1(uint8array)
 
                arg = []
                datagram.addUint16(len(arg))
                for i in arg:
                    datagram.addUint8(int(i))
 
                #setFlowerBasket 2(uint8array)
 
                arg = []
                datagram.addUint16(len(arg))
                for i in arg:
                    datagram.addUint8(int(i))
 
                datagram.addUint8(25) #setMaxFlowerBasket
 
                #setGardenTrophies(uint8array)
 
                arg = []
                datagram.addUint16(len(arg))
                for i in arg:
                    datagram.addUint8(int(i))
 
                datagram.addUint8(1) #setShovel
 
                datagram.addUint32(0) #setShovelSkill
 
                datagram.addUint8(1) #setWateringCan
 
                datagram.addUint32(0) #setWateringCanSkill
 
                datagram.addUint32(0) #setPetID
 
                datagram.addUint8(0) #setPetTutorialDone
 
                datagram.addUint8(0) #setFishBingoTutorialDone
 
                datagram.addUint8(0) #setFishBingoMarkTutorialDone
 
                datagram.addInt8(0) #setKartBodyType
 
                datagram.addInt8(0) #setKartBodyColor
 
                datagram.addInt8(0) #setKartAccessoryColor
 
                datagram.addInt8(0) #setKartEngineBlockType
 
                datagram.addInt8(0) #setKartSpoilerType
 
                datagram.addInt8(0) #setKartFrontWheelWellType
 
                datagram.addInt8(0) #setKartBackWheelWellType
 
                datagram.addInt8(0) #setKartRimType
 
                datagram.addInt8(0) #setKartDecalType
 
                datagram.addUint32(100) #setTickets
 
                datagram.addUint8(0) #setKartingHistory 1
                datagram.addUint8(0) #setKartingHistory 2
                datagram.addUint8(0) #setKartingHistory 3
                datagram.addUint8(0) #setKartingHistory 4
                datagram.addUint8(0) #setKartingHistory 5
                datagram.addUint8(0) #setKartingHistory 6
                datagram.addUint8(0) #setKartingHistory 7
                datagram.addUint8(0) #setKartingHistory 8
                datagram.addUint8(0) #setKartingHistory 9
                datagram.addUint8(0) #setKartingHistory 10
                datagram.addUint8(0) #setKartingHistory 11
                datagram.addUint8(0) #setKartingHistory 12
                datagram.addUint8(0) #setKartingHistory 13
                datagram.addUint8(0) #setKartingHistory 14
                datagram.addUint8(0) #setKartingHistory 15
                datagram.addUint8(0) #setKartingHistory 16
 
               
                datagram.addUint8(0) #setKartingTrophies 1
                datagram.addUint8(0) #setKartingTrophies 2
                datagram.addUint8(0) #setKartingTrophies 3
                datagram.addUint8(0) #setKartingTrophies 4
                datagram.addUint8(0) #setKartingTrophies 5
                datagram.addUint8(0) #setKartingTrophies 6
                datagram.addUint8(0) #setKartingTrophies 7
                datagram.addUint8(0) #setKartingTrophies 8
                datagram.addUint8(0) #setKartingTrophies 9
                datagram.addUint8(0) #setKartingTrophies 11
                datagram.addUint8(0) #setKartingTrophies 11
                datagram.addUint8(0) #setKartingTrophies 12
                datagram.addUint8(0) #setKartingTrophies 13
                datagram.addUint8(0) #setKartingTrophies 14
                datagram.addUint8(0) #setKartingTrophies 15
                datagram.addUint8(0) #setKartingTrophies 16
                datagram.addUint8(0) #setKartingTrophies 17
                datagram.addUint8(0) #setKartingTrophies 18
                datagram.addUint8(0) #setKartingTrophies 19
                datagram.addUint8(0) #setKartingTrophies 20
                datagram.addUint8(0) #setKartingTrophies 21
                datagram.addUint8(0) #setKartingTrophies 22
                datagram.addUint8(0) #setKartingTrophies 23
                datagram.addUint8(0) #setKartingTrophies 24
                datagram.addUint8(0) #setKartingTrophies 25
                datagram.addUint8(0) #setKartingTrophies 26
                datagram.addUint8(0) #setKartingTrophies 27
                datagram.addUint8(0) #setKartingTrophies 28
                datagram.addUint8(0) #setKartingTrophies 29
                datagram.addUint8(0) #setKartingTrophies 30
                datagram.addUint8(0) #setKartingTrophies 31
                datagram.addUint8(0) #setKartingTrophies 32
                datagram.addUint8(0) #setKartingTrophies 33
 
                datagram.addUint32(0) #setKartingPersonalBest 1
                datagram.addUint32(0) #setKartingPersonalBest 2
                datagram.addUint32(0) #setKartingPersonalBest 3
                datagram.addUint32(0) #setKartingPersonalBest 4
                datagram.addUint32(0) #setKartingPersonalBest 5
                datagram.addUint32(0) #setKartingPersonalBest 6
 
                datagram.addUint32(0) #setKartingPersonalBest2 1
                datagram.addUint32(0) #setKartingPersonalBest2 2
                datagram.addUint32(0) #setKartingPersonalBest2 3
                datagram.addUint32(0) #setKartingPersonalBest2 4
                datagram.addUint32(0) #setKartingPersonalBest2 5
                datagram.addUint32(0) #setKartingPersonalBest2 6
                datagram.addUint32(0) #setKartingPersonalBest2 7
                datagram.addUint32(0) #setKartingPersonalBest2 8
                datagram.addUint32(0) #setKartingPersonalBest2 9
                datagram.addUint32(0) #setKartingPersonalBest2 10
                datagram.addUint32(0) #setKartingPersonalBest2 11
                datagram.addUint32(0) #setKartingPersonalBest2 12
 
                #setKartAccessoriesOwned [16]
                datagram.addInt8(0)
                datagram.addInt8(0)
                datagram.addInt8(0)
                datagram.addInt8(0)
                datagram.addInt8(0)
                datagram.addInt8(0)
                datagram.addInt8(0)
                datagram.addInt8(0)
                datagram.addInt8(0)
                datagram.addInt8(0)
                datagram.addInt8(0)
                datagram.addInt8(0)
                datagram.addInt8(0)
                datagram.addInt8(0)
                datagram.addInt8(0)
                datagram.addInt8(0)
 
                #setCogSummonsEarned
                arg = []
                datagram.addUint16(len(arg))
                for i in arg:
                    datagram.addUint8(int(i))
 
                datagram.addUint8(0) #setGardenStart
 
                #setGolfHistory [18]
                datagram.addUint16(0)
                datagram.addUint16(0)
                datagram.addUint16(0)
                datagram.addUint16(0)
                datagram.addUint16(0)
                datagram.addUint16(0)
                datagram.addUint16(0)
                datagram.addUint16(0)
                datagram.addUint16(0)
                datagram.addUint16(0)
                datagram.addUint16(0)
                datagram.addUint16(0)
                datagram.addUint16(0)
                datagram.addUint16(0)
                datagram.addUint16(0)
                datagram.addUint16(0)
                datagram.addUint16(0)
                datagram.addUint16(0)
 
                #setPackedGolfHoleBest [18]
                datagram.addUint8(0)
                datagram.addUint8(0)
                datagram.addUint8(0)
                datagram.addUint8(0)
                datagram.addUint8(0)
                datagram.addUint8(0)
                datagram.addUint8(0)
                datagram.addUint8(0)
                datagram.addUint8(0)
                datagram.addUint8(0)
                datagram.addUint8(0)
                datagram.addUint8(0)
                datagram.addUint8(0)
                datagram.addUint8(0)
                datagram.addUint8(0)
                datagram.addUint8(0)
                datagram.addUint8(0)
                datagram.addUint8(0)
 
                #setGolfCourseBest
                datagram.addUint8(0)
                datagram.addUint8(0)
                datagram.addUint8(0)
 
                datagram.addUint8(0) #setPinkSlips
 
                datagram.addUint8(0) #setNametagStyle

                self.cw.send(datagram, connection)

               
        elif msgType == CLIENT_SET_WISHNAME:
            #print dgi
            avId = dgi.getUint16()
            unknown = dgi.getString()
            pendingName = dgi.getString()
            print pendingName
            divide = pendingName.split(' ')
            lenStr = len(divide)
            s = 0
            while s != lenStr:
                nameCheck = divide[s]
                s += 1
            with open ("TewtowBlacklist.txt", "r") as badWordFile:
                data=badWordFile.readlines()
                for word in data:
                    chrList = list(word)
                    if chrList.count('\n') == 1:
                        chrList.remove('\n')
                    badWord = ''.join(chrList)
                    if nameCheck == badWord:
                        print 'Bad name detected, are you trying to get banned?'
                        datagram = PyDatagram()
                        datagram.addUint16(CLIENT_SET_WISHNAME_RESP)
                        datagram.addUint32(avId)
                        datagram.addUint16(0)
                        datagram.addString('NO')
                        datagram.addString('NO')
                        datagram.addString('')
                        message = PyDatagram()
                        message.addUint16(CLIENT_SYSTEM_MESSAGE)
                        message.addString('Sorry, That name is not allowed.')
                        self.cw.send(message, connection)
                    else:
                        datagram = PyDatagram()
                        datagram.addUint16(CLIENT_SET_WISHNAME_RESP)
                        datagram.addUint32(avId)
                        datagram.addUint16(0)
                        datagram.addString('NO')
                        datagram.addString('')
                        datagram.addString('NO')
                        self.cw.send(datagram, connection)
 
        elif msgType == CLIENT_OBJECT_LOCATION:
            doId = dgi.getUint32()
            parentId = dgi.getUint32()
            zoneId = dgi.getUint32()
            print 'Network :: Location -> (%d, %d, %d)' % (doId, parentId, zoneId)
            if zoneId == 2000:
               
                #DistributedMickey
                datagram = PyDatagram()
                datagram.addUint16(CLIENT_CREATE_OBJECT_REQUIRED_OTHER_RESP)
                datagram.addUint32(316000000) #parentId
                datagram.addUint32(2) #zoneId
                #datagram.addUint16(83)
                datagram.addUint16(65)
                datagram.addUint32(433103088)
                datagram.addString("a")
                datagram.addString("a")
                datagram.addInt16(0)
                self.cw.send(datagram, connection)
           
            if zoneId == 1000:
                datagram = PyDatagram()
                datagram.addUint16(CLIENT_CREATE_OBJECT_REQUIRED_OTHER_RESP)
                datagram.addUint32(316000000) #parentId
                datagram.addUint32(2) #zoneId
                #datagram.addUint16(83)
                datagram.addUint16(108)
                datagram.addUint32(433103088)
                datagram.addString("DockedEast")
                datagram.addInt16(100)
                self.cw.send(datagram, connection)
            if zoneId == 5000:
                '''
                datagram = PyDatagram()
                datagram.addUint16(CLIENT_CREATE_OBJECT_REQUIRED_OTHER_RESP)
                datagram.addUint32(316000000) #parentId
                datagram.addUint32(2) #zoneId
                datagram.addUint16(68)
                datagram.addUint32(433103088)
                datagram.addString("a")
                datagram.addString("a")
                datagram.addInt16(0)
                self.cw.send(datagram, connection)
                '''
               
        #self.cw.send(datagram, connection)
            if zoneId == 2000:
                pass
                '''#message = PyDatagram()
                #message.addUint16(CLIENT_SYSTEM_MESSAGE)
                #message.addString('Surprised? I thought so. :P')
                #self.cw.send(message, connection)
                datagram = PyDatagram()
                datagram.addUint16(CLIENT_CREATE_OBJECT_REQUIRED_OTHER_RESP)
                datagram.addUint32(316000000) #parentId
                datagram.addUint32(2) #zoneId
                #datagram.addUint16(83)
                datagram.addUint16(65)
                datagram.addUint32(433103088)
                datagram.addString("b")
                datagram.addString("a")
                datagram.addInt16(0)
                self.cw.send(datagram, connection)'''
               
            if zoneId == 3000:
                datagram = PyDatagram()
                datagram.addUint16(CLIENT_CREATE_OBJECT_REQUIRED_OTHER_RESP)
                datagram.addUint32(316000000) #parentId
                datagram.addUint32(2) #zoneId
                #datagram.addUint16(83)
                datagram.addUint16(79)
                datagram.addUint32(433103089)
                datagram.addString("a")
                datagram.addString("a")
                datagram.addInt16(0)
                self.cw.send(datagram, connection)
               
                datagram = PyDatagram()
                datagram.addUint16(CLIENT_GET_STATE_RESP)
                self.cw.send(datagram, connection)

			
        else:
            self.notify.warning('Got a datagram %d; but could not handle it.' % msgType)