def loadDefenseBuffs(self):
        playerInfo = playerDataManager.getPlayerByPlayerid(self.player_id)
        if playerInfo == None:
            tableName = "player_pvp_buffs"
            fields = "buffstr"
            conditon = "playerid = %s" % self.player_id
            data = db_Manager.selectDataFromTable(tableName,fields,conditon)
            if len(data) == 0:
                self.defenseBuffs = []
            else:
                self.defenseBuffs.clear()
                buffStr = data[0][0]
                buffStrArr = buffStr.split(',')

                self.defenseBuffs = []
                for index in range(24):
                    if index < len(buffStrArr):
                        value = int(buffStrArr[index])
                        buff = EquipmentBuf(index + 1, value)
                        self.defenseBuffs.append(buff)
            self.loadPlayerLevel()
            self.loadEquipments()
        else:
            cacheBuff = playerInfo.pvpBuffs
            self.playerLevel = playerInfo.getSkillInfo(0).skillLevel
            for index in range(40):
                if index < len(cacheBuff):
                    value = cacheBuff[index]
                    buff = EquipmentBuf(index + 1, value)
                    if value > 0:
                        self.defenseBuffs.append(buff)
            self.equipments = playerInfo.equipments
Beispiel #2
0
    def post(self):
        bodyData = self.request.body
        dictData = MessageTools.decode(bodyData)
        udid = dictData['udid']
        returnData = None
        player = None

        playerID = self.getPlayeridByudid(udid)                         # 使用udid从数据库读取玩家ID
        if playerID == -1:
            returnData = MessData(ErrorCode.have_not_sign)              # 玩家未注册
        else:
            returnData = MessData()
            player = playerDataManager.getPlayerByPlayerid(playerID)    # 登录成功,使用playerid获取玩家信息

            if player == None:                                         # 玩家信息未在内存中从数据库读取
                player = playerDataManager.loginUseUidd(udid)
                player.connect_id = playerDataManager.create_connect_id(player.player_id)       # 重新生成连接ID
                returnData.data = player
                player.server_date_time = GameTools.getDateTimeNowString()
            else:
                player.connect_id = playerDataManager.create_connect_id(player.player_id)       # 重新生成连接ID
                returnData.data = player
                player.server_date_time = GameTools.getDateTimeNowString()


        if player != None:
            player.calculateOfflineResource()                           # 结算离线奖励

        message = MessageTools.encode(returnData,False)

        if player != None:                                             # 重置离线奖励
            player.offlineCash = 0

        self.write(message)
        self.finish()
Beispiel #3
0
    def _process(self, data):
        if data['udid'] is False or data['price'] is False:
            self.write({'result':-1, 'msg':'params error'})
            self.finish()
            return

        playerID = self.getPlayeridByudid(data['udid'])
        if playerID == -1:
            self.write({'result':-1, 'msg':'udid does not existd'})
            self.finish()
            return

        player = playerDataManager.getPlayerByPlayerid(playerID)
        if player == None:                                         # 玩家信息未在内存中从数据库读取
            player = playerDataManager.loginUseUidd(data['udid'])

        got_rmb_num = int(data['price'])               # 使用RMB数量
        got_gems_num = got_rmb_num*10                   # 添加钻石数量

        got_gems_num = int(got_gems_num)
        got_rmb_num = int(got_rmb_num)

        player.addResource(ResourceType.gems,got_gems_num)  # 添加资源

        # 更新玩家充值总数
        player.recharge_total_num += got_rmb_num

        self.write({'result':1, 'msg':got_gems_num})
        self.finish()
        if player != None:
            playerDataManager.checkNeedSave2DB(player.player_id)    # 写入数据库
    def _process(self, params):
        playerid = params
        playerid = int(playerid)
        player = playerDataManager.getPlayerByPlayerid(playerid)
        if player !=None:
            tokens = []
            tokens.append(player.token)
            playerDataManager.kickOfTokens(tokens)

        str = 'ok'
        print('ok')
        self.write(str)
Beispiel #5
0
    def getPlayerListByRankNums(self,rankNumList):
        playerIDList = []
        notInRankList = []
        for num in rankNumList:
            playerid = self.rank.get(num,None)
            if playerid == None:
                notInRankList.append(num)
                continue
            playerIDList.append(playerid)

        for remNum in notInRankList:
            rankNumList.remove(remNum)
        playerid2player = {}

        tableName = "player_base_info"
        fileds = "playerid,name,game_level,avatorid"
        if len(playerIDList) == 0:
            return  []
        players = []
        offlinePlayersid = []
        for playerid in playerIDList:
            playerInfo = playerDataManager.getPlayerByPlayerid(playerid)
            if playerInfo == None:
                offlinePlayersid.append(playerid)
            else:
                infos = []
                infos.append(playerid)
                infos.append(playerInfo.name)
                infos.append(playerInfo.game_level)
                infos.append(playerInfo.avatorid)
                pvpplayer = PvpPlayerInfoInRanking(infos)
                playerid2player[playerid] = pvpplayer

        if len(offlinePlayersid) > 0:#offline player
            playerIDList = str(offlinePlayersid)
            playerIDList = playerIDList[1:-1]
            condition = "playerid in (%s)" % playerIDList

            data = db_Manager.selectDataFromTable(tableName,fileds,condition)
            for aaData in data:
                player = PvpPlayerInfoInRanking(aaData)
                playerid2player[player.player_id] = player

        for num in rankNumList:
            playerid = self.rank[num]
            player = playerid2player[playerid]
            player.rankNum = num
            players.append(player)
        return  players