$v){ $itemOffsets[$v] = $i_Offsets[$k+1] - $i_Offsets[$k]; } array_pop($itemOffsets); //$items = null; // //$offset = $i_offset + 4; // JM00 // //$first_item_offset = strposX($data, "JM", 2); //$second_item_offset = strposX($data, "JM", 3); // //$item_size = $second_item_offset - $first_item_offset; // //for ($i = 2; $i <= $i_total; $i++) { // fseek($fp, strposX($data, 'JM', $i)); // $_items[] = unpack('C*', fread($fp, 21)); //} // //foreach ($_items as $_item) { // $item = null; // foreach ($_item as $i_bytes) { // $item .= strrev(str_pad(decbin($i_bytes), 8, 0, STR_PAD_LEFT)); // } // $items[] = $item; //} // ddump($items); foreach ($items as $_item) { // dump($_item[19]); // dump($_item); // dump(strtoupper(implode(" ", str_split($_item, 8)))); // dump((($_item[36]))); $b = new D2BitReader($_item); $b->seek(58); $parent = bindec(strrev($b->read(3))); if ($parent == 0) { $b->seek(73); $_stored = bindec(strrev($b->read(3))); switch ($_stored) { case 0: $stored = ''; // item is not stored, check bit 58 break; case 1: $stored = 'Inventory'; break; case 4: $stored = 'Horadric Cube'; break; case 5: $stored = 'Stash'; break; } dump($stored); } $b->seek(76); $codeBits = str_split($b->read(32), 8); $itemCode = ''; foreach ($codeBits as $byte) { $itemCode .= chr(bindec(strrev($byte))); } $itemCode = trim($itemCode); dump($namestr[$itemCode]); dump($strings[$namestr[$itemCode]]); }