def systemCreateRoom(self,playerNum): playerEntityList=[] for i in range(playerNum): playerEntityList.append(self.matchPlayerEntity.pop(0)) roomId=KBEngine.genUUID64() #服务器自动生成64位的ID while roomId in self.allRoomEntity: #检测房间ID是否重复 roomId=KBEngine.genUUID64() #创建房间实体 KBEngine.createEntityAnywhere("Room",{"roomId":roomId,"roomType":0,"playerList":playerEntityList},Functor.Functor(self.systemCreateRoomCB,roomId))
def findRoom(self, roomKey, notFoundCreate = False): """ 查找一个指定房间,如果找不到允许创建一个新的 """ roomDatas = self.rooms.get(roomKey) # 如果房间没有创建,则将其创建 if not roomDatas: if not notFoundCreate: return FIND_ROOM_NOT_FOUND # 如果最后创建的房间没有满员,则使用最后创建的房间key,否则产生一个新的房间唯一Key roomDatas = self.rooms.get(self.lastNewRoomKey) if roomDatas is not None and roomDatas["PlayerCount"] < GameConfigs.ROOM_MAX_PLAYER: return roomDatas self.lastNewRoomKey = KBEngine.genUUID64() # 将房间base实体创建在任意baseapp上 # 此处的字典参数中可以对实体进行提前def属性赋值 KBEngine.createEntityAnywhere("Room", \ { "roomKey" : self.lastNewRoomKey, \ }, \ Functor.Functor(self.onRoomCreatedCB, self.lastNewRoomKey)) roomDatas = {"roomEntityCall" : None, "PlayerCount": 0, "enterRoomReqs" : [], "roomKey" : self.lastNewRoomKey} self.rooms[self.lastNewRoomKey] = roomDatas return roomDatas return roomDatas
def reqCreateAvatar(self, globalBirthDict): """ 根据前端类别给出出生点 UNKNOWN_CLIENT_COMPONENT_TYPE = 0, CLIENT_TYPE_MOBILE = 1, // 手机类 CLIENT_TYPE_PC = 2, // pc, 一般都是exe客户端 CLIENT_TYPE_BROWSER = 3, // web应用, html5,flash CLIENT_TYPE_BOTS = 4, // bots CLIENT_TYPE_MINI = 5, // 微型客户端 """ props = { "name": self.__ACCOUNT_NAME__, "uuid": KBEngine.genUUID64(), "gender": random.randint(0, 1), "lastLoginTime": time.time(), "accountName": self.__ACCOUNT_NAME__, } for key in globalBirthDict: if key not in props: props[key] = globalBirthDict[key] DEBUG_MSG('Account(%i) name[%s]::reqCreateAvatar: %d' % (self.id, self.__ACCOUNT_NAME__, props.get("userId", 0))) avatar = KBEngine.createBaseLocally("Avatar", props) if avatar: avatar.writeToDB(self._onCharacterSaved)
def SYSMessage(self, DBID, MessageID, Time, *arg): d_sysmessage = self.GetConfigSysMessage(MessageID) if d_sysmessage is None: return MessageType = d_sysmessage['Type'] MesaageUUID = KBEngine.genUUID64() MessageInfo = { 'MesaageUUID': MesaageUUID, 'time': Time, 'MessageID': MessageID, 'Endtime': 0 } MessageInfo['ArgList'] = '' for argValue in arg: Value = '' if isinstance(argValue, str): Value = argValue else: Value = str(argValue) AddSplitStr(MessageInfo, 'ArgList', Value) if DBID == 0: self.WriteSysMessage(MessageInfo, MessageType) else: Entity = self.GetFriendEntity(DBID) #在线 if Entity is not None: Friends = Entity.getComponent("Friends") Friends.WriteSysMessage(MessageInfo, MessageType) else: #离线 self.BuildGenerator('onFriendSysMessage') KBEngine.createEntityFromDBID( "Account", DBID, Functor.Functor(self.onFriendSysMessage, MessageInfo, MessageType))
def genGlobalRankBotData(self): minScore, maxScore = self.getRankMaxAndMinScore() num = const.RANK_BOT_NUM while num > 0: # 排行榜机器人userID self.rankCount = self.rankCount + 1 userId = self.rankCount + 8134701 lastname = table_name.lastnameTbl[random.randint( 0, table_name.lastnameNum - 1)] firstname = table_name.firstnameTbl[random.randint( 0, table_name.firstnameNum - 1)] name = lastname + firstname iconUrl = "http://mypdk.game918918.com/portraits/" + str( random.randint(1, 50)) + ".png" integral = random.randint(minScore, maxScore + 200) rankingInfo = { 'userid': userId, 'uuid': KBEngine.genUUID64(), 'head_icon': iconUrl, 'name': name, 'integral': integral } DEBUG_MSG("genGlobalRankBotData00000000{}".format(rankingInfo)) self.updateRankingInfo(rankingInfo) num = num - 1
def reqOpenUrl(self, operation): def callback(orderID, dbID, success, datas): if uid != orderID: return if self.client: b = Bytes(datas) self.client.onOpenUrl(operation, b.get("url", "")) self.release() data = dict() passed = False for d in self.openUrlData(operation): if isinstance(d, dict): data.update(d) passed = True if not passed: return self.addRef() uid = str(KBEngine.genUUID64()) KBEngine.charge( uid, self.databaseID, Bytes(interface="openUrl", id=self.guaranteeID, operation=operation, data=data).dumps(), callback)
def findRoom(self, roomKey): roomData = self.rooms.get(roomKey) if roomData is None: roomData = self.rooms.get(self.lastNewRoomKey) if((roomData is not None) and \ (roomData["playerCount"] < GameConfigs.ROOM_MAX_PLAYER) and\ (roomData["roomState"] < GameConstants.GAMESTATE_END) and\ (not roomData["arriveMinTimeFlag"])): return roomData self.lastNewRoomKey = KBEngine.genUUID64() params = { "roomKey": self.lastNewRoomKey, # base, BASE_AND_CLIENT } KBEngine.createEntityAnywhere( "Room", params, Functor.Functor(self.onRoomCreatedCB, self.lastNewRoomKey)) roomData = { "roomEntityCall": None, "playerCount": 0, "enterRoomReqs": [], "roomKey": self.lastNewRoomKey } self.rooms[self.lastNewRoomKey] = roomData return roomData else: return roomData
def createPrivateRoom(self, entityCall, position, direction): #DEBUG_MSG("Hall createPrivateRoom" % (self.id)) #生成一个64位的唯一id,作为房间的id self.PrivatelastNewRoomKey = KBEngine.genUUID64() DEBUG_MSG("Hall createPrivateRoom generator key %i" % (self.PrivatelastNewRoomKey)) # 将房间base实体创建在任意baseapp上 # 此处的字典参数中可以对实体进行提前def属性赋值 KBEngine.createEntityAnywhere("PrivateRoom", \ { "roomKey" : self.PrivatelastNewRoomKey, \ }, \ Functor.Functor(self.onPrivateRoomCreatedCB, self.PrivatelastNewRoomKey)) roomDatas = { "roomEntityCall": None, "PlayerCount": 0, "enterRoomReqs": [], "roomKey": self.PrivatelastNewRoomKey, "userindex": { 100: 100 } } self.Privaterooms[self.PrivatelastNewRoomKey] = roomDatas roomDatas["enterRoomReqs"].append((entityCall, position, direction)) roomDatas["PlayerCount"] += 1
def findSpace(self, spaceKey, notFoundCreate=False): spaceDatas = self._spaceAllocs.get(spaceKey) if not spaceDatas: if not notFoundCreate: return FIND_SPACE_NOT_FOUND spaceDatas = self._spaceAllocs.get(self.lastNewSpaceKey) if spaceDatas is not None and spaceDatas[ 'PlayerCount'] < GameConfigs.SPACE_MAX_PLAYER: return spaceDatas self.lastNewSpaceKey = KBEngine.genUUID64() KBEngine.createEntityAnywhere("Space",\ { "SpaceKey":self.lastNewSpaceKey,\ }, Functor.Functor(self.onSpaceCreateCB,self.lastNewSpaceKey)) spaceDatas = { "spaceEntityCall": None, "PlayerCount": 0, "enterSpaceReqs": [], "SpaceKey": self.lastNewSpaceKey } self._spaceAllocs[self.lastNewSpaceKey] = spaceDatas return spaceDatas return spaceDatas
def createSpace(self, mapKey, spaceKey, context): if spaceKey <= 0: spaceKey = KBEngine.genUUID64() context = copy.copy(context) spaceData = d_Maps.Maps.get(mapKey) KBEngine.createBaseAnywhere( spaceData["entityType"], \ {"mapKey":mapKey, "spaceKey":spaceKey, "context":context})
def SendMailMessage2(self, DBID, MessageID, ArgList, timeinterval = 7*24*60*60): MessageType = '邮箱奖励' MesaageUUID = KBEngine.genUUID64() nowtime = int(time.time() ) Endtime = nowtime + timeinterval MessageInfo = {'MesaageUUID':MesaageUUID, 'time':nowtime ,'MessageID':MessageID, 'Endtime':Endtime, 'ArgList':ArgList} KBEngine.createEntityFromDBID("Account",DBID,Functor.Functor(self.onMailMessage,MessageInfo,MessageType)) DEBUG_MSG('SendMailMessage2, MessageInfo:%s' % str(MessageInfo))
def addItem(self, itemID, itemCount = 1): if self.isResource(itemID) or self.isMissionItem(itemID): return result = [] emptyIndex = -1 for i in range(0,self.maxBagNum): if self.invIndex2Uids[i] == 0: emptyIndex = i break #背包已经满了 if emptyIndex == -1: return result #放置物品 itemStack = d_items.datas[itemID]['maxnum'] #不可堆叠物品 if itemStack == 1: itemUUID = KBEngine.genUUID64() iteminfo = TItemInfo() iteminfo.extend([itemUUID, itemID, 1, emptyIndex]) self.invIndex2Uids[emptyIndex] = itemUUID self._entity.itemList[itemUUID] = iteminfo result.append(itemUUID) #可堆叠物品 else: for key, info in self._entity.itemList.items(): if info[1] == itemID and info[2] < itemStack: info[2] += itemCount result.append(key) if info[2] > itemStack: itemCount = info[2]-itemStack info[2] = itemStack else: itemCount = 0 break if itemCount > 0: itemUUID = KBEngine.genUUID64() iteminfo = TItemInfo() iteminfo.extend([itemUUID, itemID, itemCount, emptyIndex]) self.invIndex2Uids[emptyIndex] = itemUUID self._entity.itemList[itemUUID] = iteminfo result.append(itemUUID) #这里有个bug,当背包里没有此道具,而插入道具数量超过可叠加数量时,会一起放一个格子 return result
def newPropByData(self, propID, propData): DEBUG_MSG("PropSystem:newPropByData") propData = json.dumps(propData) prop = {} prop["propUUID"] = KBEngine.genUUID64() prop["id"] = propID prop["index"] = self.freePropIndexSet.pop() prop["propData"] = propData return prop
def addItem(self, itemId, itemCount=1): result = [] emptyIndex = -1 for i in range(0, 12): if self.invIndex2Uids[i] == 0: emptyIndex = i break #背包已经满了 if emptyIndex == -1: return result #放置物品 itemStack = d_items.datas[itemId]['itemStack'] #不可堆叠物品 if itemStack == 1: itemUUID = KBEngine.genUUID64() iteminfo = TItemInfo() iteminfo.extend([itemUUID, itemId, 1, emptyIndex]) self.invIndex2Uids[emptyIndex] = itemUUID self._entity.itemList[itemUUID] = iteminfo result.append(itemUUID) #可堆叠物品 else: for key, info in self._entity.itemList.items(): if info[1] == itemId and info[2] < itemStack: info[2] += itemCount result.append(key) if info[2] > itemStack: itemCount = info[2] - itemStack info[2] = itemStack else: itemCount = 0 break if itemCount > 0: itemUUID = KBEngine.genUUID64() iteminfo = TItemInfo() iteminfo.extend([itemUUID, itemId, itemCount, emptyIndex]) self.invIndex2Uids[emptyIndex] = itemUUID self._entity.itemList[itemUUID] = iteminfo result.append(itemUUID) return result
def addItem(self, itemId, itemCount = 1): result = [] emptyIndex = -1 for i in range(0,12): if self.invIndex2Uids[i] == 0: emptyIndex = i break #背包已经满了 if emptyIndex == -1: return result #放置物品 itemStack = d_items.datas[itemId]['itemStack'] #不可堆叠物品 if itemStack == 1: itemUUID = KBEngine.genUUID64() iteminfo = TItemInfo() iteminfo.extend([itemUUID, itemId, 1, emptyIndex]) self.invIndex2Uids[emptyIndex] = itemUUID self._entity.itemList[itemUUID] = iteminfo result.append(itemUUID) #可堆叠物品 else: for key, info in self._entity.itemList.items(): if info[1] == itemId and info[2] < itemStack: info[2] += itemCount result.append(key) if info[2] > itemStack: itemCount = info[2]-itemStack info[2] = itemStack else: itemCount = 0 break if itemCount > 0: itemUUID = KBEngine.genUUID64() iteminfo = TItemInfo() iteminfo.extend([itemUUID, itemId, itemCount, emptyIndex]) self.invIndex2Uids[emptyIndex] = itemUUID self._entity.itemList[itemUUID] = iteminfo result.append(itemUUID) return result
def LoadAllSpace(self): INFO_MSG('Map::LoadAllSpace ') #默认创建5000个地图map_id为空的spaceloader for i in range(_INIT_MAP_COUNT): spaceKey = KBEngine.genUUID64() KBEngine.createBaseAnywhere("SpaceLoader", {'map_id':'',"spaceKey" : spaceKey,}, Functor.Functor(self.onMapLoaded, spaceKey)) self.MapCount = _INIT_MAP_COUNT
def reqCreateRoom(self, actionType): roomID = KBEngine.genUUID64() self.roomID = roomID roomMgr = KBEngine.globalData["RoomMgr"] param = {"roomID": roomID, "avatarMB": self, "actionType": actionType} roomMgr.onCreateRoom(param)
def onCreateSpace(self, avatarEntity): """ 客户端请求创建一个空间 """ spaceKey = KBEngine.genUUID64() KBEngine.createEntityAnywhere('Space', \ {\ "spaceKey" : spaceKey, \ "spaceState": GlobalDefine.SPACE_STATE_UNKNOW,\ }, \ Functor.Functor(self.onSpaceCreatedCB, spaceKey,avatarEntity))
def createSpace(self, spaceKey, context): """ """ if spaceKey <= 0: spaceKey = KBEngine.genUUID64() context = copy.copy(context) spaceData = d_spaces.datas.get(self._utype) KBEngine.createBaseAnywhere( spaceData["entityType"], {"spaceUType": self._utype, "spaceKey": spaceKey, "context": context}, Functor.Functor(self.onSpaceCreatedCB, spaceKey), )
def createSpace(self, spaceKey, context): """ """ if spaceKey <= 0: spaceKey = KBEngine.genUUID64() context = copy.copy(context) spaceData = d_spaces.datas.get(self._utype) KBEngine.createEntityAnywhere(spaceData["entityType"], \ {"spaceUType" : self._utype, \ "spaceKey" : spaceKey, \ "context" : context, \ }, \ Functor.Functor(self.onSpaceCreatedCB, spaceKey))
def doRunQueue(self, left): if left <= 0 or not self.__queueRun: return d = self.__queueRun[0] if d[1] >= self.perGenerateAmount: run_amount = self.perGenerateAmount d[1] -= run_amount else: run_amount = d[1] d[1] -= self.perGenerateAmount if d[1] <= 0: self.__queueRun.pop(0) order = str(KBEngine.genUUID64()) self.__orders[order] = (d[0], d[2]) Equalization.RobotBackendManager.queryBots(self, run_amount, order) self.doRunQueue(self.perGenerateAmount - run_amount)
def SendMailMessage(self, DBID, MessageID, awardTypelist, awardValuelist, MessageTEXT = '', timeinterval = 7*24*60*60): MessageType = '邮箱奖励' MesaageUUID = KBEngine.genUUID64() nowtime = int(time.time() ) Endtime = nowtime + timeinterval MessageInfo = {'MesaageUUID':MesaageUUID, 'time':nowtime ,'MessageID':MessageID, 'Endtime':Endtime} MessageInfo['ArgList'] = '' if len(awardTypelist) != len(awardValuelist): ERROR_MSG('奖励表配置错误!:%s,%s' % (str(awardTypelist),str(awardValuelist))) return for index,awardType in enumerate(awardTypelist): AddSplitStr(MessageInfo,'ArgList',awardType) AddSplitStr(MessageInfo,'ArgList',awardValuelist[index]) AddSplitStr(MessageInfo,'ArgList',MessageTEXT) KBEngine.createEntityFromDBID("Account",int(DBID),Functor.Functor(self.onMailMessage,MessageInfo,MessageType)) DEBUG_MSG('SendMailMessage, MessageInfo:%s' % str(MessageInfo))
def createSpace(self, spaceKey, context): """ """ if spaceKey <= 0: spaceKey = KBEngine.genUUID64() context = copy.copy(context) spaceData = d_spaces.datas.get(self._utype) KBEngine.createBaseAnywhere(spaceData["entityType"], \ {"spaceUType" : self._utype, \ "spaceKey" : spaceKey, \ "context" : context, \ }, \ Functor.Functor(self.onSpaceCreatedCB, spaceKey)) DEBUG_MSG("[BaseApp] SpaceAlloc::createSpace called, utype: %i, spaceKey: %s, entityType: %s" % (self._utype, spaceKey, spaceData["entityType"]))
def syncData(self): def callback(orderID, dbID, success, datas): if uid != orderID: return data = Bytes(datas) dataList = data.get("x", []) self.consumeData(dataList) if self.client: self.client.onSyncData() self.release() self.addRef() uid = str(KBEngine.genUUID64()) KBEngine.charge(uid, self.databaseID, Bytes(interface="syncData", pk=self.pk).dumps(), callback)
def interfaceOperate(self, operate, t, d, c=None): def callback(orderID, dbid, success, datas): if uid != orderID: return data = Bytes(datas) if c: c(self, data) if self.client: self.client.onOperate(operate, t, python_client(data)) self.release() self.addRef() uid = str(KBEngine.genUUID64()) KBEngine.charge( uid, self.databaseID, Bytes(interface="operate", operate=operate, type=t, data=d).dumps(), callback)
def createSpace(self, spaceKey, context): """ """ if spaceKey <= 0: spaceKey = KBEngine.genUUID64() context = copy.copy(context) spaceData = d_mapinfo.datas.get(self._utype) name = "Space" if spaceData["type"] == 1: name = "SpaceDuplicate" KBEngine.createBaseAnywhere(name, \ {"spaceUType" : self._utype, \ "spaceKey" : spaceKey, \ "context" : context, \ }, \ Functor.Functor(self.onSpaceCreatedCB, spaceKey))
def onRequestAccountLogin(loginName, password, datas): commitName = loginName if loginName.find('yk') != -1: realAccountName = commitName #生成账号 if len(loginName) == 2: UUID = KBEngine.genUUID64() commitName = 'yk' realAccountName = 'yk' + str(UUID) INFO_MSG('游客登录: loginName=%s,commitName=%s,realAccountName=%s' % (loginName, commitName, realAccountName)) KBEngine.accountLoginResponse(commitName, realAccountName, datas, KBEngine.SERVER_ERR_LOCAL_PROCESSING) else: #http请求,跟第三方平台对接登录 callback = lambda _commitName, _realAccountName, _datas, _result: { KBEngine.accountLoginResponse(_commitName, _realAccountName, _datas, _result) } g_LoginPoller.ZLLogin(loginName, password, datas, callback)
def findRoom(self, roomID, notFoundCreate=False): """ 查找一个指定房间,如果找不到允许创建一个新的 """ DEBUG_MSG("DdzHall::findRoom self.rooms[%r]" % (self.rooms.keys())) roomDatas = self.rooms.get(roomID) # 如果房间没有创建,则将其创建 if not roomDatas: if not notFoundCreate: return FIND_ROOM_NOT_FOUND # 如果最后创建的房间没有满员,则使用最后创建的房间key,否则产生一个新的房间唯一Key roomDatas = self.rooms.get(self.lastNewRoomKey) if roomDatas is not None and len(roomDatas["players"]) < 3: if roomDatas["roomMailbox"] is not None and roomDatas[ "roomMailbox"].state != ROOM_STATE_READY: pass else: return roomDatas self.lastNewRoomKey = KBEngine.genUUID64() KBEngine.createBaseAnywhere( "DdzRoom", { "parent": self, "state": 0, "roomID": self.lastNewRoomKey, "difen": d_DDZ[self.hallID]["base"], "taxRate": d_DDZ["taxRate"] }, None) roomDatas = { "roomMailbox": None, "players": {}, "roomID": self.lastNewRoomKey } self.rooms[self.lastNewRoomKey] = roomDatas return roomDatas return roomDatas
def reqCreateTeam(self, req_avatar, req_userId, room_op, team_name): if req_userId != self.owner_info["userId"]: req_avatar.doOperationFailed(const.GROUP_PMSN_LIMIT) return if len(self.team_list) >= const.MAX_TEAM_NUM: req_avatar.doOperationFailed(const.TEAM_MEM_UP_LIMIT) return team = { "team_uuid": KBEngine.genUUID64(), "team_state": const.TEAM_VALID, "team_name": team_name, "room_op": room_op, "create_time": time.time(), "member_userId_list": [self.owner_info["userId"]], # 群主默认加入该team "room_list": [], "room_history_list": [] } self.addTeam(team) h1global.notifyMailboxMethod(req_avatar, ["client", "pushCreateTeam"], self.group_id, self.team_list)
def ExtendIdleMap(self): if self.State==_STATE_MAP_LOADING: return IdleMapCount=self.GetIdleMapCount() if IdleMapCount<=_INIT_MAP_COUNT*0.2: #当当前空闲分线的数量小于等于原空闲分线副本数量的80%时,开始新创建分线 for i in range(_EXTEND_MAP_COUNT): spaceKey = KBEngine.genUUID64() KBEngine.createBaseAnywhere("SpaceLoader", {'map_id':'',"spaceKey" : spaceKey,}, Functor.Functor(self.onMapLoaded, spaceKey)) self.State=_STATE_MAP_LOADING self.MapCount=self.MapCount+_EXTEND_MAP_COUNT DEBUG_MSG("MapMgr:ExtendIdleMap:self.MapCount=%i"% self.MapCount)
def reqCreateAvatar(self, context): """ 根据前端类别给出出生点 UNKNOWN_CLIENT_COMPONENT_TYPE = 0, CLIENT_TYPE_MOBILE = 1, // 手机类 CLIENT_TYPE_PC = 2, // pc, 一般都是exe客户端 CLIENT_TYPE_BROWSER = 3, // web应用, html5,flash CLIENT_TYPE_BOTS = 4, // bots CLIENT_TYPE_MINI = 5, // 微型客户端 """ props = { "name": self.__ACCOUNT_NAME__, "uuid": KBEngine.genUUID64(), "gender": random.randint(0, 1), "lastLoginTime": time.time(), "accountName": self.__ACCOUNT_NAME__, } DEBUG_MSG('Account(%i)::reqCreateAvatar: %i' % (self.id, 0)) avatar = KBEngine.createBaseLocally("Avatar", props) if avatar: avatar.writeToDB(self._onCharacterSaved)
def reqCreateRoom(self, entityCall, name, intro, password): """ 请求创建房间 """ DEBUG_MSG("Hall::reqCreateRoom:name:%s,intro:%s,password:%s" % (name, intro, password)) if name == "": return 31 if intro == "": return 32 self.newRoomKey = KBEngine.genUUID64() KBEngine.createEntityAnywhere("Room", \ { "roomKey" : self.newRoomKey, "name" : name, "intro" : intro, "password" : password }, \ Functor.Functor(self.onRoomCreatedCB, self.newRoomKey)) if password == "": hasPassword = 1 else: hasPassword = 2 roomDatas = { "roomEntityCall": None, "playerCount": 0, "roomKey": self.newRoomKey, "name": name, "intro": intro, "password": password, "isPlaying": 1, "hasPassword": hasPassword, "enterRoomReqs": [] } self.rooms[self.newRoomKey] = roomDatas DEBUG_MSG("Hall::reqCreateRoom:rooms:%s" % self.rooms) entityCall.reqJoinRoom(self.newRoomKey, password)
def findRoom(self, roomKey, notFoundCreate = False): roomDatas = self.rooms.get(roomKey) if not roomDatas: if not notFoundCreate: return FIND_ROOM_NOT_FOUND roomDatas = self.rooms.get(self.lastNewRoomKey) if roomDatas is not None: return roomDatas self.lastNewRoomKey = KBEngine.genUUID64() KBEngine.createEntityAnywhere("Room", \ {"roomKey" : self.lastNewRoomKey,}, \ Functor.Functor(self.onRoomCreatedCB, self.lastNewRoomKey)) roomDatas = {"roomEntityCall":None, "PlayerCount": 0, "enterRoomReqs" : [], "roomKey" : self.lastNewRoomKey} self.rooms[self.lastNewRoomKey] = roomDatas return roomDatas return roomDatas