def primaryFirePress(self, data=None):
     dg = PyDatagram()
     self.addPrimaryPressData(dg)
     self.avatar.sendUpdate('primaryFirePress', [dg.getMessage()])
Exemplo n.º 2
0
 def makeSwapReadyDatagram(self):
     datagram = PyDatagram()
     datagram.addUint32(self.packetNumber)
     self.packetNumber = self.packetNumber + 1
     datagram.addUint8(CLUSTER_SWAP_READY)
     return datagram
Exemplo n.º 3
0
 def sendAIHello(self):
     dg = PyDatagram()
     dg.addUint16(AI_HELLO_CMU)
     self.send(dg)
Exemplo n.º 4
0
 def send(self, text):
     self.datagram = PyDatagram()
     self.datagram.addString("chat")
     self.datagram.addString(text)
     self.client.cWriter.send(self.datagram, self.client.Connection)
Exemplo n.º 5
0
 def sendData(self, data, con):
     myPyDatagram = PyDatagram()
     myPyDatagram.addString(self.encode(data, self.compress))
     self.cWriter.send(myPyDatagram, con)
Exemplo n.º 6
0
def dg_goto_day(game):
    dg = PyDatagram()
    dg.addUint8(GOTO_DAY)
    dg.addUint8(game.day_count)
    dg.addUint8(game.red_room)
    return dg
 def unsandboxClient(self, sender):
     dg = PyDatagram()
     dg.addServerHeader(sender, self.air.ourChannel, CLIENTAGENT_SET_STATE)
     dg.addUint16(2)  # 2 = established
     self.air.send(dg)
    def handleClientObjectUpdateField(self, datagram, dgi, targeted = False):
        """ Received an update request from a client. """
        connection = datagram.getConnection()
        client = self.clientsByConnection[connection]

        if targeted:
            targetId = dgi.getUint32()
        doId = dgi.getUint32()
        fieldId = dgi.getUint16()

        doIdBase = self.getDoIdBase(doId)
        owner = self.clientsByDoIdBase.get(doIdBase)
        object = owner and owner.objectsByDoId.get(doId)
        if not object:
            self.notify.warning(
                "Ignoring update for unknown object %s from client %s" % (
                doId, client.doIdBase))
            return
        
        dcfield = object.dclass.getFieldByIndex(fieldId)
        if dcfield == None:
            self.notify.warning(
                "Ignoring update for field %s on object %s from client %s; no such field for class %s." % (
                fieldId, doId, client.doIdBase, object.dclass.getName()))

        if client != owner:
            # This message was not sent by the object's owner.
            if not dcfield.hasKeyword('clsend') and not dcfield.hasKeyword('p2p'):
                self.notify.warning(
                    "Ignoring update for %s.%s on object %s from client %s: not owner" % (
                    object.dclass.getName(), dcfield.getName(), doId, client.doIdBase))
                return

        # We reformat the message slightly to insert the sender's
        # doIdBase.
        dg = PyDatagram()
        dg.addUint16(OBJECT_UPDATE_FIELD_CMU)
        dg.addUint32(client.doIdBase)
        dg.addUint32(doId)
        dg.addUint16(fieldId)
        dg.appendData(dgi.getRemainingBytes())

        if targeted:
            # A targeted update: only to the indicated client.
            target = self.clientsByDoIdBase.get(targetId)
            if not target:
                self.notify.warning(
                    "Ignoring targeted update to %s for %s.%s on object %s from client %s: target not known" % (
                    targetId,
                    dclass.getName(), dcfield.getName(), doId, client.doIdBase))
                return
            self.cw.send(dg, target.connection)
            self.needsFlush.add(target)
            
        elif dcfield.hasKeyword('p2p'):
            # p2p: to object owner only
            self.cw.send(dg, owner.connection)
            self.needsFlush.add(owner)
                        
        elif dcfield.hasKeyword('broadcast'):
            # Broadcast: to everyone except orig sender
            self.sendToZoneExcept(object.zoneId, dg, [client])
            
        elif dcfield.hasKeyword('reflect'):
            # Reflect: broadcast to everyone including orig sender
            self.sendToZoneExcept(object.zoneId, dg, [])

        else:
            self.notify.warning(
                "Message is not broadcast or p2p")
Exemplo n.º 9
0
def dg_goto_night(game):
    dg = PyDatagram()
    dg.addUint8(GOTO_NIGHT)
    return dg
 def reloadRelease(self, data=None):
     dg = PyDatagram()
     self.addReloadReleaseData(dg)
     self.avatar.sendUpdate('reloadRelease', [dg.getMessage()])
 def rpc_kickChannel(self, channel, code, reason):
     datagram = PyDatagram()
     datagram.addServerHeader(channel, self.air.ourChannel, CLIENTAGENT_EJECT)
     datagram.addUint16(code)
     datagram.addString(reason)
     self.air.send(datagram)
 def secondaryFireRelease(self, data=None):
     dg = PyDatagram()
     self.addSecondaryReleaseData(dg)
     self.avatar.sendUpdate('secondaryFireRelease', [dg.getMessage()])
 def secondaryFirePress(self, data=None):
     dg = PyDatagram()
     self.addSecondaryPressData(dg)
     self.avatar.sendUpdate('secondaryFirePress', [dg.getMessage()])
 def primaryFireRelease(self, data=None):
     dg = PyDatagram()
     self.addPrimaryReleaseData(dg)
     self.avatar.sendUpdate('primaryFireRelease', [dg.getMessage()])
Exemplo n.º 15
0
def dg_update_vote_count(num):
    dg = PyDatagram()
    dg.addUint8(UPDATE_VOTE_COUNT)
    dg.addUint8(num)
    return dg
Exemplo n.º 16
0
def dg_you_are_killer():
    dg = PyDatagram()
    dg.addUint8(YOU_ARE_KILLER)
    return dg
Exemplo n.º 17
0
def dg_start_game(game):
    dg = PyDatagram()
    dg.addUint8(START_GAME)

    return dg
Exemplo n.º 18
0
def dg_kill_failed_empty_room():
    dg = PyDatagram()
    dg.addUint8(KILL_FAILED_EMPTY_ROOM)
    return dg
Exemplo n.º 19
0
 def getBlob(self, store = 0):
     dg = PyDatagram()
     dg.addUint8(CatalogItemVersion)
     encodeCatalogItem(dg, self, store)
     return dg.getMessage()
Exemplo n.º 20
0
def dg_deliver_pid(pid):
    dg = PyDatagram()
    dg.addUint8(DELIVER_PID)
    dg.addUint16(pid)
    return dg
Exemplo n.º 21
0
 def sendDeleteMsg(self, doId):
     datagram = PyDatagram()
     datagram.addUint16(CLIENT_OBJECT_DELETE)
     datagram.addUint32(doId)
     self.send(datagram)
Exemplo n.º 22
0
def dg_how_many_in_room(num):
    dg = PyDatagram()
    dg.addUint8(NUM_IN_ROOM)
    dg.addUint8(num)
    return dg
Exemplo n.º 23
0
 def printNetString(self):
     string = self.makeNetString()
     dg = PyDatagram(string)
     dg.dumpHex(ostream)
Exemplo n.º 24
0
def dg_deliver_game(game):
    dg = PyDatagram()
    dg.addUint8(DELIVER_GAME)
    dg.addUint16(game.gid)
    dg.addUint8(game.get_vote_count())
    return dg
Exemplo n.º 25
0
 def makeSwapNowDatagram(self):
     datagram = PyDatagram()
     datagram.addUint32(self.packetNumber)
     self.packetNumber = self.packetNumber + 1
     datagram.addUint8(CLUSTER_SWAP_NOW)
     return datagram
Exemplo n.º 26
0
def dg_kick_from_game(reason):
    dg = PyDatagram()
    dg.addUint8(KICKED_FROM_GAME)
    dg.addUint8(reason)
    return dg
Exemplo n.º 27
0
 def makeExitDatagram(self):
     datagram = PyDatagram()
     datagram.addUint32(self.packetNumber)
     self.packetNumber = self.packetNumber + 1
     datagram.addUint8(CLUSTER_EXIT)
     return datagram
Exemplo n.º 28
0
def dg_kill_connection():
    dg = PyDatagram()
    dg.addUint8(KILLED_CONNECTION)
    return dg
Exemplo n.º 29
0
 def sendLoginMsg(self):
     cr = self.cr
     tokenString = ''
     access = base.config.GetString('force-paid-status', '')
     if access == '':
         access = 'FULL'
     elif access == 'paid':
         access = 'FULL'
     elif access == 'unpaid':
         access = 'VELVET_ROPE'
     elif access == 'VELVET':
         access = 'VELVET_ROPE'
     else:
         self.notify.error(
             "don't know what to do with force-paid-status %s" % access)
     tokenString += 'TOONTOWN_ACCESS=%s&' % access
     tokenString += 'TOONTOWN_GAME_KEY=%s&' % self.loginName
     wlChatEnabled = 'YES'
     if base.config.GetString('otp-whitelist', 'YES') == 'NO':
         wlChatEnabled = 'NO'
     tokenString += 'WL_CHAT_ENABLED=%s &' % wlChatEnabled
     openChatEnabled = 'NO'
     if cr.openChatAllowed:
         openChatEnabled = 'YES'
     tokenString += 'OPEN_CHAT_ENABLED=%s&' % openChatEnabled
     createFriendsWithChat = 'NO'
     if cr.allowSecretChat:
         createFriendsWithChat = 'CODE'
     tokenString += 'CREATE_FRIENDS_WITH_CHAT=%s&' % createFriendsWithChat
     chatCodeCreationRule = 'No'
     if cr.allowSecretChat:
         if base.config.GetBool('secret-chat-needs-parent-password', 0):
             chatCodeCreationRule = 'PARENT'
         else:
             chatCodeCreationRule = 'YES'
     tokenString += 'CHAT_CODE_CREATION_RULE=%s&' % chatCodeCreationRule
     DISLID = config.GetInt('fake-DISL-PlayerAccountId', 0)
     if not DISLID:
         NameStringId = 'DISLID_%s' % self.loginName
         DISLID = config.GetInt(NameStringId, 0)
     tokenString += 'ACCOUNT_NUMBER=%d&' % DISLID
     tokenString += 'ACCOUNT_NAME=%s&' % self.loginName
     tokenString += 'GAME_USERNAME=%s&' % self.loginName
     tokenString += 'ACCOUNT_NAME_APPROVED=TRUE&'
     tokenString += 'FAMILY_NUMBER=&'
     tokenString += 'Deployment=US&'
     withParentAccount = base.config.GetBool('dev-with-parent-account', 0)
     if withParentAccount:
         tokenString += 'TOON_ACCOUNT_TYPE=WITH_PARENT_ACCOUNT&'
     else:
         tokenString += 'TOON_ACCOUNT_TYPE=NO_PARENT_ACCOUNT&'
     tokenString += 'valid=true'
     self.notify.info('tokenString=\n%s' % tokenString)
     datagram = PyDatagram()
     datagram.addUint16(CLIENT_LOGIN_TOONTOWN)
     playToken = tokenString
     datagram.addString(playToken)
     datagram.addString('dev')
     datagram.addUint32(cr.hashVal)
     datagram.addUint32(4)
     magicWords = base.config.GetString('want-magic-words', '')
     datagram.addString(magicWords)
     cr.send(datagram)
Exemplo n.º 30
0
 def sendBossSpawned(self):
     pkg = PyDatagram()
     pkg.addUint16(BOSS_SPAWNED)
     base.sr.sendDatagram(pkg)