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

Последнее сообщение от Misha900005

  1. Misha900005
  2. Misha900005
  3. Misha900005
  4. Misha900005
    Сообщение

    Werfect World Security

    midgardpw.ru а дальше знаете его историю)
    Сообщение от: Misha900005, 4 апр 2013 в разделе: Архив
  5. Misha900005
  6. Misha900005
  7. Misha900005
  8. Misha900005
  9. Misha900005
  10. Misha900005
  11. Misha900005
  12. Misha900005
  13. Misha900005
  14. Misha900005
  15. Misha900005
    Написал получение кланов и персов в кланах через gamedbd, но иногда имена кланов выдает иероглифами из за смещения при чтении байтов и соответственно вся следующая инфа по клану читается как попало. В чем может быть дело? (читайте комменты к коду) $data= cuint(4608)."\x08\x80\x00\x00\x01".strrev(pack("I",$klan_id)); socket_send($sock, $data, 8192, 0); socket_recv($sock, $buf, 8192, 0); socket_set_nonblock($sock); socket_close($sock); $pos15 = unpack( "c*",substr($buf, 15, 1)); $pos14 = unpack( "c*",substr($buf, 14, 1)); $pos15=$pos15[1]; $pos14=$pos14[1]; //!!!!!!!!!!!!!!!!!!!Слуйчайно здесь еще раз написал $pos14=$pos14[1];$pos15=$pos15[1]; и о чудо - те кланы которые выводились с ошибками начали выводится нормально, но те которые выводились нормально стали с ошибками. if($pos14 == 0) { $fnamelen = unpack("c*",substr($buf, 16, 1)); $fnamelen=$fnamelen[1]; $pholder = 16; } else { $fnamelen = $pos15; $pholder = 15; } echo $pos15.'-'.$pos14.'-'.$pholder.'-'; //Закономерности не нашел $fname = iconv("UCS-2LE", "UTF-8", substr($buf, $pholder+1, $fnamelen)); if ($fname!='') { echo $klan_id.'='.$fname; //Если уж имя клана пошло каракулями, то и все остальное не считывается $flvl = ord(substr($buf, $pholder+$fnamelen+1, 1))+1; $fmasterid = hexdec(bin2hex(substr($buf, $pholder+$fnamelen+2, 4))); $fcommentlen = unpack( "c*",substr($buf, $pholder+$fnamelen+6, 1)); $fcommentlen=$fcommentlen[1]; $fcomment = iconv("UCS-2LE", "UTF-8", substr($buf, $pholder+$fnamelen+7, $fcommentlen)); $fcount = unpack( "c",(substr($buf, $pholder+$fnamelen+$fcommentlen+8, 1))); $fcount=$fcount[1]; if ($fcount>0) { unset($klans[$klan_id]); if ((isset($klans))&&(in_array($klan_id,$klans))) { //Обновление клана в базе } else { //Тут добавление клана в базу } $holder = $pholder+$fnamelen+$fcommentlen+9; for($i = 0; $i < $fcount; $i++) { $rid = unpack( "N",substr($buf, $holder, 4)); $rid=$rid[1]; $rlvl = ord(substr($buf, $holder+4, 1)); $rcls = ord(substr($buf, $holder+5, 1)); $rnamelen = unpack( "c*",substr($buf, $holder+10, 1)); $rnamelen=$rnamelen[1]; $rname = iconv("UCS-2LE", "UTF-8", substr($buf, $holder+11, $rnamelen)); $rtitlelen = unpack( "c*",substr($buf, $holder+$rnamelen+11, 1)); $rtitlelen=$rtitlelen[1]; $rtitle = iconv("UCS-2LE", "UTF-8", substr($buf, $holder+$rnamelen+12, $rtitlelen)); $vklad = hexdec(bin2hex(substr($buf, $holder+$rnamelen+$rtitlelen+12, 4))); $holder = $holder+$rnamelen+$rtitlelen+16; //Обновление перса в базе } } }
    Автор темы: Misha900005, 5 фев 2013, ответов - 11, в разделе: PW Решённые вопросы