Example #1
0
 def this_lv_now_exp(self):
     """
     当前级别内,现在积累的经验值
     如果达到最大等级,返回最后两等级的差
     """
     if self.reach_max_lv():
         return UserLevelMod.get(self.lv).exp - UserLevelMod.get(self.lv - 1).exp
     return self.exp - self.this_lv_exp
Example #2
0
 def this_lv_now_exp(self):
     """
     当前级别内,现在积累的经验值
     如果达到最大等级,返回最后两等级的差
     """
     if self.reach_max_lv():
         return UserLevelMod.get(
             self.lv).exp - UserLevelMod.get(self.lv - 1).exp
     return self.exp - self.this_lv_exp
Example #3
0
    def create(cls,uid):
        up = cls()
        up.uid = uid
        up.charge_award_info = {}
        up.consume_award_info = {}

        up.property_info = {
                            'exp':0,#经验值
                            'lv':1,
                            'gold':0,
                            'coin':0,
                            'stamina':0,
                            'card_exp_point': 1000, # 拥有的武将经验点数
                            'fight_soul': 0, #战魂
                            'stamina_upd_time': int(time.time()),

                            'newbie': False,     # 是否新手
                            'newbie_steps':0,     # 已完成的新手步骤

                            'bind_award':True,

                            'has_bought_vip_package':[],     #Vip等级所购买的vip礼包 只可以买一次
                            'charge_coins': 0,       # 总共充值的人民币
                            'charge_money': 0,      #  总共购买过元宝数
                            'charge_item_bought_times': {},    #  每种充值商品已购买次数
                            'monthCard_remain_days': {},       # 每种月卡剩余使用天数   'monthCard30': 29
                            "update_award":[], #版本更新奖励

                            'charged_user':False,#是否付费用户,包含大礼包

                            'recover_times':{
                                'today_str':utils.get_today_str(),
                                'recover_stamina':0,            #回复体力次数
                                'recover_pvp_stamina':0,        #回复PVP次数
                                'recover_mystery_store':0,      #刷新神秘商店的次数
                                'recover_copy':{
                                    'normal':0,
                                    'special':0,
                                    'daily': {},
                                },               #刷新副本次数                                
                            },         #使用元宝购买回复的次数
                            'wipe_out_times': 0,    # 当天已扫荡次数

                        }
        # 初始化每个试炼战场回复次数都为0
        daily_floods = up.game_config.daily_dungeon_config.keys()
        for daily_flood in daily_floods:
            up.property_info['recover_times']['recover_copy']['daily'][daily_flood] = 0
        # 用户初始化 体力值
        userLevelMod = UserLevelMod.get(str(up.property_info['lv']), game_config=up.game_config)
        up.property_info['stamina'] = userLevelMod.stamina
        # 用户初始化 铜钱 元宝等
        user_info_init = up.game_config.user_init_config["init_user_info"]
        up.property_info.update(user_info_init)
        up.put()

        return up
Example #4
0
 def max_friend_num(self):
     lv = self.property_info['lv']
     level = UserLevelMod.get(lv)
     vip_lv = self.vip_cur_level
     #miaoyichao start
     vip_add_friend_num = self.game_config.user_vip_config[str(vip_lv)].get('friend_upper',0)
     max_num = level.friend_num + self.property_info.get('friend_extend_num',0)+vip_add_friend_num
     #miaoyichao end
     #max_num = level.friend_num + self.property_info.get('friend_extend_num',0)
     return max_num
Example #5
0
 def max_friend_num(self):
     lv = self.property_info['lv']
     level = UserLevelMod.get(lv)
     vip_lv = self.vip_cur_level
     #miaoyichao start
     vip_add_friend_num = self.game_config.user_vip_config[str(vip_lv)].get(
         'friend_upper', 0)
     max_num = level.friend_num + self.property_info.get(
         'friend_extend_num', 0) + vip_add_friend_num
     #miaoyichao end
     #max_num = level.friend_num + self.property_info.get('friend_extend_num',0)
     return max_num
Example #6
0
    def create(cls, uid):
        up = cls()
        up.uid = uid
        up.charge_award_info = {}
        up.consume_award_info = {}

        up.property_info = {
            'exp': 0,  #经验值
            'lv': 1,
            'gold': 0,
            'coin': 0,
            'stamina': 0,
            'card_exp_point': 1000,  # 拥有的武将经验点数
            'fight_soul': 0,  #战魂
            'stamina_upd_time': int(time.time()),
            'newbie': False,  # 是否新手
            'newbie_steps': 0,  # 已完成的新手步骤
            'bind_award': True,
            'has_bought_vip_package': [],  #Vip等级所购买的vip礼包 只可以买一次
            'charge_coins': 0,  # 总共充值的人民币
            'charge_money': 0,  #  总共购买过元宝数
            'charge_item_bought_times': {},  #  每种充值商品已购买次数
            'monthCard_remain_days': {},  # 每种月卡剩余使用天数   'monthCard30': 29
            "update_award": [],  #版本更新奖励
            'charged_user': False,  #是否付费用户,包含大礼包
            'recover_times': {
                'today_str': utils.get_today_str(),
                'recover_stamina': 0,  #回复体力次数
                'recover_pvp_stamina': 0,  #回复PVP次数
                'recover_mystery_store': 0,  #刷新神秘商店的次数
                'recover_copy': {
                    'normal': 0,
                    'special': 0,
                    'daily': {},
                },  #刷新副本次数                                
            },  #使用元宝购买回复的次数
            'wipe_out_times': 0,  # 当天已扫荡次数
        }
        # 初始化每个试炼战场回复次数都为0
        daily_floods = up.game_config.daily_dungeon_config.keys()
        for daily_flood in daily_floods:
            up.property_info['recover_times']['recover_copy']['daily'][
                daily_flood] = 0
        # 用户初始化 体力值
        userLevelMod = UserLevelMod.get(str(up.property_info['lv']),
                                        game_config=up.game_config)
        up.property_info['stamina'] = userLevelMod.stamina
        # 用户初始化 铜钱 元宝等
        user_info_init = up.game_config.user_init_config["init_user_info"]
        up.property_info.update(user_info_init)
        up.put()

        return up
Example #7
0
    def refresh_lv(self,version):
        """
        刷新等级
        """

        max_lv = max([int(i) for i in self.game_config.user_level_config.keys()])
        new_lv = 1
        old_lv = self.lv
        for next_lv in range(1,max_lv + 1):
            userLevelMod = UserLevelMod.get(next_lv)
            if self.property_info['exp'] >= userLevelMod.exp:
                new_lv = next_lv
            else:
                break
        if old_lv != new_lv:
            self.property_info['lv'] = new_lv
            userLevelMod = UserLevelMod.get(new_lv)
            self.property_info['stamina'] = userLevelMod.stamina

            #将用户写入新级别对应的用户列表中
            subarea = self.user_base.subarea
            LevelUser.get_instance(subarea, self.lv_region).add_user(self.uid)
        self.put()
Example #8
0
    def refresh_lv(self, version):
        """
        刷新等级
        """

        max_lv = max(
            [int(i) for i in self.game_config.user_level_config.keys()])
        new_lv = 1
        old_lv = self.lv
        for next_lv in range(1, max_lv + 1):
            userLevelMod = UserLevelMod.get(next_lv)
            if self.property_info['exp'] >= userLevelMod.exp:
                new_lv = next_lv
            else:
                break
        if old_lv != new_lv:
            self.property_info['lv'] = new_lv
            userLevelMod = UserLevelMod.get(new_lv)
            self.property_info['stamina'] = userLevelMod.stamina

            #将用户写入新级别对应的用户列表中
            subarea = self.user_base.subarea
            LevelUser.get_instance(subarea, self.lv_region).add_user(self.uid)
        self.put()
Example #9
0
 def max_stamina(self):
     '''
     根据用户的等级获取最大体力值
     '''
     userlvmod = UserLevelMod.get(self.lv, self.game_config)
     return userlvmod.stamina
Example #10
0
    def add_exp(self, exp, where=''):
        '''
        添加用户的经验
        不管是加还是扣经验都会触发等级变化
        返回: 是否升级, {}
        '''
        #保存变化前的exp
        from apps.models.user_gift import UserGift
        old_exp = self.property_info['exp']

        old_lv = self.lv
        new_lv = self.lv
        self.property_info['exp'] = self.property_info['exp'] + exp
        while True:
            new_lv += 1
            userLevelMod = UserLevelMod.get(new_lv)
            if not userLevelMod.exp or self.property_info[
                    'exp'] < userLevelMod.exp:
                new_lv -= 1
                break

        if new_lv > old_lv:
            #有升级的话就写日志和重新排名
            #写日志
            log_data = {}
            log_data['old_exp'] = old_exp
            log_data['old_lv'] = old_lv
            log_data['add_exp'] = exp
            log_data['new_lv'] = new_lv
            log_data['new_exp'] = self.property_info['exp']
            log_data['where'] = where
            data_log_mod.set_log('UserLevelHistory', self, **log_data)
            #新等级
            self.property_info['lv'] = new_lv
            userLevelMod = UserLevelMod.get(new_lv)
            #获取前20000名对应的分数
            rank_lv = lv_top_model.get_score(20000)
            #只有等级能到达50000名的才会进入排行榜
            if not rank_lv or new_lv > rank_lv:
                lv_top_model.set(self.uid, new_lv)
            #更新体力,cost
            self.property_info['stamina'] += userLevelMod.lv_stamina

            #将用户写入新级别对应的用户列表中
            subarea = self.user_base.subarea
            LevelUser.get_instance(subarea, self.lv_region).add_user(self.uid)
            inviter_uid = Friend.get(self.uid).inviter
            if inviter_uid:
                inviter_friend = Friend.get(inviter_uid)
            else:
                inviter_friend = None
            #升级时,检查是否有礼品码的升级奖励
            user_gift_obj = UserGift.get_instance(self.uid)
            user_gift_obj.get_giftcode_lv_up_award()
            #升级时,检查是否有升级奖励
            msg = utils.get_msg('user', 'lv_up_award', self)

            for lv in range(old_lv + 1, new_lv + 1):
                if 'award' in self.game_config.user_level_config[str(lv)]:
                    user_gift_obj.add_gift(
                        self.game_config.user_level_config[str(lv)]['award'],
                        msg % lv)
                #用户升级后,将自己信息写入邀请者
                if inviter_friend:
                    inviter_friend.record_invited_user(self.uid, lv)
            self.user_cards.set_slot_num(new_lv)
        self.put()
        return new_lv > old_lv, {}
Example #11
0
 def next_lv_exp(self):
     """
     下一级别所需的经验值
     miaoyichao
     """
     return UserLevelMod.get(self.next_lv).exp
Example #12
0
 def this_lv_exp(self):
     """
     当前级别所需的经验值
     miaoyichao
     """
     return UserLevelMod.get(self.lv).exp
Example #13
0
 def max_stamina(self):
     '''
     根据用户的等级获取最大体力值
     '''
     userlvmod = UserLevelMod.get(self.lv, self.game_config)
     return userlvmod.stamina
Example #14
0
    def add_exp(self, exp, where=''):
        '''
        添加用户的经验
        不管是加还是扣经验都会触发等级变化
        返回: 是否升级, {}
        '''
        #保存变化前的exp
        from apps.models.user_gift import UserGift
        old_exp = self.property_info['exp']


        old_lv = self.lv
        new_lv = self.lv
        self.property_info['exp'] = self.property_info['exp'] + exp
        while True:
            new_lv += 1
            userLevelMod = UserLevelMod.get(new_lv)
            if not userLevelMod.exp or self.property_info['exp'] < userLevelMod.exp:
                new_lv -= 1
                break

        if new_lv > old_lv:
            #有升级的话就写日志和重新排名
            #写日志
            log_data = {}
            log_data['old_exp'] = old_exp
            log_data['old_lv'] = old_lv
            log_data['add_exp'] = exp
            log_data['new_lv'] = new_lv
            log_data['new_exp'] = self.property_info['exp']
            log_data['where'] = where
            data_log_mod.set_log('UserLevelHistory', self, **log_data)
            #新等级
            self.property_info['lv'] = new_lv
            userLevelMod = UserLevelMod.get(new_lv)
            #获取前20000名对应的分数
            rank_lv = lv_top_model.get_score(20000)
            #只有等级能到达50000名的才会进入排行榜
            if not rank_lv or new_lv>rank_lv:
                lv_top_model.set(self.uid,new_lv)
            #更新体力,cost
            self.property_info['stamina'] += userLevelMod.lv_stamina

            #将用户写入新级别对应的用户列表中
            subarea = self.user_base.subarea 
            LevelUser.get_instance(subarea, self.lv_region).add_user(self.uid)
            inviter_uid = Friend.get(self.uid).inviter
            if inviter_uid:
                inviter_friend = Friend.get(inviter_uid)
            else:
                inviter_friend = None
            #升级时,检查是否有礼品码的升级奖励
            user_gift_obj = UserGift.get_instance(self.uid)
            user_gift_obj.get_giftcode_lv_up_award()
            #升级时,检查是否有升级奖励
            msg = utils.get_msg('user','lv_up_award', self)

            for lv in range(old_lv + 1, new_lv + 1):
                if 'award' in self.game_config.user_level_config[str(lv)]:
                    user_gift_obj.add_gift(self.game_config.user_level_config[str(lv)]['award'],msg % lv)
                #用户升级后,将自己信息写入邀请者
                if inviter_friend:
                    inviter_friend.record_invited_user(self.uid, lv)
            self.user_cards.set_slot_num(new_lv)
        self.put()
        return new_lv > old_lv, {}
Example #15
0
 def next_lv_exp(self):
     """
     下一级别所需的经验值
     miaoyichao
     """
     return UserLevelMod.get(self.next_lv).exp
Example #16
0
 def this_lv_exp(self):
     """
     当前级别所需的经验值
     miaoyichao
     """
     return UserLevelMod.get(self.lv).exp