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()
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
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()
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()
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
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
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)
def getWaveStartTime(self): time = GameTools.string2datetime(self.waveStartTime) return time
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)