mirror of
https://gitlab.com/hashborgir/d2tools.git
synced 2025-10-13 16:34:23 -05:00
Latest changes. Refactor. Multi row insertion. Querying working. DB creation of all txt files. Serialized config. TODO, configure multiple mod directory feature
This commit is contained in:
@@ -19,19 +19,30 @@
|
||||
along with D2IM. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
require_once './D2Functions.php';
|
||||
|
||||
if (!empty($_POST)) {
|
||||
|
||||
$modname = str_replace(' ', '', $_POST['modname']);
|
||||
|
||||
// write the d2im.conf file and replace \ with \\
|
||||
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
|
||||
$path = rtrim($_POST['path'], "\\");
|
||||
$path = str_replace("\\", "\\\\", $path);
|
||||
$path = str_replace("\\", "\\\\", $path);
|
||||
$path .= '\\\\data\\\\global\\\\excel\\\\';
|
||||
file_put_contents("../d2im.conf", $path);
|
||||
|
||||
$conf['path'] = $path;
|
||||
$conf['modname'] = $modname;
|
||||
|
||||
file_put_contents("../d2im.conf", serialize($path));
|
||||
} else {
|
||||
|
||||
file_put_contents("../d2im.conf", $_POST['path'] . DIRECTORY_SEPARATOR);
|
||||
$conf['path'] = $_POST['path'].DIRECTORY_SEPARATOR;
|
||||
$conf['modname'] = $modname;
|
||||
|
||||
file_put_contents("../d2im.conf", serialize($conf));
|
||||
}
|
||||
|
||||
header('Location: /wait.php');
|
||||
header("Location: /processFiles.php");
|
||||
}
|
||||
?>
|
||||
<!doctype html>
|
||||
@@ -40,26 +51,36 @@ if (!empty($_POST)) {
|
||||
/* Require the <head> section */
|
||||
require_once "head.php";
|
||||
?>
|
||||
<body style="text-align: center; background: white;">
|
||||
<div class="container container-top">
|
||||
<body style="background: white;">
|
||||
<div class="center container container-top">
|
||||
|
||||
<h1><img src="/img/Diablo2.png" style="float:left">D2 Item Maker, v3. By HashCasper</h1>
|
||||
<a class="btn btn-outline-danger" style="color:red; font-size: 18px;float:right;" href="/">X</a>
|
||||
<hr style="margin: 60px;">
|
||||
<div class="offset-2 col-8">
|
||||
<h2>Select Mod folder</h2>
|
||||
<p style="font-family: lato">Example: D:\Diablo II\MODS\you-mod-name\</p>
|
||||
<p style="font-family: lato">Input path to D2 Mod Directory.</p>
|
||||
|
||||
<div style="margin-top: 20px;" class="ctrl-config">
|
||||
<form enctype="multipart/form-data" style="font-family: Lato; font-size: 14pt;" action="" method="post">
|
||||
<label for="path">Choose PATH</label>
|
||||
<input id="path" style="width: 420px;" required="required" name="path" type="text">
|
||||
<input type="submit" value="Save" name="submit" class="btn-config">
|
||||
|
||||
<form enctype="multipart/form-data" style="font-family: Lato; font-size: 14pt;" action="" method="post">
|
||||
<p>
|
||||
<label for="path">Enter Mod Name</label><br>
|
||||
<input id="path" style="width: 220px;" required="required" name="modname" type="text">
|
||||
</p>
|
||||
<p>
|
||||
<label for="path">Enter PATH </label><span style="font-size:11px;">(D:\Diablo II\MODS\your-mod-name)</span><br>
|
||||
<input id="path" style="width: 420px;" required="required" name="path" type="text">
|
||||
<input type="submit" value="Save" name="submit" class="btn-config">
|
||||
</p>
|
||||
</form>
|
||||
</div>
|
||||
<div id="loading" style="">
|
||||
</div>
|
||||
<div id="loading" class="offset-2 col-8 alert alert-warning">
|
||||
<p style="font-family: Lato;">After saving path, app will convert txt files to SQL database.</p>
|
||||
<p style="font-family: Lato;">This may take a few minutes depending on the size of your txt files. <br>Please be patient. Once done, app will load. <br>Each time you set a new mod path, txt files will be processed.</p>
|
||||
<p style="font-family: Lato;">This may take a few minutes depending on the size of your txt files. <br>Please be patient. Once done, app will load. <br>Each time you set a new mod path, txt files will be processed.
|
||||
<br> Every mod will be saved to ModName.db.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
@@ -22,7 +22,7 @@
|
||||
class D2Database {
|
||||
|
||||
public function __construct() {
|
||||
PDO_Connect("sqlite:" . DB_FILE);
|
||||
PDO_Connect("sqlite:" . DB_FILE);
|
||||
}
|
||||
|
||||
public function createTables($file, $data) {
|
||||
@@ -54,20 +54,23 @@ class D2Database {
|
||||
}
|
||||
}
|
||||
$sql = rtrim($sql, ",");
|
||||
$sql .= ") ";
|
||||
|
||||
$sql .= "VALUES (";
|
||||
|
||||
$sql .= ") ";
|
||||
}
|
||||
|
||||
$sql .= "VALUES ";
|
||||
|
||||
foreach ($data as $d) {
|
||||
$sql .= "(";
|
||||
|
||||
if (!empty($d)) {
|
||||
foreach ($d as $k => $v) {
|
||||
$sql .= '"' . $v . '"' . ",";
|
||||
}
|
||||
}
|
||||
$sql = rtrim($sql, ",");
|
||||
$sql .= ");";
|
||||
|
||||
PDO_Execute($sql);
|
||||
$sql .= "), ";
|
||||
}
|
||||
}
|
||||
|
||||
$sql = rtrim($sql, ", ");
|
||||
PDO_Execute($sql);
|
||||
}
|
||||
}
|
108
src/D2Files.php
108
src/D2Files.php
@@ -21,112 +21,16 @@
|
||||
|
||||
class D2Files {
|
||||
|
||||
public $files = [
|
||||
"Aiparms" => "Aiparms.txt",
|
||||
"Arena" => "Arena.txt",
|
||||
"Armor" => "Armor.txt",
|
||||
"ArmType" => "ArmType.txt",
|
||||
"automagic" => "automagic.txt",
|
||||
"AutoMap" => "AutoMap.txt",
|
||||
"belts" => "belts.txt",
|
||||
"bodylocs" => "bodylocs.txt",
|
||||
"Books" => "Books.txt",
|
||||
"CharStats" => "CharStats.txt",
|
||||
"CharTemplate" => "CharTemplate.txt",
|
||||
"colors" => "colors.txt",
|
||||
"CompCode" => "CompCode.txt",
|
||||
"Composit" => "Composit.txt",
|
||||
"CubeMain" => "CubeMain.txt",
|
||||
"CubeMod" => "CubeMod.txt",
|
||||
"cubetype" => "cubetype.txt",
|
||||
"DifficultyLevels" => "DifficultyLevels.txt",
|
||||
"ElemTypes" => "ElemTypes.txt",
|
||||
"Events" => "Events.txt",
|
||||
"Experience" => "Experience.txt",
|
||||
"gamble" => "gamble.txt",
|
||||
"Gems" => "Gems.txt",
|
||||
"hiredesc" => "hiredesc.txt",
|
||||
"Hireling" => "Hireling.txt",
|
||||
"HitClass" => "HitClass.txt",
|
||||
"Inventory" => "Inventory.txt",
|
||||
"ItemRatio" => "ItemRatio.txt",
|
||||
"ItemStatCost" => "ItemStatCost.txt",
|
||||
"ItemTypes" => "ItemTypes.txt",
|
||||
"Levels" => "Levels.txt",
|
||||
"lowqualityitems" => "lowqualityitems.txt",
|
||||
"LvlMaze" => "LvlMaze.txt",
|
||||
"LvlPrest" => "LvlPrest.txt",
|
||||
"LvlSub" => "LvlSub.txt",
|
||||
"LvlTypes" => "LvlTypes.txt",
|
||||
"LvlWarp" => "LvlWarp.txt",
|
||||
"MagicPrefix" => "MagicPrefix.txt",
|
||||
"MagicSuffix" => "MagicSuffix.txt",
|
||||
"Misc" => "Misc.txt",
|
||||
"MissCalc" => "MissCalc.txt",
|
||||
"Missiles" => "Missiles.txt",
|
||||
"MonAi" => "MonAi.txt",
|
||||
"MonEquip" => "MonEquip.txt",
|
||||
"MonItemPercent" => "MonItemPercent.txt",
|
||||
"MonLvl" => "MonLvl.txt",
|
||||
"MonMode" => "MonMode.txt",
|
||||
"MonName" => "MonName.txt",
|
||||
"MonPlace" => "MonPlace.txt",
|
||||
"MonPreset" => "MonPreset.txt",
|
||||
"MonProp" => "MonProp.txt",
|
||||
"MonSeq" => "MonSeq.txt",
|
||||
"MonSounds" => "MonSounds.txt",
|
||||
"MonStats2" => "MonStats2.txt",
|
||||
"MonStats" => "MonStats.txt",
|
||||
"MonType" => "MonType.txt",
|
||||
"MonUMod" => "MonUMod.txt",
|
||||
"Npc" => "Npc.txt",
|
||||
"Objects" => "Objects.txt",
|
||||
"objgroup" => "objgroup.txt",
|
||||
"ObjMode" => "ObjMode.txt",
|
||||
"ObjType" => "ObjType.txt",
|
||||
"Overlay" => "Overlay.txt",
|
||||
"PetType" => "PetType.txt",
|
||||
"PlayerClass" => "PlayerClass.txt",
|
||||
"PlrMode" => "PlrMode.txt",
|
||||
"PlrType" => "PlrType.txt",
|
||||
"Properties" => "Properties.txt",
|
||||
"qualityitems" => "qualityitems.txt",
|
||||
"RarePrefix" => "RarePrefix.txt",
|
||||
"RareSuffix" => "RareSuffix.txt",
|
||||
"Runes" => "Runes.txt",
|
||||
"SetItems" => "SetItems.txt",
|
||||
"Sets" => "Sets.txt",
|
||||
"Shrines" => "Shrines.txt",
|
||||
"SkillCalc" => "SkillCalc.txt",
|
||||
"SkillDesc" => "SkillDesc.txt",
|
||||
"Skills" => "Skills.txt",
|
||||
"SoundEnviron" => "SoundEnviron.txt",
|
||||
"Sounds" => "Sounds.txt",
|
||||
"States" => "States.txt",
|
||||
"StorePage" => "StorePage.txt",
|
||||
"SuperUniques" => "SuperUniques.txt",
|
||||
"TreasureClassEx" => "TreasureClassEx.txt",
|
||||
"TreasureClass" => "TreasureClass.txt",
|
||||
"UniqueAppellation" => "UniqueAppellation.txt",
|
||||
"UniqueItems" => "UniqueItems.txt",
|
||||
"UniquePrefix" => "UniquePrefix.txt",
|
||||
"UniqueSuffix" => "UniqueSuffix.txt",
|
||||
"UniqueTitle" => "UniqueTitle.txt",
|
||||
"WeaponClass" => "WeaponClass.txt",
|
||||
"Weapons" => "Weapons.txt"
|
||||
];
|
||||
public $files = [];
|
||||
|
||||
|
||||
public function __construct() {
|
||||
|
||||
}
|
||||
$this->files = array_diff(scandir(TXT_PATH), array('..', '.'));
|
||||
|
||||
public function getFiles(){
|
||||
return $this->files;
|
||||
}
|
||||
|
||||
public function getFile($name){
|
||||
|
||||
public function getFile($name) {
|
||||
return $this->files[$name];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -7,6 +7,3 @@ function ddump($var) {
|
||||
die();
|
||||
}
|
||||
|
||||
function filterFunc($arg1, $arg2) {
|
||||
return !($arg1 == $arg2);
|
||||
}
|
13
src/D2SM.php
13
src/D2SM.php
@@ -138,24 +138,25 @@
|
||||
|
||||
<div class="col-2" style="background: #ffc">
|
||||
<div class="custom-control custom-radio custom-control-inline">
|
||||
<input name="addfunc" type="radio" aria-describedby="addfuncHelpBlock" required="required" class="custom-control-input" value="0">
|
||||
<input name="addfunc" id="addfunc_0" type="radio" class="custom-control-input" value="0" aria-describedby="addfuncHelpBlock" checked="checked">
|
||||
<label for="addfunc_0" class="custom-control-label">0</label>
|
||||
</div>
|
||||
<div class="custom-control custom-radio custom-control-inline">
|
||||
<input name="addfunc" type="radio" aria-describedby="addfuncHelpBlock" required="required" class="custom-control-input" value="1">
|
||||
<input name="addfunc" id="addfunc_1" type="radio" class="custom-control-input" value="1" aria-describedby="addfuncHelpBlock">
|
||||
<label for="addfunc_1" class="custom-control-label">1</label>
|
||||
</div>
|
||||
<div class="custom-control custom-radio custom-control-inline">
|
||||
<input name="addfunc" type="radio" aria-describedby="addfuncHelpBlock" required="required" class="custom-control-input" value="2">
|
||||
<input name="addfunc" id="addfunc_2" type="radio" class="custom-control-input" value="2" aria-describedby="addfuncHelpBlock">
|
||||
<label for="addfunc_2" class="custom-control-label">2</label>
|
||||
</div><br> <span class="help"><i class="fa fa-question-circle" aria-hidden="true"></i></span>
|
||||
<span style="font-family: Exocet;">Add Func</span>
|
||||
</div>
|
||||
<br>
|
||||
<span class="help"><i class="fa fa-question-circle" aria-hidden="true"></i></span>AddFunc
|
||||
<span class="form-text">add func: a property mode field that controls how the variable attributes will appear and be functional on a set item. See the appendix for further details about this field's effects.</span>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<div class="col-12">
|
||||
<h3 style="color: blue;">Blue Attributes</h3>
|
||||
<h3 style="color: #8888FF;">Blue Attributes</h3>
|
||||
</div>
|
||||
<?php
|
||||
$html = '';
|
||||
|
@@ -235,6 +235,7 @@
|
||||
|
||||
</div>
|
||||
<?php require_once 'optionSubmit.php'; ?>
|
||||
<input type="hidden" name="item" value="">
|
||||
</form>
|
||||
|
||||
<ul>
|
||||
|
@@ -27,7 +27,6 @@ along with D2UM. If not, see <http://www.gnu.org/licenses/>.
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css" integrity="sha384-B0vP5xmATw1+K9KRQjQERJvTumQW0nPEzvF6L/Z6nronJ3oUOFUFpCjEUQouq2+l" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||
<link rel="stylesheet" href="https://bootswatch.com/4/lux/bootstrap.min.css">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Lato:wght@300&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="/res/style.css">
|
||||
|
Reference in New Issue
Block a user