Exemplo n.º 1
0
    def process_modules(self):
        '''
        This method is called when it's time to write the output.

        For nuggets.nri, we use an encrypted datagram.
        The datagram is read by core.cxx, which populates Python frozen array.

        Datagram format:

        uint32 numModules
        for each module:
            string name
            int32 size *
            data(abs(size))

        * Negative size means the file was an __init__
        '''

        dg = PyDatagram()
        dg.addUint32(len(self.modules))

        for moduleName in self.modules:
            data, size = self.modules[moduleName]

            dg.addString(moduleName)
            dg.addInt32(size)
            dg.appendData(data)

        data = dg.getMessage()

        iv = '\0' * 16
        key = 'AmazingNuggetKey'
        return aes.encrypt(data, key, iv)
Exemplo n.º 2
0
    def writeServerEvent(self, logtype, *args, **kwargs):
        """
        Write an event to the central Event Logger, if one is configured.

        The purpose of the Event Logger is to keep a game-wide record of all
        interesting in-game events that take place. Therefore, this function
        should be used whenever such an interesting in-game event occurs.
        """

        if self.eventSocket is None:
            return  # No event logger configured!

        log = collections.OrderedDict()
        log['type'] = logtype
        log['sender'] = self.eventLogId

        for i, v in enumerate(args):
            # +1 because the logtype was _0, so we start at _1
            log['_%d' % (i + 1)] = v

        log.update(kwargs)

        dg = PyDatagram()
        msgpack_encode(dg, log)
        self.eventSocket.Send(dg.getMessage())
Exemplo n.º 3
0
    def makeNetString(self):
        dg = PyDatagram()

        for part in self.dna:
            part.makeNetString(dg=dg)

        return dg.getMessage()
    def makeNetString(self):
        dg = PyDatagram()

        for part in self.dna:
            part.makeNetString(dg=dg)

        return dg.getMessage()
Exemplo n.º 5
0
    def enterSetAvatar(self):
        channel = self.mgr.GetAccountConnectionChannel(self.target)

        datagramCleanup = PyDatagram()
        datagramCleanup.addServerHeader(self.playerId, channel, STATESERVER_OBJECT_DELETE_RAM)
        datagramCleanup.addUint32(self.playerId)
        datagram = PyDatagram()
        datagram.addServerHeader(channel, self.air.ourChannel, CLIENTAGENT_ADD_POST_REMOVE)
        datagram.addUint16(datagramCleanup.getLength())
        datagram.appendData(datagramCleanup.getMessage())
        self.air.send(datagram)

        # Activate the avatar on the DBSS:
        self.air.sendActivate(self.playerId, 0, 0, self.air.dclassesByName['DistributedPlayerUD'],
                              fields={'setName': [self.token]})

        # Next, add them to the avatar channel:
        datagram = PyDatagram()
        datagram.addServerHeader(channel, self.air.ourChannel, CLIENTAGENT_OPEN_CHANNEL)
        datagram.addChannel(self.mgr.GetPuppetConnectionChannel(self.target))
        self.air.send(datagram)

        # Finally, grant ownership and shut down.
        self.air.setOwner(self.playerId, self.target)

        self.air.clientAddSessionObject(self.target, self.playerId)

        # Now set their sender channel to represent their account affiliation:
        datagram = PyDatagram()
        datagram.addServerHeader(self.target, self.air.ourChannel, CLIENTAGENT_SET_CLIENT_ID)
        datagram.addChannel(self.mgr.GetPuppetConnectionChannel(self.playerId))
        self.air.send(datagram)
        self.demand('Done')
Exemplo n.º 6
0
    def updateGardenData(self):
        gardenData = PyDatagram()

        gardenData.addUint8(len(self.plots))
        for plot in self.plots:
            plot.pack(gardenData)

        self.house.b_setGardenData(gardenData.getMessage())
Exemplo n.º 7
0
    def updateGardenData(self):
        gardenData = PyDatagram()

        gardenData.addUint8(len(self.plots))
        for plot in self.plots:
            plot.pack(gardenData)

        self.house.b_setGardenData(gardenData.getMessage())
Exemplo n.º 8
0
    def __makeBlob(self, store):
        dg = PyDatagram()
        if self.__list:
            dg.addUint8(CatalogItem.CatalogItemVersion)
            for item in self.__list:
                CatalogItem.encodeCatalogItem(dg, item, store)

        return dg.getMessage()
Exemplo n.º 9
0
    def __makeBlob(self, store):
        dg = PyDatagram()
        if self.__list:
            dg.addUint8(CatalogItem.CatalogItemVersion)
            for item in self.__list:
                CatalogItem.encodeCatalogItem(dg, item, store)

        return dg.getMessage()
Exemplo n.º 10
0
 def __makeBlob(self, store):
     # Construct a new datagram and fill it up with the items in
     # the list.
     dg = PyDatagram()
     if self.__list:  # empty list or None means nothing on the list.
         dg.addUint8(CatalogItem.CatalogItemVersion)
         for item in self.__list:
             CatalogItem.encodeCatalogItem(dg, item, store)
     return dg.getMessage()
    def setAvatar(self, fields, avId, sender):
        accId = self.GetAccountConnectionChannel(sender)

        # Give a POST_REMOVE to unload the avatar just
        # in case we lose connection while working.
        dgc = PyDatagram()
        dgc.addServerHeader(avId, accId, STATESERVER_OBJECT_DELETE_RAM)
        dgc.addUint32(avId)
        dg = PyDatagram()
        dg.addServerHeader(accId, self.air.ourChannel,
                           CLIENTAGENT_ADD_POST_REMOVE)
        dg.addString(dgc.getMessage())
        self.air.send(dg)

        # Activate the avatar on the db stateserver.
        self.air.sendActivate(
            avId, 0, 0, self.air.dclassesByName['DistributedPlayerToonUD'])

        # Add the connection to the avatar channel.
        dg = PyDatagram()
        dg.addServerHeader(accId, self.air.ourChannel,
                           CLIENTAGENT_OPEN_CHANNEL)
        dg.addChannel(self.GetPuppetConnectionChannel(avId))
        self.air.send(dg)

        # Set the sender channel to represent their account affiliation.
        dg = PyDatagram()
        dg.addServerHeader(accId, self.air.ourChannel,
                           CLIENTAGENT_SET_CLIENT_ID)
        dg.addChannel(sender << 32 | avId)
        self.air.send(dg)

        # Grant the client ownership of the avatar.
        dg = PyDatagram()
        dg.addServerHeader(avId, self.air.ourChannel,
                           STATESERVER_OBJECT_SET_OWNER)
        dg.addChannel(sender << 32 | avId)
        self.air.send(dg)

        # The avatar should stay around for the entire client session.
        self.air.clientAddSessionObject(accId, avId)

        # OLD WAY: Tell the friends manager a toon has gone online.
        # self.__handleToonOnline(avId)

        # NEW WAY: Tell the FriendsManagerUD that a toon is online.
        # Let's use the netMessenger.
        self.air.netMessenger.send('avatarOnline', [avId])

        # Let's prepare the avatarOffline message if the avatar disconnects unexpectedly.
        cleanupDatagram = self.air.netMessenger.prepare(
            'avatarOffline', [avId])
        dg = PyDatagram()
        dg.addServerHeader(accId, self.air.ourChannel,
                           CLIENTAGENT_ADD_POST_REMOVE)
        dg.addString(cleanupDatagram.getMessage())
        self.air.send(dg)
Exemplo n.º 12
0
def convertServerDNAString(serverString):
    # Strip out blank space and take last 30 characters
    serverString = serverString.replace(' ', '')
    stringLen = 30
    serverString = serverString[-stringLen:]
    # Create a datagram from server string
    dg = PyDatagram()
    for i in range(0,len(serverString),2):
        eval('dg.addUint8(0x%s)' % serverString[i:i+2])
    return dg.getMessage()
Exemplo n.º 13
0
 def makeNetString(self):
     dg = PyDatagram()
     dg.addFixedString(self.type, 1)
     if self.type == 'c':
         dg.addFixedString(self.name, 2)
     elif self.type == 'u':
         notify.error('undefined avatar')
     else:
         notify.error('unknown avatar type: ', self.type)
     return dg.getMessage()
Exemplo n.º 14
0
 def makeNetString(self):
     dg = PyDatagram()
     dg.addFixedString(self.type, 1)
     if self.type == 'c':
         dg.addFixedString(self.name, 2)
     elif self.type == 'u':
         notify.error('undefined avatar')
     else:
         notify.error('unknown avatar type: ', self.type)
     return dg.getMessage()
    def makeNetString(self):
        dg = PyDatagram()
        dg.addFixedString(self.type, 1)
        if (self.type == 'c'):  # Char
            dg.addFixedString(self.name, 2)
        elif (self.type == 'u'):
            notify.error("undefined avatar")
        else:
            notify.error("unknown avatar type: ", self.type)

        return dg.getMessage()
Exemplo n.º 16
0
    def _makeAvMsg(self, values, recipient):
        msg = "%s banned %s for %s hours: %s" % values
        
        msgDg = PyDatagram()
        msgDg.addUint16(6)
        msgDg.addString(msg)

        dg = PyDatagram()
        dg.addServerHeader(recipient, self.air.ourChannel, CLIENTAGENT_SEND_DATAGRAM)
        dg.addString(msgDg.getMessage())
        return dg
Exemplo n.º 17
0
    def createBlankGarden(self):
        gardenData = PyDatagram()

        plots = GardenGlobals.getGardenPlots(self.house.housePos)
        gardenData.addUint8(len(plots))

        for i, plotData in enumerate(plots):
            gardenData.addUint8(GardenGlobals.EmptyPlot)
            gardenData.addUint8(i)

        self.house.b_setGardenData(gardenData.getMessage())
        self.loadGarden()
Exemplo n.º 18
0
    def createBlankGarden(self):
        gardenData = PyDatagram()

        plots = GardenGlobals.getGardenPlots(self.house.housePos)
        gardenData.addUint8(len(plots))

        for i, plotData in enumerate(plots):
            gardenData.addUint8(GardenGlobals.EmptyPlot)
            gardenData.addUint8(i)

        self.house.b_setGardenData(gardenData.getMessage())
        self.loadGarden()
Exemplo n.º 19
0
    def _makeAvMsg(self, values, recipient):
        msg = "%s banned %s for %s hours: %s" % values

        msgDg = PyDatagram()
        msgDg.addUint16(6)
        msgDg.addString(msg)

        dg = PyDatagram()
        dg.addServerHeader(recipient, self.air.ourChannel,
                           CLIENTAGENT_SEND_DATAGRAM)
        dg.addString(msgDg.getMessage())
        return dg
Exemplo n.º 20
0
    def systemMessage(self, message, channel=10):
        msgDg = PyDatagram()
        msgDg.addUint16(6)
        msgDg.addString(message)

        self.writeServerEvent('system-message',
                              sourceChannel=self.ourChannel,
                              message=message,
                              targetChannel=channel)

        dg = PyDatagram()
        dg.addServerHeader(channel, self.ourChannel, CLIENTAGENT_SEND_DATAGRAM)
        dg.addString(msgDg.getMessage())
        self.send(dg)
Exemplo n.º 21
0
    def makeNetString(self):
        dg = PyDatagram()
        dg.addFixedString(self.type, 1)
        if (self.type == 's'):
            dg.addFixedString(self.name, 3)
            dg.addFixedString(self.dept, 1)
        elif (self.type == 'b'):  # Boss Cog
            dg.addFixedString(self.dept, 1)
        elif (self.type == 'u'):
            notify.error("undefined avatar")
        else:
            notify.error("unknown avatar type: ", self.type)

        return dg.getMessage()
Exemplo n.º 22
0
    def toNetString(self):
        dg = PyDatagram()

        for gagId in self.avatar.attacks.keys():
            supply = self.avatar.attacks[gagId].getAmmo()

            if supply < 0:
                print "Gag ID {0} is about to cause a cause with supply: {1}".format(
                    str(gagId), str(supply))
                supply = 0

            dg.addUint8(gagId)
            dg.addUint8(supply)

        return dg.getMessage()
    def getDNAString(self):
        data = PyDatagram()
        data.addUint8(self.shape)
        for item in self.bgData:
            data.addUint8(item)

        for item in self.layoutData:
            data.addUint8(item)

        for enum in self.emblems.keys():
            emblem = self.emblems.get(enum, None)
            if emblem:
                for item in emblem:
                    data.addUint8(item)

        return data.getMessage()
 def getDNAString(self):
     data = PyDatagram()
     data.addUint8(self.shape)
     for item in self.bgData:
         data.addUint8(item)
     
     for item in self.layoutData:
         data.addUint8(item)
     
     for enum in self.emblems.keys():
         emblem = self.emblems.get(enum, None)
         if emblem:
             for item in emblem:
                 data.addUint8(item)
             
     
     return data.getMessage()
Exemplo n.º 25
0
    def setAvatar(self, fields, avId, sender):
        accId = self.GetAccountConnectionChannel(sender)

        # Give a POST_REMOVE to unload the avatar just
        # in case we lose connection while working.
        dgc = PyDatagram()
        dgc.addServerHeader(avId, accId,
                STATESERVER_OBJECT_DELETE_RAM)
        dgc.addUint32(avId)
        dg = PyDatagram()
        dg.addServerHeader(accId,
                self.air.ourChannel,
                CLIENTAGENT_ADD_POST_REMOVE)
        dg.addString(dgc.getMessage())
        self.air.send(dg)

        # Activate the avatar on the db stateserver.
        self.air.sendActivate(avId, 0, 0, self.air.dclassesByName['DistributedToonUD'])

        # Add the connection to the avatar channel.
        dg = PyDatagram()
        dg.addServerHeader(accId, self.air.ourChannel, CLIENTAGENT_OPEN_CHANNEL)
        dg.addChannel(self.GetPuppetConnectionChannel(avId))
        self.air.send(dg)

        # Set the sender channel to represent their account affiliation.
        dg = PyDatagram()
        dg.addServerHeader(accId, self.air.ourChannel,
                    CLIENTAGENT_SET_CLIENT_ID)
        dg.addChannel(sender << 32 | avId)
        self.air.send(dg)

        # Grant the client ownership of the avatar.
        dg = PyDatagram()
        dg.addServerHeader(avId, self.air.ourChannel, STATESERVER_OBJECT_SET_OWNER)
        dg.addChannel(sender << 32 | avId)
        self.air.send(dg)

        # Tell the friends manager a toon has gone online.
        self.__handleToonOnline(avId)
Exemplo n.º 26
0
 def setAvatar(self, fields, avId, sender):
     accId = self.GetAccountConnectionChannel(sender)
     dgc = PyDatagram()
     dgc.addServerHeader(avId, accId, STATESERVER_OBJECT_DELETE_RAM)
     dgc.addUint32(avId)
     dg = PyDatagram()
     dg.addServerHeader(accId, self.air.ourChannel, CLIENTAGENT_ADD_POST_REMOVE)
     dg.addString(dgc.getMessage())
     self.air.send(dg)
     self.air.sendActivate(avId, 0, 0, self.air.dclassesByName['DistributedToonUD'])
     dg = PyDatagram()
     dg.addServerHeader(accId, self.air.ourChannel, CLIENTAGENT_OPEN_CHANNEL)
     dg.addChannel(self.GetPuppetConnectionChannel(avId))
     self.air.send(dg)
     dg = PyDatagram()
     dg.addServerHeader(accId, self.air.ourChannel, CLIENTAGENT_SET_CLIENT_ID)
     dg.addChannel(sender << 32 | avId)
     self.air.send(dg)
     dg = PyDatagram()
     dg.addServerHeader(avId, self.air.ourChannel, STATESERVER_OBJECT_SET_OWNER)
     dg.addChannel(sender << 32 | avId)
     self.air.send(dg)
Exemplo n.º 27
0
    def createBlankGarden(self):
        gardenData = PyDatagram()

        # NF
        plots = GardenGlobals.getGardenPlots(self.house.housePos)
        boxes = GardenGlobals.getBoxPlots(self.house.housePos)

        tester = plots + boxes

        length_p_b = len(plots) + len(boxes)

        gardenData.addUint8(length_p_b)

        for i, plotData in enumerate(tester):

            if i != 6:
                gardenData.addUint8(GardenGlobals.EmptyPlot)
            else:
                gardenData.addUint8(GardenGlobals.PlanterBox)

            gardenData.addUint8(i)

        self.house.b_setGardenData(gardenData.getMessage())
        self.loadGarden()
Exemplo n.º 28
0
 def getBlob(self, store=0):
     dg = PyDatagram()
     dg.addUint8(CatalogItemVersion)
     encodeCatalogItem(dg, self, store)
     return dg.getMessage()
Exemplo n.º 29
0
 def reloadRelease(self, data=None):
     dg = PyDatagram()
     self.addReloadReleaseData(dg)
     self.avatar.sendUpdate('reloadRelease', [dg.getMessage()])
Exemplo n.º 30
0
 def secondaryFireRelease(self, data=None):
     dg = PyDatagram()
     self.addSecondaryReleaseData(dg)
     self.avatar.sendUpdate('secondaryFireRelease', [dg.getMessage()])
Exemplo n.º 31
0
 def secondaryFirePress(self, data=None):
     dg = PyDatagram()
     self.addSecondaryPressData(dg)
     self.avatar.sendUpdate('secondaryFirePress', [dg.getMessage()])
Exemplo n.º 32
0
 def primaryFireRelease(self, data=None):
     dg = PyDatagram()
     self.addPrimaryReleaseData(dg)
     self.avatar.sendUpdate('primaryFireRelease', [dg.getMessage()])
Exemplo n.º 33
0
 def primaryFirePress(self, data=None):
     dg = PyDatagram()
     self.addPrimaryPressData(dg)
     self.avatar.sendUpdate('primaryFirePress', [dg.getMessage()])
    def enterWaitReward(self):
        self.updateHistoryForCourseComplete()
        self.awardTrophies()
        self.awardCups()
        self.awardHoleBest()
        self.awardCourseBest()
        self.recordHoleInOne()
        self.recordCourseUnderPar()
        trophiesList = []
        for index in xrange(len(self.avIdList)):
            avId = self.avIdList[index]
            if avId in self.newTrophies:
                oneTrophyList = map(int, self.newTrophies[avId])
                trophiesList.append(oneTrophyList)
                continue
            trophiesList.append([])
        while len(trophiesList) < GolfGlobals.MAX_PLAYERS_PER_HOLE:
            trophiesList.append([])
        holeBestList = []
        for index in xrange(len(self.avIdList)):
            avId = self.avIdList[index]
            if avId in self.newHoleBest:
                oneTrophyList = map(int, self.newHoleBest[avId])
                holeBestList.append(oneTrophyList)
                continue
            holeBestList.append([])
        while len(holeBestList) < GolfGlobals.MAX_PLAYERS_PER_HOLE:
            holeBestList.append([])
        courseBestList = []
        for index in xrange(len(self.avIdList)):
            avId = self.avIdList[index]
            if avId in self.newCourseBest:
                oneTrophyList = map(int, self.newCourseBest[avId])
                courseBestList.append(oneTrophyList)
                continue
            courseBestList.append([])
        while len(courseBestList) < GolfGlobals.MAX_PLAYERS_PER_HOLE:
            courseBestList.append([])
        cupList = []
        for index in xrange(len(self.avIdList)):
            avId = self.avIdList[index]
            if avId in self.newCups:
                oneCupList = map(int, self.newCups[avId])
                cupList.append(oneCupList)
                self.cupListLen = self.cupListLen + 1
                continue
            cupList.append([])
        while len(cupList) < GolfGlobals.MAX_PLAYERS_PER_HOLE:
            cupList.append([])
        REWARD_TIMEOUT = (self.trophyListLen + self.holeBestListLen + self.courseBestListLen + self.cupListLen) * 5 + 19
        aimTimesList = [0] * 4
        aimIndex = 0
        stillPlaying = self.getStillPlayingAvIds()
        for avId in self.avIdList:
            if avId in stillPlaying:
                aimTime = 0
                if avId in self.aimTimes:
                    aimTime = self.aimTimes[avId]
                aimTimesList[aimIndex] = aimTime
            aimIndex += 1
            
        dg = PyDatagram()
        for list in trophiesList:
            dg.addUint8(len(list))
            for item in list:
                dg.addUint8(item)
        
        dg.addUint8(len(self.rankings))
        for item in self.rankings:
            dg.addInt8(item)
                
        for list in holeBestList:
            dg.addUint8(len(list))
            for item in list:
                dg.addUint8(item)
                
        for list in courseBestList:
            dg.addUint8(len(list))
            for item in list:
                dg.addUint8(item)
        
        for list in cupList:
            dg.addUint8(len(list))
            for item in list:
                dg.addUint8(item)
                
        dg.addUint32(self.winnerByTieBreak)
        for at in aimTimesList:
            dg.addUint32(int(at * 100))
           
        self.sendUpdate('setReward', [dg.getMessage()])

        def allAvatarsRewarded(self = self):
            self.notify.debug('GOLF COURSE: all avatars rewarded')
            self.rewardDone()


        def handleRewardTimeout(avIds, self = self):
            self.notify.debug('GOLF COURSE: timed out waiting for clients %s to finish reward' % avIds)
            self.rewardDone()

        stillPlaying = self.getStillPlayingAvIds()
        self.rewardBarrier = ToonBarrier('waitReward', self.uniqueName('waitReward'), stillPlaying, REWARD_TIMEOUT, allAvatarsRewarded, handleRewardTimeout)
    def enterWaitReward(self):
        self.updateHistoryForCourseComplete()
        self.awardTrophies()
        self.awardCups()
        self.awardHoleBest()
        self.awardCourseBest()
        self.recordHoleInOne()
        self.recordCourseUnderPar()
        trophiesList = []
        for index in xrange(len(self.avIdList)):
            avId = self.avIdList[index]
            if avId in self.newTrophies:
                oneTrophyList = map(int, self.newTrophies[avId])
                trophiesList.append(oneTrophyList)
                continue
            trophiesList.append([])
        while len(trophiesList) < GolfGlobals.MAX_PLAYERS_PER_HOLE:
            trophiesList.append([])
        holeBestList = []
        for index in xrange(len(self.avIdList)):
            avId = self.avIdList[index]
            if avId in self.newHoleBest:
                oneTrophyList = map(int, self.newHoleBest[avId])
                holeBestList.append(oneTrophyList)
                continue
            holeBestList.append([])
        while len(holeBestList) < GolfGlobals.MAX_PLAYERS_PER_HOLE:
            holeBestList.append([])
        courseBestList = []
        for index in xrange(len(self.avIdList)):
            avId = self.avIdList[index]
            if avId in self.newCourseBest:
                oneTrophyList = map(int, self.newCourseBest[avId])
                courseBestList.append(oneTrophyList)
                continue
            courseBestList.append([])
        while len(courseBestList) < GolfGlobals.MAX_PLAYERS_PER_HOLE:
            courseBestList.append([])
        cupList = []
        for index in xrange(len(self.avIdList)):
            avId = self.avIdList[index]
            if avId in self.newCups:
                oneCupList = map(int, self.newCups[avId])
                cupList.append(oneCupList)
                self.cupListLen = self.cupListLen + 1
                continue
            cupList.append([])
        while len(cupList) < GolfGlobals.MAX_PLAYERS_PER_HOLE:
            cupList.append([])
        REWARD_TIMEOUT = (self.trophyListLen + self.holeBestListLen +
                          self.courseBestListLen + self.cupListLen) * 5 + 19
        aimTimesList = [0] * 4
        aimIndex = 0
        stillPlaying = self.getStillPlayingAvIds()
        for avId in self.avIdList:
            if avId in stillPlaying:
                aimTime = 0
                if avId in self.aimTimes:
                    aimTime = self.aimTimes[avId]
                aimTimesList[aimIndex] = aimTime
            aimIndex += 1

        dg = PyDatagram()
        for list in trophiesList:
            dg.addUint8(len(list))
            for item in list:
                dg.addUint8(item)

        dg.addUint8(len(self.rankings))
        for item in self.rankings:
            dg.addInt8(item)

        for list in holeBestList:
            dg.addUint8(len(list))
            for item in list:
                dg.addUint8(item)

        for list in courseBestList:
            dg.addUint8(len(list))
            for item in list:
                dg.addUint8(item)

        for list in cupList:
            dg.addUint8(len(list))
            for item in list:
                dg.addUint8(item)

        dg.addUint32(self.winnerByTieBreak)
        for at in aimTimesList:
            dg.addUint32(int(at * 100))

        self.sendUpdate('setReward', [dg.getMessage()])

        def allAvatarsRewarded(self=self):
            self.notify.debug('GOLF COURSE: all avatars rewarded')
            self.rewardDone()

        def handleRewardTimeout(avIds, self=self):
            self.notify.debug(
                'GOLF COURSE: timed out waiting for clients %s to finish reward'
                % avIds)
            self.rewardDone()

        stillPlaying = self.getStillPlayingAvIds()
        self.rewardBarrier = ToonBarrier('waitReward',
                                         self.uniqueName('waitReward'),
                                         stillPlaying, REWARD_TIMEOUT,
                                         allAvatarsRewarded,
                                         handleRewardTimeout)
Exemplo n.º 36
0
 def getBlob(self, store = 0):
     dg = PyDatagram()
     dg.addUint8(CatalogItemVersion)
     encodeCatalogItem(dg, self, store)
     return dg.getMessage()