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

搜索结果

  1. Misha900005
  2. Misha900005
  3. Misha900005
  4. Misha900005
  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, 2013-02-05, 11 个回复, 所属版块: PW Решённые вопросы
  16. 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, 2013-02-05 所属版块: PW Web
  17. Misha900005
  18. Misha900005
  19. Misha900005
  20. Misha900005