def update_after_action(cls, act_id, act_data, sid, data): """充值成功 Args: data :充值金额 """ date = act_data["data"][0] if date == utils.today() and act_data["data"][2] == 1: # 今天已经达标 act_data["data"][1] += data return act_data else: if date == utils.today(): act_data["data"][1] += data else: act_data["data"] = [utils.today(), data, 0] canget, awarded = act_data["canget"], act_data["awarded"] next_index = int(math.log(canget + awarded + 1, 2)) + 1 cfg = game_config.act_detail_cfg.get("%s-%s" % (act_id, next_index)) if act_data["data"][1] >= cfg["cond_a"]: act_data["data"][2] = 1 act_data["canget"] = utils.bit_set(canget, next_index) # 第五天充值达标 最终的大奖置为可领取 if (act_data["canget"] + awarded + 1) == math.pow(2, max(game_config.act_sample_detail_cfg[act_id]) - 1): act_data["canget"] = utils.bit_set(act_data["canget"], max(game_config.act_sample_detail_cfg[act_id])) return act_data
def update_after_action(cls, act_id, act_data, sid, data): """充值成功 Args: data :充值金额 """ date = act_data["data"][0] if date == utils.today() and act_data["data"][2] == 1: # 今天已经达标 act_data["data"][1] += data return act_data else: if date == utils.today(): act_data["data"][1] += data else: act_data["data"] = [utils.today(), data, 0] canget, awarded = act_data["canget"], act_data["awarded"] next_index = int(math.log(canget + awarded + 1, 2)) + 1 cfg = game_config.act_detail_cfg.get("%s-%s" % (act_id, next_index)) if act_data["data"][1] >= cfg["cond_a"]: act_data["data"][2] = 1 act_data["canget"] = utils.bit_set(canget, next_index) # 第五天充值达标 最终的大奖置为可领取 if (act_data["canget"] + awarded + 1) == math.pow( 2, max(game_config.act_sample_detail_cfg[act_id]) - 1): act_data["canget"] = utils.bit_set( act_data["canget"], max(game_config.act_sample_detail_cfg[act_id])) return act_data
def time_to_refresh(old_refresh, refresh_hour): """计算数据是否刷新 Args: old_refresh 上次刷新日期和小时 2015092404 refresh_hour 刷新小时时间点 Returns: True / False """ if old_refresh == 0: return True cur_hour = datetime.datetime.now().hour if isinstance(old_refresh, int): old_refresh = "%s" % old_refresh if int(old_refresh[:-2]) != utils.today(): # 已经不是同一天了,然后判断当前的小时是否已经到了指定的刷新时间点后面 if cur_hour >= refresh_hour: return True else: return False else: # 判断是否是当天5点前创建账号 if int(old_refresh[-2:]) < refresh_hour and cur_hour >= refresh_hour: return True else: return False
def update_after_login(ki_user): """登录操作触发活动数据更新 """ data = utils.today() update_after_action(LOGIN_ACTS, ki_user, data) update_after_arena_rank_update(ki_user, ki_user.arena.max_rank) # 更新隔天状态 update_after_charge(ki_user, 0, 0)
def resign(context): """vip等级足够 补签 Args: Returns: """ ki_user = context.user this_date = utils.today() # 今日还没签 不能补签 if this_date != ki_user.sign.last_sign: context.result['mc'] = MsgCode['SignNotToday'] return # 已经补签过了 if ki_user.daily_info.resign_tag == 1: context.result['mc'] = MsgCode['SignAlreadyToday'] return this_date1 = utils.split_date(this_date) cfg_key = "%s-%s-%s" % (this_date1[0], this_date1[1], ki_user.sign.month_sign_days) sign_cfg = game_config.sign_cfg.get(cfg_key) if sign_cfg["double_vip"] == 0: context.result['mc'] = MsgCode['SignCantResignToday'] return if sign_cfg["double_vip"] > ki_user.game_info.vip_level: context.result['mc'] = MsgCode['UserVipTooLow'] return # 更新补签标记 ki_user.daily_info.resign_tag = 1 ki_user.daily_info.put() pack_logic.add_items(ki_user, sign_cfg["award"]) # 加物品 context.result['mc'] = MsgCode['SignSucc']
def sign(context): """签到 Args: Returns: """ ki_user = context.user this_date = utils.today() if this_date == ki_user.sign.last_sign: context.result['mc'] = MsgCode['SignAlreadyToday'] return this_date1 = utils.split_date(this_date) cfg_key = "%s-%s-%s" % (this_date1[0], this_date1[1], ki_user.sign.month_sign_days + 1) sign_cfg = game_config.sign_cfg.get(cfg_key, {}) if not sign_cfg: context.result['mc'] = MsgCode['ParamIllegal'] return ki_user.sign.sign(this_date) if ki_user.game_info.vip_level >= sign_cfg["double_vip"]: ki_user.daily_info.resign_tag = 1 ki_user.daily_info.put() # 达到vip等级 双倍物品 awards = {} if sign_cfg["double_vip"] and sign_cfg[ "double_vip"] <= ki_user.game_info.vip_level: for item, value in sign_cfg["award"].items(): awards[item] = value * 2 else: awards = sign_cfg["award"] pack_logic.add_items(ki_user, awards) # 加物品 context.result['mc'] = MsgCode['SignSucc']
def sign(context): """签到 Args: Returns: """ ki_user = context.user this_date = utils.today() if this_date == ki_user.sign.last_sign: context.result['mc'] = MsgCode['SignAlreadyToday'] return this_date1 = utils.split_date(this_date) cfg_key = "%s-%s-%s" % (this_date1[0], this_date1[1], ki_user.sign.month_sign_days + 1) sign_cfg = game_config.sign_cfg.get(cfg_key, {}) if not sign_cfg: context.result['mc'] = MsgCode['ParamIllegal'] return ki_user.sign.sign(this_date) if ki_user.game_info.vip_level >= sign_cfg["double_vip"]: ki_user.daily_info.resign_tag = 1 ki_user.daily_info.put() # 达到vip等级 双倍物品 awards = {} if sign_cfg["double_vip"] and sign_cfg["double_vip"] <= ki_user.game_info.vip_level: for item, value in sign_cfg["award"].items(): awards[item] = value * 2 else: awards = sign_cfg["award"] pack_logic.add_items(ki_user, awards) # 加物品 context.result['mc'] = MsgCode['SignSucc']
def new(cls): """初始化活动数据 """ return {"canget": 0, "data": [utils.today(), 0, 0], "awarded": 0}
def new(cls): """初始化活动数据 """ return {"canget": 1, "data": utils.today(), "awarded": 0}