コード例 #1
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
            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()
コード例 #2
0
    def _process(self, params):
        token = params.get('token')
        skillID = params.get('skill_id')
        cost = params.get('costValue')
        cost = int(cost)
        player = playerDataManager.getPlayerByToken(token)
        returnData = MessData()
        if player == None:
            returnData = MessData(ErrorCode.tokenOutData)
        else:
            # Íæ¼Ò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

            if player.costResource(ResourceType.gems,cost):
                heroSkillData = player.getSkillInfo(skillID)
                heroSkillData.last_use_time = GameTools.datetime2string(GameTools.getDatetimeNow() - datetime.timedelta(days=1))
            else:
                returnData = MessData(ErrorCode.resourceNotEnough)

        str = MessageTools.encode(returnData)

        self.write(str)
        self.finish()
        if player != None:
            playerDataManager.checkNeedSave2DB(player.player_id)
コード例 #3
0
 def loginUseUidd(self,udid):
     tableName = 'player_base_info'
     fileds = 'playerid, name, pvp_medal, gem, ' \
              'revive, cash, game_level, game_wave, ' \
              'chanllenge_date, chanllenge_num, avatorid, lootequiplevel, is_brush, ' \
              'last_cmd_time, random_reward_num, random_reward_date, ' \
              'lastTimedRewardDatetime, last_timed_reward_ranknum, last_challenge_datetime, buy_del_challenge_cd_num,' \
              'daily_datetime, add_chanllenge_num, awake_spell_num, last_free_draw_datetime, recharge_total_num, recharge_get_gifts_status,' \
              'last_login_date, login_num, login_get_gifts_status, tutorial, udid'
     condiction = "udid = '%s'" %udid
     data = db_Manager.selectDataFromTable(tableName, fileds, condiction)
     player = PlayerInfo(data[0])
     self.playerid2player[player.player_id] = player
     self.token2player[player.token] = player
     self.token2time[player.token] = GameTools.getDatetimeNow()
     self.playerid2saveTime[player.player_id] = GameTools.getDatetimeNow()
     player.login_days_check()
     return player
コード例 #4
0
ファイル: player.py プロジェクト: JimmyHuang83/TapServer
 def refreshTimeData(self):
     if self.random_rweard_date == None or self.random_rweard_date == "":
         self.random_reward_num = 0
         self.random_rweard_date= GameTools.getDateTimeNowString()
     rr_date = GameTools.string2datetime(self.random_rweard_date)
     time_now = GameTools.getDatetimeNow()
     if rr_date.year != time_now.year or rr_date.month != time_now.month or rr_date.day != time_now.day:
         self.random_reward_num = 0
         self.random_rweard_date= GameTools.getDateTimeNowString()
コード例 #5
0
ファイル: player.py プロジェクト: JimmyHuang83/TapServer
    def updateDailyData(self):
        dateTimeNow = GameTools.getDatetimeNow()
        lastDateTimeNow = GameTools.string2datetime(self.daily_datetime)
        if dateTimeNow.year != lastDateTimeNow.year or dateTimeNow.month != lastDateTimeNow.month or dateTimeNow.day != lastDateTimeNow.day:
            self.daily_datetime = GameTools.getDateTimeNowString()

            self.chanllenge_num = int(gloabalBase.getValue('daily_challenge_num'))
            self.buy_del_challenge_cd_num = 0
            self.add_chanllenge_num = 0
            self.random_reward_num = 0
コード例 #6
0
ファイル: message.py プロジェクト: JimmyHuang83/TapServer
    def encode(object,isencrypt = True):
        jsonStr = MyEncoder().encode(object)
        #log here jsonStr
        print(jsonStr)
        # logging.info("respond data"+ jsonStr)
        try:
            MessageTools.log.info("respond data"+ jsonStr)
        except BaseException as e :
            pass
        if isencrypt:
            timeBefore = GameTools.getDatetimeNow()
            bjson = jsonStr.encode(encoding= "utf8")
            des = DES('12345678','1234567812345678')
            encryptdata = des.encrypt(bjson)

            sss = encryptdata.decode('utf-8')
            timeAfter = GameTools.getDatetimeNow()
            alpha = timeAfter - timeBefore
            print('total seconds :%s' %alpha.total_seconds())
            sss = "1111%s"%jsonStr
        else:
            sss = "0000%s"%jsonStr
        return sss
コード例 #7
0
    def getPlayerByPlayerid(self,player_id):
        player= self.playerid2player.get(player_id,None)
        if player != None:
            token = player.token
            tokenTime = self.token2time[token]
            if GameTools.getDatetimeNow() > tokenTime + datetime.timedelta(seconds = ConstValue.tokenEffectTime):
                outDateTokens = []
                outDateTokens.append(token)
                self.kickOfTokens(outDateTokens)
                return  None
            else:
                self.updatePlayerTokenTime(player)


        return player
コード例 #8
0
    def getPlayerByToken(self,token):
        if token in self.token2time:
            tokenTime = self.token2time[token]
            if GameTools.getDatetimeNow() > tokenTime + datetime.timedelta(seconds = ConstValue.tokenEffectTime):
                outDateTokens = []
                outDateTokens.append(token)
                self.kickOfTokens(outDateTokens)
                return  None
            else:
                player = self.token2player.get(token)
                if player != None:
                    self.updatePlayerTokenTime(player)
                    player.login_days_check()
                return  player


        return  None
コード例 #9
0
ファイル: player.py プロジェクト: JimmyHuang83/TapServer
    def loadSkills(self):
        tableName = "player_skill"
        fields = "skill_id,level,last_use_time"
        conditon = "player_id = %s" % self.player_id
        data = db_Manager.selectDataFromTable(tableName,fields,conditon)
        skillids = []
        for skillData in data:
            heroSkill = HeroSkillData(skillData)
            if heroSkill.skillID == 0 and heroSkill.skillLevel < 1:
                heroSkill.skillLevel = 1

            skillids.append(heroSkill.skillID)
            self.skills.append(heroSkill)

        for skillidInTable in range(8):
            if not skillidInTable in skillids:
                fields = []
                fields.append('player_id')
                fields.append('skill_id')
                fields.append('level')
                fields.append('last_use_time')
                values = []
                values.append(self.player_id)
                values.append(skillidInTable)
                if skillidInTable == 0:
                    values.append(1)
                else:
                    values.append(0)

                t_now =  GameTools.getDatetimeNow()
                t_ok = t_now- datetime.timedelta(days = 1)
                t_now_string = GameTools.datetime2string(t_ok)
                values.append(t_now_string)
                db_Manager.insertIntoTable(tableName,fields,values)

                skillData = []
                skillData.append(skillidInTable)
                if skillidInTable == 0:
                    skillData.append(1)
                else:
                    skillData.append(0)
                skillData.append(t_now_string)
                heroSkill = HeroSkillData(skillData)
                self.skills.append(heroSkill)
コード例 #10
0
ファイル: pvp_attack.py プロジェクト: JimmyHuang83/TapServer
    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()
コード例 #11
0
ファイル: player.py プロジェクト: JimmyHuang83/TapServer
    def calculateOfflineCash(self):
        playerLevel = self.getSkillInfo(0).skillLevel                   # 主角技能
        playerRevial = self.getSkillInfo(7).skillLevel                  # 重生技能

        # 玩家获取离线奖励技能检测
        if playerLevel == 0 and playerRevial == 0:
            self.offlineCash = 0
            return

        timeLast = GameTools.string2datetime(self.last_cmd_time)        # 最后操作时间
        timeNow =  GameTools.getDatetimeNow()                           # 当前时间

        # 玩家获取离线奖励时间检测
        if timeNow > timeLast + datetime.timedelta(seconds = ConstValue.tokenEffectTime):
            time = timeNow - timeLast
            time = time.total_seconds()
            gold = OfflineCash.calculateOfflineCash(self.game_level,time)           # 获取奖励金币
            self.offlineCash = gold
            self.cash += gold
        else:
            self.offlineCash = 0
コード例 #12
0
ファイル: player.py プロジェクト: JimmyHuang83/TapServer
 def calculOfflinePartnersHP(self):
     lastCMDTime = self.last_cmd_time
     lastCMDTime = GameTools.string2datetime(lastCMDTime)
     timeNow =  GameTools.getDatetimeNow()
     if timeNow  < lastCMDTime + datetime.timedelta(seconds  = ConstValue.tokenEffectTime):
         return
     deltaTime = timeNow - lastCMDTime
     totalSeconds = deltaTime.total_seconds()
     totalSeconds = int(totalSeconds)
     if totalSeconds <=50:
         return
     else:
         print('calculOfflinePartnersHP add hp ')
     for partner in self.partners:
         partnerID = partner.partner_id
         heroInfo = heroTable.GetHeroInfoByid(partnerID)
         add_hp = totalSeconds * heroInfo.add_hp
         max_hp = heroInfo.max_hp
         partner.hp += add_hp
         partner.hp = min(partner.hp,max_hp)
         if partner.hp == max_hp:
             partner.sleep = 0
コード例 #13
0
    def get(self):
        timeNow = GameTools.getDatetimeNow()  # 当前时间
        rank = rankManager.rank  # pvp排行

        # 更新发送时间
        rankManager.lastSendRewardTime = timeNow
        for (rankNum, playerid) in rank.items():

            # 获取奖励信息
            pvpRankTimerReward = pvpRankTimerRewardTable.getRewardByRankNum(rankNum)
            rewardType = pvpRankTimerReward.type
            rewardValue = pvpRankTimerReward.value

            # 发送奖励0
            playerDataManager.sendPVPReward(playerid, rewardType, rewardValue, rankNum)

            # 发送奖励1
            type1 = pvpRankTimerReward.type1
            value1 = pvpRankTimerReward.value1
            if value1 > 0:
                playerDataManager.sendPVPReward(playerid, type1, value1, rankNum)

        self.write("send reward time : %s" % (timeNow))
        self.finish()
コード例 #14
0
 def updateTokenTime(self, token):
     self.token2time[token] = GameTools.getDatetimeNow()
     player = self.token2player[token]
     player.last_cmd_time = GameTools.getDateTimeNowString()
コード例 #15
0
 def checkNeedSave2DB(self,playerid):
     if GameTools.getDatetimeNow() > self.playerid2saveTime[playerid] + datetime.timedelta(minutes = 1):
         player = self.playerid2player[playerid]
         player.saveData2DB()
         self.playerid2saveTime[playerid] = GameTools.getDatetimeNow()
コード例 #16
0
ファイル: rank_manger.py プロジェクト: JimmyHuang83/TapServer
 def __init__(self):
     self.rank_max_num = 0
     self.rank = {}
     self.lastSendRewardTime = GameTools.getDatetimeNow() - datetime.timedelta(days = 1)
     print('init rank')
コード例 #17
0
    def _process(self, params):
        token = params.get('token')
        drawtimes = params.get('drawtimes',1)
        free_draw = params.get('free_draw',0)
        player = playerDataManager.getPlayerByToken(token)
        returnData = MessData()

        if player == None:
            returnData = MessData(ErrorCode.tokenOutData)
        else:
            # Íæ¼Ò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

            if free_draw == 1:
                if GameTools.getDatetimeNow() < GameTools.string2datetime(player.last_free_draw_datetime)  + datetime.timedelta(hours = 23):
                    returnData = MessData(ErrorCode.skillincd)
                    str = MessageTools.encode(returnData)

                    self.write(str)
                    self.finish()
                    if player != None:
                        playerDataManager.checkNeedSave2DB(player.player_id)
                    return
            cost = 0
            if drawtimes == 1:
                if free_draw == 0:
                    cost = int(gloabalBase.getValue('draw1cost'))
            else:
                cost = int(gloabalBase.getValue('draw10cost'))

            if player.costResource(ResourceType.gems,cost):
                if free_draw == 1:
                    player.last_free_draw_datetime = GameTools.getDateTimeNowString()

                rewards = []
                if drawtimes == 1:
                    rewards = drawRewardManager.draw1Reward(player.game_level)
                else:
                    rewards = drawRewardManager.draw10Reward(player.game_level)

                for resourceAndVlue in rewards:
                    itemid = resourceAndVlue.itemid
                    value = resourceAndVlue.value
                    item = itemTable.getItemConstInfo(itemid)
                    resourceId = item.buftype
                    player.addResource(resourceId,value)

                    if item.quliaty > 3:
                        drawHistoryManager.pushIntoHistory(player.name,resourceAndVlue)
                returnData.data = rewards
            else:
                returnData = MessData(ErrorCode.resourceNotEnough)
        str = MessageTools.encode(returnData)

        self.write(str)
        self.finish()
        if player != None:
            playerDataManager.checkNeedSave2DB(player.player_id)