コード例 #1
0
ファイル: gm.py プロジェクト: isphinx/traversing
def copy_user(args):
    character_obj = tb_character_info.getObj(int(args.get('uid')))
    if not character_obj.exists():
        return {'success': 0, 'message': 1}

    be_copy_character_obj = tb_character_info.getObj(int(args.get('be_copy_uid')))
    if not be_copy_character_obj.exists():
        return {'success': 0, 'message': 2}
    be_copy_character_info = be_copy_character_obj.hgetall()

    character_obj.hmset(be_copy_character_info)

    return {'success': 1}
コード例 #2
0
def copy_user(args):
    character_obj = tb_character_info.getObj(int(args.get('uid')))
    if not character_obj.exists():
        return {'success': 0, 'message': 1}

    be_copy_character_obj = tb_character_info.getObj(
        int(args.get('be_copy_uid')))
    if not be_copy_character_obj.exists():
        return {'success': 0, 'message': 2}
    be_copy_character_info = be_copy_character_obj.hgetall()

    character_obj.hmset(be_copy_character_info)

    return {'success': 1}
コード例 #3
0
ファイル: gm.py プロジェクト: isphinx/traversing
def reset_star_gift(args):
    uids = tb_character_info.smem('all')
    for uid in uids:
        character_obj = tb_character_info.getObj(uid)
        data = {'award_info': {}}
        character_obj.hmset(data)
    return {"success": 1}
コード例 #4
0
def reset_star_gift(args):
    uids = tb_character_info.smem('all')
    for uid in uids:
        character_obj = tb_character_info.getObj(uid)
        data = {'award_info': {}}
        character_obj.hmset(data)
    return {"success": 1}
コード例 #5
0
ファイル: gm.py プロジェクト: isphinx/traversing
def get_user_heros(args):
    character_obj = tb_character_info.getObj(int(args.get('uid')))
    if not character_obj.exists():
        return {'success': 0, 'message': 1}
    message = {}

    char_obj = character_obj.getObj('heroes')
    heros = char_obj.hgetall()

    for hid, data in heros.items():
        hero_mes = {}
        hero_mes['level'] = data['level']
        hero_mes['exp'] = data['exp']
        hero_mes['break_level'] = data['break_level']
        hero_mes['refine'] = data['refine']
        if data['is_guard']:
            hero_mes['is_guard'] = 1
        else:
            hero_mes['is_guard'] = 0

        if data['is_online']:
            hero_mes['is_online'] = 1
        else:
            hero_mes['is_online'] = 0

        message[data['hero_no']] = hero_mes

    return {'success': 1, 'message': message}
コード例 #6
0
def get_user_guild_info(args):
    character_obj = tb_character_info.getObj(int(args.get('uid')))
    if not character_obj.exists():
        return {'success': 0, 'message': 1}

    guild_id = character_obj.hget('guild_id')
    if guild_id == 'no':
        return {'success': 0, 'message': 2}

    message = {}
    position = character_obj.hget('position')
    contribution = character_obj.hget('contribution')
    all_contribution = character_obj.hget('all_contribution')
    k_num = character_obj.hget('k_num')
    worship = character_obj.hget('worship')
    worship_time = character_obj.hget('worship_time')
    exit_time = character_obj.hget('exit_time')
    message = {
        'guild_id': guild_id,
        'position': position,
        'contribution': contribution,
        'all_contribution': all_contribution,
        'k_num': k_num,
        'worship': worship,
        'worship_time': worship_time,
        'exit_time': exit_time
    }

    return {'success': 1, 'message': message}
コード例 #7
0
def get_user_heros(args):
    character_obj = tb_character_info.getObj(int(args.get('uid')))
    if not character_obj.exists():
        return {'success': 0, 'message': 1}
    message = {}

    char_obj = character_obj.getObj('heroes')
    heros = char_obj.hgetall()

    for hid, data in heros.items():
        hero_mes = {}
        hero_mes['level'] = data['level']
        hero_mes['exp'] = data['exp']
        hero_mes['break_level'] = data['break_level']
        hero_mes['refine'] = data['refine']
        if data['is_guard']:
            hero_mes['is_guard'] = 1
        else:
            hero_mes['is_guard'] = 0

        if data['is_online']:
            hero_mes['is_online'] = 1
        else:
            hero_mes['is_online'] = 0

        message[data['hero_no']] = hero_mes

    return {'success': 1, 'message': message}
コード例 #8
0
ファイル: gm.py プロジェクト: isphinx/traversing
def get_user_guild_info(args):
    character_obj = tb_character_info.getObj(int(args.get('uid')))
    if not character_obj.exists():
        return {'success': 0, 'message': 1}

    guild_id = character_obj.hget('guild_id')
    if guild_id == 'no':
        return {'success': 0, 'message': 2}

    message = {}
    position = character_obj.hget('position')
    contribution = character_obj.hget('contribution')
    all_contribution = character_obj.hget('all_contribution')
    k_num = character_obj.hget('k_num')
    worship = character_obj.hget('worship')
    worship_time = character_obj.hget('worship_time')
    exit_time = character_obj.hget('exit_time')
    message = {'guild_id': guild_id,
               'position': position,
               'contribution': contribution,
               'all_contribution': all_contribution,
               'k_num': k_num,
               'worship': worship,
               'worship_time': worship_time,
               'exit_time': exit_time}

    return {'success': 1, 'message': message}
コード例 #9
0
ファイル: gm.py プロジェクト: isphinx/traversing
def ban_speak(args):
    character_obj = tb_character_info.getObj(int(args.get('uid')))
    if not character_obj.exists():
        return {'success': 0, 'message': 1}
    closure = character_obj.hget('gag')
    data = {'gag': int(args['lock_time'])}
    character_obj.hmset(data)
    return {'success': 1}
コード例 #10
0
def ban_speak(args):
    character_obj = tb_character_info.getObj(int(args.get('uid')))
    if not character_obj.exists():
        return {'success': 0, 'message': 1}
    closure = character_obj.hget('gag')
    data = {'gag': int(args['lock_time'])}
    character_obj.hmset(data)
    return {'success': 1}
コード例 #11
0
def get_user_finances(args):
    character_obj = tb_character_info.getObj(int(args.get('uid')))
    if not character_obj.exists():
        return {'success': 0, 'message': 1}

    finances = character_obj.hget('finances')
    del finances[0]

    return {'success': 1, 'message': finances}
コード例 #12
0
ファイル: gm.py プロジェクト: isphinx/traversing
def get_user_finances(args):
    character_obj = tb_character_info.getObj(int(args.get('uid')))
    if not character_obj.exists():
        return {'success': 0, 'message': 1}

    finances = character_obj.hget('finances')
    del finances[0]

    return {'success': 1, 'message': finances}
コード例 #13
0
def get_user_items(args):
    character_obj = tb_character_info.getObj(int(args.get('uid')))
    if not character_obj.exists():
        return {'success': 0, 'message': 1}

    items = character_obj.hget('items')
    message = {}
    if items:
        for no, num in items.items():
            message[no] = num

    return {'success': 1, 'message': message}
コード例 #14
0
def get_user_eq_chips(args):
    character_obj = tb_character_info.getObj(int(args.get('uid')))
    if not character_obj.exists():
        return {'success': 0, 'message': 1}

    equipment_chips = character_obj.hget('equipment_chips')
    message = {}
    if equipment_chips:
        for no, num in equipment_chips.items():
            message[no] = num

    return {'success': 1, 'message': message}
コード例 #15
0
def get_user_hero_chips(args):
    character_obj = tb_character_info.getObj(int(args.get('uid')))
    if not character_obj.exists():
        return {'success': 0, 'message': 1}

    hero_chips_data = character_obj.hget('hero_chips')
    message = {}
    if hero_chips_data:
        for no, num in hero_chips_data.items():
            message[no] = num

    return {'success': 1, 'message': message}
コード例 #16
0
ファイル: gm.py プロジェクト: isphinx/traversing
def get_user_hero_chips(args):
    character_obj = tb_character_info.getObj(int(args.get('uid')))
    if not character_obj.exists():
        return {'success': 0, 'message': 1}

    hero_chips_data = character_obj.hget('hero_chips')
    message = {}
    if hero_chips_data:
        for no, num in hero_chips_data.items():
            message[no] = num

    return {'success': 1, 'message': message}
コード例 #17
0
ファイル: gm.py プロジェクト: isphinx/traversing
def get_user_eq_chips(args):
    character_obj = tb_character_info.getObj(int(args.get('uid')))
    if not character_obj.exists():
        return {'success': 0, 'message': 1}

    equipment_chips = character_obj.hget('equipment_chips')
    message = {}
    if equipment_chips:
        for no, num in equipment_chips.items():
            message[no] = num

    return {'success': 1, 'message': message}
コード例 #18
0
ファイル: gm.py プロジェクト: isphinx/traversing
def get_user_items(args):
    character_obj = tb_character_info.getObj(int(args.get('uid')))
    if not character_obj.exists():
        return {'success': 0, 'message': 1}

    items = character_obj.hget('items')
    message = {}
    if items:
        for no, num in items.items():
            message[no] = num

    return {'success': 1, 'message': message}
コード例 #19
0
ファイル: gm.py プロジェクト: isphinx/traversing
def get_user_eqs(args):
    character_obj = tb_character_info.getObj(int(args.get('uid')))
    if not character_obj.exists():
        return {'success': 0, 'message': 1}
    message = {}
    # eqs = character_obj.hget('equipments')

    char_obj = character_obj.getObj('equipments')
    eqs = char_obj.hgetall()

    for hid, data in eqs.items():
        equipment_info = data.get('equipment_info')
        equipment_id = data.get('id')

        eq_mes = {}
        eq_mes['eq_no'] = equipment_info['equipment_no']
        eq_mes['slv'] = equipment_info['slv']
        eq_mes['alv'] = equipment_info['alv']
        eq_mes['prefix'] = equipment_info['prefix']

        message[equipment_id] = eq_mes

    return {'success': 1, 'message': message}
コード例 #20
0
def get_user_eqs(args):
    character_obj = tb_character_info.getObj(int(args.get('uid')))
    if not character_obj.exists():
        return {'success': 0, 'message': 1}
    message = {}
    # eqs = character_obj.hget('equipments')

    char_obj = character_obj.getObj('equipments')
    eqs = char_obj.hgetall()

    for hid, data in eqs.items():
        equipment_info = data.get('equipment_info')
        equipment_id = data.get('id')

        eq_mes = {}
        eq_mes['eq_no'] = equipment_info['equipment_no']
        eq_mes['slv'] = equipment_info['slv']
        eq_mes['alv'] = equipment_info['alv']
        eq_mes['prefix'] = equipment_info['prefix']

        message[equipment_id] = eq_mes

    return {'success': 1, 'message': message}
コード例 #21
0
def modify_user_info(args):
    # oldvcharacter = VCharacterManager().get_by_id(int(args.get('uid')))
    # if oldvcharacter:
    #     args = (args.get('command'), oldvcharacter.dynamic_id,
    #             cPickle.dumps(args))
    #     child_node = groot.child(oldvcharacter.node)
    #     return child_node.callbackChild(*args)
    # else:
    if not args['attr_name'] or not args['attr_value']:
        return {'success': 0, 'message': 5}
    character_obj = tb_character_info.getObj(int(args.get('uid')))
    if not character_obj.exists():
        return {'success': 0, 'message': 1}

    if args['attr_name'] == 'user_level':
        data = {'level': int(args['attr_value'])}
        character_obj.hmset(data)
        return {'success': 1}
    elif args['attr_name'] == 'newbee_guide':
        data = {'current_newbee_guide': int(args['attr_value'])}
        character_obj.hmset(data)
        return {'success': 1}
    elif args['attr_name'] == 'vip_level':
        data = {'vip_level': int(args['attr_value'])}
        character_obj.hmset(data)
        return {'success': 1}
    elif args['attr_name'] == 'user_exp':
        data = {'exp': int(args['attr_value'])}
        character_obj.hmset(data)
        return {'success': 1}
    elif args['attr_name'] == 'buy_stamina_times':
        stamina_data = character_obj.hget('stamina')
        stamina = Stamina_DB()
        stamina.ParseFromString(stamina_data)
        stamina.buy_stamina_times = int(args['attr_value'])
        data = {'stamina': stamina.SerializeToString()}
        character_obj.hmset(data)
        return {'success': 1}
    elif args['attr_name'] == 'stamina':
        finance = character_obj.hget('finances')
        finance[7] = int(args['attr_value'])
        data = {'finances': finance}
        character_obj.hmset(data)
        return {'success': 1}
    elif args['attr_name'] == 'stage1':
        return {'success': 0}
        stage_ids = args['attr_value'].split(';')
        for stage_id in stage_ids:
            stage_id = int(stage_id)

            stages = character_obj.hget('stage_info')
            stage_info = game_configs.stage_config.get('stages').get(stage_id)
            if not stage_info:
                return {'success': 0, 'message': 4}
            if not next_stages.get(stage_id):
                return {'success': 0, 'message': 4}
            if game_configs.stage_config.get('stages').get(
                    stage_id)['type'] != 1:
                return {'success': 0, 'message': 4}
            stage_objs = {}
            for stage_id_a, stage in stages.items():
                stage_objs[stage_id_a] = Stage.loads(stage)

            stage_obj = get_stage(stage_objs, stage_id)
            stage_obj.state = 1
    elif args['attr_name'] == 'stage':
        stage_id = int(args['attr_value'])
        attr_value = int(args['attr_value'])
        stages = character_obj.hget('stage_info')

        next_stages = game_configs.stage_config.get('condition_mapping')

        stage_info = game_configs.stage_config.get('stages').get(stage_id)
        if not stage_info:
            return {'success': 0, 'message': 4}
        if not next_stages.get(stage_id):
            return {'success': 0, 'message': 4}
        if game_configs.stage_config.get('stages').get(stage_id)['type'] != 1:
            return {'success': 0, 'message': 4}
        stage_objs = {}
        for stage_id_a, stage in stages.items():
            stage_objs[stage_id_a] = Stage.loads(stage)

        stage_obj = get_stage(stage_objs, stage_id)
        stage_obj.state = -1
        first_stage_id = game_configs.stage_config.get('first_stage_id')
        stage_id_a = stage_id

        while True:
            if not next_stages.get(stage_id_a):
                break
            for stage in [
                    get_stage(stage_objs, stage_id_1)
                    for stage_id_1 in next_stages.get(stage_id_a)
            ]:
                stage.state = -2
            for stage_id_1 in next_stages.get(stage_id_a):
                if game_configs.stage_config.get('stages').get(
                        stage_id_1)['type'] == 1:
                    stage_id_a = stage_id_1
                    break
            else:
                break

        while True:
            the_last_stage_id = game_configs.stage_config.get('stages').get(
                stage_id)['condition']

            stage_obj = get_stage(stage_objs, stage_id)
            stage_obj.state = 1

            if next_stages.get(the_last_stage_id):
                for stage in [
                        get_stage(stage_objs, stage_id_1)
                        for stage_id_1 in next_stages.get(the_last_stage_id)
                ]:
                    if stage_id != stage.stage_id:
                        stage.state = -1

            if stage_id == first_stage_id:
                break
            else:
                stage_id = the_last_stage_id

        stage_obj = get_stage(stage_objs, attr_value)
        stage_obj.state = -1
        if game_configs.stage_config.get('stages').get(
                attr_value)['section'] == 1:
            chapter_id = game_configs.stage_config.get('stages').get(
                attr_value)['chapter']
        else:
            chapter_id = game_configs.stage_config.get('stages').get(
                attr_value)['chapter'] + 1

        data = {
            'stage_progress':
            attr_value,
            'stage_info':
            dict([(stage_id, stage.dumps())
                  for stage_id, stage in stage_objs.iteritems()]),
            'plot_chapter':
            chapter_id
        }
        character_obj.hmset(data)
        return {'success': 1}
    elif args['attr_name'] == 'nickname':
        nickname = args['attr_value']
        match = re.search(u'[\uD800-\uDBFF][\uDC00-\uDFFF]', nickname)
        if match:
            return {'success': 0, 'message': 2}

        if trie_tree.check.replace_bad_word(nickname) != nickname:
            return {'success': 0, 'message': 2}

        nickname_obj = tb_character_info.getObj('nickname')
        result = nickname_obj.hsetnx(args['attr_value'], args['uid'])
        if result:
            data = {'nickname': args['attr_value']}
            character_obj.hmset(data)
            return {'success': 1}
        else:
            return {'success': 0, 'message': 0}
    else:
        return {'success': 0, 'message': 3}
コード例 #22
0
ファイル: gm.py プロジェクト: isphinx/traversing
def modify_user_info(args):
    # oldvcharacter = VCharacterManager().get_by_id(int(args.get('uid')))
    # if oldvcharacter:
    #     args = (args.get('command'), oldvcharacter.dynamic_id,
    #             cPickle.dumps(args))
    #     child_node = groot.child(oldvcharacter.node)
    #     return child_node.callbackChild(*args)
    # else:
    if not args['attr_name'] or not args['attr_value']:
        return {'success': 0, 'message': 5}
    character_obj = tb_character_info.getObj(int(args.get('uid')))
    if not character_obj.exists():
        return {'success': 0, 'message': 1}

    if args['attr_name'] == 'user_level':
        data = {'level': int(args['attr_value'])}
        character_obj.hmset(data)
        return {'success': 1}
    elif args['attr_name'] == 'newbee_guide':
        data = {'newbee_guide_id': int(args['attr_value'])}
        character_obj.hmset(data)
        return {'success': 1}
    elif args['attr_name'] == 'vip_level':
        data = {'vip_level': int(args['attr_value'])}
        character_obj.hmset(data)
        return {'success': 1}
    elif args['attr_name'] == 'user_exp':
        data = {'exp': int(args['attr_value'])}
        character_obj.hmset(data)
        return {'success': 1}
    elif args['attr_name'] == 'buy_stamina_times':
        stamina_data = character_obj.hget('stamina')
        stamina = Stamina_DB()
        stamina.ParseFromString(stamina_data)
        stamina.buy_stamina_times = int(args['attr_value'])
        data = {'stamina': stamina.SerializeToString()}
        character_obj.hmset(data)
        return {'success': 1}
    elif args['attr_name'] == 'stamina':
        finance = character_obj.hget('finances')
        finance[7] = int(args['attr_value'])
        data = {'finances': finance}
        character_obj.hmset(data)
        return {'success': 1}
    elif args['attr_name'] == 'stage1':
        return {'success': 0}
        stage_ids = args['attr_value'].split(';')
        for stage_id in stage_ids:
            stage_id = int(stage_id)

            stages = character_obj.hget('stage_info')
            stage_info = game_configs.stage_config.get('stages').get(stage_id)
            if not stage_info:
                return {'success': 0, 'message': 4}
            if not next_stages.get(stage_id):
                return {'success': 0, 'message': 4}
            if game_configs.stage_config.get('stages').get(stage_id)['type'] != 1:
                return {'success': 0, 'message': 4}
            stage_objs = {}
            for stage_id_a, stage in stages.items():
                stage_objs[stage_id_a] = Stage.loads(stage)

            stage_obj = get_stage(stage_objs, stage_id)
            stage_obj.state = 1
    elif args['attr_name'] == 'stage':
        stage_id = int(args['attr_value'])
        attr_value = int(args['attr_value'])
        stages = character_obj.hget('stage_info')

        next_stages = game_configs.stage_config.get('condition_mapping')

        stage_info = game_configs.stage_config.get('stages').get(stage_id)
        if not stage_info:
            return {'success': 0, 'message': 4}
        if not next_stages.get(stage_id):
            return {'success': 0, 'message': 4}
        if game_configs.stage_config.get('stages').get(stage_id)['type'] != 1:
            return {'success': 0, 'message': 4}
        stage_objs = {}
        for stage_id_a, stage in stages.items():
            stage_objs[stage_id_a] = Stage.loads(stage)

        stage_obj = get_stage(stage_objs, stage_id)
        stage_obj.state = -1
        first_stage_id = game_configs.stage_config.get('first_stage_id')
        stage_id_a = stage_id

        while True:
            if next_stages.get(stage_id):
                for stage in [get_stage(stage_objs, stage_id_1) for stage_id_1 in next_stages.get(stage_id_a)]:
                    stage.state = -2
                for stage_id_1 in next_stages.get(stage_id_a):
                    if game_configs.stage_config.get('stages').get(stage_id_1)['type'] == 1:
                        stage_id_a = stage_id_1
                        break
                else:
                    break
            else:
                logger.error('modify_user_info,stage,stageid:', stage_id)
                return {'success': 0, 'message': 4}

        while True:
            the_last_stage_id = game_configs.stage_config.get('stages').get(stage_id)['condition']

            stage_obj = get_stage(stage_objs, stage_id)
            stage_obj.state = 1

            if next_stages.get(the_last_stage_id):
                for stage in [get_stage(stage_objs, stage_id_1) for stage_id_1 in next_stages.get(the_last_stage_id)]:
                    if stage_id != stage.stage_id:
                        stage.state = -1

            if stage_id == first_stage_id:
                break
            else:
                stage_id = the_last_stage_id

        stage_obj = get_stage(stage_objs, attr_value)
        stage_obj.state = -1
        if game_configs.stage_config.get('stages').get(attr_value)['section'] == 1:
            chapter_id = game_configs.stage_config.get('stages').get(attr_value)['chapter']
        else:
            chapter_id = game_configs.stage_config.get('stages').get(attr_value)['chapter'] + 1

        data = {'stage_progress': attr_value, 'stage_info': dict([(stage_id, stage.dumps()) for stage_id, stage in stage_objs.iteritems()]), 'plot_chapter': chapter_id}
        character_obj.hmset(data)
        return {'success': 1}
    elif args['attr_name'] == 'nickname':
        nickname = args['attr_value']
        match = re.search(u'[\uD800-\uDBFF][\uDC00-\uDFFF]', nickname)
        if match:
            return {'success': 0, 'message': 2}

        if trie_tree.check.replace_bad_word(nickname) != nickname:
            return {'success': 0, 'message': 2}

        nickname_obj = tb_character_info.getObj('nickname')
        result = nickname_obj.hsetnx(args['attr_value'], args['uid'])
        if result:
            data = {'nickname': args['attr_value']}
            character_obj.hmset(data)
            return {'success': 1}
        else:
            return {'success': 0, 'message': 0}
    else:
        return {'success': 0, 'message': 3}
コード例 #23
0
def get_user_info(args):
    if args['search_type'] == '1':
        character_obj = tb_character_info.getObj(args['search_value'])
        isexist = character_obj.exists()
    elif args['search_type'] == '2':
        nickname_obj = tb_character_info.getObj('nickname')
        isexist = nickname_obj.hexists(args['search_value'])
        pid = nickname_obj.hget(args['search_value'])
        character_obj = tb_character_info.getObj(pid)
    elif args['search_type'] == '3':
        uuid = args['search_value']
        sql_result = util.GetOneRecordInfo('tb_account', dict(uuid=uuid))
        if sql_result is not None:
            pid = sql_result['id']
            character_obj = tb_character_info.getObj(pid)
            isexist = character_obj.exists()
        else:
            return {'success': 0, 'message': 3}
    else:
        return {'success': 0, 'message': 1}

    if not isexist:
        return {'success': 0, 'message': 2}

    character_info = character_obj.hmget([
        'nickname', 'attackPoint', 'heads', 'upgrade_time', 'level', 'id',
        'exp', 'vip_level', 'register_time', 'upgrade_time', 'guild_id',
        'position', 'finances', 'recharge_accumulation', 'gen_balance'
    ])
    finances = character_info['finances']
    if character_info['guild_id'] == 'no':
        position = 0
        guild_name = ''
        guild_id = ''
    else:
        guild_id = character_info['guild_id']
        guild_obj = tb_guild_info.getObj(guild_id)
        if guild_obj.exists():
            guild_info = guild_obj.hmget(['name'])
            position = character_info['position']
            guild_name = guild_info['name']
        else:
            position = 0
            guild_name = ''

    return {
        'success': 1,
        'message': {
            'uid': character_info['id'],
            'nickname': character_info['nickname'],
            'level': character_info['level'],
            'exp': character_info['exp'],
            'vip_level': character_info['vip_level'],
            'register_time': character_info['register_time'],
            'recently_login_time': character_info['upgrade_time'],
            'guild_id': guild_id,
            'guild_name': guild_name,
            'gold': finances[2],
            'gold_all_cost': finances[9],
            'gold_all_recharge': character_info['recharge_accumulation'],
            'gold_all_send': character_info['gen_balance'],
            'position': position
        }
    }
コード例 #24
0
ファイル: gm.py プロジェクト: isphinx/traversing
def get_user_info(args):
    if args['search_type'] == '1':
        character_obj = tb_character_info.getObj(args['search_value'])
        isexist = character_obj.exists()
    elif args['search_type'] == '2':
        nickname_obj = tb_character_info.getObj('nickname')
        isexist = nickname_obj.hexists(args['search_value'])
        pid = nickname_obj.hget(args['search_value'])
        character_obj = tb_character_info.getObj(pid)
    elif args['search_type'] == '3':
        uuid = args['search_value']
        sql_result = util.GetOneRecordInfo('tb_account', dict(uuid=uuid))
        if sql_result is not None:
            pid = sql_result['id']
            character_obj = tb_character_info.getObj(pid)
            isexist = character_obj.exists()
        else:
            return {'success': 0, 'message': 3}
    else:
        return {'success': 0, 'message': 1}

    if not isexist:
        return {'success': 0, 'message': 2}

    finances = character_obj.hget('finances')
    character_info = character_obj.hmget(['nickname', 'attackpoint',
                                          'heads', 'upgrade_time',
                                          'level', 'id', 'exp',
                                          'vip_level', 'register_time',
                                          'upgrade_time', 'guild_id',
                                          'position', 'finances',
                                          'recharge_accumulation',
                                          'gen_balance'])
    finances = character_info['finances']
    if character_info['guild_id'] == 'no':
        position = 0
        guild_name = ''
        guild_id = ''
    else:
        guild_id = character_info['guild_id']
        guild_obj = tb_guild_info.getObj(guild_id)
        if guild_obj.exists():
            guild_info = guild_obj.hmget(['name'])
            position = character_info['position']
            guild_name = guild_info['name']
        else:
            position = 0
            guild_name = ''

    return {'success': 1,
            'message': {'uid': character_info['id'],
                        'nickname': character_info['nickname'],
                        'level': character_info['level'],
                        'exp': character_info['exp'],
                        'vip_level': character_info['vip_level'],
                        'register_time': character_info['register_time'],
                        'recently_login_time': character_info['upgrade_time'],
                        'guild_id': guild_id,
                        'guild_name': guild_name,
                        'gold': finances[2],
                        'gold_all_cost': finances[9],
                        'gold_all_recharge': character_info['recharge_accumulation'],
                        'gold_all_send': character_info['gen_balance'],
                        'position': position}}