Esempio n. 1
0
	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))
Esempio n. 2
0
	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
Esempio n. 3
0
    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)
Esempio n. 4
0
 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))
Esempio n. 5
0
    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
Esempio n. 6
0
    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
Esempio n. 8
0
    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
Esempio n. 9
0
    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
Esempio n. 10
0
    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})
Esempio n. 11
0
 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))    
Esempio n. 12
0
	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
Esempio n. 13
0
 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
Esempio n. 14
0
    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
Esempio n. 15
0
	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
Esempio n. 16
0
	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
Esempio n. 17
0
    def reqCreateRoom(self, actionType):
        roomID = KBEngine.genUUID64()

        self.roomID = roomID

        roomMgr = KBEngine.globalData["RoomMgr"]

        param = {"roomID": roomID, "avatarMB": self, "actionType": actionType}

        roomMgr.onCreateRoom(param)
Esempio n. 18
0
    def onCreateSpace(self, avatarEntity):
        """
		客户端请求创建一个空间
		"""
        spaceKey = KBEngine.genUUID64()

        KBEngine.createEntityAnywhere('Space', \
                 {\
                 "spaceKey" : spaceKey,	\
                 "spaceState": GlobalDefine.SPACE_STATE_UNKNOW,\
                 }, \
                 Functor.Functor(self.onSpaceCreatedCB, spaceKey,avatarEntity))
Esempio n. 19
0
    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),
        )
Esempio n. 20
0
    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))
Esempio n. 21
0
 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)
Esempio n. 22
0
 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"]))
Esempio n. 24
0
    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)
Esempio n. 25
0
    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)
Esempio n. 26
0
    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))
Esempio n. 27
0
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)
Esempio n. 28
0
    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
Esempio n. 29
0
 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)
Esempio n. 30
0
	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)
Esempio n. 31
0
    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)
Esempio n. 32
0
    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)
Esempio n. 33
0
    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