Example #1
0
def __set_safety_coin(rk_user, cid, cost_coin):
    """
    修改保底机制中的consume——coin记录
    """
    user_gacha_obj = UserGacha.get_instance(rk_user.uid)
    if cid in [card_conf[0] for card_conf in game_config.gacha_config['gacha_black_conf']['safety_cards']]:
        # 重置用于记录的玩家触发保底的消费coin
        user_gacha_obj.reset_cost_coin()
    else:
        user_gacha_obj.add_cost_coin(cost_coin)
Example #2
0
def __set_safety_coin(rk_user, cid, cost_coin):
    """
    修改保底机制中的consume——coin记录
    """
    user_gacha_obj = UserGacha.get_instance(rk_user.uid)
    if cid in [
            card_conf[0] for card_conf in
            game_config.gacha_config['gacha_black_conf']['safety_cards']
    ]:
        # 重置用于记录的玩家触发保底的消费coin
        user_gacha_obj.reset_cost_coin()
    else:
        user_gacha_obj.add_cost_coin(cost_coin)
Example #3
0
def __multi_tenth_charge_rate(rk_user, forword_cards):
    """
    付费用户,第一次十连抽时,判定是否抽到给定tenth_charge_conf中的将,
        如果前9抽没有抽中,则第10抽必出。
        列表中的将给出card和相应权重

    """
    user_gacha_obj = UserGacha.get_instance(rk_user.uid)
    tenth_charge_conf = game_config.gacha_config.get('tenth_charge_conf', {})
    is_charge_user = rk_user.user_property.charged_user

    if tenth_charge_conf.get('is_open', False) and \
        is_charge_user and \
        user_gacha_obj.is_first_tenth_charge_multi() and \
        not set(forword_cards) & set([card_conf[0] for card_conf in tenth_charge_conf['cards']]):
        user_gacha_obj.set_first_tenth_charged()
        return tenth_charge_conf['cards']
    else:
        return
Example #4
0
def  __multi_tenth_charge_rate(rk_user, forword_cards):
    """
    付费用户,第一次十连抽时,判定是否抽到给定tenth_charge_conf中的将,
        如果前9抽没有抽中,则第10抽必出。
        列表中的将给出card和相应权重

    """
    user_gacha_obj = UserGacha.get_instance(rk_user.uid)
    tenth_charge_conf = game_config.gacha_config.get('tenth_charge_conf',{})
    is_charge_user = rk_user.user_property.charged_user

    if tenth_charge_conf.get('is_open', False) and \
        is_charge_user and \
        user_gacha_obj.is_first_tenth_charge_multi() and \
        not set(forword_cards) & set([card_conf[0] for card_conf in tenth_charge_conf['cards']]):
        user_gacha_obj.set_first_tenth_charged()
        return tenth_charge_conf['cards']
    else:
        return
Example #5
0
def __free_gacha(rk_user, params):
    """
    倒计时gacha(消耗元宝类型的  免费)
    """
    rate_conf = {}
    user_gacha_obj = UserGacha.get_instance(rk_user.uid)
    #获取下一次免费抽时间
    next_free_gacha_time = user_gacha_obj.next_free_gacha_time
    #获取当前时间
    now_time = int(time.time())
    #免费倒计时未到,则返回
    if next_free_gacha_time > now_time:
        return
    #是否是新手
    newbie = rk_user.user_property.newbie
    if newbie and 'newbie_gacha_list' in game_config.gacha_config:
        rate_conf = game_config.gacha_config['newbie_gacha_list']
    else:
        rate_conf = __get_rate_conf('free', rk_user)
    return rate_conf
Example #6
0
def  __safety_charge_rate(rk_user, rate_conf):
    """  保底元宝求将, 根据条件对抽将概率配置rate_conf进行调整
    """
    user_gacha_obj = UserGacha.get_instance(rk_user.uid)
    has_consume_coin = user_gacha_obj.get_cost_coin()
    # 是否达到了低保要求
    is_reach_safety = __is_reach_safety_gacha_condition(has_consume_coin)
    # 是否是付费用户
    is_charge_user = rk_user.user_property.charged_user
    # 没有达到低保要求,且不是付费玩家,降低权重
    if not is_reach_safety and not is_charge_user:
        weight_down = __get_weight_down(rk_user)
        rate_conf = __calculate_gacha_rate(rk_user, rate_conf, weight_down)

    # 达到低保要求  而且 没有低保武将
    elif is_reach_safety:
        # 变更为保底武将配置
        rate_conf = game_config.gacha_config['gacha_black_conf']['safety_cards']

    return rate_conf
Example #7
0
def __free_gacha(rk_user, params):
    """
    倒计时gacha(消耗元宝类型的  免费)
    """
    rate_conf = {}
    user_gacha_obj = UserGacha.get_instance(rk_user.uid)
    #获取下一次免费抽时间
    next_free_gacha_time = user_gacha_obj.next_free_gacha_time
    #获取当前时间
    now_time = int(time.time())
    #免费倒计时未到,则返回
    if next_free_gacha_time>now_time:
        return
    #是否是新手
    newbie = rk_user.user_property.newbie
    if newbie and 'newbie_gacha_list' in game_config.gacha_config:
        rate_conf = game_config.gacha_config['newbie_gacha_list']
    else:
        rate_conf = __get_rate_conf('free', rk_user)
    return rate_conf
Example #8
0
def __safety_charge_rate(rk_user, rate_conf):
    """  保底元宝求将, 根据条件对抽将概率配置rate_conf进行调整
    """
    user_gacha_obj = UserGacha.get_instance(rk_user.uid)
    has_consume_coin = user_gacha_obj.get_cost_coin()
    # 是否达到了低保要求
    is_reach_safety = __is_reach_safety_gacha_condition(has_consume_coin)
    # 是否是付费用户
    is_charge_user = rk_user.user_property.charged_user
    # 没有达到低保要求,且不是付费玩家,降低权重
    if not is_reach_safety and not is_charge_user:
        weight_down = __get_weight_down(rk_user)
        rate_conf = __calculate_gacha_rate(rk_user, rate_conf, weight_down)

    # 达到低保要求  而且 没有低保武将
    elif is_reach_safety:
        # 变更为保底武将配置
        rate_conf = game_config.gacha_config['gacha_black_conf'][
            'safety_cards']

    return rate_conf
Example #9
0
    def wrapper_info(self):
        """每次返回前端api请求都会附带的信息
        """
        data = {
            'pid': self.pid,
            'platform': self.baseinfo.get('platform'),
            'username': self.username,
            'sex': self.sex,
            'max_stamina': self.user_property.max_stamina,
            'vip_cur_level': self.user_property.vip_cur_level,
            'vip_next_level': self.user_property.vip_next_level,
            'vip_charge_money': self.user_property.charge_sumcoin,
            'vip_next_lv_need_money': self.user_property.next_lv_need_coin,
            'uid': self.uid,
            'signature': self.baseinfo.get('signature', ''),
            # 'max_friend_num': self.user_property.max_friend_num,
        }

        data.update(self.user_property.property_info)
        if 'get_card' in data:
            data.pop('get_card')
        if 'invite_info' in data:
            data.pop('invite_info')
        if 'bind_award' in data:
            data.pop('bind_award')
        if 'tapjoy' in data:
            data.pop('tapjoy')
        if 'bind_award' in data:
            data.pop('bind_award')
        if 'charge_sumcoin' in data:
            data.pop('charge_sumcoin')
        if 'update_award' in data:
            data.pop('update_award')
        if 'charge_sum_money' in data:
            data.pop('charge_sum_money')

        #data['cost'] = self.user_property.cost
        data['this_lv_now_exp'] = self.user_property.this_lv_now_exp
        data['next_lv_need_exp'] = self.user_property.next_lv_need_exp
        data['invite_code'] = self.user_property.invite_code
        #也许Friend不存在
        from apps.models.friend import Friend
        objFriend = Friend.get_instance(self.uid)
        data["friend_request_num"] = len(objFriend.get_request_ids())
        data['friend_gift_num'] = objFriend.get_gift_num()

        # 实时pvp相关
        data['real_pvp_title'] = self.user_real_pvp.pvp_title
        data['honor'] = self.user_real_pvp.honor

        #新礼包数
        # from apps.models.user_gift import UserGift
        # user_gift_obj = UserGift.get(self.uid)
        # data['new_gift_num'] = user_gift_obj.get_new_gift_num(self.user_property)

        #首冲标志
        data['first_charge'] = self.user_property.double_charge or self.user_property.first_charge

        #倒计时求将时间
        data['next_free_gacha_time'] = UserGacha.get_instance(self.uid).next_free_gacha_time

        #跑马灯信息,每隔10分钟返回一次
        data['marquee_info'] = self.marquee_info()
        # 新邮件数量
        data['new_mail_num'] = UserMail.new_mail_num(self.uid)
        #推送信息
        data['push_info'] = utils.get_push_info(self)
        data['push_open'] = self.game_config.system_config.get('push_open',False)

        # 援军槽数
        data['yuanjun_slot_num'] = self.user_cards.slot_num
        # 能否添加援军
        data['can_add_yuanjun'] = self.user_cards.can_add_yuanjun()
        # 能否签到
        data['today_can_sign'] = self.user_gift.today_can_sign()
        # 能否领开服礼包
        data['openserver_can_get'] = self.user_gift.openserver_can_get()
        # 发运营邮件
        from apps.logics.mails import send_op_mail
        send_op_mail(self)

        # 有可以领取的每日任务宝箱
        data['task_box_can_get'] = self.user_task.today_can_get()
        # 检查主线任务
        self.user_task.check_main_tasks()
        # 是否有能领取的主线任务奖励
        data['can_get_maintask_award'] = self.user_task.can_get_award()

        # 珠子伤害
        data['zhuzi_damage'] = self.user_character.zhuzi_damage()
        return data