Exemple #1
0
def enter_scene_9(data, player):
    responsedata = GameLoginResponse()
    responsedata.res.result = True

    player.pvp.check_time()
    responsedata.pvp_times = player.pvp.pvp_times
    responsedata.pvp_refresh_count = player.pvp.pvp_refresh_count
    responsedata.pvp_overcome_index = player.pvp.pvp_overcome_current
    responsedata.pvp_overcome_stars = player.pvp.pvp_overcome_stars
    responsedata.pvp_overcome_refresh_count = player.pvp.pvp_overcome_refresh_count

    if rank_helper.flag_doublu_day():
        rank_name = 'PowerRank2'
    else:
        rank_name = 'PowerRank1'
    rank_no = rank_helper.get_rank_by_key(rank_name, player.base_info.id)
    responsedata.fight_power_rank = rank_no

    player.stamina.check_time_all()
    buy_times_pb = responsedata.buy_times
    for item in player.stamina._stamina.stamina:
        item_pb = buy_times_pb.add()
        item_pb.resource_type = item.resource_type
        item_pb.buy_stamina_times = item.buy_stamina_times
        item_pb.last_gain_stamina_time = item.last_gain_stamina_time
        logger.debug(
            "stami %s buy_stamina_times %s last_gain_stamina_time %s" %
            (item.resource_type, item.buy_stamina_times,
             item.last_gain_stamina_time))

    return responsedata.SerializeToString()
Exemple #2
0
def enter_scene_9(data, player):
    responsedata = GameLoginResponse()
    responsedata.res.result = True

    player.pvp.check_time()
    responsedata.pvp_times = player.pvp.pvp_times
    responsedata.pvp_refresh_count = player.pvp.pvp_refresh_count
    responsedata.pvp_overcome_index = player.pvp.pvp_overcome_current
    responsedata.pvp_overcome_refresh_count = player.pvp.pvp_overcome_refresh_count

    if rank_helper.flag_doublu_day():
        rank_name = 'PowerRank2'
    else:
        rank_name = 'PowerRank1'
    rank_no = rank_helper.get_rank_by_key(rank_name, player.base_info.id)
    responsedata.fight_power_rank = rank_no

    player.stamina.check_time_all()
    buy_times_pb = responsedata.buy_times
    for item in player.stamina._stamina.stamina:
        item_pb = buy_times_pb.add()
        item_pb.resource_type = item.resource_type
        item_pb.buy_stamina_times = item.buy_stamina_times
        item_pb.last_gain_stamina_time = item.last_gain_stamina_time
        logger.debug("stamina %s buy_stamina_times %s last_gain_stamina_time %s" % (item.resource_type, item.buy_stamina_times, item.last_gain_stamina_time))

    return responsedata.SerializeToString()
Exemple #3
0
def get_star_rank(first_no, last_no, player, response):
    rank_name, last_rank_name = rank_helper.get_star_rank_name()

    rank_num = first_no
    rank_info = rank_helper.get_rank(rank_name, first_no, last_no)
    for (pid, rankinfo) in rank_info:
        res_user_info = response.user_info.add()
        res_user_info.id = int(pid)
        res_user_info.star_num = int(rankinfo)/const.power_rank_xs
        res_user_info.level = int(rankinfo) % const.power_rank_xs
        res_user_info.rank = rank_num

        character_obj = tb_character_info.getObj(pid)
        character_info = character_obj.hmget(['nickname', 'heads', 'rank_stage_progress'])
        res_user_info.nickname = character_info['nickname']
        res_user_info.stage_id = character_info['rank_stage_progress']

        heads = Heads_DB()
        heads.ParseFromString(character_info['heads'])
        res_user_info.user_icon = heads.now_head
        rank_num += 1

    if first_no == 1:
        rank_no = rank_helper.get_rank_by_key(rank_name,
                                              player.base_info.id)
        if rank_no:
            [(_id, rankinfo)] = rank_helper.get_rank(rank_name,
                                                     rank_no, rank_no)
            res_my_rank_info = response.my_rank_info
            res_my_rank_info.rank = rank_no
            res_my_rank_info.star_num = int(rankinfo/const.power_rank_xs)
            res_my_rank_info.level = int(rankinfo % const.power_rank_xs)
            res_my_rank_info.stage_id = player.stage_component.rank_stage_progress

            last_rank_no = rank_helper.get_rank_by_key(
                last_rank_name, player.base_info.id)
            if last_rank_no:
                res_my_rank_info.last_rank = last_rank_no
        # 前100名有多少人
        ranks = rank_helper.get_rank(rank_name, 1, 99999)
        response.all_num = len(ranks)
    response.res.result = True
Exemple #4
0
def deal_response(player, response):
    rank_no = rank_helper.get_rank_by_key('LimitHeroRank', player.base_info.id)
    response.rank = rank_no
    rank_info = rank_helper.get_rank('LimitHeroRank', 1, 10)
    rank = 1
    for (p_id, integral) in rank_info:
        nickname = tb_character_info.getObj(p_id).\
            hget('nickname')
        limit_rank = response.limit_rank.add()
        limit_rank.rank = rank
        limit_rank.integral = int(integral)
        limit_rank.nickname = nickname
        rank += 1
Exemple #5
0
def deal_player_infos(player, response):
    player_ids = player.pvp.rob_treasure
    rank_name, last_rank_name = rank_helper.get_power_rank_name()
    for player_id, ap in player_ids:
        if player_id >= 10000:
            player_data = tb_character_info.getObj(player_id)
            isexist = player_data.exists()
            if not isexist:
                logger.error('deal_player_infos, player id error')
                continue
            player_info = player_data.hmget(
                ['id', 'nickname', 'heads', 'vip_level', 'guild_id'])
            player_pb = response.player_info.add()
            player_pb.color = player.rob_treasure.get_target_color_info(
                player_id).id
            player_pb.id = player_info.get('id')
            player_pb.nickname = player_info.get('nickname', 'nickname')
            player_pb.vip_level = player_info.get('vip_level')
            if player_info.get('guild_id') and type(
                    player_info.get('guild_id')) is types.StringType:
                player_pb.guild_id = player_info.get('guild_id')

            player_heads = Heads_DB()
            player_heads.ParseFromString(player_info['heads'])
            player_pb.now_head = player_heads.now_head

            rank_no = rank_helper.get_rank_by_key(rank_name, player_id)
            if not rank_no:
                logger.error('deal_player_infos, rank_no is None')
                continue

            [(_id, rankinfo)] = rank_helper.get_rank(rank_name, rank_no,
                                                     rank_no)
            player_pb.power = int(rankinfo / const.power_rank_xs)
            player_pb.level = int(rankinfo % const.power_rank_xs)
        else:
            robot_obj = tb_character_info.getObj('robot')
            data = robot_obj.hget(player_id)

            player_pb = response.player_info.add()
            player_pb.color = player.rob_treasure.get_target_color_info(
                player_id).id
            player_pb.id = player_id
            player_pb.nickname = data.get('nickname')
            player_pb.vip_level = 0
            player_pb.now_head = data.get('head_no', 0)
            player_pb.guild_id = ''

            player_pb.power = int(data.get('attackPoint'))
            player_pb.level = data.get('level')
Exemple #6
0
def deal_response(player, response):
    rank_no = rank_helper.get_rank_by_key('LimitHeroRank',
                                          player.base_info.id)
    response.rank = rank_no
    rank_info = rank_helper.get_rank('LimitHeroRank', 1, 10)
    rank = 1
    for (p_id, integral) in rank_info:
        nickname = tb_character_info.getObj(p_id).\
            hget('nickname')
        limit_rank = response.limit_rank.add()
        limit_rank.rank = rank
        limit_rank.integral = int(integral)
        limit_rank.nickname = nickname
        rank += 1
Exemple #7
0
def deal_player_infos(player, response):
    player_ids = player.pvp.rob_treasure
    rank_name, last_rank_name = rank_helper.get_power_rank_name()
    for player_id, ap in player_ids:
        if player_id >= 10000:
            player_data = tb_character_info.getObj(player_id)
            isexist = player_data.exists()
            if not isexist:
                logger.error('deal_player_infos, player id error')
                continue
            player_info = player_data.hmget(['id', 'nickname',
                                             'heads', 'vip_level',
                                             'guild_id'])
            player_pb = response.player_info.add()
            player_pb.color = player.rob_treasure.get_target_color_info(player_id).id
            player_pb.id = player_info.get('id')
            player_pb.nickname = player_info.get('nickname', 'nickname')
            player_pb.vip_level = player_info.get('vip_level')
            if player_info.get('guild_id') and type(player_info.get('guild_id')) is types.StringType:
                player_pb.guild_id = player_info.get('guild_id')

            player_heads = Heads_DB()
            player_heads.ParseFromString(player_info['heads'])
            player_pb.now_head = player_heads.now_head

            rank_no = rank_helper.get_rank_by_key(rank_name,
                                                  player_id)
            if not rank_no:
                logger.error('deal_player_infos, rank_no is None')
                continue

            [(_id, rankinfo)] = rank_helper.get_rank(rank_name,
                                                     rank_no, rank_no)
            player_pb.power = int(rankinfo/const.power_rank_xs)
            player_pb.level = int(rankinfo % const.power_rank_xs)
        else:
            robot_obj = tb_character_info.getObj('robot')
            data = robot_obj.hget(player_id)

            player_pb = response.player_info.add()
            player_pb.color = player.rob_treasure.get_target_color_info(player_id).id
            player_pb.id = player_id
            player_pb.nickname = data.get('nickname')
            player_pb.vip_level = 0
            player_pb.now_head = data.get('head_no', 0)
            player_pb.guild_id = ''

            player_pb.power = int(data.get('attackPoint'))
            player_pb.level = data.get('level')
Exemple #8
0
def enter_scene_remote(dynamic_id, character_id, pay_arg):
    """进入场景"""
    is_new_character = 0
    player = PlayersManager().get_player_by_id(character_id)
    if not player:
        logger.debug('player login:%s', character_id)
        player = PlayerCharacter(character_id, dynamic_id=dynamic_id)

        if player.is_new_character() and not OPEN_REGISTER:
            PlayersManager().drop_player_by_id(character_id)
            logger.debug('player login, 4005 open register:%s', OPEN_REGISTER)
            return {'player_data': 4005}

        is_new_character = init_player(player)
        PlayersManager().add_player(player)
    else:
        if player.is_new_character() and not OPEN_REGISTER:
            PlayersManager().drop_player_by_id(character_id)
            logger.debug('player login, 4005 open register:%s', OPEN_REGISTER)
            return {'player_data': 4005}

        logger.debug('player exsit! player.dynamic_id %s new dynamic_id %s' %
                     (player.dynamic_id, dynamic_id))
        if player.dynamic_id != dynamic_id:
            logger.error('dynamic id is not same:%s,%s:%s', character_id,
                         dynamic_id, player.dynamic_id)
        player.dynamic_id = dynamic_id
    player.pay.set_pay_arg(pay_arg)  # 设置支付参数
    player.base_info.plat_id = pay_arg.get("plat_id")  # ios 0 android 1
    logger.debug("plat_id %s" % pay_arg.get("plat_id"))

    remote_gate.pull_message_remote(character_id)
    remote_gate['push'].online_offline_remote(player.base_info.id, 1)

    responsedata = GameLoginResponse()
    responsedata.res.result = True
    responsedata.id = player.base_info.id
    responsedata.nickname = player.base_info.base_name
    print server_open_time, '======================'
    responsedata.server_open_time = server_open_time

    responsedata.level = player.base_info.level
    responsedata.exp = player.base_info.exp
    responsedata.gag = player.base_info.gag
    responsedata.closure = player.base_info.closure

    for k, i in enumerate(player.finance._finances):
        print(k, i)
        responsedata.finances.append(int(i))

    responsedata.fine_hero = player.last_pick_time.fine_hero
    responsedata.excellent_hero = player.last_pick_time.excellent_hero
    responsedata.fine_equipment = player.last_pick_time.fine_equipment
    responsedata.excellent_equipment = player.last_pick_time.excellent_equipment
    responsedata.fine_hero_times = player.shop.single_coin_draw_times
    responsedata.excellent_hero_times = player.shop.single_gold_draw_times

    responsedata.pvp_times = player.pvp.pvp_times
    responsedata.pvp_refresh_count = player.pvp.pvp_refresh_count
    responsedata.pvp_overcome_index = player.pvp.pvp_overcome_current
    responsedata.pvp_overcome_stars = player.pvp.pvp_overcome_stars
    responsedata.pvp_overcome_refresh_count = player.pvp.pvp_overcome_refresh_count

    combat_power = player.line_up_component.combat_power
    responsedata.combat_power = combat_power

    hight_power = player.line_up_component.hight_power
    if hight_power and hight_power >= combat_power:
        responsedata.hight_power = hight_power
    else:
        responsedata.hight_power = combat_power
        player.line_up_component.hight_power = combat_power
        player.line_up_component.save_data()

    responsedata.hight_power = player.line_up_component.hight_power
    responsedata.newbee_guide_id = player.base_info.current_newbee_guide

    if player.guild.g_id != 0:
        responsedata.guild_id = player.guild.g_id

    responsedata.vip_level = player.base_info.vip_level
    # 体力
    responsedata.get_stamina_times = player.stamina.get_stamina_times
    responsedata.buy_stamina_times = player.stamina.buy_stamina_times
    responsedata.last_gain_stamina_time = player.stamina.last_gain_stamina_time
    responsedata.server_time = int(time.time())
    responsedata.register_time = player.base_info.register_time
    # responsedata.soul_shop_refresh_times = player.soul_shop.refresh_times
    buy_times_pb = responsedata.buy_times
    for item in player.stamina._stamina.stamina:
        item_pb = buy_times_pb.add()
        item_pb.resource_type = item.resource_type
        item_pb.buy_stamina_times = item.buy_stamina_times
        item_pb.last_gain_stamina_time = item.last_gain_stamina_time
        logger.debug(
            "stami %s buy_stamina_times %s last_gain_stamina_time %s" %
            (item.resource_type, item.buy_stamina_times,
             item.last_gain_stamina_time))

    logger.debug("stamina %s" % buy_times_pb)
    if player.base_info.heads.head:
        for head in player.base_info.heads.head:
            responsedata.head.append(head)
    responsedata.now_head = player.base_info.heads.now_head
    for _id in player.base_info.first_recharge_ids:
        responsedata.first_recharge_ids.append(_id)

    responsedata.recharge = player.base_info.recharge  # 累计充值
    responsedata.tomorrow_gift = player.base_info.tomorrow_gift
    responsedata.battle_speed = player.base_info.battle_speed
    responsedata.story_id = player.base_info.story_id
    for k, i in enumerate(player.base_info._button_one_time):
        responsedata.button_one_time.append(int(i))
    logger.debug("button_one_time %s" % player.base_info._button_one_time)
    # 战力排行
    if rank_helper.flag_doublu_day():
        rank_name = 'PowerRank2'
    else:
        rank_name = 'PowerRank1'
    rank_no = rank_helper.get_rank_by_key(rank_name, player.base_info.id)
    responsedata.fight_power_rank = rank_no

    responsedata.is_open_next_day_activity = player.base_info.is_open_next_day_activity
    responsedata.first_recharge_activity = player.base_info.first_recharge_activity
    responsedata.one_dollar_flowid = str(player.base_info.one_dollar_flowid)

    responsedata.q360_recharge_url = SDK360_RECHARGE_URL
    logger.debug("character info:----------------------id: %s" %
                 player.base_info.id)
    logger.debug("stage_id: %s" % player.fight_cache_component.stage_id)
    logger.debug("vip_level:%d", player.base_info.vip_level)
    logger.debug("recharge:%d", player.base_info.recharge)
    logger.debug("register_time:%d", player.base_info.register_time)
    logger.debug("buy_stamina_times:%d", player.stamina.buy_stamina_times)
    logger.debug("first_recharge_activity:%d",
                 player.base_info.first_recharge_activity)
    logger.debug("newbee_guide_id:%d", player.base_info.current_newbee_guide)
    # logger.debug("coin:%d", player.finance.coin)
    # logger.debug("gold:%d", player.finance.gold)
    # logger.debug("hero_soul:%d", player.finance.hero_soul)
    # logger.debug("soul_shop_refresh_times:%d", player.soul_shop.refresh_times)
    # mock guild
    # player.guild.g_id = 1989
    # 更新7日奖励的状态
    # player.start_target.update_29()

    if const.DEBUG:
        for slot_no, slot in player.line_up_component.line_up_slots.items():
            hero = slot.hero_slot.hero_obj
            if not hero:
                continue
            combat_power_hero_lineup(player, hero, slot_no)
            # awake_hero = player.fight_cache_component.change_hero(hero, hero.hero_info["awakeHeroID"])

            # combat_power_hero_lineup(player, awake_hero, slot_no, "awake")
    logger.debug('login:<%s>%s:%s %s:%s', player, character_id,
                 responsedata.level, dynamic_id, player.dynamic_id)

    return {
        'player_data': responsedata.SerializeToString(),
        'is_new_character': is_new_character
    }
Exemple #9
0
def enter_scene_remote(dynamic_id, character_id, pay_arg):
    """进入场景"""
    is_new_character = 0
    player = PlayersManager().get_player_by_id(character_id)
    if not player:
        logger.debug('player login:%s', character_id)
        player = PlayerCharacter(character_id, dynamic_id=dynamic_id)
        is_new_character = init_player(player)
        PlayersManager().add_player(player)
    else:
        logger.debug('player exsit!========player.dynamic_id %s new dynamic_id %s' % (player.dynamic_id, dynamic_id))
        if player.dynamic_id != dynamic_id:
            logger.error('dynamic id is not same:%s,%s:%s',
                         character_id,
                         dynamic_id,
                         player.dynamic_id)
        player.dynamic_id = dynamic_id
    player.pay.set_pay_arg(pay_arg)  # 设置支付参数
    player.base_info.plat_id = pay_arg.get("plat_id")  # ios 0 android 1
    logger.debug("plat_id %s" % pay_arg.get("plat_id"))

    remote_gate.pull_message_remote(character_id)
    remote_gate['push'].online_offline_remote(player.base_info.id, 1)

    responsedata = GameLoginResponse()
    responsedata.res.result = True
    responsedata.id = player.base_info.id
    responsedata.nickname = player.base_info.base_name

    responsedata.level = player.base_info.level
    responsedata.exp = player.base_info.exp
    responsedata.gag = player.base_info.gag
    responsedata.closure = player.base_info.closure

    for k, i in enumerate(player.finance._finances):
        print(i)
        responsedata.finances.append(int(i))

    responsedata.fine_hero = player.last_pick_time.fine_hero
    responsedata.excellent_hero = player.last_pick_time.excellent_hero
    responsedata.fine_equipment = player.last_pick_time.fine_equipment
    responsedata.excellent_equipment = player.last_pick_time.excellent_equipment
    responsedata.fine_hero_times = player.shop.single_coin_draw_times
    responsedata.excellent_hero_times = player.shop.single_gold_draw_times

    responsedata.pvp_times = player.pvp.pvp_times
    responsedata.pvp_refresh_count = player.pvp.pvp_refresh_count
    responsedata.pvp_overcome_index = player.pvp.pvp_overcome_current
    responsedata.pvp_overcome_refresh_count = player.pvp.pvp_overcome_refresh_count

    combat_power = player.line_up_component.combat_power
    responsedata.combat_power = combat_power

    hight_power = player.line_up_component.hight_power
    if hight_power and hight_power >= combat_power:
        responsedata.hight_power = hight_power
    else:
        responsedata.hight_power = combat_power
        player.line_up_component.hight_power = combat_power
        player.line_up_component.save_data()

    responsedata.hight_power = player.line_up_component.hight_power
    responsedata.newbee_guide_id = player.base_info.newbee_guide_id

    if player.guild.g_id != 0:
        responsedata.guild_id = player.guild.g_id

    responsedata.vip_level = player.base_info.vip_level
    # 体力
    responsedata.get_stamina_times = player.stamina.get_stamina_times
    responsedata.buy_stamina_times = player.stamina.buy_stamina_times
    responsedata.last_gain_stamina_time = player.stamina.last_gain_stamina_time
    responsedata.server_time = int(time.time())
    responsedata.register_time = player.base_info.register_time
    # responsedata.soul_shop_refresh_times = player.soul_shop.refresh_times
    buy_times_pb = responsedata.buy_times
    for item in player.stamina._stamina.stamina:
        item_pb = buy_times_pb.add()
        item_pb.resource_type = item.resource_type
        item_pb.buy_stamina_times = item.buy_stamina_times
        item_pb.last_gain_stamina_time = item.last_gain_stamina_time
        logger.debug("stamina %s buy_stamina_times %s last_gain_stamina_time %s" % (item.resource_type, item.buy_stamina_times, item.last_gain_stamina_time))


    logger.debug("stamina %s" % buy_times_pb)
    if player.base_info.heads.head:
        for head in player.base_info.heads.head:
            responsedata.head.append(head)
    responsedata.now_head = player.base_info.heads.now_head
    for _id in player.base_info.first_recharge_ids:
        responsedata.first_recharge_ids.append(_id)

    responsedata.recharge = player.base_info.recharge  # 累计充值
    responsedata.tomorrow_gift = player.base_info.tomorrow_gift
    responsedata.battle_speed = player.base_info.battle_speed
    responsedata.story_id = player.base_info.story_id
    # 战力排行
    if rank_helper.flag_doublu_day():
        rank_name = 'PowerRank2'
    else:
        rank_name = 'PowerRank1'
    rank_no = rank_helper.get_rank_by_key(rank_name, player.base_info.id)
    responsedata.fight_power_rank = rank_no

    responsedata.is_open_next_day_activity = player.base_info.is_open_next_day_activity
    responsedata.first_recharge_activity = player.base_info.first_recharge_activity
    logger.debug("character info:----------------------id: %s" % player.base_info.id)
    logger.debug("stage_id: %s" % player.fight_cache_component.stage_id)
    logger.debug("vip_level:%d", player.base_info.vip_level)
    logger.debug("recharge:%d", player.base_info.recharge)
    logger.debug("register_time:%d", player.base_info.register_time)
    logger.debug("buy_stamina_times:%d", player.stamina.buy_stamina_times)
    logger.debug("first_recharge_activity:%d", player.base_info.first_recharge_activity)
    # logger.debug("coin:%d", player.finance.coin)
    # logger.debug("gold:%d", player.finance.gold)
    # logger.debug("hero_soul:%d", player.finance.hero_soul)
    # logger.debug("soul_shop_refresh_times:%d", player.soul_shop.refresh_times)

    if const.DEBUG:
        for slot_no, slot in player.line_up_component.line_up_slots.items():
            hero = slot.hero_slot.hero_obj
            if not hero:
                continue
            combat_power_hero_lineup(player, hero, slot_no)
            awake_hero = player.fight_cache_component.change_hero(hero, hero.hero_info["awakeHeroID"])

            combat_power_hero_lineup(player, awake_hero, slot_no, "awake")
    logger.debug('login:<%s>%s:%s %s:%s',
                 player,
                 character_id,
                 responsedata.level,
                 dynamic_id,
                 player.dynamic_id)

    return {'player_data': responsedata.SerializeToString(),
            'is_new_character': is_new_character}