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:
color.diff=auto
2021-03-26 08:37:56 -06:00
parent 4d4afd5be4
commit b28a59c313
15 changed files with 130 additions and 249 deletions

View File

@@ -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>

View File

@@ -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);
}
}

View File

@@ -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];
}
}
}

View File

@@ -7,6 +7,3 @@ function ddump($var) {
die();
}
function filterFunc($arg1, $arg2) {
return !($arg1 == $arg2);
}

View File

@@ -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 = '';

View File

@@ -235,6 +235,7 @@
</div>
<?php require_once 'optionSubmit.php'; ?>
<input type="hidden" name="item" value="">
</form>
<ul>

View File

@@ -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">