예제 #1
0
    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
예제 #2
0
    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
예제 #3
0
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
예제 #4
0
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
예제 #5
0
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)
예제 #6
0
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)
예제 #7
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']
예제 #8
0
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']
예제 #9
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']
예제 #10
0
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']
예제 #11
0
 def new(cls):
     """初始化活动数据
     """
     return {"canget": 0, "data": [utils.today(), 0, 0], "awarded": 0}
예제 #12
0
 def new(cls):
     """初始化活动数据
     """
     return {"canget": 1, "data": utils.today(), "awarded": 0}
예제 #13
0
 def new(cls):
     """初始化活动数据
     """
     return {"canget": 0, "data": [utils.today(), 0, 0], "awarded": 0}
예제 #14
0
 def new(cls):
     """初始化活动数据
     """
     return {"canget": 1, "data": utils.today(), "awarded": 0}