Exemple #1
0
def get_fund_activity_info_1854(data, player):
    # 成长基金活动
    response = activity_pb2.GetFundActivityResponse()

    for act_conf in game_configs.activity_config[51]:
        if not player.act.is_activiy_open(act_conf.id):
            continue
        act_info = get_act_info(player, act_conf.id)

        act = response.info.add()
        act.act_id = act_conf.id
        act.state = act_info.get('state')
        act.accumulate_days = len(act_info.get('jindu'))

    for act_conf in game_configs.activity_config[50]:
        if not player.act.is_activiy_open(act_conf.id):
            continue
        act_info = get_act_info(player, act_conf.id)

        act = response.info.add()
        act.act_id = act_conf.id
        act.state = act_info.get('state')
        act.recharge = act_info.get('jindu')[0]
        act.max_single_recharge = act_info.get('jindu')[1]

        # act.state = v.get('state', 0)
        # act.recharge = v.get('recharge', 0)
        # act.max_single_recharge = v.get('max_single_recharge', 0)

    print 'get_fund_activity_info_1854:', response
    return response.SerializeToString()
Exemple #2
0
def get_fund_activity_info_1854(data, player):
    # 成长基金活动
    response = activity_pb2.GetFundActivityResponse()

    for act_conf in game_configs.activity_config[51]:
        if not player.act.is_activiy_open(act_conf.id):
            continue
        act_info = get_act_info(player, act_conf.id)

        act = response.info.add()
        act.act_id = act_conf.id
        act.state = act_info.get('state')
        act.accumulate_days = len(act_info.get('jindu'))

    for act_conf in game_configs.activity_config[50]:
        if not player.act.is_activiy_open(act_conf.id):
            continue
        act_info = get_act_info(player, act_conf.id)

        act = response.info.add()
        act.act_id = act_conf.id
        act.state = act_info.get('state')
        act.recharge = act_info.get('jindu')[0]
        act.max_single_recharge = act_info.get('jindu')[1]

        # act.state = v.get('state', 0)
        # act.recharge = v.get('recharge', 0)
        # act.max_single_recharge = v.get('max_single_recharge', 0)

    print 'get_fund_activity_info_1854:', response
    return response.SerializeToString()
Exemple #3
0
 def update_act_with_get(self):
     for act_conf in game_configs.activity_config.get(1, []):
         if not self.is_activiy_open(act_conf.id):
             continue
         get_act_info(self.owner, act_conf.id)
     for act_conf in game_configs.activity_config.get(18, []):
         if not self.is_activiy_open(act_conf.id):
             continue
         get_act_info(self.owner, act_conf.id)
Exemple #4
0
    def mine_mix_runt(self, runt_quality):
        """
        秘境宝石合成
        """
        act_confs = game_configs.activity_config.get(59, [])
        info = {}
        info[WIN_MINE_QUALITY] = runt_quality
        state2_acts = []

        for act_conf in act_confs:
            act_id = act_conf.id
            act_conf = game_configs.activity_config.get(act_id)
            if not self.is_activiy_open(act_id):
                continue
            act_info = self._act_infos.get(act_id)
            if not act_info:
                self._act_infos[act_id] = [1, [info]]
            else:
                if act_info[0] != 1:
                    continue
                else:
                    act_info[1].append(info)
            act_info = get_act_info(self.owner, act_conf.id)
            if act_info.get('state') == 2:
                state2_acts.append(act_conf.id)
        self.fulfil_activity(state2_acts)
        self.save_data()
Exemple #5
0
    def add_treasure(self, treasure_type, treasure_quality):
        """
        添加宝物或者饰品
        """
        info = {}
        info[TREASURE_TYPE] = treasure_type
        info[TREASURE_QUALITY] = treasure_quality
        state2_acts = []

        for x in [60, 61, 62, 63]:
            act_confs = game_configs.activity_config.get(x, [])
            for act_conf in act_confs:
                act_id = act_conf.id
                act_conf = game_configs.activity_config.get(act_id)
                if not self.is_activiy_open(act_id):
                    continue
                act_info = self._act_infos.get(act_id)
                if not act_info:
                    self._act_infos[act_id] = [1, [info]]
                else:
                    if act_info[0] != 1:
                        continue
                    else:
                        act_info[1].append(info)
                act_info = get_act_info(self.owner, act_conf.id)
                if act_info.get('state') == 2:
                    state2_acts.append(act_conf.id)
        self.fulfil_activity(state2_acts)

        self.save_data()
Exemple #6
0
def get_fund_activity_1850(data, player):
    # 成长基金活动
    request = activity_pb2.GetActGiftRequest()
    request.ParseFromString(data)
    activity_id = request.act_id
    response = activity_pb2.GetActGiftResponse()
    response.res.result = False

    if not player.act.is_activiy_open(activity_id):
        response.res.result = False
        response.res.result_no = 800
        return response.SerializeToString()

    act_item = game_configs.activity_config.get(activity_id)
    if act_item is None:
        response.res.result_no = 185000
        return response.SerializeToString()

    info = get_act_info(player, activity_id)

    if info.get('state') != 2:
        response.res.result = False
        logger.error("条件不满足")
        response.res.result_no = 800
        return response.SerializeToString()

    return_data = gain(player, act_item.reward, const.FUND)
    get_return(player, return_data, response.gain)
    player.act.act_infos[activity_id][0] = 3
    player.act.save_data()

    response.res.result = True
    return response.SerializeToString()
Exemple #7
0
    def mine_win(self, quality):
        """
        秘境占领矿点
        """
        act_confs = game_configs.activity_config.get(57, [])
        print act_confs, '=====================act confs, mine_win'
        info = {}
        info[WIN_MINE_QUALITY] = quality
        state2_acts = []

        for act_conf in act_confs:
            act_id = act_conf.id
            if not self.is_activiy_open(act_id):
                continue
            act_info = self._act_infos.get(act_id)
            if not act_info:
                self._act_infos[act_id] = [1, [info]]
            else:
                if act_info[0] != 1:
                    continue
                else:
                    act_info[1].append(info)
            act_info = get_act_info(self.owner, act_conf.id)
            if act_info.get('state') == 2:
                state2_acts.append(act_conf.id)
        self.fulfil_activity(state2_acts)
        self.save_data()
Exemple #8
0
def get_fund_activity_1850(data, player):
    # 成长基金活动
    request = activity_pb2.GetActGiftRequest()
    request.ParseFromString(data)
    activity_id = request.act_id
    response = activity_pb2.GetActGiftResponse()
    response.res.result = False

    if not player.act.is_activiy_open(activity_id):
        response.res.result = False
        response.res.result_no = 800
        return response.SerializeToString()

    act_item = game_configs.activity_config.get(activity_id)
    if act_item is None:
        response.res.result_no = 185000
        return response.SerializeToString()

    info = get_act_info(player, activity_id)

    if info.get('state') != 2:
        response.res.result = False
        logger.error("条件不满足")
        response.res.result_no = 800
        return response.SerializeToString()

    return_data = gain(player,
                       act_item.reward,
                       const.FUND)
    get_return(player, return_data, response.gain)
    player.act.act_infos[activity_id][0] = 3
    player.act.save_data()

    response.res.result = True
    return response.SerializeToString()
Exemple #9
0
    def condition_add(self, type, v):
        act_confs = game_configs.activity_config.get(type, [])
        state2_acts = []
        for act_conf in act_confs:
            act_id = act_conf.id
            if not self.is_activiy_open(act_id):
                continue
            act_info = self._act_infos.get(act_id)
            if not act_info:
                self._act_infos[act_id] = [1, v]
            else:
                if act_info[0] != 1:
                    continue
                else:
                    act_info[1] += v
            act_info = get_act_info(self.owner, act_conf.id)
            if act_info.get('state') == 2:
                state2_acts.append(act_conf.id)

        if type == 44:
            act_confs = game_configs.activity_config.get(50, [])
            for act_conf in act_confs:
                act_id = act_conf.id
                act_conf = game_configs.activity_config.get(act_id)
                if not self.is_activiy_open(act_id):
                    continue
                act_info = self._act_infos.get(act_id)
                if not act_info:
                    self._act_infos[act_id] = [1, [v, v, 0]]
                else:
                    if act_info[0] != 1:
                        continue
                    else:
                        act_info[1][0] += v
                        act_info[1][1] = max(act_info[1][1], v)
                act_info = get_act_info(self.owner, act_conf.id)
                if act_info.get('state') == 2:
                    state2_acts.append(act_conf.id)
        self.fulfil_activity(state2_acts)
        self.save_data()
Exemple #10
0
def get_target_info_1826(data, player):
    """获取任务信息"""
    args = start_target_pb2.GetStartTargetInfoRequest()
    args.ParseFromString(data)
    # day = args.day  # 0为所有
    response = start_target_pb2.GetStartTargetInfoResponse()

    # 第几天登录
    day = player.base_info.login_day

    # 更新一下 登录奖励的状态
    # player.start_target.update_29()

    response.day = day
    # 需要查询的目标ID
    target_ids = {}
    if args.day:
        ids = []
        for a, b in game_configs.base_config.get('seven' +
                                                 str(args.day)).items():
            ids += b
        target_ids[args.day] = ids
    else:
        for x in [1, 2, 3, 4, 5, 6, 7]:
            if x > day:
                continue
            ids = []
            for a, b in game_configs.base_config.get('seven' + str(x)).items():
                ids += b
            target_ids[x] = ids

    for _, ids in target_ids.items():
        for target_id in ids:
            if not player.act.is_activiy_open(target_id):
                continue

            logger.debug("target_id %s" % target_id)
            info = get_act_info(player, target_id)
            target_info_pro = response.start_target_info.add()
            target_info_pro.target_id = target_id
            if info.get('jindu'):
                target_info_pro.jindu = info.get('jindu')
            if info.get('state'):
                target_info_pro.state = info.get('state')

    player.act.save_data()

    logger.debug("response==========================start targe  %s" %
                 response)
    response.res.result = True
    return response.SerializeToString()
Exemple #11
0
def get_activity_info_1855(data, player):
    # 通用 获取活动信息
    args = activity_pb2.GetActivityInfoRequese()
    args.ParseFromString(data)
    select_type = args.select_type
    select_values = args.value
    response = activity_pb2.GetActivityInfoResponse()
    print select_type, select_values, '========================act type 1855'

    configs = []
    for select_value in select_values:
        if select_type == 1:
            configs = game_configs.activity_config.get(select_value, [])
        elif select_type == 2:
            configs = game_configs.activity_config.get('icon').get(
                select_value, [])
        else:
            response.res.result = False
            print 'select type error ========================act info 1855'
            response.res.result_no = 800
            return response.SerializeToString()
        if configs and configs[0].type == 18:
            # 连续登录
            player.act.update_act_with_get()
        for act_conf in configs:
            if act_conf.icon == 10179:  # 七日活动
                continue
            if not player.act.is_activiy_open(act_conf.id):
                continue
            act_info = get_act_info(player, act_conf.id)
            print act_info, '========================act info 1855'

            info_pro = response.info.add()
            info_pro.act_id = act_conf.id
            if act_conf.type == 51:
                info_pro.state = act_info.get('state')
                info_pro.accumulate_days = len(act_info.get('jindu'))
            elif act_conf.type == 50:
                info_pro.state = act_info.get('state')
                info_pro.recharge = act_info.get('jindu')[0]
                info_pro.max_single_recharge = act_info.get('jindu')[1]
            else:
                if act_info.get('state'):
                    info_pro.state = act_info.get('state')
                if act_info.get('state') == 1 and act_info.get('jindu'):
                    info_pro.jindu = act_info.get('jindu')

    player.act.save_data()
    response.res.result = True
    print 'get_activity_info_1855:', response
    return response.SerializeToString()
Exemple #12
0
def activate_fund_activity_1851(data, player):
    # 成长基金活动
    request = activity_pb2.GetActGiftRequest()
    request.ParseFromString(data)
    activity_id = request.act_id
    response = activity_pb2.GetActGiftResponse()
    response.res.result = False

    if not player.act.is_activiy_open(activity_id):
        response.res.result = False
        response.res.result_no = 800
        return response.SerializeToString()

    act_item = game_configs.activity_config.get(activity_id)

    if act_item.parameterB == 0:
        logger.error('no need activate this activity:%s', activity_id)
        response.res.result_no = 185101
        return response.SerializeToString()

    info = get_act_info(player, activity_id)

    if info.get('state') != 2:
        response.res.result = False
        logger.error("条件不满足")
        response.res.result_no = 800
        return response.SerializeToString()

    need_gold = act_item.parameterB
    price = []
    price.append(CommonGroupItem(const.RESOURCE, need_gold, need_gold, const.GOLD))

    def func():
        consume_return_data = item_group_helper.consume(player,
                                                        price,
                                                        const.MINE_ACC)
        item_group_helper.get_return(player,
                                     consume_return_data,
                                     response.consume)
    player.pay.pay(need_gold, const.FUND, func)

    player.act.act_infos[activity_id][0] = 3
    player.act.update_51()
    player.act.save_data()

    # fund['consume'] = need_gold
    # player.fund_activity.check_precondition()
    # player.fund_activity.check_time()
    response.res.result = True
    return response.SerializeToString()
Exemple #13
0
def activate_fund_activity_1851(data, player):
    # 成长基金活动
    request = activity_pb2.GetActGiftRequest()
    request.ParseFromString(data)
    activity_id = request.act_id
    response = activity_pb2.GetActGiftResponse()
    response.res.result = False

    if not player.act.is_activiy_open(activity_id):
        response.res.result = False
        response.res.result_no = 800
        return response.SerializeToString()

    act_item = game_configs.activity_config.get(activity_id)

    if act_item.parameterB == 0:
        logger.error('no need activate this activity:%s', activity_id)
        response.res.result_no = 185101
        return response.SerializeToString()

    info = get_act_info(player, activity_id)

    if info.get('state') != 2:
        response.res.result = False
        logger.error("条件不满足")
        response.res.result_no = 800
        return response.SerializeToString()

    need_gold = act_item.parameterB
    price = []
    price.append(
        CommonGroupItem(const.RESOURCE, need_gold, need_gold, const.GOLD))

    def func():
        consume_return_data = item_group_helper.consume(
            player, price, const.MINE_ACC)
        item_group_helper.get_return(player, consume_return_data,
                                     response.consume)

    player.pay.pay(need_gold, const.FUND, func)

    player.act.act_infos[activity_id][0] = 3
    player.act.update_51()
    player.act.save_data()

    # fund['consume'] = need_gold
    # player.fund_activity.check_precondition()
    # player.fund_activity.check_time()
    response.res.result = True
    return response.SerializeToString()
Exemple #14
0
def get_activity_info_1855(data, player):
    # 通用 获取活动信息
    args = activity_pb2.GetActivityInfoRequese()
    args.ParseFromString(data)
    select_type = args.select_type
    select_values = args.value
    response = activity_pb2.GetActivityInfoResponse()
    print select_type, select_values, '========================act type 1855'

    configs = []
    for select_value in select_values:
        if select_type == 1:
            configs = game_configs.activity_config.get(select_value, [])
        elif select_type == 2:
            configs = game_configs.activity_config.get('icon').get(select_value, [])
        else:
            response.res.result = False
            print 'select type error ========================act info 1855'
            response.res.result_no = 800
            return response.SerializeToString()
        if configs and configs[0].type == 18:
            # 连续登录
            player.act.update_act_with_get()
        for act_conf in configs:
            if act_conf.icon == 10179:  # 七日活动
                continue
            if not player.act.is_activiy_open(act_conf.id):
                continue
            act_info = get_act_info(player, act_conf.id)
            print act_info, '========================act info 1855'

            info_pro = response.info.add()
            info_pro.act_id = act_conf.id
            if act_conf.type == 51:
                info_pro.state = act_info.get('state')
                info_pro.accumulate_days = len(act_info.get('jindu'))
            elif act_conf.type == 50:
                info_pro.state = act_info.get('state')
                info_pro.recharge = act_info.get('jindu')[0]
                info_pro.max_single_recharge = act_info.get('jindu')[1]
            else:
                if act_info.get('state'):
                    info_pro.state = act_info.get('state')
                if act_info.get('state') == 1 and act_info.get('jindu'):
                    info_pro.jindu = act_info.get('jindu')

    player.act.save_data()
    response.res.result = True
    print 'get_activity_info_1855:', response
    return response.SerializeToString()
Exemple #15
0
def get_activity_gift_1856(data, player):
    request = activity_pb2.GetActGiftRequest()
    request.ParseFromString(data)
    activity_id = request.act_id
    response = activity_pb2.GetActGiftResponse()
    response.res.result = False

    if not player.act.is_activiy_open(activity_id):
        response.res.result = False
        response.res.result_no = 800
        return response.SerializeToString()

    act_conf = game_configs.activity_config.get(activity_id)
    info = get_act_info(player, activity_id)

    if info.get('state') != 2:
        response.res.result = False
        logger.error("this start target 条件不满足")
        response.res.result_no = 800
        return response.SerializeToString()

    need_gold = 0
    need_gold_acts = [30, 50]

    if act_conf.type in need_gold_acts:
        need_gold = act_conf.parameterB
        if need_gold:
            price = parse({107: [need_gold, need_gold, 2]})
            if not is_afford(player, price):
                response.res.result = False
                response.res.result_no = 102
                return response.SerializeToString()

    def func():
        return_data = gain(player, act_conf.reward, const.ACTIVITY)  # 获取
        get_return(player, return_data, response.gain)
        if act_conf.type == 30:
            if act_conf.count <= (info.get('jindu') + 1):
                player.act.act_infos[activity_id][0] = 3
            else:
                player.act.act_infos[activity_id] = [1, info.get('jindu') + 1]
        else:
            player.act.act_infos[activity_id][0] = 3

    player.pay.pay(need_gold, const.ACTIVITY, func)
    player.act.save_data()

    response.res.result = True
    return response.SerializeToString()
Exemple #16
0
def get_activity_gift_1856(data, player):
    request = activity_pb2.GetActGiftRequest()
    request.ParseFromString(data)
    activity_id = request.act_id
    response = activity_pb2.GetActGiftResponse()
    response.res.result = False

    if not player.act.is_activiy_open(activity_id):
        response.res.result = False
        response.res.result_no = 800
        return response.SerializeToString()

    act_conf = game_configs.activity_config.get(activity_id)
    info = get_act_info(player, activity_id)

    if info.get('state') != 2:
        response.res.result = False
        logger.error("this start target 条件不满足")
        response.res.result_no = 800
        return response.SerializeToString()

    need_gold = 0
    need_gold_acts = [30, 50]

    if act_conf.type in need_gold_acts:
        need_gold = act_conf.parameterB
        if need_gold:
            price = parse({107: [need_gold, need_gold, 2]})
            if not is_afford(player, price):
                response.res.result = False
                response.res.result_no = 102
                return response.SerializeToString()

    def func():
        return_data = gain(player, act_conf.reward, const.ACTIVITY)  # 获取
        get_return(player, return_data, response.gain)
        if act_conf.type == 30:
            if act_conf.count <= (info.get('jindu') + 1):
                player.act.act_infos[activity_id][0] = 3
            else:
                player.act.act_infos[activity_id] = [1, info.get('jindu') + 1]
        else:
            player.act.act_infos[activity_id][0] = 3

    player.pay.pay(need_gold, const.ACTIVITY, func)
    player.act.save_data()

    response.res.result = True
    return response.SerializeToString()
Exemple #17
0
    def get_act_open_info(self, act_id):
        player_act_type = [3, 6]
        act_conf = game_configs.activity_config.get(act_id)
        if not act_conf:
            return {'is_open': 0, 'time_start': 0, 'time_end': 0}
        register_time = self.owner.base_info.register_time

        if act_conf.duration in player_act_type:
            act_info = self._act_infos.get(act_conf.id)
            if act_info and act_info[0]:
                return {'is_open': 1, 'time_start': 1, 'time_end': 1}
            premise_id = act_conf.premise
            premise_conf = game_configs.activity_config.get(premise_id)
            premise_info = get_act_info(self.owner, premise_id)
            if premise_info.get('state') != 3:
                return {'is_open': 0, 'time_start': 0, 'time_end': 0}

        return do_get_act_open_info(act_id, register_time=register_time)
Exemple #18
0
 def mine_get_runt(self):
     """秘境宝石收取"""
     act_confs = game_configs.activity_config.get(58, [])
     state2_acts = []
     for act_conf in act_confs:
         act_id = act_conf.id
         if not self.is_activiy_open(act_id):
             continue
         act_info = self._act_infos.get(act_id)
         if not act_info:
             self._act_infos[act_id] = [1, 0]
         else:
             if act_info[0] != 1:
                 continue
             else:
                 act_info[1] += 1
         act_info = get_act_info(self.owner, act_conf.id)
         if act_info.get('state') == 2:
             state2_acts.append(act_conf.id)
     self.fulfil_activity(state2_acts)
     self.save_data()
Exemple #19
0
    def condition_update(self, type, v):
        act_confs = game_configs.activity_config.get(type, [])
        state2_acts = []
        for act_conf in act_confs:
            act_id = act_conf.id
            if not self.is_activiy_open(act_id):
                continue
            act_info = self._act_infos.get(act_id)
            if not act_info:
                self._act_infos[act_id] = [1, v]
            else:
                if act_info[0] != 1:
                    continue
                else:
                    if act_info[1] < v:
                        act_info[1] = v

            act_info = get_act_info(self.owner, act_conf.id)
            if act_info.get('state') == 2:
                state2_acts.append(act_conf.id)
        self.fulfil_activity(state2_acts)
        self.save_data()
Exemple #20
0
 def update_71_73_75(self, type, v):
     state2_acts = []
     act_confs = game_configs.activity_config.get(type, [])
     for act_conf in act_confs:
         act_id = act_conf.id
         if not self.is_activiy_open(act_id):
             continue
         if v not in act_conf.parameterC:
             continue
         act_info = self._act_infos.get(act_id)
         if not act_info:
             self._act_infos[act_id] = [1, 1]
         else:
             if act_info[0] != 1:
                 continue
             else:
                 act_info[1] += 1
         act_info = get_act_info(self.owner, act_conf.id)
         if act_info.get('state') == 2:
             state2_acts.append(act_conf.id)
     self.fulfil_activity(state2_acts)
     self.save_data()
Exemple #21
0
    def update_daily_70_72_74(self, type, v):
        act_confs = game_configs.activity_config.get(type, [])
        state2_acts = []
        for act_conf in act_confs:
            act_id = act_conf.id
            if not self.is_activiy_open(act_id):
                continue
            if v not in act_conf.parameterC:
                continue
            act_info = self._act_infos.get(act_id)

            if not act_info:
                self._act_infos[act_id] = [1, 1, int(time.time())]
            else:
                if days_to_current(act_info[2]) != 0:
                    self._act_infos[act_id] = [1, 1, int(time.time())]
                else:
                    act_info[1] += 1
            act_info = get_act_info(self.owner, act_conf.id)
            if act_info.get('state') == 2:
                state2_acts.append(act_conf.id)
        self.fulfil_activity(state2_acts)
        self.save_data()
Exemple #22
0
 def update_76_77(self, act_type, res_type, num):
     """docstring for add_times"""
     state2_acts = []
     act_confs = game_configs.activity_config.get(act_type, [])
     for act_conf in act_confs:
         act_id = act_conf.id
         if act_conf.parameterE.items()[0][0] != res_type:
             continue
         if not self.is_activiy_open(act_id):
             continue
         act_info = self._act_infos.get(act_id)
         if not act_info:
             self._act_infos[act_id] = [1, num]
         else:
             if act_info[0] != 1:
                 continue
             else:
                 act_info[1] += num
         act_info = get_act_info(self.owner, act_conf.id)
         if act_info.get('state') == 2:
             state2_acts.append(act_conf.id)
     self.fulfil_activity(state2_acts)
     self.save_data()
Exemple #23
0
 def update_65(self, res_type, num):
     """docstring for add_times"""
     act_confs = game_configs.activity_config.get(65, [])
     state2_acts = []
     for act_conf in act_confs:
         act_id = act_conf.id
         if act_conf.parameterE.items()[0][0] != res_type:
             continue
         if not self.is_activiy_open(act_id):
             continue
         act_info = self._act_infos.get(act_id)
         if not act_info:
             self._act_infos[act_id] = [1, num, int(time.time())]
         else:
             if days_to_current(act_info[2]) != 0:
                 self._act_infos[act_id] = [1, num, int(time.time())]
             else:
                 act_info[1] += num
         act_info = get_act_info(self.owner, act_conf.id)
         if act_info.get('state') == 2:
             state2_acts.append(act_conf.id)
     self.fulfil_activity(state2_acts)
     self.save_data()
Exemple #24
0
def get_target_info_1827(data, player):
    """获取任务奖励"""
    args = start_target_pb2.GetStartTargetRewardRequest()
    args.ParseFromString(data)
    target_id = args.target_id
    response = start_target_pb2.GetStartTargetRewardResponse()

    if not player.act.is_activiy_open(target_id):
        response.res.result = False
        logger.error("start target dont open")
        response.res.result_no = 890  # 不在活动时间内
        return response.SerializeToString()
    # 第几天登录
    day = player.base_info.login_day

    target_ids = []
    for x in [1, 2, 3, 4, 5, 6, 7]:
        if x > day:
            continue
        for a, b in game_configs.base_config.get('seven' + str(x)).items():
            target_ids += b

    if target_id not in target_ids:
        response.res.result = False
        logger.error("this start target dont open")
        response.res.result_no = 800
        return response.SerializeToString()

    target_conf = game_configs.activity_config.get(target_id)

    info = get_act_info(player, target_id)
    if (target_conf.type != 30
            and info.get('state') != 2) or (target_conf.type == 30
                                            and info.get('state') == 3):
        response.res.result = False
        logger.error("this start target 条件不满足")
        response.res.result_no = 800
        return response.SerializeToString()

    need_gold = 0
    if target_conf.type == 30:
        need_gold = target_conf.parameterB

    def func():
        return_data = gain(player, target_conf.reward,
                           const.START_TARGET)  # 获取
        get_return(player, return_data, response.gain)
        if target_conf.type == 30:
            if target_conf.count <= (info.get('jindu') + 1):
                player.act.act_infos[target_id] = [3, 0]
            else:
                player.act.act_infos[target_id] = [1, info.get('jindu') + 1]
        else:
            player.act.act_infos[target_id] = [3, 0]

        tlog_action.log('StartTargetGetGift', player, target_id)

    player.pay.pay(need_gold, const.START_TARGET, func)
    player.act.save_data()

    response.res.result = True
    return response.SerializeToString()