示例#1
0
    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()
示例#2
0
    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()
示例#3
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()
    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)
示例#5
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
 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
示例#7
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()
 def updateTokenTime(self, token):
     self.token2time[token] = GameTools.getDatetimeNow()
     player = self.token2player[token]
     player.last_cmd_time = GameTools.getDateTimeNowString()
示例#9
0
 def useSkill(self,skillID):
     playerSkillInfo = self.getSkillInfo(skillID)
     playerSkillInfo.last_use_time = GameTools.getDateTimeNowString()
示例#10
0
    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()
示例#11
0
    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)