Exemplo n.º 1
0
def get_login_gift(activity_id, activity_type, response, player):
    """
    领取登录奖励
    """
    if activity_type == 1:  # 累积登录
        if player.login_gift.cumulative_received.count(
                activity_id) == 0:  # 未领取
            if player.login_gift.cumulative_day[1]:  # 是新手活动
                res = False
                err_no = 800
                for i in activity_config.get(1):
                    if i.get('id') == activity_id:
                        if i.get('parameterA'
                                 ) <= player.login_gift.cumulative_day[0]:
                            player.login_gift.cumulative_received.append(
                                activity_id)
                            gain_data = i['reward']
                            return_data = gain(player, gain_data)
                            get_return(player, return_data, response.gain)
                            res = True
                            err_no = 0
                        else:
                            res = False
                            err_no = 802  # 条件没有达到

            else:  # 未知错误,不是新手活动的情况,目前代码不应该走这里
                res = False
                err_no = 800
        else:
            res = False
            err_no = 801  # 已经领取过
    else:  # 连续登录奖励
        if player.login_gift.continuous_received.count(
                activity_id) == 0:  # 未领取
            if player.login_gift.continuous_day[1]:  # 是新手活动
                res = False
                err_no = 800
                for i in activity_config.get(2):
                    if i.get('id') == activity_id:
                        if i.get('parameterA'
                                 ) <= player.login_gift.continuous_day[0]:
                            player.login_gift.continuous_received.append(
                                activity_id)
                            gain_data = i['reward']
                            return_data = gain(player, gain_data)
                            get_return(player, return_data, response.gain)
                            res = True
                            err_no = 0
                        else:
                            res = False
                            err_no = 802  # 条件没有达到

            else:  # 未知错误,不是新手活动的情况,目前代码不应该走这里
                res = False
                err_no = 800
        else:
            res = False
            err_no = 801  # 已经领取过
    player.login_gift.save_data()
    return res, err_no
Exemplo n.º 2
0
def shop_oper(pro_data, player):
    """商城所有操作"""
    request = ShopRequest()
    request.ParseFromString(pro_data)
    response = ShopResponse()

    shop_id = request.id
    shop_item = shop_config.get(shop_id)

    if is_consume(player, shop_item):
        # 判断是否消耗
        result = is_afford(player, shop_item.consume)  # 校验
        if not result.get('result'):
            response.res.result = False
            response.res.result_no = result.get('result_no')
            response.res.message = u'消费不足!'
        return_data = consume(player, shop_item.consume)  # 消耗
        get_return(player, return_data, response.consume)
    return_data = gain(player, shop_item.gain)  # 获取
    extra_return_data = gain(player, shop_item.extraGain)  # 额外获取

    get_return(player, return_data, response.gain)
    get_return(player, extra_return_data, response.gain)

    response.res.result = True
    return response.SerializeToString()
Exemplo n.º 3
0
    def func():
        player.sign_in_component.sign_in(day)
        player.sign_in_component.save_data()
        sign_round = player.sign_in_component.sign_round
        print game_configs.sign_in_config.get(sign_round), "---------"
        print game_configs.sign_in_config.get(sign_round).get(day), "-------"
        if not game_configs.sign_in_config.get(sign_round) or not game_configs.sign_in_config.get(sign_round).get(day):
            return
        sign_in_info = game_configs.sign_in_config.get(sign_round).get(day)

        #vip双倍
        if player.base_info.vip_level > 0 and \
                sign_in_info.get("vipDouble") and \
                player.base_info.vip_level >= sign_in_info.get("vipDouble"):
            is_double = 1
        else:
            is_double = 0

        if is_double:
            return_data = gain(player, sign_in_info.get("reward"), const.REPAIR_SIGN, multiple=2)
            get_return(player, return_data, response.gain)
        else:
            return_data = gain(player, sign_in_info.get("reward"), const.REPAIR_SIGN)
            get_return(player, return_data, response.gain)

        player.sign_in_component.repair_sign_in_times += 1
        player.sign_in_component.save_data()
        tlog_action.log('RepairSignIn', player, day, len(player.sign_in_component.sign_in_days), sign_in_info.get("id"))
Exemplo n.º 4
0
def get_prize(player, mail_ids, response):
    """领取奖励"""
    for mail_id in mail_ids:
        mail = player.mail_component.get_mail(mail_id)
        if not mail:
            continue

        if mail.prize:
            if isinstance(eval(mail.prize), dict):
                prize = data_helper.parse(eval(mail.prize))
                return_data = gain(player, prize, const.MAIL)
                get_return(player, return_data, response.gain)
            elif isinstance(eval(mail.prize), list):
                for prize_data in eval(mail.prize):
                    prize = data_helper.parse(prize_data)
                    return_data = gain(player, prize, const.MAIL)
                    get_return(player, return_data, response.gain)
            continue
        if mail.config_id:
            # if mail.config_id != game_configs.base_config.get('warFogRobbedMail'):
                # 除了附文矿被抢
            mail_conf = game_configs.mail_config.get(mail.config_id)
            prize = data_helper.parse(mail_conf.rewards)
            return_data = gain(player, prize, const.MAIL)
            get_return(player, return_data, response.gain)
Exemplo n.º 5
0
        def func():
            consume_return_data = consume(player, price,
                                          get_reason(shop_item.get('type')),
                                          multiple=item_count,
                                          shop=shop,
                                          luck_config=shop_type_item)  # 消耗
            return_data = gain(player,
                               shop_item.gain,
                               get_reason(shop_item.get('type')),
                               multiple=item_count,
                               lucky_attr_id=_lucky_attr)  # 获取
            get_return(player, consume_return_data, response.consume)
            get_return(player, return_data, response.gain)
            if shop_item.ExchangeValue:
                lucky_data = gain(player,
                                  shop_item.ExchangeValue,
                                  get_reason(shop_item.get('type')))
                get_return(player, lucky_data, response.gain)

            for _ in range(item_count):
                send_tlog(player, shop_item)
            logger.debug("allBuyRefresh %s" % shop_type_item.allBuyRefresh)
            if not shop['item_ids'] and shop_type_item.allBuyRefresh:
                logger.debug("shop auto refresh =============")
                player.shop.auto_refresh_items(shop_item.get('type'))
                response.is_all_buy = True
Exemplo n.º 6
0
def settle(player, result, response, conf, stage_type=1, star_num=0):
    """docstring for settle"""
    # 保存关卡信息
    player.stage_component.save_data()

    # 保存活跃度

    # 增加玩家和武将经验,增加金币
    if not result and stage_type not in [4, 5]:
        return

    player.finance.coin += conf.currency
    player.finance.save_data()
    player.base_info.addexp(conf.playerExp, const.STAGE)
    player.set_level_related()
    player.base_info.save_data()
    for (slot_no, lineUpSlotComponent
         ) in player.line_up_component.line_up_slots.items():
        hero = lineUpSlotComponent.hero_slot.hero_obj
        if hero:
            beforelevel = hero.level
            hero.upgrade(conf.HeroExp, player.base_info.level)
            afterlevel = hero.level
            changelevel = afterlevel - beforelevel
            hero.save_data()
            if changelevel:
                tlog_action.log('HeroUpgrade', player, hero.hero_no,
                                changelevel, afterlevel, 1, 0, 0, 0, 0)
            hero.save_data()

    # 更新等级相关属性

    # 构造掉落
    settlement_drops = player.fight_cache_component.fighting_settlement(
        result, star_num)

    logger.debug("stage_util.drops %s" % settlement_drops)
    multiple, part_multiple = get_drop_activity(
        player, player.fight_cache_component.stage_id, stage_type, star_num)
    data = gain(player,
                settlement_drops,
                const.STAGE,
                multiple=multiple,
                part_multiple=part_multiple)
    get_return(player, data, response.drops)
    logger.debug("stage_util.drops %s" % response.drops)

    # 乱入武将按概率获取碎片
    break_stage_id = player.fight_cache_component.break_stage_id
    if break_stage_id:
        break_stage_info = game_configs.stage_break_config.get(break_stage_id)
        ran = random.random()
        if ran <= break_stage_info.reward_odds:
            logger.debug("break_stage_info=============%s %s" %
                         (break_stage_info.reward, 1))
            data = gain(player, break_stage_info.reward, const.STAGE)
            get_return(player, data, response.drops)
Exemplo n.º 7
0
def add_items(player, task_id):
    """
    添加道具给玩家
    """
    add_items = []
    if task_id in achievement_config:
        task = achievement_config[task_id]
        reward = data_helper.parse(task.reward)
        item_group_helper.gain(player, reward, add_items)
    return add_items
Exemplo n.º 8
0
def sign_in_1401(pro_data, player):
    """签到"""
    print "sign_in++++++++++++++"
    response = SignInResponse()

    # 签到
    day = player.sign_in_component.current_day()

    register_time = player.base_info.register_time
    register_time = timestamp_to_date(register_time)

    # 同一天签到校验
    if player.sign_in_component.is_signd(day):
        print "sign in error code:", 1405
        response.res.result = False
        response.res.result_no = 1405
        return response.SerializePartialToString()

    player.sign_in_component.sign_in(day)
    player.sign_in_component.save_data()

    sign_round = player.sign_in_component.sign_round
    # 获取奖励
    if not game_configs.sign_in_config.get(
            sign_round) or not game_configs.sign_in_config.get(sign_round).get(
                day):
        return
    sign_in_info = game_configs.sign_in_config.get(sign_round).get(day)
    # vip双倍
    print("vip================", player.base_info.vip_level,
          sign_in_info.get("vipDouble"))
    if player.base_info.vip_level > 0 and \
            sign_in_info.get("vipDouble") and \
            player.base_info.vip_level >= sign_in_info.get("vipDouble"):
        is_double = 1
    else:
        is_double = 0

    if is_double:
        return_data = gain(player,
                           sign_in_info.get("reward"),
                           const.SIGN_GIFT,
                           multiple=2)
        get_return(player, return_data, response.gain)
    else:
        return_data = gain(player, sign_in_info.get("reward"), const.SIGN_GIFT)
        get_return(player, return_data, response.gain)
    tlog_action.log('SignIn', player, day, is_double, sign_in_info.get('id'))

    response.res.result = True
    return response.SerializePartialToString()
Exemplo n.º 9
0
def travel_settle_833(data, player):
    """ settle"""
    args = TravelSettleRequest()
    args.ParseFromString(data)
    stage_id = args.stage_id
    event_id = args.event_id

    response = TravelSettleResponse()

    if player.travel_component.travel.get(stage_id):
        stage_cache = player.travel_component.travel.get(stage_id)
    else:
        logger.error("travel stage id not found")
        response.res.result = False
        response.res.result_no = 800
        return response.SerializeToString()

    event_cache = 0
    for event in stage_cache:
        if event[0] == event_id:
            event_cache = event
            break

    if not event_cache:
        logger.error("travel :event id not found")
        response.res.result = False
        response.res.result_no = 813
        return response.SerializeToString()

    event_info = travel_event_config.get('events').get(args.event_id)
    if event_info.type == 1:
        if int(time.time()) - event_cache[2] < \
                event_info.parameter.items()[0][0]:
            response.res.result = False
            response.res.result_no = 814
            return response.SerializeToString()
    # elif event_info.type == 3:
    #     if not event_info.parameter.get(args.answer):
    #         response.res.result = False
    #         response.res.result_no = 815
    #         return response.SerializeToString()

    # 结算
    gain(player, event_cache[1])

    stage_cache.remove(event_cache)
    player.travel_component.save()

    response.res.result = True
    return response.SerializeToString()
Exemplo n.º 10
0
def settle(player, result, response, conf, stage_type=1, star_num=0):
    """docstring for settle"""
    # 保存关卡信息
    player.stage_component.save_data()

    # 保存活跃度

    # 增加玩家和武将经验,增加金币
    if not result and stage_type not in [4, 5]:
        return

    player.finance.coin += conf.currency
    player.finance.save_data()
    player.base_info.addexp(conf.playerExp, const.STAGE)
    player.set_level_related()
    player.base_info.save_data()
    for (slot_no, lineUpSlotComponent) in player.line_up_component.line_up_slots.items():
        hero = lineUpSlotComponent.hero_slot.hero_obj
        if hero:
            beforelevel = hero.level
            hero.upgrade(conf.HeroExp, player.base_info.level)
            afterlevel = hero.level
            changelevel = afterlevel-beforelevel
            hero.save_data()
            if changelevel:
                tlog_action.log('HeroUpgrade', player, hero.hero_no, changelevel, afterlevel, 1, 0, 0, 0, 0)
            hero.save_data()

    # 更新等级相关属性

    # 构造掉落
    settlement_drops = player.fight_cache_component.fighting_settlement(result, star_num)

    logger.debug("stage_util.drops %s" % settlement_drops)
    multiple, part_multiple = get_drop_activity(player, player.fight_cache_component.stage_id, stage_type, star_num)
    data = gain(player, settlement_drops, const.STAGE, multiple=multiple, part_multiple=part_multiple)
    get_return(player, data, response.drops)
    logger.debug("stage_util.drops %s" % response.drops)

    # 乱入武将按概率获取碎片
    break_stage_id = player.fight_cache_component.break_stage_id
    if break_stage_id:
        break_stage_info = game_configs.stage_break_config.get(break_stage_id)
        ran = random.random()
        if ran <= break_stage_info.reward_odds:
            logger.debug("break_stage_info=============%s %s" % (break_stage_info.reward, 1))
            data = gain(player, break_stage_info.reward, const.STAGE)
            get_return(player, data, response.drops)
Exemplo n.º 11
0
    def recharge_gain(self, recharge_item, response, is_tencent=False):
        """
        充值掉落
        """
        logger.debug("recharge_gain========1")
        isfirst = 0
        if not is_tencent:
            return_data = gain(self._owner, recharge_item.get('setting'),
                            const.RECHARGE)  # 获取
            get_return(self._owner, return_data, response.gain)
        if recharge_item.get('type') == 2:
            logger.debug("recharge_gain========")
            rebate_call(self._owner, recharge_item)
            self._owner.recharge.send_mail(recharge_item) #发送奖励邮件
        else:
            rres = self._owner.base_info.first_recharge(recharge_item, response)
            if rres:
                #首次充值
                isfirst = 1
                self._owner.recharge.send_mail(recharge_item) #发送奖励邮件

        tlog_action.log('Recharge', self._owner, isfirst,
                        recharge_item.get('id'))

        charge_num = recharge_item.get('activity') # 充值元宝数量
        # vip
        self._owner.base_info.recharge += charge_num
        self._owner.base_info.set_vip_level(self._owner.base_info.recharge)

        # 活动
        self._owner.recharge.charge(charge_num)
        if not is_tencent:
            self._owner.recharge.get_recharge_response(response.info) # recharge
Exemplo n.º 12
0
def hero_sacrifice_105(data, player):
    """武将献祭"""
    args = hero_request_pb2.HeroSacrificeRequest()
    args.ParseFromString(data)
    response = hero_response_pb2.HeroSacrificeResponse()

    heros = player.hero_component.get_heros_by_nos(args.hero_nos)
    if len(heros) == 0:
        logger.error("hero %s is not exists." % str(args.hero_nos))
    response = hero_sacrifice_oper(heros, player)
    # remove hero
    player.hero_component.delete_heros_by_nos(args.hero_nos)

    # hero chip
    for hero_chip in args.hero_chips:
        sacrifice_gain = game_configs.chip_config.get("chips").get(hero_chip.hero_chip_no).sacrificeGain
        return_data = gain(player,
                           sacrifice_gain,
                           const.HERO_CHIP_SACRIFICE_OPER,
                           multiple=hero_chip.hero_chip_num)
        get_return(player, return_data, response.gain)
        # remove hero_chip
        temp = player.hero_chip_component.get_chip(hero_chip.hero_chip_no)
        if temp:
            temp.consume_chip(hero_chip.hero_chip_num)  # 消耗碎片
    player.hero_chip_component.save_data()
    logger.debug(response)
    return response.SerializeToString()
Exemplo n.º 13
0
def first_recharge_activity_2204(request_proto, player):
    """
    首次充值
    """
    response = recharge_pb2.GetRechargeGiftResponse()
    response.res.result = True
    if player.base_info.recharge == 0:
        response.res.result = False
        response.res.result_no = 22041
        return response.SerializePartialToString()

    if player.base_info._button_one_time[const.FIRST_RECHARGE_BUTTON] == 1:
        response.res.result = False
        response.res.result_no = 22042
        return response.SerializePartialToString()

    activity_info = game_configs.activity_config.get(7)[0]
    if activity_info:
        logger.error("activity not exist!")

    player.base_info._button_one_time[const.FIRST_RECHARGE_BUTTON] = 1
    player.base_info.save_data()
    return_data = gain(player, activity_info.get('reward', {}),
                       const.FIRST_RECHARGE)
    get_return(player, return_data, response.gain)

    return response.SerializePartialToString()
Exemplo n.º 14
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()
Exemplo n.º 15
0
def sign_in_box_1404(pro_data, player):
    """签到宝箱领奖"""
    request = SignInBoxRequest()
    request.ParseFromString(pro_data)
    _id = request.id
    response = SignInResponse()

    activity_info = game_configs.activity_config.get(_id)

    # 验证宝箱签到, 是否领取
    if _id in player.sign_in_component.box_sign_in_prize:
        response.res.result = False
        response.res.result_no = 1404
        logger.debug(response)
        return response.SerializePartialToString()
    # 验证宝箱签到条件
    for day in activity_info.parameterC:
        if day not in player.sign_in_component.sign_in_days:
            response.res.result = False
            response.res.result_no = 1405
            logger.debug(response)
            return response.SerializePartialToString()

    return_data = gain(player, activity_info.reward, const.BOX_SIGN)
    get_return(player, return_data, response.gain)

    player.sign_in_component.box_sign_in_prize.append(_id)
    player.sign_in_component.save_data()

    response.res.result = True
    logger.debug(response)
    return response.SerializePartialToString()
Exemplo n.º 16
0
def continus_sign_in_1402(pro_data, player):
    """累积签到"""
    request = ContinuousSignInRequest()
    request.ParseFromString(pro_data)
    days = request.sign_in_days
    response = ContinuousSignInResponse()

    # 验证连续签到日期
    if len(player.sign_in_component.sign_in_days) < days:
        response.res.result = False
        response.res.result_no = 1402
        return response.SerializePartialToString()
    if days in player.sign_in_component.continuous_sign_in_prize:
        response.res.result = False
        response.res.result_no = 1403
        return response.SerializePartialToString()

    player.sign_in_component.continuous_sign_in_prize.append(days)
    player.sign_in_component.save_data()

    reward, config_id = player.sign_in_component.get_sign_in_reward(days)
    if not reward:
        response.res.result = False
        response.res.result_no = 1404
        return response.SerializePartialToString()
    return_data = gain(player, reward, const.CONTINUS_SIGN)
    get_return(player, return_data, response.gain)

    tlog_action.log('ContinusSignIn', player, days, config_id)

    response.res.result = True
    logger.debug(response)
    return response.SerializePartialToString()
Exemplo n.º 17
0
def melting_equipment(equipment_id, response, player):
    """熔炼
    @param dynamic_id:
    @param equipment_ids:
    @param kwargs:
    @return:
    """
    equipment_obj = player.equipment_component.get_equipment(equipment_id)
    if not equipment_obj:
        return {'result': False, 'result_no': 401, 'message': u''}
    melting_items = equipment_obj.melting_item
    gain = item_group_helper.gain(player, melting_items, const.MELTING_EQUIPMENT)

    item_group_helper.get_return(player, gain, response.cgr)

    tlog_action.log('EquipmentMelting', player,
                    equipment_obj.base_info.equipment_no,
                    equipment_obj.base_info.id)

    # 删除装备
    player.equipment_component.delete_equipment(equipment_id)

    # 添加强化金币
    strength_coin = 0
    for record in equipment_obj.enhance_record.enhance_record:
        strength_coin += record[2]

    strength_coin = int(strength_coin*game_configs.base_config.get("equRefundRatio"))
    player.finance.coin += strength_coin
    player.finance.save_data()
    response.cgr.finance.coin += strength_coin
    change = response.cgr.finance.finance_changes.add()
    change.item_type = 107
    change.item_num = strength_coin
    change.item_no = 1
Exemplo n.º 18
0
    def func():
        not_luck_times = (player.limit_hero.draw_times+1) % \
            game_configs.base_config.get('CardTimeCumulateTimes')
        if not_luck_times:
            pseudo_bag_id = act_conf.reward[0].item_no
            drop = do_get_draw_drop_bag(pseudo_bag_id,
                                        player.limit_hero.draw_times+1)
        else:
            drop = game_configs.base_config.get('CardTimeCumulate')

        return_data = gain(player, drop, const.LIMIT_HERO)
        get_return(player, return_data, response.gain)

        player.limit_hero.draw_times += 1
        if draw_flag == 1:
            free_time = int(time.time())
            player.limit_hero.free_time = free_time
            response.free_time = free_time
        elif draw_flag == 2:
            player.limit_hero.integral_draw_times += 1
        # else:
        add_integral = shop_conf.Integral[0].num
        rank_integral = integral + add_integral + 1 - time.time()/10000000000
        rank_helper.add_rank_info('LimitHeroRank',
                                  player.base_info.id, rank_integral)
        player.limit_hero.save_data()
        deal_response(player, response)
Exemplo n.º 19
0
def get_tomorrow_gift_1122(data, player):
    response = online_gift_pb2.GetActivityResponse()
    response.result = False

    tomorrow_gift = game_configs.activity_config.get(15, [])
    if not tomorrow_gift:
        logger.error('tomorrow gift is not exist')
        return response.SerializeToString()
    else:
        tomorrow_gift = game_configs.activity_config.get(15)[0]
    # if not tomorrow_gift.get('is_open'):
    #     logger.error('tomorrow gift is not open')
    #     return response.SerializeToString()
    if player.base_info.tomorrow_gift != 0:
        logger.error('tomorrow gift is taken!')
        return response.SerializeToString()
    register_time = time.localtime(player.base_info.register_time)
    now_time = time.localtime()
    if now_time.tm_yday <= register_time.tm_yday and now_time.tm_year <= register_time.tm_year:
        logger.error('tomorrow gift is miss!')
        return response.SerializeToString()

    player.base_info.tomorrow_gift = tomorrow_gift.id
    player.base_info.save_data()

    gain_data = tomorrow_gift['reward']
    return_data = gain(player, gain_data, const.TOMORROW_GIFT)
    get_return(player, return_data, response.gain)
    response.result = True
    return response.SerializeToString()
Exemplo n.º 20
0
def buy_truce_item_861(data, player):
    """买休战符"""
    args = rob_treasure_pb2.BuyTruceItemRequest()
    args.ParseFromString(data)
    num = args.num

    response = rob_treasure_pb2.BuyTruceItemResponse()

    price = game_configs.base_config.get('indianaTrucePrice')
    is_afford_res = is_afford(player, price, multiple=num)  # 校验

    """
    if not is_afford_res.get('result'):
        logger.error('rob_treasure_truce_841, item not enough')
        response.res.result = False
        response.res.result_no = is_afford_res.get('result_no')
        return response.SerializeToString()

    return_data = consume(player, price, const.BUY_TRUCE_ITEM, multiple=num)  # 消耗
    get_return(player, return_data, response.consume)

    """
    gain_items = game_configs.base_config.get('indianaIteam')
    return_data = gain(player, gain_items, const.BUY_TRUCE_ITEM, multiple=num)
    get_return(player, return_data, response.gain)

    response.res.result = True
    return response.SerializeToString()
Exemplo n.º 21
0
def melting_equipment(equipment_id, response, player):
    """熔炼
    @param dynamic_id:
    @param equipment_ids:
    @param kwargs:
    @return:
    """
    if is_not_open(player, FO_EQUIP_SACRIFICE):
        return {"result": False, "result_no": 837}
    equipment_obj = player.equipment_component.get_equipment(equipment_id)
    if not equipment_obj:
        return {'result': False, 'result_no': 401, 'message': u''}
    melting_items = equipment_obj.melting_item
    gain = item_group_helper.gain(player, melting_items, const.MELTING_EQUIPMENT)

    item_group_helper.get_return(player, gain, response.cgr)

    tlog_action.log('EquipmentMelting', player,
                    equipment_obj.base_info.equipment_no,
                    equipment_obj.base_info.id)

    # 删除装备
    player.equipment_component.delete_equipment(equipment_id)

    # 添加强化金币
    strength_coin = 0
    for record in equipment_obj.enhance_record.enhance_record:
        strength_coin += record[2]

    strength_coin = int(strength_coin*game_configs.base_config.get("equRefundRatio"))
    return strength_coin
Exemplo n.º 22
0
def open_chest_836(data, player):

    response = OpenChestResponse()

    chest_time = player.travel_component.chest_time

    if time.localtime(chest_time).tm_year == time.localtime().tm_year \
            and time.localtime(chest_time).tm_yday == time.localtime().tm_yday:
        response.res.result = False
        response.res.result_no = 816
        return response.SerializeToString()

    res_drops = response.drops
    drops = []
    common_bag = BigBag(game_configs.base_config.get('travelChest'))
    common_drop = common_bag.get_drop_items()
    drops.extend(common_drop)
    drop_data = gain(player, drops, const.TRAVEL_OPEN_CHEST)
    get_return(player, drop_data, res_drops)

    player.travel_component.chest_time = int(time.time())

    player.travel_component.save()

    response.res.result = True
    return response.SerializeToString()
Exemplo n.º 23
0
def get_tomorrow_gift_1122(data, player):
    response = online_gift_pb2.GetActivityResponse()
    response.result = False

    tomorrow_gift = game_configs.activity_config.get(15)[0]
    if not tomorrow_gift:
        logger.error('tomorrow gift is not exist')
        return response.SerializeToString()
    if not tomorrow_gift.get('is_open'):
        logger.error('tomorrow gift is not open')
        return response.SerializeToString()
    if player.base_info.tomorrow_gift != 0:
        logger.error('tomorrow gift is taken!')
        return response.SerializeToString()
    register_time = time.localtime(player.base_info.register_time)
    now_time = time.localtime()
    if now_time.tm_yday <= register_time.tm_yday and now_time.tm_year <= register_time.tm_year:
        logger.error('tomorrow gift is miss!')
        return response.SerializeToString()

    player.base_info.tomorrow_gift = tomorrow_gift.id
    player.base_info.save_data()

    gain_data = tomorrow_gift['reward']
    return_data = gain(player, gain_data, const.TOMORROW_GIFT)
    get_return(player, return_data, response.gain)
    response.result = True
    return response.SerializeToString()
Exemplo n.º 24
0
def buy_truce_item_861(data, player):
    """买休战符"""
    args = rob_treasure_pb2.BuyTruceItemRequest()
    args.ParseFromString(data)
    num = args.num

    response = rob_treasure_pb2.BuyTruceItemResponse()

    price = game_configs.base_config.get('indianaTrucePrice')
    is_afford_res = is_afford(player, price, multiple=num)  # 校验
    """
    if not is_afford_res.get('result'):
        logger.error('rob_treasure_truce_841, item not enough')
        response.res.result = False
        response.res.result_no = is_afford_res.get('result_no')
        return response.SerializeToString()

    return_data = consume(player, price, const.BUY_TRUCE_ITEM, multiple=num)  # 消耗
    get_return(player, return_data, response.consume)

    """
    gain_items = game_configs.base_config.get('indianaIteam')
    return_data = gain(player, gain_items, const.BUY_TRUCE_ITEM, multiple=num)
    get_return(player, return_data, response.gain)

    response.res.result = True
    return response.SerializeToString()
Exemplo n.º 25
0
def get_level_gift_1131(data, player):
    """get online gift"""
    request = level_gift_pb2.GetLevelGift()
    request.ParseFromString(data)
    response = level_gift_pb2.GetLevelGiftResponse()

    activity_level_gift = game_configs.activity_config.get(3)

    if request.gift_id in player.level_gift.received_gift_ids:
        response.result = False
        return response.SerializeToString()

    for a in activity_level_gift:
        if request.gift_id == a['id']:
            gain_data = a['reward']
            return_data = gain(player, gain_data, const.LEVEL_GIFT)
            get_return(player, return_data, response.gain)

            player.level_gift.received_gift_ids.append(request.gift_id)
            player.level_gift.save_data()
            tlog_action.log('LevelGift', player, request.gift_id)

            response.result = True
            return response.SerializeToString()

    response.result = False
    return response.SerializeToString()
Exemplo n.º 26
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()
Exemplo n.º 27
0
def pvp_rob_treasure_more_times_1504(data, player):
    request = pvp_rank_pb2.RobTreasureMoreTimesRequest()
    response = pvp_rank_pb2.RobTreasureMoreTimesResponse()
    request.ParseFromString(data)
    uid = request.uid
    chip_id = request.chip_id
    times = request.times
    check_res, res_no, chip_conf = check_can_rob(player, uid, chip_id, times,
                                                 response)
    if not check_res:
        response.res.result = False
        response.res.result_no = res_no
        return response.SerializePartialToString()
    player.rob_treasure.truce = [0, 1]
    for _ in range(times):
        one_times_response = response.one_time_info.add()
        fight_response = one_times_response.fight_info
        fight_result = deal_pvp_rob_fight(player, uid, chip_id, fight_response,
                                          chip_conf)
        if fight_result:
            indiana_conf = get_indiana_conf(player, uid, chip_conf)
            common_bag = BigBag(indiana_conf.reward)
            drops = common_bag.get_drop_items()

            x = random.randint(0, 2)
            return_data = gain(player, [drops[x]], const.ROB_TREASURE_REWARD)
            get_return(player, return_data, one_times_response.gain)

    player.pvp.reset_rob_treasure()
    player.pvp.save_data()
    player.rob_treasure.save_data()
    response.res.result = True
    logger.debug("response ==================== : %s" % response)
    return response.SerializeToString()
Exemplo n.º 28
0
def melting_equipment(equipment_id, response, player):
    """熔炼
    @param dynamic_id:
    @param equipment_ids:
    @param kwargs:
    @return:
    """
    if is_not_open(player, FO_EQUIP_SACRIFICE):
        return {"result": False, "result_no": 837}
    equipment_obj = player.equipment_component.get_equipment(equipment_id)
    if not equipment_obj:
        return {'result': False, 'result_no': 401, 'message': u''}
    melting_items = equipment_obj.melting_item
    gain = item_group_helper.gain(player, melting_items,
                                  const.MELTING_EQUIPMENT)

    item_group_helper.get_return(player, gain, response.cgr)

    tlog_action.log('EquipmentMelting', player,
                    equipment_obj.base_info.equipment_no,
                    equipment_obj.base_info.id)

    # 删除装备
    player.equipment_component.delete_equipment(equipment_id)

    # 添加强化金币
    strength_coin = 0
    for record in equipment_obj.enhance_record.enhance_record:
        strength_coin += record[2]

    strength_coin = int(strength_coin *
                        game_configs.base_config.get("equRefundRatio"))
    return strength_coin
Exemplo n.º 29
0
    def func():
        not_luck_times = (player.limit_hero.draw_times+1) % \
            game_configs.base_config.get('CardTimeCumulateTimes')
        if not_luck_times:
            pseudo_bag_id = act_conf.reward[0].item_no
            drop = do_get_draw_drop_bag(pseudo_bag_id,
                                        player.limit_hero.draw_times + 1)
        else:
            drop = game_configs.base_config.get('CardTimeCumulate')

        return_data = gain(player, drop, const.LIMIT_HERO)
        get_return(player, return_data, response.gain)

        player.limit_hero.draw_times += 1
        if draw_flag == 1:
            free_time = int(time.time())
            player.limit_hero.free_time = free_time
            response.free_time = free_time
        elif draw_flag == 2:
            player.limit_hero.integral_draw_times += 1
        # else:
        add_integral = shop_conf.Integral[0].num
        rank_integral = integral + add_integral + 1 - time.time() / 10000000000
        rank_helper.add_rank_info('LimitHeroRank', player.base_info.id,
                                  rank_integral)
        player.limit_hero.save_data()
        deal_response(player, response)
Exemplo n.º 30
0
def sign_in_1401(pro_data, player):
    """签到"""
    print "sign_in++++++++++++++"
    response = SignInResponse()

    # 签到
    date = datetime.datetime.now()
    month = date.month
    day = date.day

    # 同一天签到校验
    if player.sign_in_component.is_signd(month, day):
        print "sign in error code:", 1405
        response.res.result = False
        response.res.result_no = 1405
        return response.SerializePartialToString()

    player.sign_in_component.sign_in(month, day)
    player.sign_in_component.save_data()

    # 获取奖励
    if not sign_in_config.get(month) or not sign_in_config.get(month).get(day):
        return
    gain_data = sign_in_config.get(month).get(day)
    return_data = gain(player, gain_data)
    get_return(player, return_data, response.gain)
    response.res.result = True
    return response.SerializePartialToString()
Exemplo n.º 31
0
def get_level_gift_1131(data, player):
    """get online gift"""
    request = level_gift_pb2.GetLevelGift()
    request.ParseFromString(data)
    response = level_gift_pb2.GetLevelGiftResponse()

    activity_level_gift = game_configs.activity_config.get(3)

    if request.gift_id in player.level_gift.received_gift_ids:
        response.result = False
        return response.SerializeToString()

    for a in activity_level_gift:
        if request.gift_id == a['id']:
            gain_data = a['reward']
            return_data = gain(player, gain_data, const.LEVEL_GIFT)
            get_return(player, return_data, response.gain)

            player.level_gift.received_gift_ids.append(request.gift_id)
            player.level_gift.save_data()
            tlog_action.log('LevelGift', player, request.gift_id)

            response.result = True
            return response.SerializeToString()

    response.result = False
    return response.SerializeToString()
Exemplo n.º 32
0
def new_guide_step_1802(data, player):
    request = NewbeeGuideStepRequest()
    request.ParseFromString(data)
    response = NewbeeGuideStepResponse()

    new_guide_item = game_configs.newbee_guide_config.get(request.step_id)
    if not new_guide_item:
        logger.error('error newbee id:%s', request.step_id)
        response.res.result = False
        return response.SerializePartialToString()
    new_guide_type = new_guide_item.get('SequenceType')

    logger.info('newbee:%s step:%s=>%s', player.base_info.id,
                player.base_info.newbee_guide, request.step_id)
    my_newbee_sequence = 0
    if player.base_info.newbee_guide.get(new_guide_type):
        my_newbee_sequence = game_configs.newbee_guide_config.get(
            player.base_info.newbee_guide[new_guide_type]).get('Sequence')
    if my_newbee_sequence < new_guide_item.get('Sequence'):
        gain_data = new_guide_item.get('rewards')
        return_data = gain(player, gain_data, const.NEW_GUIDE_STEP)
        get_return(player, return_data, response.gain)
        logger.debug('new bee id:%s step:%s reward:%s response:%s',
                     player.base_info.id, request.step_id, gain_data,
                     response.gain)
    else:
        response.res.result_no = 111
        logger.debug("new bee reward repeated, id:%s step:%s %s %s",
                     player.base_info.id, request.step_id, my_newbee_sequence,
                     new_guide_item.get('Sequence'))

    consume_config = new_guide_item.get('consume')
    result = is_afford(player, consume_config)  # 校验
    if not result.get('result'):
        logger.error('newbee guide comsume:%s', consume_config)
        response.res.result = False
        response.res.result_no = 1802
        return response.SerializePartialToString()

    need_gold = get_consume_gold_num(consume_config)

    def func():
        consume_data = consume(player, consume_config, const.NEW_GUIDE_STEP)
        get_return(player, consume_data, response.consume)

        # logger.debug("gain_data %s %s" % (gain_data, request.step_id))
        # logger.debug(player.finance.coin)
        tlog_action.log('NewGuide', player, new_guide_item.get('Sequence'),
                        request.step_id)

        if my_newbee_sequence < new_guide_item.get('Sequence'):
            player.base_info.newbee_guide[new_guide_type] = request.step_id
            player.base_info.current_newbee_guide = request.step_id
            player.base_info.save_data()

    player.pay.pay(need_gold, const.NEW_GUIDE_STEP, func)
    response.res.result = True
    response.step_id = request.step_id

    return response.SerializePartialToString()
Exemplo n.º 33
0
def open_chest_836(data, player):

    response = OpenChestResponse()

    chest_time = player.travel_component.chest_time

    if time.localtime(chest_time).tm_year == time.localtime().tm_year \
            and time.localtime(chest_time).tm_yday == time.localtime().tm_yday:
        response.res.result = False
        response.res.result_no = 816
        return response.SerializeToString()

    res_drops = response.drops
    drops = []
    common_bag = BigBag(game_configs.base_config.get('travelChest'))
    common_drop = common_bag.get_drop_items()
    drops.extend(common_drop)
    drop_data = gain(player, drops, const.TRAVEL_OPEN_CHEST)
    get_return(player, drop_data, res_drops)

    player.travel_component.chest_time = int(time.time())

    player.travel_component.save()

    response.res.result = True
    return response.SerializeToString()
Exemplo n.º 34
0
def pvp_fight_revenge_1507(data, player):
    request = pvp_rank_pb2.PvpFightRevenge()
    response = pvp_rank_pb2.PvpFightResponse()
    request.ParseFromString(data)
    line_up = request.lineup
    skill = request.skill
    target_id = request.black_id

    if not player.friends.can_revenge(target_id):
        logger.error('black id is not in blacklist:%s', target_id)
        response.res.result = False
        response.res.result_no = 1516
        return response.SerializePartialToString()

    fight_result = pvp_fight(player, target_id, line_up, skill, response)

    logger.debug("fight revenge result:%s" % fight_result)

    if fight_result:
        player.friends.del_blacklist(target_id)
        player.friends.save_data()

        revenge_reward = game_configs.base_config['arenaRevengeRewards']
        return_data = gain(player, revenge_reward, const.FRIEND_REVENGE)
        get_return(player, return_data, response.gain)

    response.res.result = True
    logger.debug("red_units: %s" % response.red)
    return response.SerializeToString()
Exemplo n.º 35
0
def continus_sign_in_1402(pro_data, player):
    """连续签到"""
    request = ContinuousSignInRequest()
    request.ParseFromString(pro_data)
    days = request.sign_in_days
    response = ContinuousSignInResponse()

    sign_in_prize = base_config.get("signInPrize")
    if not sign_in_prize:
        return
    # 验证连续签到日期
    if player.sign_in_component.continuous_sign_in_days < days:
        response.res.result = False
        response.res.result_no = 1402
        return response.SerializePartialToString()
    if days in player.sign_in_component.continuous_sign_in_prize:
        response.res.result = False
        response.res.result_no = 1403
        return response.SerializePartialToString()

    player.sign_in_component.continuous_sign_in_prize.append(days)
    player.sign_in_component.save_data()

    drop_bag_id = sign_in_prize.get(days)
    big_bag = BigBag(drop_bag_id)
    gain_data = big_bag.get_drop_items()
    return_data = gain(player, gain_data)
    get_return(player, return_data, response.gain)

    response.res.result = True
    return response.SerializePartialToString()
Exemplo n.º 36
0
def deal_pvp_rob_fight(player, uid, chip_id, one_times_response, chip_conf):
    price = game_configs.base_config.get('indianaConsume')
    return_data = consume(player, price, const.ROB_TREASURE)  # 消耗
    get_return(player, return_data, one_times_response.consume)

    fight_result = pvp_fight(player,
                             uid, [],
                             0,
                             one_times_response,
                             is_copy_unit=True)

    logger.debug("fight revenge result:%s" % fight_result)

    indiana_conf = get_indiana_conf(player, uid, chip_conf)
    if fight_result:

        if indiana_conf.probability >= random.random():

            gain_items = parse({104: [1, 1, chip_id]})
            return_data = gain(player, gain_items, const.ROB_TREASURE)
            get_return(player, return_data, one_times_response.gain)

            # 处理被打玩家
            deal_target_player(player, uid, chip_id)
    return fight_result
Exemplo n.º 37
0
def continus_sign_in_1402(pro_data, player):
    """累积签到"""
    request = ContinuousSignInRequest()
    request.ParseFromString(pro_data)
    days = request.sign_in_days
    response = ContinuousSignInResponse()

    # 验证连续签到日期
    if len(player.sign_in_component.sign_in_days) < days:
        response.res.result = False
        response.res.result_no = 1402
        return response.SerializePartialToString()
    if days in player.sign_in_component.continuous_sign_in_prize:
        response.res.result = False
        response.res.result_no = 1403
        return response.SerializePartialToString()

    player.sign_in_component.continuous_sign_in_prize.append(days)
    player.sign_in_component.save_data()

    reward, config_id = player.sign_in_component.get_sign_in_reward(days)
    if not reward:
        response.res.result = False
        response.res.result_no = 1404
        return response.SerializePartialToString()
    return_data = gain(player, reward, const.CONTINUS_SIGN)
    get_return(player, return_data, response.gain)

    tlog_action.log('ContinusSignIn', player, days, config_id)

    response.res.result = True
    logger.debug(response)
    return response.SerializePartialToString()
Exemplo n.º 38
0
def use_item_302(pro_data, player):
    """使用道具"""
    item_pb = item_pb2.ItemPB()
    item_pb.ParseFromString(pro_data)
    item_no = item_pb.item_no
    item_num = item_pb.item_num
    print("request:", item_pb)
    item_config_item = game_configs.item_config.get(item_no)
    if not item_config_item:
        return
    item_func = item_config_item.func
    drop_id = item_config_item.dropId
    func_args1 = item_config_item.funcArg1
    func_args2 = item_config_item.funcArg2

    response = ItemUseResponse()
    common_response = response.res  # = common_response
    common_response.result = True

    # 校验道具数量
    item = player.item_package.get_item(item_no)
    if not item or item.num < item_num:
        common_response.result = False
        common_response.result_no = 106
        print("error:", 106)
        # common_response.message = u"道具不足!"
        return response.SerializeToString()

    if item_func == 2:
        # 宝箱
        box_key_no = func_args1
        box_key = player.item_package.get_item(box_key_no)
        if not box_key or box_key.num < func_args2 * item_num:
            print("error:", 107)
            common_response.result = False
            common_response.result_no = 107
            # common_response.message = u"box key 不足!" + str(func_args2 * item_num) + "_" + str(box_key.num)
            return response.SerializeToString()
        # 消耗key
        #box_key.num -= func_args2 * item_num
        player.item_package.consume_item(box_key_no, item_num)
        player.item_package.save_data()

    big_bag = BigBag(drop_id)
    for i in range(item_num):
        drop_item_group = big_bag.get_drop_items()
        return_data = gain(player, drop_item_group, const.USE_ITEM)
        get_return(player, return_data, response.gain)

    logger.debug("item_no:%s", item_no)
    logger.debug("item_num:%s", item_num)

    # 使用招财符
    if item_config_item.canUse == 11:
        player.buy_coin.extra_can_buy_times += item_num

    player.item_package.consume_item(item_no, item_num)

    return response.SerializeToString()
Exemplo n.º 39
0
def get_21_gift(player, act_conf, response):  # 通关关卡
    if player.stage_component.get_stage(act_conf.parameterA).state != 1:
        response.res.result_no = 800
        return 0
    gain_data = act_conf.reward
    return_data = gain(player, gain_data, const.ACT21)
    get_return(player, return_data, response.gain)
    return 1
Exemplo n.º 40
0
def get_prize(player, mail_ids, response):
    """领取奖励"""
    for mail_id in mail_ids:
        mail = player.mail_component.get_mail(mail_id)

        prize = data_helper.parse(mail.prize)
        return_data = gain(player, prize)
        get_return(player, return_data, response.gain)
Exemplo n.º 41
0
def get_21_gift(player, act_conf, response):  # 通关关卡
    if player.stage_component.get_stage(act_conf.parameterA).state != 1:
        response.res.result_no = 800
        return 0
    gain_data = act_conf.reward
    return_data = gain(player, gain_data, const.ACT21)
    get_return(player, return_data, response.gain)
    return 1
Exemplo n.º 42
0
def no_wait_835(data, player):

    args = NoWaitRequest()
    args.ParseFromString(data)
    stage_id = args.stage_id
    event_id = args.event_id

    response = NoWaitResponse()

    if player.travel_component.travel.get(stage_id):
        stage_cache = player.travel_component.travel.get(stage_id)
    else:
        logger.error("travel stage id not found")
        response.res.result = False
        response.res.result_no = 800
        return response.SerializeToString()

    event_cache = 0
    for event in stage_cache:
        if event[0] == event_id:
            event_cache = event
            break

    if not event_cache:
        logger.error("travel :event id not found")
        response.res.result = False
        response.res.result_no = 813
        return response.SerializeToString()

    event_info = game_configs.travel_event_config.get('events').get(event_id %
                                                                    xs)
    if player.finance.gold < event_info.price:
        response.res.result = False
        response.res.result_no = 102  # 充值币不足
        return response.SerializeToString()

    player.finance.consume_gold(event_info.price, const.TRAVEL)

    gain(player, event_cache[1], const.TRAVEL)
    player.finance.save_data()
    stage_cache.remove(event_cache)
    player.travel_component.save()

    response.res.result = True
    return response.SerializeToString()
Exemplo n.º 43
0
def sign_in_1401(pro_data, player):
    """签到"""
    print "sign_in++++++++++++++"
    response = SignInResponse()

    # 签到
    day = player.sign_in_component.current_day()

    register_time = player.base_info.register_time
    register_time = timestamp_to_date(register_time)

    # 同一天签到校验
    if player.sign_in_component.is_signd(day):
        print "sign in error code:", 1405
        response.res.result = False
        response.res.result_no = 1405
        return response.SerializePartialToString()

    player.sign_in_component.sign_in(day)
    player.sign_in_component.save_data()

    sign_round = player.sign_in_component.sign_round
    # 获取奖励
    if not game_configs.sign_in_config.get(sign_round) or not game_configs.sign_in_config.get(sign_round).get(day):
        return
    sign_in_info = game_configs.sign_in_config.get(sign_round).get(day)
    # vip双倍
    print("vip================", player.base_info.vip_level, sign_in_info.get("vipDouble"))
    if player.base_info.vip_level > 0 and \
            sign_in_info.get("vipDouble") and \
            player.base_info.vip_level >= sign_in_info.get("vipDouble"):
        is_double = 1
    else:
        is_double = 0

    if is_double:
        return_data = gain(player, sign_in_info.get("reward"), const.SIGN_GIFT, multiple=2)
        get_return(player, return_data, response.gain)
    else:
        return_data = gain(player, sign_in_info.get("reward"), const.SIGN_GIFT)
        get_return(player, return_data, response.gain)
    tlog_action.log('SignIn', player, day, is_double, sign_in_info.get('id'))

    response.res.result = True
    return response.SerializePartialToString()
Exemplo n.º 44
0
 def func():
     consume_return_data = item_group_helper.consume(player, shop_item.discountPrice, const.MINE_EXCHANGE)  # 消耗
     return_data = item_group_helper.gain(player, shop_item.gain, const.MINE_EXCHANGE)  # 获取
     # extra_return_data = gain(player, shop_item.extra_gain)  # 额外获取
     item_group_helper.get_return(player, consume_return_data, response.consume)
     item_group_helper.get_return(player, return_data, response.gain)
     # get_return(player, extra_return_data, response)
     player.mine.buy_shop(request.position, request.shop_id)
     player.mine.save_data()
Exemplo n.º 45
0
def get_20_gift(player, act_conf, response):  # 战力
    # if act_conf.parameterA > player.line_up_component.combat_power:
    if act_conf.parameterA > player.line_up_component.hight_power:
        response.res.result_no = 802
        return 0
    gain_data = act_conf.reward
    return_data = gain(player, gain_data, const.ACT20)
    get_return(player, return_data, response.gain)
    return 1
Exemplo n.º 46
0
def get_20_gift(player, act_conf, response):  # 战力
    # if act_conf.parameterA > player.line_up_component.combat_power:
    if act_conf.parameterA > player.line_up_component.hight_power:
        response.res.result_no = 802
        return 0
    gain_data = act_conf.reward
    return_data = gain(player, gain_data, const.ACT20)
    get_return(player, return_data, response.gain)
    return 1
Exemplo n.º 47
0
def shop_equipment_oper(pro_data, player):
    """装备抽取"""
    request = shop_pb2.ShopRequest()
    request.ParseFromString(pro_data)
    response = shop_pb2.ShopResponse()

    shop_id = request.ids[0]
    shop_num = request.num
    shop_item = game_configs.shop_config.get(shop_id)

    if shop_num == 1:  # and not is_consume(player, shop_item):
        # 免费抽取
        return_data = gain(player, shop_item.gain,
                           const.SHOP_DRAW_EQUIPMENT)  # 获取
        extra_return_data = gain(player, shop_item.extraGain,
                                 const.SHOP_DRAW_EQUIPMENT)  # 额外获取

        get_return(player, return_data, response.gain)
        get_return(player, extra_return_data, response.gain)
    # 多装备抽取
    elif shop_num >= 1:
        for i in range(shop_num):
            result = is_afford(player, shop_item.consume)  # 校验
            if not result.get('result'):
                response.res.result = False
                response.res.result_no = 101
                return response.SerializePartialToString()

        for i in range(shop_num):
            return_data = consume(player, shop_item.consume,
                                  const.SHOP_DRAW_EQUIPMENT)  # 消耗
            get_return(player, return_data, response.consume)

        for i in range(shop_num):
            return_data = gain(player, shop_item.gain,
                               const.SHOP_DRAW_EQUIPMENT)  # 获取
            extra_return_data = gain(player, shop_item.extraGain,
                                     const.SHOP_DRAW_EQUIPMENT)  # 额外获取

            get_return(player, return_data, response.gain)
            get_return(player, extra_return_data, response.gain)

    response.res.result = True
    return response.SerializeToString()
Exemplo n.º 48
0
def no_wait_835(data, player):

    args = NoWaitRequest()
    args.ParseFromString(data)
    stage_id = args.stage_id
    event_id = args.event_id

    response = NoWaitResponse()

    if player.travel_component.travel.get(stage_id):
        stage_cache = player.travel_component.travel.get(stage_id)
    else:
        logger.error("travel stage id not found")
        response.res.result = False
        response.res.result_no = 800
        return response.SerializeToString()

    event_cache = 0
    for event in stage_cache:
        if event[0] == event_id:
            event_cache = event
            break

    if not event_cache:
        logger.error("travel :event id not found")
        response.res.result = False
        response.res.result_no = 813
        return response.SerializeToString()

    event_info = game_configs.travel_event_config.get('events').get(event_id%xs)
    if player.finance.gold < event_info.price:
        response.res.result = False
        response.res.result_no = 102  # 充值币不足
        return response.SerializeToString()

    player.finance.consume_gold(event_info.price, const.TRAVEL)

    gain(player, event_cache[1], const.TRAVEL)
    player.finance.save_data()
    stage_cache.remove(event_cache)
    player.travel_component.save()

    response.res.result = True
    return response.SerializeToString()
Exemplo n.º 49
0
def shop_equipment_oper(pro_data, player):
    """装备抽取"""
    request = shop_pb2.ShopRequest()
    request.ParseFromString(pro_data)
    response = shop_pb2.ShopResponse()

    shop_id = request.ids[0]
    shop_num = request.num
    shop_item = game_configs.shop_config.get(shop_id)

    if shop_num == 1:  # and not is_consume(player, shop_item):
        # 免费抽取
        return_data = gain(player, shop_item.gain,
                           const.SHOP_DRAW_EQUIPMENT)  # 获取
        extra_return_data = gain(player, shop_item.extraGain,
                                 const.SHOP_DRAW_EQUIPMENT)  # 额外获取

        get_return(player, return_data, response.gain)
        get_return(player, extra_return_data, response.gain)
    # 多装备抽取
    elif shop_num >= 1:
        for i in range(shop_num):
            result = is_afford(player, shop_item.consume)  # 校验
            if not result.get('result'):
                response.res.result = False
                response.res.result_no = 101
                return response.SerializePartialToString()

        for i in range(shop_num):
            return_data = consume(player, shop_item.consume,
                                  const.SHOP_DRAW_EQUIPMENT)  # 消耗
            get_return(player, return_data, response.consume)

        for i in range(shop_num):
            return_data = gain(player, shop_item.gain,
                               const.SHOP_DRAW_EQUIPMENT)  # 获取
            extra_return_data = gain(player, shop_item.extraGain,
                                     const.SHOP_DRAW_EQUIPMENT)  # 额外获取

            get_return(player, return_data, response.gain)
            get_return(player, extra_return_data, response.gain)

    response.res.result = True
    return response.SerializeToString()
Exemplo n.º 50
0
 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
Exemplo n.º 51
0
 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
Exemplo n.º 52
0
def add_items(player, response, drop_ids):
    """ 添加道具给玩家 """
    for drop_id in drop_ids:
        big_bag = BigBag(drop_id)
        drop_item_group = big_bag.get_drop_items()
        return_data = item_group_helper.gain(player,
                                             drop_item_group,
                                             const.MINE_REWARD)
        item_group_helper.get_return(player, return_data, response.gain)
    return response
Exemplo n.º 53
0
    def settle(self, result, response):
        """
        战斗结算
        """
        player = self._player
        stage_id = self._stage_id
        #conf = self.get_stage_config()
        if player.travel_component.fight_cache[0] and player.travel_component.fight_cache[1]:
            if player.travel_component.travel.get(player.travel_component.fight_cache[0]):
                stage_cache = player.travel_component.travel.get(player.travel_component.fight_cache[0])
            else:
                logger.error("travel stage id not found")
                response.res.result = False
                response.res.result_no = 800
                return

            event_cache = 0
            for event in stage_cache:
                if event[0] == player.travel_component.fight_cache[1]:
                    event_cache = event
                    break

            if not event_cache:
                logger.error("travel :event id not found")
                response.res.result = False
                response.res.result_no = 813

                return

        if game_configs.travel_event_config.get('events').get(player.travel_component.fight_cache[1]%xs) and \
                stage_id == game_configs.travel_event_config.get('events').get(player.travel_component.fight_cache[1]%xs).parameter.items()[0][0]:
            if result:
                gain(player, event_cache[1], const.TRAVEL)
            stage_cache.remove(event_cache)
            player.travel_component.fight_cache = [0, 0]
            player.travel_component.save()

        else:
            logger.error('stageid != travel fight cache stage id ')
            response.res.result = False
            response.res.result_no = 817
            return
        tlog_action.log('RoundFlow', player, stage_id, 4, 0, result)
Exemplo n.º 54
0
def get_award_909(pro_data, player):
    """取得章节奖励
    """
    request = stage_request_pb2.StarAwardRequest()
    request.ParseFromString(pro_data)
    chapter_id = request.chapter_id
    award_type = request.award_type
    response = stage_response_pb2.StarAwardResponse()

    chapters_info = get_chapter_info(chapter_id, player)
    if len(chapters_info) != 1 or chapter_id == 1 or len(
            chapters_info[0].award_info) == 0:
        logger.error("chapter_info dont find")
        response.res.result = False
        response.res.result_no = 831
        return response.SerializePartialToString()
    else:
        chapter_obj = chapters_info[0]

    conf = chapter_obj.get_conf()
    chapter_obj.update(player.stage_component.calculation_star(chapter_id))

    if 0 <= award_type <= 2:
        if chapter_obj.award_info[award_type] != 0:
            logger.error("already receive or can`t receive")
            response.res.result = False
            response.res.result_no = 832
            return response.SerializePartialToString()
        else:
            chapter_obj.award_info[award_type] = 1
            bag_id = conf.starGift[award_type]

        drop = get_drop(bag_id)
        return_data = gain(player, drop, const.CHAPTER_AWARD)
        get_return(player, return_data, response.drops)
        player.stage_component.save_data()
        tlog_action.log('OpenStarChest', player, chapter_id, award_type)

    else:
        response.res.result = False
        response.res.result_no = 800
        return response.SerializePartialToString()
        # 满星抽奖
        # if chapter_obj.award_info[-1] == -1:
        #     logger.error("can`t receive")
        #     response.res.result = False
        #     response.res.result_no = 833
        #     return response.SerializePartialToString()
        # else:
        #     pass

    response.res.result = True
    # logger.debug(response)
    return response.SerializePartialToString()
Exemplo n.º 55
0
def hero_sacrifice_oper(heros, player):
    """
    武将献祭,返回总武魂、经验药水
    :param heros: 被献祭的武将
    :return total_hero_soul:总武魂数量, exp_item_no:经验药水编号, exp_item_num:经验药水数量
    """
    total_exp = 0
    exp_item_no = 0
    exp_item_num = 0

    response = hero_response_pb2.HeroSacrificeResponse()
    gain_response = response.gain
    for hero in heros:
        sacrifice_gain = game_configs.hero_config.get(hero.hero_no).sacrificeGain
        return_data = gain(player, sacrifice_gain, const.HERO_SACRIFICE_OPER)
        get_return(player, return_data, gain_response)
        # 经验
        exp = hero.get_all_exp()
        total_exp += exp
        tlog_action.log('HeroSacrifice', player, hero.hero_no)

    # baseconfig {1000000: 'item_id'}
    exp_items = game_configs.base_config.get("sacrificeGainExp")

    keys = []
    try:
        keys = sorted([int(item) for item in list(exp_items)], reverse=True)
    except Exception:
        logger.error("base_config sacrificeGainExp key must be int type:%s.",
                     str(exp_items))
        return

    for exp in keys:
        item_no = exp_items.get(exp)
        config = game_configs.item_config.get(item_no)
        exp = config.get("funcArg1")
        if total_exp/exp > 0:
            exp_item_no = item_no
            exp_item_num = total_exp/exp
            break

    player.item_package.add_item(Item(exp_item_no, exp_item_num))
    player.item_package.save_data()
    if exp_item_no:
        item_pb = gain_response.items.add()
        item_pb.item_no = exp_item_no
        item_pb.item_num = exp_item_num
    response.res.result = True
    # print "*"*80
    # print response
    return response
Exemplo n.º 56
0
def hero_sell_107(data, player):
    """武将出售"""
    args = hero_request_pb2.HeroSellRequest()
    args.ParseFromString(data)
    hero_nos = args.hero_nos

    response = hero_response_pb2.HeroSellResponse()
    for hero_no in hero_nos:
        sell_gain = game_configs.hero_config.get(hero_no).sellGain
        return_data = gain(player, sell_gain, const.HERO_SELL)
        get_return(player, return_data, response.gain)

    response.res.result = True
    return response
Exemplo n.º 57
0
    def settle(player, fight_result):
        logger.debug("fight revenge result:%s" % fight_result)

        if fight_result:
            player.friends.del_blacklist(target_id)
            player.friends.save_data()

            revenge_reward = game_configs.base_config['arenaRevengeRewards']
            return_data = gain(player, revenge_reward, const.FRIEND_REVENGE)
            get_return(player, return_data, response.gain)

        response.res.result = True
        logger.debug("red_units: %s" % response.red)
        return response.SerializeToString()
Exemplo n.º 58
0
    def get_reward(self, act_id, response):
        """docstring for get_reward"""

        act_item = game_configs.activity_config.get(act_id)
        act_info = self._act_info[act_id]
        if act_info.get("act_times") < int(act_item.parameterA):
            logger.error("activity times not enough!")
            return dict(result=False, result_no=250101)
        if act_info.get("finished"):
            logger.error("activity has finished!")
            return dict(result=False, result_no=250102)
        act_info["finished"] = True
        data = gain(self._owner, act_item.reward, const.GUILD_ACTIVITY)
        get_return(self._owner, data, response.gain)
        self.save_data()
        return dict(result=True)