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

Результаты поиска

  1. wsok
  2. wsok
  3. wsok
    В общем намучился с парсингом, но так и не получилось привести данные в читаемый вид. Только первый элемент из списка читаем получился, остальные нет... что то я не могу видимо понять. Привожу код, может у кого появятся мысли и озвучит решение проблемы. <? 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( $buf, 13, 1 ) ); $start = 13+7; for($c=0; $i<$clancount[1]; $i++) { $clanid = unpack( "N*", substr( $buf, $start, 4 ) ); $start = $start+4; $namelarge = unpack( "c*", substr( $buf, $start, 1 ) ); $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; ?>
    Сообщение от: wsok, 13 фев 2015 в разделе: PW Вопросник
  4. wsok
  5. wsok
  6. wsok
  7. wsok
  8. wsok
  9. wsok
    сам уже давно задавался вопросом о получении списка кланов, но структуры пакета так и не нашел, в игровом клиенте вообще нет опции, где бы выводился список всех кланов на сервере, иначе бы отловил бы пакет и попробовал бы разобрать его. DBRawRead для версий 1.4.2+, для версий ниже нет таких возможностей. type = struct DBRawReadArg : public Rpc::Data { Octets table; Octets handle; Octets key; } type = struct DBRawReadRes : public Rpc::Data { int retcode; Octets handle; vector<GNET::RawKeyValue, std::allocator<GNET::RawKeyValue> > values; } Например читаем FactionInfo (0x11FE) - values = { key FactionId; value FactionInfo; }; [IMG] спасибо, но вот ещё бы пример правильного построения пакета на вывод списка кланов, я пока смог выстроить пакет. <? 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)); } $Socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP); if(socket_connect($Socket,"127.0.0.1","29400")) { socket_set_block($Socket); $Data = cuint(3055)."\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"; $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>-"; $var2 = bin2hex($buf)."<br>"; echo $var.$var2; ?> Специально сделал с выводом в браузер хекс кода запроса и результата. Итог работы этого скрипта в бразуер виден лишь хекс код запроса, хекс кода результата не получаю... это и понятно, видимо потому что нет аргументов в запросе. Хотелось бы понять как правильно выстроить пакет данных на получение списка кланов. $Data = cuint(3055)."\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff";
    Сообщение от: wsok, 13 фев 2015 в разделе: PW Вопросник
  10. wsok
  11. wsok
    Сообщение

    BL Vio - Руслан

    ну вы блин даёте! [IMG]
    Сообщение от: wsok, 12 фев 2015 в разделе: Сообщество
  12. wsok
    Сообщение

    1.5.1 (101) GCP

    Почитал тему... сразу вспомнил, ну не то что бы анекдот, скорее быль... В общем ситуация, вызывает мужик специалиста по вентиляции и говорит, мол шумит в одном месте, уже делал все что только мог, и менял трубы и их диаметр и т.д., но как шумела в одном месте так и шумит... Специалист выслушал его, невозмущенно сказал, помочь смогу, но стоить это будет 5000 руб... Ну мужик заплатил. Специалист осмотрел вентиляцию и сказал сверли отверстие в трубе, где я скажу. Мужик сделал, как сказал специалист и... шум исчез. Потом мужик говорит, и за эту хрень я тебе 5 косарей отдал? Нет - сказал специалист, ты заплатил за знания, которые приходят лишь с годами и неизвестно, сколько бы ты ещё решал проблему с шумом в вентиляции, если бы не вызвал меня. =) Так вот и тут, неважно сколько кликов и т.д., может вообще причина проблемы, что где то символ пропущен и т.п. и 5 баксов тут не за пару кликов, а за знания, которые сразу не придут тебе. Да и 5 баксов это ещё скромно и глупо ещё недовольство своё показывать. Это ведь твоя проблема, не хочешь платить за её решение, сам ищи это решение, либо жди у моря погоды пока тебе кто то поможет... PS: Историю о вентиляционщике я рассказал на память, так как мне её давно кто то рассказывал из знакомых, когда работал на заводе, мог и немного забыть детали той истории, но суть её понятна. Примерно так многие специалисты и работают, те же автослесари, могут перебрать и пол двигателя, чтоб починить машину, а могут всего лишь закрутить пару нужных болтов и взять как за средний ремонт.
    Сообщение от: wsok, 12 фев 2015 в разделе: PW Вопросник
  13. wsok
  14. wsok
  15. wsok
  16. wsok
  17. wsok
  18. wsok
  19. wsok
  20. wsok