From 5907c8c8d389e639a534808340559133d02a3421 Mon Sep 17 00:00:00 2001 From: Hash Borgir Date: Mon, 20 Jun 2022 21:21:02 -0600 Subject: [PATCH] Added D2Strings class to get strings where needed from strings table --- index.php | 267 ++++++++++++++++++++++------------------------ src/D2Char.php | 13 ++- src/D2Strings.php | 11 ++ 3 files changed, 149 insertions(+), 142 deletions(-) create mode 100644 src/D2Strings.php diff --git a/index.php b/index.php index c1d480c..ab6b292 100755 --- a/index.php +++ b/index.php @@ -1,6 +1,5 @@ getSaveFiles(); - - - foreach($charFiles as $charFile){ + + $D2Files = new D2Files(); + $charFiles = $D2Files->getSaveFiles(); + + foreach ($charFiles as $charFile) { $charData[] = new D2Char($charFile); // $charData goes into chars.php tab - } - + } + // dump($charData[0]->charData); // dump($charData[1]->charData); // die(); - - $idesc = new D2ItemDesc(); - $db = new D2Database(); - $parser = new D2TxtParser(); + + $idesc = new D2ItemDesc(); + $db = new D2Database(); + $parser = new D2TxtParser(); // $a = ["bighead1","fallen1","corruptrogue1","goatman1","fallenshaman1","fetish1","cr_archer1","cr_lancer1","vulture1","bloodraven","andariel","smith","vulture1","blunderbore1","duriel","fetishshaman1","councilmember1","mephisto","megademon1","regurgitator1","diablo","hephasto","vilemother1","vilechild1","overseer1","imp1","succubus1","succubuswitch1","putriddefiler1","painworm1","minion1","baalcrab"]; // @@ -120,10 +110,10 @@ if (!isset($_SESSION['modname']) || (!file_exists(APP_DB)) || (!file_exists($_SE - $armor = PDO_FetchAll('SELECT * FROM armor WHERE spawnable=1'); - $misc = PDO_FetchAll('SELECT * FROM misc WHERE spawnable=1 - AND type <> "stst" - AND type <> "sum0" + $armor = PDO_FetchAll('SELECT * FROM armor WHERE spawnable=1'); + $misc = PDO_FetchAll('SELECT * FROM misc WHERE spawnable=1 + AND type <> "stst" + AND type <> "sum0" AND type <> "prtl" AND type <> "xfor" AND type <> "rext" @@ -132,116 +122,113 @@ if (!isset($_SESSION['modname']) || (!file_exists(APP_DB)) || (!file_exists($_SE AND type <> "key" AND type <> "body" '); - $weapon = PDO_FetchAll('SELECT * FROM weapons WHERE spawnable=1'); - $uniqueitems = PDO_FetchAll("SELECT `index`,`code` FROM uniqueitems WHERE `enabled`='1' ORDER BY `index` ASC"); + $weapon = PDO_FetchAll('SELECT * FROM weapons WHERE spawnable=1'); + $uniqueitems = PDO_FetchAll("SELECT `index`,`code` FROM uniqueitems WHERE `enabled`='1' ORDER BY `index` ASC"); - $prop = $parser->filterProps('Properties.txt'); + $prop = $parser->filterProps('Properties.txt'); - // If there's data, process it and save - if (!empty($_POST)) { - // save db name from post into conf file... why? + // If there's data, process it and save + if (!empty($_POST)) { + // save db name from post into conf file... why? - require_once './src/D2Char.php'; - $saver = new D2Char(); + require_once './src/D2Char.php'; + $saver = new D2Char(); - // process post - // combine armor/weapon codes - foreach ($_POST as $k => $v) { - $x = str_replace("_", " ", $k); - $post[$x] = $v; - } + // process post + // combine armor/weapon codes + foreach ($_POST as $k => $v) { + $x = str_replace("_", " ", $k); + $post[$x] = $v; + } - if (!empty($post['code'])) { - array_filter($post['code']); + if (!empty($post['code'])) { + array_filter($post['code']); - if (!empty($post['code'][0])) { - $post['code'] = $post['code'][0]; - } else { - $post['code'] = $post['code'][1]; - } - } + if (!empty($post['code'][0])) { + $post['code'] = $post['code'][0]; + } else { + $post['code'] = $post['code'][1]; + } + } - // last 3 items are not in d2 txt, rid of them - // why did I set formtype? I can't rememer, need to comment code more + // last 3 items are not in d2 txt, rid of them + // why did I set formtype? I can't rememer, need to comment code more - /* + /* - * - * - * Unique Items Form was posted here - * - */ + * + * + * Unique Items Form was posted here + * + */ - if ($_POST['formtype'] == "uniqueitems") { + if ($_POST['formtype'] == "uniqueitems") { - unset($post['formtype']); - unset($post['submit']); - unset($post['item']); + unset($post['formtype']); + unset($post['submit']); + unset($post['item']); - // if ladder or carry1 is 0, set empty field. - if (!$post['ladder']) { - $post['ladder'] = ''; - } - if (!$post['carry1']) { - $post['carry1'] = ''; - } + // if ladder or carry1 is 0, set empty field. + if (!$post['ladder']) { + $post['ladder'] = ''; + } + if (!$post['carry1']) { + $post['carry1'] = ''; + } - - ddump($post); - - $sql = "SELECT rowid,`index` from `uniqueitems` WHERE `index`=\"{$post['index']}\""; - - $res = PDO_FetchRow($sql); - - if ($res['index'] == $post['index']) { - $sql = "UPDATE `uniqueitems` SET "; - foreach ($post as $k => $v) { - $sql .= "`$k`=\"$v\","; - } - $sql = rtrim($sql, ","); - $sql .= ' WHERE `index`="'.$post['index'].'"'; - - - - PDO_Execute($sql, [$post['index']]); - //ddump($x); - } - /* - * - * - * Set Items Form was posted here - * - */ else { + ddump($post); - $sql = "INSERT INTO `uniqueitems` ("; - foreach ($post as $k => $v) { - $sql .= "`$k`,"; - } - $sql = rtrim($sql, ","); - $sql .= ") VALUES ("; - foreach ($post as $k => $v) { - $sql .= "'$v',"; - } - $sql = rtrim($sql, ","); - $sql .= ")"; - ddump($sql); + $sql = "SELECT rowid,`index` from `uniqueitems` WHERE `index`=\"{$post['index']}\""; - // $saver->save($u, $post); - // $saver->saveTblEnries("UniqueItems.tbl.txt"); - } - } - if ($_POST['formtype'] == "setitems") { - $saver->save($s, $post); - $saver->saveTblEnries("SetItems.tbl.txt"); - } - } + $res = PDO_FetchRow($sql); + + if ($res['index'] == $post['index']) { + $sql = "UPDATE `uniqueitems` SET "; + foreach ($post as $k => $v) { + $sql .= "`$k`=\"$v\","; + } + $sql = rtrim($sql, ","); + $sql .= ' WHERE `index`="' . $post['index'] . '"'; + + PDO_Execute($sql, [$post['index']]); + //ddump($x); + } + /* + * + * + * Set Items Form was posted here + * + */ else { + + $sql = "INSERT INTO `uniqueitems` ("; + foreach ($post as $k => $v) { + $sql .= "`$k`,"; + } + $sql = rtrim($sql, ","); + $sql .= ") VALUES ("; + foreach ($post as $k => $v) { + $sql .= "'$v',"; + } + $sql = rtrim($sql, ","); + $sql .= ")"; + ddump($sql); + + // $saver->save($u, $post); + // $saver->saveTblEnries("UniqueItems.tbl.txt"); + } + } + if ($_POST['formtype'] == "setitems") { + $saver->save($s, $post); + $saver->saveTblEnries("SetItems.tbl.txt"); + } + } - // load app - require_once './src/index.php'; + // load app + require_once './src/index.php'; } ?> \ No newline at end of file diff --git a/src/D2Char.php b/src/D2Char.php index fcb4103..d89025a 100644 --- a/src/D2Char.php +++ b/src/D2Char.php @@ -3,12 +3,14 @@ require_once 'D2CharStructureData.php'; require_once 'D2Files.php'; require_once 'D2BitReader.php'; +require_once 'D2Strings.php'; class D2Char { public $cData; // char data output + public $items; // char item data private $sData; // char file structure data - private $bData; // char binary data from d2s + private $bData; // char binary data from d2s private $filePath; // .d2s file path private $fp; // file pointer @@ -23,10 +25,15 @@ class D2Char { fseek($this->fp, $k); $this->bData[$k] = fread($this->fp, $v); } - + $this->strings = new D2Strings(); return $this->parseChar(); + } + public function parseItems(){ + + } + public function parseChar() { $cData = null; $cData['Identifier'] = bin2hex($this->bData[0]); @@ -69,6 +76,8 @@ class D2Char { $cData['NPCIntroductions'] = $this->bData[714]; $cData['filePath'] = $this->filePath; $this->cData = $cData; + $this->parseItems(); + return $this->cData; } diff --git a/src/D2Strings.php b/src/D2Strings.php new file mode 100644 index 0000000..a9c4b82 --- /dev/null +++ b/src/D2Strings.php @@ -0,0 +1,11 @@ +strings = PDO_FetchAssoc($sql); + return $this->strings; + } +}