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

1.5.1 (101) скрипт для кланов

Тема в разделе 'PW Вопросник', создана пользователем alexp, 12 фев 2015.

Статус темы:
Закрыта.
  1. wsok Программист Пользователи

    Сообщения:
    606
    Лайки:
    173
    Пол:
    Мужской
    Репутация:
    3
    понял, теперь вроде получилось:

    [​IMG]

    1 строчка пакет запроса, 2 строчка ответ на запрос.
  2. TopicStarter Overlay

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

    Сообщения:
    122
    Лайки:
    12
    Пол:
    Мужской
    Репутация:
    0
    Страна:
    Belarus Belarus
    а почему table = 'rolename' ?
  3. vieraw Пользователи

    Сообщения:
    54
    Лайки:
    27
    Репутация:
    0
    Потому что это пример, которым я получаю id и name персонажей на сервере.
  4. TopicStarter Overlay

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

    Сообщения:
    122
    Лайки:
    12
    Пол:
    Мужской
    Репутация:
    0
    Страна:
    Belarus Belarus
    я прикалываюсь :)
    Меня больше смущает $res['handle'] . Что это и откуда?
    А так же что можно передавать в качестве key .
  5. wsok Программист Пользователи

    Сообщения:
    606
    Лайки:
    173
    Пол:
    Мужской
    Репутация:
    3
    что то я туплю где то... пытаюсь получить список кланов...

    [​IMG]

    как видите 2 строчки (ответа) нету...
    [​IMG]
    --- добавлено: 13 фев 2015 в 13:42 ---
    Код:
    \xff\xff\x80\x08
    интересует, что тут за аргумент передается? видимо из за него список кланов получить не могу
    --- добавлено: 13 фев 2015 в 13:51 ---
    спасибо ТСу, помог немного с формированием пакета, теперь осталось нацарапать парсинг вывода информации...
    --- добавлено: 13 фев 2015 в 13:56 ---
    странно вот что, неважно из какой таблицы тяну данные (персов или кланов), ответ всегда одинаковый, т.е. хекс получаю один и тот же... разве так и должно быть?
    --- добавлено: 13 фев 2015 в 13:59 ---
    однако в 010 показывает то что и ожидаю, список кланов ))
    Последнее редактирование модератором: 21 фев 2015
  6. wsok Программист Пользователи

    Сообщения:
    606
    Лайки:
    173
    Пол:
    Мужской
    Репутация:
    3
    В общем намучился с парсингом, но так и не получилось привести данные в читаемый вид. Только первый элемент из списка читаем получился, остальные нет... что то я не могу видимо понять. Привожу код, может у кого появятся мысли и озвучит решение проблемы.

    PHP:
    <?
    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));
    }

    $bdname 'factioninfo';
    $bdlen pack("n*"strlen($bdname)+32768);
    $data pack('N', -1) . $bdlen $bdname "\x00\x00\x00\x00";

        
    $Socket socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
        
    $Data cuint(3055).cuint(strlen($data)).$data;

            if(
    socket_connect($Socket,"127.0.0.1","29400"))
        {
            
    socket_set_block($Socket);

            
    $send socket_send($Socket,$Data,8192,0);
            
    $recv socket_recv($Socket,$buf,8192,0);
            
    socket_set_nonblock($Socket);
            
    socket_close($Socket);
        }

      
        
    $var bin2hex($Data)."<br>-<br>";
        
    $var2 bin2hex($buf)."<br>-<br>";
        echo 
    $var.$var2."<hr>";

                    
    $clancount unpack"c"substr$buf13) );
                
    $start 13+7;
                            for(
    $c=0$i<$clancount[1]; $i++)
                {
                    
    $clanid unpack"N*"substr$buf$start) );
                    
    $start $start+4;

                    
    $namelarge unpack"c*"substr$buf$start) );
                    
    $start $start+1;
      
                    
    $clanname iconv"UTF-16""UTF-8"substr$buf$start$namelarge[1] ) );
                    
    $start $start+$namelarge[1];

                    
    $clan_list .="<font color='red'>[ {$clanid[1]} ]  {$clanname}</font><hr>";
                      
                }
              
    echo 
    $clan_list;
    ?>
  7. vieraw Пользователи

    Сообщения:
    54
    Лайки:
    27
    Репутация:
    0
    Какие мифические цифры.
    Данный пакет представляет из себя:
    opcode - cuint
    длина - cuint
    max - int
    retcode - int
    handle - octets
    информация о кланах - vector

    Ладно 13 понятно откуда взялись, а вот 7?
    А это что?
    Последнее редактирование: 13 фев 2015
  8. wsok Программист Пользователи

    Сообщения:
    606
    Лайки:
    173
    Пол:
    Мужской
    Репутация:
    3
    хз, для меня разбор хекса темный лес, методом тыка действую... понять бы формулу разбора...
    --- добавлено: 13 фев 2015 в 22:04 ---
    это ТС свой пример формирования пакета давал )
    Последнее редактирование модератором: 21 фев 2015
  9. alexdnepro Эксперт AngeliCore Пользователи Open Source Contributor White List

    Сообщения:
    754
    Лайки:
    1.313
    Пол:
    Мужской
    Репутация:
    6
    Советую для начала сделать класс для удобной работы с бинарными данными, сделать там методы ReadByte, ReadCUInt, ReadInt ... WriteByte, WriteCUInt, WriteInt и остальные типы.
    Также у пакета DBRawRead есть 2 операции - Read (чтение отдельной записи по ключу) и Walk (чтение группы записей начиная от Hanlde, именно эта операция нужна для получения всех записей таблицы).
    И составлять запросы будет потом куда проще и читабельней
    [​IMG]
    gam1ng и Joslian нравится это.
  10. TopicStarter Overlay

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

    Сообщения:
    122
    Лайки:
    12
    Пол:
    Мужской
    Репутация:
    0
    Страна:
    Belarus Belarus
    а я разобрал :)
    давал на основе вашего, нули там не нужны, но они не вредят. А вот длина имени базы формируется с лишним байтом :) хотя тоже не критично...
  11. wsok Программист Пользователи

    Сообщения:
    606
    Лайки:
    173
    Пол:
    Мужской
    Репутация:
    3
    И вектор тоже? Я вот тоже почти разобрал, но парсинг вектора пока с толку сбивает, собственно на нем парсинг и валится...
  12. TopicStarter Overlay

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

    Сообщения:
    122
    Лайки:
    12
    Пол:
    Мужской
    Репутация:
    0
    Страна:
    Belarus Belarus
    RecNo / RecLen / IDFaction / NameLen / Name / Level / ID Master / MasterRole / PeopleCount / n=1...PeopleCount [IDRole / Role] / MsgLen / Msg
  13. wsok Программист Пользователи

    Сообщения:
    606
    Лайки:
    173
    Пол:
    Мужской
    Репутация:
    3
    все равно не могу въехать ))) короче я байты вектора добавил в расчет их длины и пропустил
Черновик сохранён Черновик удалён
Similar Threads
  1. chetoss
    Ответов:
    40
    Просмотров:
    13.445
  2. Misha900005
    Ответов:
    11
    Просмотров:
    2.796
  3. akademik
    Ответов:
    5
    Просмотров:
    1.075
  4. Besaba
    Ответов:
    4
    Просмотров:
    1.538
  5. Roymike
    Ответов:
    32
    Просмотров:
    4.838
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей