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()
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)
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
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 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
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
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
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)
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 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()
def updateTokenTime(self, token): self.token2time[token] = GameTools.getDatetimeNow() player = self.token2player[token] player.last_cmd_time = GameTools.getDateTimeNowString()
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()
def __init__(self): self.rank_max_num = 0 self.rank = {} self.lastSendRewardTime = GameTools.getDatetimeNow() - datetime.timedelta(days = 1) print('init rank')
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)