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)
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)
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
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
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
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
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
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
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