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) 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()
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 addNocachePlayerResource(self,playerid,type,value,rankNum): tableName = "player_base_info" filedName = "cash" if type == 1: filedName = "pvp_medal" elif type == 2: filedName = "gem" elif type == 3: filedName = "revive" elif type == 4: filedName = "cash" else: print("not conifg this resource %s"%type) return selectField = filedName condition = "playerid = %s" %playerid data = db_Manager.selectDataFromTable(tableName,selectField,condition) oldValue = int(data[0][0]) newValue = oldValue + value insertField = [] insertField.append(filedName) insertField.append('lastTimedRewardDatetime') insertField.append('last_timed_reward_ranknum') insertValue = [] insertValue.append(newValue) insertValue.append(GameTools.getDateTimeNowString()) insertValue.append(rankNum) db_Manager.updateDataAtTable(tableName,insertField,insertValue,condition)
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 sendPVPReward(self,playerid,type,value,rankNum): if value <= 0: value = -value value = int(value) player = self.playerid2player.get(playerid,None) if player == None: self.addNocachePlayerResource(playerid,type,value,rankNum) else: player.addResource(type,value) player.last_timed_reward_datetime = GameTools.getDateTimeNowString() player.last_timed_reward_ranknum = rankNum
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 updateTokenTime(self, token): self.token2time[token] = GameTools.getDatetimeNow() player = self.token2player[token] player.last_cmd_time = GameTools.getDateTimeNowString()
def useSkill(self,skillID): playerSkillInfo = self.getSkillInfo(skillID) playerSkillInfo.last_use_time = GameTools.getDateTimeNowString()
def __init__(self,data): self.player_id = data[0] # ID self.name = data[1] # 昵称 self.pvp_medal = int(data[2]) # self.gems = int(data[3]) # 钻石 self.revial = int(data[4]) # 复活币 self.cash = int(data[5]) # 金币 self.game_level = data[6] # 游戏关卡 self.game_wave = data[7] # 游戏波数 self.change_date = data[8] # 修改日期 self.chanllenge_num = data[9] # 剩余挑战次数 self.avatorid = data[10] # self.lootEquipLevel = data[11] self.isBrush = data[12] self.offlineCash = 0 if data[13] == None or data[13] == '': self.last_cmd_time = GameTools.getDateTimeNowString() else: self.last_cmd_time = data[13] self.random_reward_num = data[14] self.random_rweard_date= data[15] self.last_timed_reward_datetime = data[16] self.last_timed_reward_ranknum = data[17] self.last_challenge_datetime = data[18] self.buy_del_challenge_cd_num = data[19] self.daily_datetime = data[20] self.add_chanllenge_num = data[21] self.awake_spell_num = data[22] self.last_free_draw_datetime = data[23] self.recharge_total_num = data[24] self.recharge_get_gifts_status = json.loads(data[25]) self.last_login_date = "%s" %data[26] self.login_num = data[27] self.login_get_gifts_status = json.loads(data[28]) tutorial = json.loads(data[29]) self.Tutor1Finished = tutorial["1"] self.Tutor2Finished = tutorial["2"] self.Tutor3Finished = tutorial["3"] self.Tutor4Finished = tutorial["4"] self.Tutor5Finished = tutorial["5"] try: self.Tutor6Finished = tutorial["6"] except: self.Tutor6Finished = 0 try: self.Tutor7Finished = tutorial["7"] except: self.Tutor7Finished = 0 self.udid = data[30] self.server_date_time = GameTools.getDateTimeNowString() self.token = self.getToken(self.player_id) self.waveStartTime = GameTools.getDateTimeNowString() self.scenesInfo = {} self.connect_id = '' #equipment self.equipments = {}# pos --> equipment self.skills = [] self.partners = [] self.selected_partners = [] self.buffsValue = {} # buf count self.loadEqument() self.loadSkills() self.loadPartners() self.loadSelectPartners() self.loadSceneInfo() self.refreshTimeData() self.pvpBuffs = [] self.loadRankTimedRewardInfo() self.loadPvpBuffs() self.updateDailyData()
for i in range(2): udid += random.choice('abcdefghkmnpqrstuvwxyz') for i in range(6): udid += random.choice('0123456789') name = '' for i in range(2): name += random.choice(namelist) if random.choice([True, False]): if random.choice([True, False]): name += '.' name += random.choice('ABCDEFGHIJKLMOPQRSTUVWXYZ') if not playerDataManager.isSign(udid): if playerDataManager.isNameUsed(name): continue else: playerDataManager.createAccount(udid,name) player = playerDataManager.loginUseUidd(udid) player.server_date_time = GameTools.getDateTimeNowString() player.cash = 10000000 player.skillUpgrade(0,static.pvp_level_limit) player.saveData2DB() rankManager.addRank(player.player_id) else: continue count -= 1
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)