Example #1
0
def __character_login(dynamic_id):

    user = UsersManager().get_by_dynamic_id(dynamic_id)

    logger.info("user_id:%d", dynamic_id)
    if not user:
        return {'result': False}

    v_character = VCharacterManager().get_by_id(user.user_id)
    if v_character:
        v_character.dynamic_id = dynamic_id
    else:
        v_character = VirtualCharacter(user.user_id, dynamic_id)
        VCharacterManager().add_character(v_character)

    now_node = SceneSerManager().get_best_sceneid()

    # game服登录
    child_node = GlobalObject().child(now_node)
    player_data = child_node.enter_scene_remote(dynamic_id, user.user_id)
    if not player_data:
        return {'result': False}
    v_character.node = now_node

    # pull message from transit
    GlobalObject().remote['transit'].pull_message_remote(user.user_id)

    SceneSerManager().add_client(now_node, dynamic_id)

    return {'result': True, 'player_data': player_data}
Example #2
0
def __character_login(dynamic_id, pay_arg):

    user = UsersManager().get_by_dynamic_id(dynamic_id)

    logger.info("user_id:%d", dynamic_id)
    if not user:
        logger.error("user not exist!")
        return {'result': False, 'result_no': 4001}

    v_character = VCharacterManager().get_by_id(user.user_id)
    print("__character_login %s" % v_character)
    if v_character:
        old_dynamic_id = v_character.dynamic_id
        v_character.dynamic_id = dynamic_id
        VCharacterManager().update_dynamic_id(old_dynamic_id, v_character)
        print("old dynamic_id %s, new_dynamic_id %s" %
              (old_dynamic_id, dynamic_id))
        v_character.state = 1  # 恢复掉线状态-> 正常状态
    else:
        v_character = VirtualCharacter(user.user_id, dynamic_id)
        VCharacterManager().add_character(v_character)

    now_node = v_character.node
    if not now_node:
        now_node = SceneSerManager().get_best_sceneid()
        if not now_node:
            logger.error("can't find game server!")
            return {'result': False, 'result_no': 4002}
        v_character.node = now_node

    # game服登录
    child_node = GlobalObject().child(now_node)
    res_data = child_node.enter_scene_remote(dynamic_id, user.user_id, pay_arg)
    if not res_data['player_data']:
        logger.error("enter scene error!")
        return {'result': False, 'result_no': 4003}
    if res_data['player_data'] == 4005:
        logger.debug("enter scene error, 4005!")
        VCharacterManager().drop_by_dynamic_id(dynamic_id)
        return {'result': False, 'result_no': 4005}

    # logger.debug("pull_message_remote")
    # # pull message from transit
    # GlobalObject().remote['transit'].pull_message_remote(user.user_id)

    SceneSerManager().add_client(now_node, dynamic_id)

    res_data['result'] = True
    return res_data
Example #3
0
def __character_login(dynamic_id, pay_arg):

    user = UsersManager().get_by_dynamic_id(dynamic_id)

    logger.info("user_id:%d", dynamic_id)
    if not user:
        logger.error("user not exist!")
        return {'result': False, 'result_no': 4001}

    v_character = VCharacterManager().get_by_id(user.user_id)
    if v_character:
        v_character.dynamic_id = dynamic_id
        v_character.state = 1 # 恢复掉线状态-> 正常状态
    else:
        v_character = VirtualCharacter(user.user_id, dynamic_id)
        VCharacterManager().add_character(v_character)

    now_node = v_character.node
    if not now_node:
        now_node = SceneSerManager().get_best_sceneid()
        if not now_node:
            logger.error("can't find game server!")
            return {'result': False, 'result_no': 4002}
        v_character.node = now_node

    # game服登录
    child_node = GlobalObject().child(now_node)
    res_data = child_node.enter_scene_remote(dynamic_id, user.user_id, pay_arg)
    if not res_data['player_data']:
        logger.error("enter scene error!")
        return {'result': False, 'result_no': 4003}

    # logger.debug("pull_message_remote")
    # # pull message from transit
    # GlobalObject().remote['transit'].pull_message_remote(user.user_id)

    SceneSerManager().add_client(now_node, dynamic_id)

    res_data['result'] = True
    return res_data