mirror of
https://gitlab.com/hashborgir/d2tools.git
synced 2025-10-13 08:24:24 -05:00
more d2s parsing, refactor
This commit is contained in:
@@ -18,23 +18,19 @@ require_once './src/D2BitReader.php';
|
||||
define('DB_FILE', $_SESSION['modname'] . ".db");
|
||||
PDO_Connect("sqlite:" . DB_FILE);
|
||||
|
||||
|
||||
$sql = "SELECT * FROM strings";
|
||||
$strings = PDO_FetchAssoc($sql);
|
||||
|
||||
|
||||
$sql = "SELECT code,namestr
|
||||
FROM armor
|
||||
$sql = "SELECT code,namestr
|
||||
FROM armor
|
||||
UNION SELECT code,namestr
|
||||
FROM misc
|
||||
UNION SELECT code,namestr
|
||||
FROM weapons
|
||||
FROM weapons
|
||||
";
|
||||
$namestr = PDO_FetchAssoc($sql);
|
||||
|
||||
$namestr = PDO_FetchAssoc($sql);
|
||||
|
||||
//ddump($namestr);
|
||||
|
||||
//$filePath = "D:\Diablo II\MODS\ironman-dev\save\Aldur.d2s";
|
||||
$filePath = "D:\Diablo II\MODS\ironman-dev\save\Sorc.d2s";
|
||||
//$filePath = "D:\Diablo II\MODS\MedianXL2012\save\Lok.d2s";
|
||||
@@ -43,6 +39,8 @@ $filePath = "D:\Diablo II\MODS\ironman-dev\save\Sorc.d2s";
|
||||
$fp = fopen($filePath, 'r+b');
|
||||
$data = file_get_contents($filePath);
|
||||
|
||||
|
||||
|
||||
$i_offset = strpos($data, "JM");
|
||||
|
||||
fseek($fp, $i_offset + 2);
|
||||
@@ -82,28 +80,36 @@ foreach ($items as $_item) {
|
||||
|
||||
$b = new D2BitReader($_item);
|
||||
|
||||
//$b->bseek(27);
|
||||
//dump($b->bread(1));
|
||||
|
||||
|
||||
$b->seek(76);
|
||||
// dump($b->bread(32));
|
||||
$codeBits = str_split($b->read(32), 8);
|
||||
|
||||
$itemCode = '';
|
||||
foreach ($codeBits as $byte) {
|
||||
|
||||
// dump(strrev($byte));
|
||||
//dump(sprintf('%c', bindec($byte)));
|
||||
|
||||
$itemCode .= chr(bindec(strrev($byte)));
|
||||
$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]]);
|
||||
|
||||
// dump($strings[trim($itemCode)]);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user