def enterJudgeName(self): dg = PyDatagram(self.name) dgi = PyDatagramIterator(dg) isPattern, name = isNamePattern(dgi, self.csm.namePattern, self.dna.gender) if not name: self.demand('Kill', 'There\'s an issue with your name request!') return toonFields = {'WishNameState': ('PENDING',), 'WishName': (name,)} if isPattern: toonFields['WishNameState'] = ('',) toonFields['WishName'] = ('',) toonFields['setName'] = (name,) if self.avId: self.csm.air.dbInterface.updateObject( self.csm.air.dbId, self.avId, self.csm.air.dclassesByName['DistributedToonUD'], toonFields) self.csm.air.writeServerEvent('avatarWishname', self.avId, name) self.csm.accountDB.handlePostNameRequest(self.avId, name) self.csm.sendUpdateToAccountId(self.target, 'updateNameResp', []) self.demand('Off')
def setShardData(self, data): dg = PyDatagram(data) di = PyDatagramIterator(dg) context = di.getUint8() while di.getRemainingSize(): self._doUpdateShard(di) if context > 0: self.sendUpdateToChannel(self.air.getMsgSender(), "setShardDataRes", [context])
def w(klass, data): if data: dg = PyDatagram(data) dgi = PyDatagramIterator(dg) def unpackPlant(_): return dgi.getUint32, dgi.getInt8(), dgi.getUint32( ), dgi.getInt8(), dgi.getUint16() flowers = map(unpackPlant, range(10)) trees = map(unpackPlant, range(8)) st = dgi.getUint8() started = dgi.getBool() else: flowers = NULL_FLOWERS trees = NULL_TREES st = NULL_STATUARY started = 0 return f(klass, started, flowers, trees, st)
def processData(self, datagram): iterator = PyDatagramIterator(datagram) source = datagram.getConnection() callback = iterator.getString() getattr(globals()[callback], 'execute')(self, iterator, source)
def enterCreateAvatar(self): dna = ToonDNA() dna.makeFromNetString(self.dna) dg = PyDatagram(self.name) dgi = PyDatagramIterator(dg) isPattern, name = isNamePattern(dgi, self.csm.namePattern, dna.gender) if not name: self.demand('Kill', 'There\'s an issue with your name request!') return if not isPattern: self.__pendingName = name colorstring = TTLocalizer.NumToColor[dna.headColor] animaltype = TTLocalizer.AnimalToSpecies[dna.getAnimal()] name = colorstring + ' ' + animaltype toonFields = { 'setName': (name,), 'WishNameState': ('PENDING' if not isPattern else '',), 'WishName': (self.__pendingName,), 'setDNAString': (self.dna,), 'setDISLid': (self.target,) } if not self.tf and not self.hood: toonFields['setTutorialAck'] = (1,) toonFields['setQuests'] = ([163, 1000, 1000, 100, 3],) if self.hood: hqZones = [] if self.hood == 1: # dd if not -1 in self.trackChoice: self.demand('Kill', 'Invalid track choice for DD!') return jarsize = 50 gaglimit = 25 hoodId = 1000 prevZones = [2000] questlimit = 2 tier = 4 hp = 25 expm = 1500 elif self.hood == 2: # dg if -1 in self.trackChoice: self.demand('Kill', 'Invalid track choice for DG!') return jarsize = 60 gaglimit = 30 hoodId = 5000 prevZones = [1000, 2000] questlimit = 2 tier = 7 hp = 34 expm = 2300 elif self.hood == 3 and config.GetBool('csp-want-mm', False): # mm (MIGHT BE DISABLED) if -1 in self.trackChoice: self.demand('Kill', 'Invalid track choice for MM!') return jarsize = 80 gaglimit = 35 hoodId = 4000 prevZones = [1000, 2000, 5000] questlimit = 3 tier = 8 hp = 43 expm = 4000 hqZones = [11000] toonFields['setCogParts'] = ((0, 0, 0, 1),) else: self.demand('Kill', 'Invalid hood!') return ta = [0, 0, 0, 0, 1, 1, 0] for t in self.trackChoice: if t != -1: ta[t] = 1 toonFields['setMaxMoney'] = (jarsize,) toonFields['setMaxCarry'] = (gaglimit,) toonFields['setTrackAccess'] = (ta,) toonFields['setDefaultZone'] = (hoodId,) toonFields['setHoodsVisited'] = (prevZones + hqZones + [hoodId],) toonFields['setZonesVisited'] = (prevZones + hqZones + [hoodId],) toonFields['setTeleportAccess'] = (prevZones,) toonFields['setQuestCarryLimit'] = (questlimit,) toonFields['setRewardHistory'] = (tier, []) toonFields['setHp'] = (hp,) toonFields['setMaxHp'] = (hp,) toonFields['setTutorialAck'] = (1,) e = Experience() e.makeExpRegular(expm) for i, t in enumerate(ta): if not t: e.experience[i] = 0 toonFields['setExperience'] = (e.makeNetString(),) self.csm.air.dbInterface.createObject( self.csm.air.dbId, self.csm.air.dclassesByName['DistributedToonUD'], toonFields, self.__handleCreate)