Ejemplo n.º 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()
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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()
Ejemplo n.º 4
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()
Ejemplo n.º 5
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()
Ejemplo n.º 6
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
Ejemplo n.º 7
0
    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)
Ejemplo n.º 8
0
 def __init__(self,data):
     self.skillID = data[0]
     self.skillLevel = data[1]
     if data[2] == None or data[2] =="" or data[2] == " ":
         yesterday = datetime.datetime.now() - datetime.timedelta(days = 1)
         self.last_use_time = GameTools.datetime2string(yesterday)
     else:
         self.last_use_time = data[2]
Ejemplo n.º 9
0
 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
Ejemplo n.º 10
0
    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)
Ejemplo n.º 11
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
Ejemplo n.º 12
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()
Ejemplo n.º 13
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()
Ejemplo n.º 14
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
Ejemplo n.º 15
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
Ejemplo n.º 16
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
Ejemplo n.º 17
0
    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
Ejemplo n.º 18
0
    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
Ejemplo n.º 19
0
 def createAccount(self,udid,name):
     tableName = 'player_base_info'
     fields = []
     values = []
     fields.append('playerid')
     fields.append('udid')
     fields.append('name')
     fields.append('last_cmd_time')
     self.player_max_id += 1
     playerid = self.server_id + self.player_max_id
     values.append(playerid)
     values.append(udid)
     values.append(name)
     timeNowStr = GameTools.datetime2string(datetime.datetime.now())
     values.append(timeNowStr)
     db_Manager.insertIntoTable(tableName,fields,values)
     self.updatePlayerMaxID(self.player_max_id)
Ejemplo n.º 20
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)
Ejemplo n.º 21
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()
Ejemplo n.º 22
0
 def __init__(self):
     self.rank_max_num = 0
     self.rank = {}
     self.lastSendRewardTime = GameTools.getDatetimeNow() - datetime.timedelta(days = 1)
     print('init rank')
Ejemplo n.º 23
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
Ejemplo n.º 24
0
 def getWaveStartTime(self):
     time = GameTools.string2datetime(self.waveStartTime)
     return  time
Ejemplo n.º 25
0
 def updateTokenTime(self, token):
     self.token2time[token] = GameTools.getDatetimeNow()
     player = self.token2player[token]
     player.last_cmd_time = GameTools.getDateTimeNowString()
Ejemplo n.º 26
0
 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()
Ejemplo n.º 27
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()
Ejemplo n.º 28
0
 def useSkill(self,skillID):
     playerSkillInfo = self.getSkillInfo(skillID)
     playerSkillInfo.last_use_time = GameTools.getDateTimeNowString()
Ejemplo n.º 29
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)