1. 游客, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

1.5.1 (101) ник перса по wid

本贴由 alexp2015-02-20 发布. 版块名称: PW Вопросник

主题状态:
主题已关闭, 停止回复.
  1. TopicStarter Overlay

    alexp Программист Пользователи

    注册日期:
    2015-01-22
    帖子:
    122
    支持:
    12
    性别:
    Репутация:
    0
    Страна:
    Belarus Belarus
    Есть ли пакет, позволяющий быстренько вытащить ник перса по его ид ? Про GetRoleData знаю, но там много лишнего. А хотелось бы минимум инфы.
  2. alexdnepro Эксперт AngeliCore Пользователи Open Source Contributor White List

    注册日期:
    2010-04-02
    帖子:
    754
    支持:
    1,313
    性别:
    Репутация:
    6
    GetRoleBase
  3. TopicStarter Overlay

    alexp Программист Пользователи

    注册日期:
    2015-01-22
    帖子:
    122
    支持:
    12
    性别:
    Репутация:
    0
    Страна:
    Belarus Belarus
    opcode = 3013 ?
  4. wsok Программист Пользователи

    注册日期:
    2012-11-07
    帖子:
    606
    支持:
    173
    性别:
    Репутация:
    3
    отвечу чуточку поразвернутее, дабы это поможет больше реализации сабжа.

    代码:
    $rid = $_GET['rid'];
    function cuint($data)
    {
        if($data < 64)
                return strrev(pack("C", $data));
        else if($data < 16384)
                return strrev(pack("S", ($data | 0x8000)));
        else if($data < 536870912)
                return strrev(pack("I", ($data | 0xC0000000)));
        return strrev(pack("c", -32) . pack("I", $data));
    }
    
    $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
        socket_connect($sock, "127.0.0.1", "29400");
                $data = cuint(3013)."\x08\x80\x00\x00\x01".pack("N", $rid);
                   
                $sbytes = socket_send($sock, $data, 8192, 0);
                $rbytes = socket_recv($sock, $buf, 8192, 0);
               
                $str = 13;
               
                $roleid = unpack( "N", substr( $buf, $str, 4 ) );
                if($roleid[1] == 0){
                echo ("Персонажа или аккаунта не существует!");
                }else{
                $str = $str+4;
                $namelarge = unpack( "c*", substr( $buf, $str, 1 ) );
                $str = $str+1;
                $rolename = iconv( "UTF-16", "UTF-8", substr( $buf, $str,            $namelarge[1] ) );
                $str = $str+$namelarge[1];
                $rolerace = unpack( "N", substr( $buf, $str, 4));
                $str = $str+4;
                $rolecls = unpack ("N", substr($buf, $str, 4));
                $str = $str+4;
                $rolegender = unpack("C", substr($buf, $str, 1));
                $str = $str+3;
                $rolecustomdata = bin2hex(substr($buf,$str,172));
                $str = $str+174;
                if($rolerace[1] == 0)
                {
                $roleconfigdata = bin2hex(substr($buf,$str,308));
                $str = $str+308;
                }else{
                $roleconfigdata = bin2hex(substr($buf,$str,322));
                $str = $str+322;
                }
                $customstamp = unpack("N", substr($buf,$str,4));
                $str = $str+4;
                $rolestatus = unpack("C", substr($buf,$str,1));
                $str = $str+1;
                $roledeletetime = unpack("N", substr($buf,$str,4));
                $str = $str+4;
                $rolecreatetime = unpack("N", substr($buf,$str,4));
                $str = $str+4;
                $rolelastlogintime = unpack("N", substr($buf,$str,4));
                $str = $str+6;
                $rolehelpstates = bin2hex(substr($buf,$str,54));
                if($rolehelpstates[1] == 0){
                $str = $str;
                }else{
                $str = $str+54;
                }
                $rolereserved1 = unpack("N", substr($buf,$str,4));
                $str = $str+4;
                $rolereserved2 = unpack("N", substr($buf,$str,4));
                $str = $str+4;
                $rolereserved3 = unpack("N", substr($buf,$str,4));
                $str = $str+4;
               
    echo ("ID - " .$roleid[1]. "</br>");
    echo ("Nick - " .$rolename. "</br>");
    echo ("Race - " .$rolerace[1]. "</br>");
    echo ("Cls - " .$rolecls[1]. "</br>");
    echo ("Gender - " .$rolegender[1]. "</br>");
    echo ("Custom_data - " .$rolecustomdata. "</br>");
    echo ("Config_data - " .$roleconfigdata. "</br>");
    echo ("Custom_stamp - " .$customstamp[1]. "</br>");
    echo ("Status - " .$rolestatus[1]. "</br>");
    echo ("Delete_time - " .$roledeletetime[1]. "</br>");
    echo ("Create_time - " .$rolecreatetime[1]. "</br>");
    echo ("Lastlogin_time - " .$rolelastlogintime[1]. "</br>");
    if($rolehelpstates[1] == 0){
    }else{
    echo ("Help_states - " .$rolehelpstates. "</br>");
    }
    echo ("Reserved1 - " .$rolereserved1[1]. "</br>");
    echo ("Reserved2 - " .$rolereserved2[1]. "</br>");
    echo ("Reserved3 - " .$rolereserved3[1]. "</br>");
    
    }
    socket_close($sock);
  5. JonMagon Программист Пользователи Open Source Contributor

    注册日期:
    2014-08-12
    帖子:
    805
    支持:
    809
    性别:
    Репутация:
    5
    Страна:
    Germany Germany
    Очень криво. Там куинты в длине. Чуть что и скрипт отвалится.
  6. wsok Программист Пользователи

    注册日期:
    2012-11-07
    帖子:
    606
    支持:
    173
    性别:
    Репутация:
    3
    Ну вчера единственное, что я мог, найти подобное решение и показать. Сам знаешь, я на работе был и условий чтоб написать свой скрипт и проверить не было. Это решение я взял отсюда http://mmorpg-devs.ru/threads/php-getrolebase-getroleequipments.15732/
  7. TopicStarter Overlay

    alexp Программист Пользователи

    注册日期:
    2015-01-22
    帖子:
    122
    支持:
    12
    性别:
    Репутация:
    0
    Страна:
    Belarus Belarus
    Реализацию GetRoleBase я знаю :( Но все равно инфы переизбыток. Решил просто "урезкой" буфера приема... На том и остановился :)
Черновик сохранён Черновик удалён
主题状态:
主题已关闭, 停止回复.

分享此页面