def post(self):
        bodyData = self.request.body
        dictData = MessageTools.decode(bodyData)
        token = dictData.get('token')
        player = playerDataManager.getPlayerByToken(token)

        returnData = MessData()
        if player == None:
            returnData = MessData(ErrorCode.tokenOutData)
        elif player.getSkillInfo(7).skillLevel == 0 and player.getSkillInfo(0).skillLevel < static.pvp_level_limit:
            returnData = MessData(ErrorCode.pvpNOTUnlockNow)
        else:
            # Íæ¼Òconnect id¼ì²â
            connect_id = dictData.get('connect_id', '')    # Íæ¼ÒÁ¬½Óid
            ck_connectid = playerDataManager.check_connect_id(obj=player, post_connect_id=connect_id)
            if ck_connectid[0] is False:
                returnData = MessData(ck_connectid[1])
                self.write(MessageTools.encode(returnData))
                self.finish()
                return

            addChanllengeNum = player.add_chanllenge_num
            addChanllengeNum += 1

            costGems = addChanllengeNum * 10

            if player.costResource(ResourceType.gems, costGems):
                player.add_chanllenge_num = addChanllengeNum
                player.chanllenge_num += 1
            else:
                returnData = MessData(ErrorCode.resourceNotEnough)
        str = MessageTools.encode(returnData)

        self.write(str)
        self.finish()
Esempio n. 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()
    def post(self):
        bodyData =  self.request.body
        dictData = MessageTools.decode(bodyData)
        token = dictData.get('token')
        player = playerDataManager.getPlayerByToken(token)

        returnData = MessData()
        if player == None:
            returnData = MessData(ErrorCode.tokenOutData)
        elif player.getSkillInfo(7).skillLevel == 0 and player.getSkillInfo(0).skillLevel < static.pvp_level_limit:
            returnData = MessData(ErrorCode.pvpNOTUnlockNow)
        else:
            # Íæ¼Òconnect id¼ì²â
            connect_id = dictData.get('connect_id', '')    # Íæ¼ÒÁ¬½Óid
            ck_connectid = playerDataManager.check_connect_id(obj=player, post_connect_id=connect_id)
            if ck_connectid[0] is False:
                returnData = MessData(ck_connectid[1])
                self.write(MessageTools.encode(returnData))
                self.finish()
                return

            player_id = player.player_id
            if not rankManager.checkPlayerInRanking(player_id):
                rankManager.addRank(player_id)

            rankData = {}
            rankData['last_timed_reward_datetime'] = player.last_timed_reward_datetime
            rankData['last_timed_reward_ranknum'] = player.last_timed_reward_ranknum
            returnData.data = rankData
        str = MessageTools.encode(returnData)
        self.write(str)
        self.finish()
    def post(self):
        bodyData = self.request.body
        dictData = MessageTools.decode(bodyData)
        token = dictData.get('token')
        player = playerDataManager.getPlayerByToken(token)

        returnData = MessData()
        if player == None:
            returnData = MessData(ErrorCode.tokenOutData)
        elif player.getSkillInfo(7).skillLevel == 0 and player.getSkillInfo(0).skillLevel < static.pvp_level_limit:
            returnData = MessData(ErrorCode.pvpNOTUnlockNow)
        else:
            # Íæ¼Òconnect id¼ì²â
            connect_id = dictData.get('connect_id', '')    # Íæ¼ÒÁ¬½Óid
            ck_connectid = playerDataManager.check_connect_id(obj=player, post_connect_id=connect_id)
            if ck_connectid[0] is False:
                returnData = MessData(ck_connectid[1])
                self.write(MessageTools.encode(returnData))
                self.finish()
                return

            player_id = player.player_id
            if not rankManager.checkPlayerInRanking(player_id):
                rankManager.addRank(player_id)
            if player.costResource(ResourceType.gems,10):
                player.last_challenge_datetime = GameTools.datetime2string(GameTools.getDatetimeNow() - datetime.timedelta(minutes = 20))
            else:
                returnData = MessData(ErrorCode.resourceNotEnough)
        str = MessageTools.encode(returnData)

        self.write(str)
        self.finish()
Esempio n. 5
0
    def post(self):
        bodyData = self.request.body
        dictData = MessageTools.decode(bodyData)
        udid = dictData['udid']
        name = dictData['name']
        cdkey = dictData.get('cdkey', '')
        returnData = MessData()
        player = None
        open_activate = True

        # 账户验证
        name = name.strip()
        contains = name.find(';') >= 0 or name.find(' ') > 0 or len(name) == 0
        charCount = len(name)
        max_length = gloabalBase.getValue('MAX_LENGTH_OF_NAME')
        max_length = int(max_length)

        # 长度验证
        if contains or charCount > max_length:
            returnData = MessData(ErrorCode.name_illegal)

        # 非法字符验证
        elif illegalWordManager.ContainIllegalWord(name):
            returnData = MessData(ErrorCode.name_illegal)

        # 是否已被使用验证
        elif not playerDataManager.isSign(udid):
            if playerDataManager.isNameUsed(name):
                returnData = MessData(ErrorCode.name_used)
            else:
                playerDataManager.createAccount(udid,name)
                player = playerDataManager.loginUseUidd(udid)
                player.connect_id = playerDataManager.create_connect_id(player.player_id)       # 重新生成连接ID
                player.revial = 1
                returnData.data = player
                player.server_date_time = GameTools.getDateTimeNowString()

        # 通过
        else:
            player = playerDataManager.loginUseUidd(udid)
            player.server_date_time = GameTools.getDateTimeNowString()
            player.connect_id = playerDataManager.create_connect_id(player.player_id)       # 重新生成连接ID
            returnData.data = player
            player.calculateOfflineResource()

        message = MessageTools.encode(returnData,False)

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

            # 使用cdkey
            if open_activate is True:
                cdkey_obj.is_use = True
                cdkey_obj.usedtime = datetime.datetime.now()
                cdkey_obj.use_udid = udid
                cdkey_obj.save()

        self.write(message)
        self.finish()
Esempio n. 6
0
    def post(self):
        bodyData = self.request.body
        dictData = MessageTools.decode(bodyData)
        token = dictData.get('token')
        result = dictData.get('result', 0)
        targetID = dictData.get('target_id')
        lowRank = dictData.get('lowRank',0)
        tap_count = dictData.get('tap_count')
        crital_count = dictData.get('crital_count')
        target_hp = dictData.get('target_hp',0)  # the data need verify.
        player = playerDataManager.getPlayerByToken(token)
        returnDict = {}
        returnData = MessData()



        if player == None:
            returnData = MessData(ErrorCode.tokenOutData)
        elif player.player_id == targetID:
            returnData = MessData(ErrorCode.cannotAttackYourself)
        elif not pvpDataManger.fightFinished(player.player_id,targetID):
                returnData = MessData(ErrorCode.fightTargetNotMatch)
        elif self.verifyPVPFight(tap_count,crital_count,player,target_hp):
            # 玩家connect id检测
            connect_id = dictData.get('connect_id', '')    # 玩家连接id
            ck_connectid = playerDataManager.check_connect_id(obj=player, post_connect_id=connect_id)
            if ck_connectid[0] is False:
                returnData = MessData(ck_connectid[1])
                self.write(MessageTools.encode(returnData))
                self.finish()
                return

            if result == 1 and lowRank == 0:
                rankManager.pvpWin(player.player_id,targetID)
            else:
                pass
            fightRewards = pvpFightRewardTable.getPvpFightRewardByResult(result)
            for reward in fightRewards:
                type = reward.type
                value = reward.value
                player.addResource(type,value)

            rank_num = rankManager.getRankNumByPlayerid(player.player_id)
            target_num = rankManager.getRankNumByPlayerid(targetID)
            self.saveResult(player.player_id,targetID,result,rank_num,target_num,lowRank)
            rankList = rankManager.getRankList(rank_num)
            returnDict['rank_num'] = rank_num
            returnDict['rankList'] = rankList
            returnData.data = returnDict
        else:
            returnData = MessData(ErrorCode.pvpVerifyError)
        str = MessageTools.encode(returnData,False)
        self.write(str)
        self.finish()
Esempio n. 7
0
    def post(self):
        bodyData = self.request.body
        params = MessageTools.decode(bodyData)

        token = params.get('token')
        cdkey = params.get('cdkey','')

        player = playerDataManager.getPlayerByToken(token)
        returnData = MessData()

        # 玩家登录检测
        if player == None:
            returnData = MessData(ErrorCode.tokenOutData)
            self.write(MessageTools.encode(returnData))
            self.finish()
            return

        # 玩家connect id检测
        connect_id = params.get('connect_id', '')    # 玩家连接id
        ck_connectid = playerDataManager.check_connect_id(obj=player, post_connect_id=connect_id)
        if ck_connectid[0] is False:
            returnData = MessData(ck_connectid[1])
            self.write(MessageTools.encode(returnData))
            self.finish()
            return

        # 使用cdkey
        cdkey_data = {}
        cdkey_data['cdkey'] = cdkey.strip()
        cdkey_data['udid'] = player.udid
        cdkey_data['server_id'] = config.serverConfigManager.server_id
        sum_data = "%s%s%d%s" %(cdkey_data['cdkey'], cdkey_data['udid'], cdkey_data['server_id'], config.SECRET_KEY)
        cdkey_data['sign'] = hashlib.md5(sum_data.encode('utf-8')).hexdigest()

        url = 'http://121.41.120.248/gift/use_cdkey/'
        req = requests.post(url, data=json.dumps(cdkey_data))
        req = json.loads(req.text)
        if req.get('error', False):
            returnData = MessData((820, "%s" % req['error']['data']['message']))
            self.write(MessageTools.encode(returnData))
            self.finish()
            return

        # add tools
        for t in req['data']:
            player.addResource(t['tool_id'],t['count'])

        returnData.data = req['data']
        str = MessageTools.encode(returnData,False)
        self.write(str)
        self.finish()

        if player != None:
            playerDataManager.checkNeedSave2DB(player.player_id)
Esempio n. 8
0
    def post(self):
        bodyData  = self.request.body
        dictData = MessageTools.decode(bodyData)
        token = dictData.get('token')
        player = playerDataManager.getPlayerByToken(token)

        returnData = MessData()
        if player == None:
            returnData = MessData(ErrorCode.tokenOutData)
        elif player.getSkillInfo(7).skillLevel == 0 and player.getSkillInfo(0).skillLevel < static.pvp_level_limit:
            returnData = MessData(ErrorCode.pvpNOTUnlockNow)
        else:
            # Íæ¼Òconnect id¼ì²â
            connect_id = dictData.get('connect_id', '')    # Íæ¼ÒÁ¬½Óid
            ck_connectid = playerDataManager.check_connect_id(obj=player, post_connect_id=connect_id)
            if ck_connectid[0] is False:
                returnData = MessData(ck_connectid[1])
                self.write(MessageTools.encode(returnData))
                self.finish()
                return

            player_id = player.player_id
            cmd ="SELECT\
                result.id,\
                result.attacker_id,\
                result.target_id,\
                result.result,\
                result.attacker_num,\
                result.target_num ,\
                result.fight_low,\
                player1.`name`,\
                player2.`name`\
                FROM\
                player_fight_result as result ,player_base_info as player1,player_base_info as player2\
                WHERE (result.attacker_id = %s or result.target_id = %s )and result.attacker_id = player1.playerid and result.target_id = player2.playerid\
                ORDER BY result.id\
                DESC\
                LIMIT 5" %(player_id,player_id)


            data = db_Manager.excuteQuery(cmd)
            returnData.data = []
            for resultData in data:
                fightResult = FightResult(resultData)
                returnData.data.append(fightResult)
        str = MessageTools.encode(returnData)

        self.write(str)
        self.finish()
Esempio n. 9
0
    def post(self):
        bodyData = self.request.body
        params = MessageTools.decode(bodyData)

        token = params.get('token')
        step = params.get('step','')

        player = playerDataManager.getPlayerByToken(token)
        returnData = MessData()

        # 玩家登录检测
        if player == None:
            returnData = MessData(ErrorCode.tokenOutData)
            self.write(MessageTools.encode(returnData))
            self.finish()
            return

        # 玩家connect id检测
        connect_id = params.get('connect_id', '')    # 玩家连接id
        ck_connectid = playerDataManager.check_connect_id(obj=player, post_connect_id=connect_id)
        if ck_connectid[0] is False:
            returnData = MessData(ck_connectid[1])
            self.write(MessageTools.encode(returnData))
            self.finish()
            return

        # 步骤检测
        try:
            tutorial = getattr(player, step)
        except:
            returnData = MessData(ErrorCode.tutorialStepError)
            self.write(MessageTools.encode(returnData))
            self.finish()
            return

        # 步骤状态检测
        if tutorial != 1:
            setattr(player, step, 1)
            if player != None:
                playerDataManager.checkNeedSave2DB(player.player_id)

        str = MessageTools.encode(returnData)
        self.write(str)
        self.finish()
Esempio n. 10
0
    def get(self):
        bodyData = self.get_argument('data')
        print('data:%s' % bodyData)
        dictData = MessageTools.decode(bodyData)
        token = dictData.get('token')
        player = playerDataManager.getPlayerByToken(token)

        returnData = MessData()
        if player == None:
            returnData = MessData(ErrorCode.tokenOutData)
        elif player.getSkillInfo(7).skillLevel == 0 and player.getSkillInfo(0).skillLevel < static.pvp_level_limit:
            returnData = MessData(ErrorCode.pvpNOTUnlockNow)
        else:
            # Íæ¼Òconnect id¼ì²â
            connect_id = dictData.get('connect_id', '')    # Íæ¼ÒÁ¬½Óid
            ck_connectid = playerDataManager.check_connect_id(obj=player, post_connect_id=connect_id)
            if ck_connectid[0] is False:
                returnData = MessData(ck_connectid[1])
                self.write(MessageTools.encode(returnData))
                self.finish()
                return

            player_id = player.player_id
            if not rankManager.checkPlayerInRanking(player_id):
                rankManager.addRank(player_id)

            rank_num = rankManager.getRankNumByPlayerid(player_id)

            rankList = rankManager.getRankList(rank_num)
            pvpDataManger.addTargetList(player_id,rankList)
            # for pvpPlayerInfoInRanking in rankList:
            #     if pvpPlayerInfoInRanking.player_id == player_id:
            #         rankList.remove(pvpPlayerInfoInRanking)

            rankData = {}
            rankData['rank_num'] = rank_num
            rankData['rankList'] = rankList
            returnData.data = rankData
        str = MessageTools.encode(returnData,False)

        self.write(str)
        self.finish()
Esempio n. 11
0
    def post(self):
        bodyData = self.request.body
        dictData = MessageTools.decode(bodyData)
        token = dictData.get('token')
        targetid = dictData.get('targetid',0)
        targetid = int(targetid)
        player = playerDataManager.getPlayerByToken(token)

        returnData = MessData()
        if player == None:
            returnData = MessData(ErrorCode.tokenOutData)
        elif player.getSkillInfo(7).skillLevel == 0 and player.getSkillInfo(0).skillLevel < static.pvp_level_limit:
            returnData = MessData(ErrorCode.pvpNOTUnlockNow)
        else:
            # Íæ¼Òconnect id¼ì²â
            connect_id = dictData.get('connect_id', '')    # Íæ¼ÒÁ¬½Óid
            ck_connectid = playerDataManager.check_connect_id(obj=player, post_connect_id=connect_id)
            if ck_connectid[0] is False:
                returnData = MessData(ck_connectid[1])
                self.write(MessageTools.encode(returnData))
                self.finish()
                return

            player_id = player.player_id
            if not rankManager.checkPlayerInRanking(player_id):
                rankManager.addRank(player_id)

            player.updateDailyData()
            lastChanllengeDatetime = GameTools.string2datetime(player.last_challenge_datetime)
            if GameTools.getDatetimeNow() < lastChanllengeDatetime + datetime.timedelta(seconds = 60 * 4):
                returnData = MessData(ErrorCode.skillincd)
            elif player.costResource(ResourceType.chanllengeNum,1):
                player.last_challenge_datetime = GameTools.getDateTimeNowString()
                pvpDataManger.addFightStatus(player_id,targetid)
            else:
                returnData = MessData(ErrorCode.resourceNotEnough)

        str = MessageTools.encode(returnData)

        self.write(str)
        self.finish()
Esempio n. 12
0
    def post(self):
        bodyData = self.request.body
        params = MessageTools.decode(bodyData)
        token = params.get('token')

        player = playerDataManager.getPlayerByToken(token)
        returnData = MessData()

        # 玩家登录检测
        if player == None:
            returnData = MessData(ErrorCode.tokenOutData)
            self.write(MessageTools.encode(returnData))
            self.finish()
            return

        # 玩家connect id检测
        connect_id = params.get('connect_id', '')    # 玩家连接id
        ck_connectid = playerDataManager.check_connect_id(obj=player, post_connect_id=connect_id)
        if ck_connectid[0] is False:
            returnData = MessData(ck_connectid[1])
            self.write(MessageTools.encode(returnData))
            self.finish()
            return

        # 钻石检测
        cost = gloabalBase.getValue('use_skill_cost')
        if player.gems < cost:
            returnData = MessData(ErrorCode.resourceNotEnough)
            self.write(MessageTools.encode(returnData))
            self.finish()
            return

        player.gems -= cost

        str = MessageTools.encode(returnData)
        self.write(str)
        self.finish()

        if player != None:
            playerDataManager.checkNeedSave2DB(player.player_id)
Esempio n. 13
0
    def post(self):
        bodyData = self.request.body
        dictData = MessageTools.decode(bodyData)
        token = dictData.get('token')
        player = playerDataManager.getPlayerByToken(token)

        returnData = MessData()
        if player == None:
            returnData = MessData(ErrorCode.tokenOutData)
        # elif player.getSkillInfo(7).skillLevel == 0 and player.getSkillInfo(0).skillLevel < 60:
        #         returnData = MessData(ErrorCode.pvpNOTUnlockNow)
        else:
            # Íæ¼Òconnect id¼ì²â
            connect_id = dictData.get('connect_id', '')    # Íæ¼ÒÁ¬½Óid
            ck_connectid = playerDataManager.check_connect_id(obj=player, post_connect_id=connect_id)
            if ck_connectid[0] is False:
                returnData = MessData(ck_connectid[1])
                self.write(MessageTools.encode(returnData))
                self.finish()
                return

            player_id = player.player_id
            if not rankManager.checkPlayerInRanking(player_id):
                rankManager.addRank(player_id)

            rank_num = rankManager.getRankNumByPlayerid(player_id)

            rankList = rankManager.getTopRankList()

            rankData = {}
            rankData['rank_num'] = rank_num
            rankData['rankList'] = rankList
            returnData.data = rankData
        str = MessageTools.encode(returnData,False)

        self.write(str)
        self.finish()
Esempio n. 14
0
    def post(self):
        bodyData = self.request.body
        dictData = MessageTools.decode(bodyData)

        self._process(dictData)
    def post(self):
        bodyData = self.request.body
        params = MessageTools.decode(bodyData)

        token = params.get("token")
        gift_no = params.get("gift_no", 1)

        player = playerDataManager.getPlayerByToken(token)
        returnData = MessData()

        # 玩家登录检测
        if player == None:
            returnData = MessData(ErrorCode.tokenOutData)
            self.write(MessageTools.encode(returnData))
            self.finish()
            return

        # 玩家connect id检测
        connect_id = params.get("connect_id", "")  # 玩家连接id
        ck_connectid = playerDataManager.check_connect_id(obj=player, post_connect_id=connect_id)
        if ck_connectid[0] is False:
            returnData = MessData(ck_connectid[1])
            self.write(MessageTools.encode(returnData))
            self.finish()
            return

        # 玩家礼包类型检测
        gift_status = player.recharge_get_gifts_status.get("%d" % gift_no, False)
        if gift_status is False:
            returnData = MessData(ErrorCode.opeventCumulativeRechargeTypeError)
            self.write(MessageTools.encode(returnData))
            self.finish()
            return

        # 是否领取检测
        if int(gift_status) != 0:
            returnData = MessData(ErrorCode.opeventCumulativeRechargeStatusError)
            self.write(MessageTools.encode(returnData))
            self.finish()
            return

        # 是否达到条件检测
        rewords = openServerTable.getOpeventServer(1, gift_no)
        if not rewords:
            returnData = MessData(ErrorCode.opeventCumulativeRechargeRewordsError)
            self.write(MessageTools.encode(returnData))
            self.finish()
            return

        if player.recharge_total_num < int(rewords.condition):
            returnData = MessData(ErrorCode.opeventCumulativeRechargeCompletedError)
            self.write(MessageTools.encode(returnData))
            self.finish()
            return

        # 添加奖励
        if rewords.item1 > 0:
            player.addResource(rewords.item1, rewords.num1)

        if rewords.item2 > 0:
            item = itemTable.getItemConstInfo(rewords.item2)
            player.addResource(item.buftype, rewords.num2)

        # 修改礼包状态
        player.recharge_get_gifts_status["%d" % gift_no] = 1

        str = MessageTools.encode(returnData)
        self.write(str)
        self.finish()

        if player != None:
            playerDataManager.checkNeedSave2DB(player.player_id)
    def post(self):
        bodyData = self.request.body
        params = MessageTools.decode(bodyData)

        token = params.get('token')
        gift_no = params.get('gift_no',0)

        player = playerDataManager.getPlayerByToken(token)
        returnData = MessData()

        # 玩家登录检测
        if player == None:
            returnData = MessData(ErrorCode.tokenOutData)
            self.write(MessageTools.encode(returnData))
            self.finish()
            return

        # 玩家connect id检测
        connect_id = params.get('connect_id', '')    # 玩家连接id
        ck_connectid = playerDataManager.check_connect_id(obj=player, post_connect_id=connect_id)
        if ck_connectid[0] is False:
            returnData = MessData(ck_connectid[1])
            self.write(MessageTools.encode(returnData))
            self.finish()
            return

        #奖励检测
        rewords = openServerTable.getOpeventServer(2, int(gift_no))
        if not rewords:
            returnData = MessData(ErrorCode.opeventLoginRewordsError)
            self.write(MessageTools.encode(returnData))
            self.finish()
            return

        # 玩家礼包类型检测
        gift_status = player.login_get_gifts_status.get('%d' %rewords.condition, False)
        if gift_status is False:
            returnData = MessData(ErrorCode.opeventLoginRewordsTypeError)
            self.write(MessageTools.encode(returnData))
            self.finish()
            return

        # 是否领取检测
        if int(gift_status) !=0:
            returnData = MessData(ErrorCode.opeventLoginRewordsStatusError)
            self.write(MessageTools.encode(returnData))
            self.finish()
            return

        # 是否达到条件检测
        if player.login_num < rewords.condition:
            returnData = MessData(ErrorCode.opeventLoginRewordsCompletedError)
            self.write(MessageTools.encode(returnData))
            self.finish()
            return

        # 添加奖励
        if rewords.item1>0:
            player.addResource(rewords.item1,rewords.num1)

        # 修改礼包状态
        player.login_get_gifts_status['%d' %rewords.condition] = 1

        str = MessageTools.encode(returnData)
        self.write(str)
        self.finish()

        if player != None:
            playerDataManager.checkNeedSave2DB(player.player_id)