예제 #1
0
 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()
예제 #2
0
    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
예제 #3
0
 def IsEffectNow(self):
     if self.skillLevel == 0:
         return False
     lastUseTime = GameTools.string2datetime(self.last_use_time)
     skillConstInfo = heroSkillTableManager.getHeroSkill(self.skillID,self.skillLevel)
     effectTime = skillConstInfo.duration
     if effectTime == 0:
         effectTime += 10
     effectTime += 10
     t = datetime.timedelta(seconds = effectTime)
     return lastUseTime + t > datetime.datetime.now()
예제 #4
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()
예제 #5
0
    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
예제 #6
0
 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
예제 #7
0
    def _process(self, params):
        token = params.get('token')
        skillID = params.get('skillid')
        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

            playerSkillInfo = player.getSkillInfo(skillID)
            skillLevel = playerSkillInfo.skillLevel
            lastUseTimeStr = playerSkillInfo.last_use_time
            lastUseTime = GameTools.string2datetime(lastUseTimeStr)
            skillConstInfo = heroSkillTableManager.getHeroSkill(skillID,skillLevel)
            cd = skillConstInfo.cd
            errCode = player.useSkill(skillID)
            # if GameTools.getDatetimeNow() + datetime.timedelta(seconds = 90) >= lastUseTime + datetime.timedelta(seconds = cd):
            #     errCode = player.useSkill(skillID)
            # else:
            #     returnData = MessData(ErrorCode.skillincd)
                #in cd

        str = MessageTools.encode(returnData)

        self.write(str)
        self.finish()
        if player != None:
            playerDataManager.checkNeedSave2DB(player.player_id)
예제 #8
0
 def getWaveStartTime(self):
     time = GameTools.string2datetime(self.waveStartTime)
     return  time
예제 #9
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)