mirror of
https://gitlab.com/hashborgir/d2tools.git
synced 2024-11-30 12:36:03 +00:00
Bugfixing. Adding sanity checks
This commit is contained in:
parent
b85fbf02b3
commit
9bc941faea
13
includes.php
13
includes.php
@ -1,13 +0,0 @@
|
||||
<?php
|
||||
session_start();
|
||||
|
||||
include "./_pdo.php";
|
||||
|
||||
define('FILTER_PROPERTIES_FILE', 'filterProperties.txt');
|
||||
define('DB_FILE', $_SESSION['modname'].".db");
|
||||
define('TXT_PATH', $_SESSION['path']);
|
||||
|
||||
require_once "./src/D2Functions.php";
|
||||
require_once "./src/D2Database.php";
|
||||
require_once './src/D2Files.php';
|
||||
require_once './src/D2TxtParser.php';
|
33
index.php
33
index.php
@ -1,17 +1,17 @@
|
||||
<?php
|
||||
|
||||
session_start();
|
||||
/*
|
||||
D2UniqueMaker
|
||||
D2IM
|
||||
GPLv2 (C) <2021> <HashCasper>
|
||||
|
||||
This file is part of D2UM.
|
||||
This file is part of D2IM.
|
||||
|
||||
D2UM is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
D2UM is distributed in the hope that it will be useful,
|
||||
D2IM is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
@ -24,15 +24,23 @@ ini_set('display_errors', 1);
|
||||
error_reporting(1);
|
||||
ini_set('log_errors', 1);
|
||||
|
||||
include "includes.php";
|
||||
include "./_pdo.php";
|
||||
|
||||
if (file_exists("d2im.db") && (file_exists($_SESSION['modname'].".db"))){
|
||||
|
||||
if (is_dir($_SESSION['path'])) {
|
||||
define('TXT_PATH', $_SESSION['path']);
|
||||
if (!isset($_SESSION['modname'])
|
||||
|| (!file_exists("d2im.db"))
|
||||
|| (!file_exists($_SESSION['modname'] . ".db")))
|
||||
{
|
||||
// first load, no active mod, go to switchmods to select mod
|
||||
header("Location: /switchMods.php");
|
||||
} else {
|
||||
header('Location: /src/D2Config.php');
|
||||
}
|
||||
define('FILTER_PROPERTIES_FILE', 'filterProperties.txt');
|
||||
define('DB_FILE', $_SESSION['modname'] . ".db");
|
||||
define('TXT_PATH', $_SESSION['path']);
|
||||
|
||||
require_once "./src/D2Functions.php";
|
||||
require_once "./src/D2Database.php";
|
||||
require_once './src/D2Files.php';
|
||||
require_once './src/D2TxtParser.php';
|
||||
|
||||
$db = new D2Database();
|
||||
$parser = new D2TxtParser();
|
||||
@ -40,7 +48,6 @@ if (file_exists("d2im.db") && (file_exists($_SESSION['modname'].".db"))){
|
||||
$armor = PDO_FetchAll('SELECT * FROM armor WHERE `spawnable`=1');
|
||||
$weapon = PDO_FetchAll('SELECT * FROM weapons WHERE `spawnable`=1');
|
||||
|
||||
|
||||
$prop = $parser->filterProps('Properties.txt');
|
||||
|
||||
// If there's data, process it and save
|
||||
@ -87,7 +94,5 @@ if (file_exists("d2im.db") && (file_exists($_SESSION['modname'].".db"))){
|
||||
|
||||
// load app
|
||||
require_once './src/index.php';
|
||||
} else {
|
||||
header('Location: ./src/D2Config.php');
|
||||
}
|
||||
?>
|
@ -1,26 +1,49 @@
|
||||
<?php
|
||||
include "includes.php";
|
||||
// Second step after D2Config. If we made it here, d2im.db should
|
||||
// have been created. Config writes active mod to session.
|
||||
|
||||
session_start();
|
||||
|
||||
include "./_pdo.php";
|
||||
|
||||
// check to see if config db exists or if for some reason it doesn't exist
|
||||
if (file_exists("d2im.db")) {
|
||||
if (file_exists($_SESSION['modname'] . ".db")) {
|
||||
unlink($_SESSION['modname'] . ".db"); // delete old mod db file
|
||||
}
|
||||
// Set CONSTANTS (if d2im.db exists, D2Config set the session mod correctly)
|
||||
define('FILTER_PROPERTIES_FILE', 'filterProperties.txt');
|
||||
define('DB_FILE', $_SESSION['modname'] . ".db");
|
||||
define('TXT_PATH', $_SESSION['path']);
|
||||
|
||||
if(file_exists(DB_FILE)) unlink(DB_FILE);
|
||||
// require D2IM src
|
||||
require_once "./src/D2Functions.php";
|
||||
require_once "./src/D2Database.php";
|
||||
require_once './src/D2Files.php';
|
||||
require_once './src/D2TxtParser.php';
|
||||
|
||||
// Create D2IM objects
|
||||
$files = new D2Files();
|
||||
$parser = new D2TxtParser();
|
||||
$db = new D2Database();
|
||||
|
||||
// Parse all files
|
||||
foreach ($files->files as $k => $v) {
|
||||
$data[$v] = $parser->parseFile($v);
|
||||
}
|
||||
// Write all parse data to mod db
|
||||
foreach ($data as $k => $v) {
|
||||
$db->createTables($k, $v);
|
||||
$db->fillsTables($k, $v);
|
||||
}
|
||||
}
|
||||
die();
|
||||
|
||||
// put in html redirect as backup, because
|
||||
// for some odd reason windows gives
|
||||
// an error on header() but linux does not.
|
||||
} else {
|
||||
// if config db does not exist, go to configure page
|
||||
header("Location: /src/D2Config.php");
|
||||
}
|
||||
?>
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
|
12
res/app.js
12
res/app.js
@ -13,6 +13,9 @@ $(document).ready(function () {
|
||||
}
|
||||
});
|
||||
|
||||
$(function () {
|
||||
$('[data-toggle="tooltip"]').tooltip()
|
||||
})
|
||||
|
||||
$('.w-select').change(function () {
|
||||
$('.a-select').each(function (i, v) {
|
||||
@ -44,15 +47,20 @@ $(document).ready(function () {
|
||||
|
||||
});
|
||||
|
||||
$('.help').hover(function () {
|
||||
$('.help').click(function () {
|
||||
$(".fa-help").remove();
|
||||
$(this).next().fadeToggle("slow").css({
|
||||
$(this).next().fadeToggle("slow").focus().css({
|
||||
"position": "absolute",
|
||||
"z-index": "1000",
|
||||
"background": "#eee",
|
||||
"color": "black !important",
|
||||
"border": "1px solid #aaa",
|
||||
"width": "300px",
|
||||
})
|
||||
});
|
||||
|
||||
$('.form-text').click(function () {
|
||||
$(this).fadeOut("slow");
|
||||
});
|
||||
|
||||
});
|
@ -49,6 +49,7 @@ if (!empty($_POST)) {
|
||||
echo '<center><h1 style="font-family:Lato; color:#880000;"><i class="fa fa-exclamation-triangle" aria-hidden="true"></i>
|
||||
ERROR: INVALID PATH</h1></center>';
|
||||
} else {
|
||||
// set this mod to active mod in session
|
||||
$_SESSION['path'] = $path;
|
||||
// Don't yell at me, security is the least of my considerations atm
|
||||
// check modname in db
|
||||
@ -78,6 +79,7 @@ ERROR: INVALID PATH</h1></center>';
|
||||
echo '<center><h1 style="font-family:Lato; color:#880000;"><i class="fa fa-exclamation-triangle" aria-hidden="true"></i>
|
||||
ERROR: INVALID PATH</h1></center>';
|
||||
} else {
|
||||
// set this mod to active mod in session
|
||||
$_SESSION['path'] = $path;
|
||||
// Don't yell at me, security is the least of my considerations atm
|
||||
// check modname in db
|
||||
|
@ -78,9 +78,6 @@ class D2Database {
|
||||
}
|
||||
$sql = rtrim($sql, ", ");
|
||||
|
||||
var_dump($file);
|
||||
var_dump($sql);
|
||||
|
||||
PDO_Execute($sql);
|
||||
}
|
||||
}
|
||||
|
100
src/D2Files.php
100
src/D2Files.php
@ -21,14 +21,102 @@
|
||||
|
||||
class D2Files {
|
||||
|
||||
public $files = [];
|
||||
public $files = [
|
||||
"Arena.txt" => "Arena.txt",
|
||||
"Armor.txt" => "Armor.txt",
|
||||
"ArmType.txt" => "ArmType.txt",
|
||||
"automagic.txt" => "automagic.txt",
|
||||
"AutoMap.txt" => "AutoMap.txt",
|
||||
"belts.txt" => "belts.txt",
|
||||
"bodylocs.txt" => "bodylocs.txt",
|
||||
"Books.txt" => "Books.txt",
|
||||
"CharStats.txt" => "CharStats.txt",
|
||||
"CharTemplate.txt" => "CharTemplate.txt",
|
||||
"colors.txt" => "colors.txt",
|
||||
"CompCode.txt" => "CompCode.txt",
|
||||
"Composit.txt" => "Composit.txt",
|
||||
"CubeMain.txt" => "CubeMain.txt",
|
||||
"CubeMod.txt" => "CubeMod.txt",
|
||||
"cubetype.txt" => "cubetype.txt",
|
||||
"DifficultyLevels.txt" => "DifficultyLevels.txt",
|
||||
"ElemTypes.txt" => "ElemTypes.txt",
|
||||
"Events.txt" => "Events.txt",
|
||||
"Experience.txt" => "Experience.txt",
|
||||
"gamble.txt" => "gamble.txt",
|
||||
"Gems.txt" => "Gems.txt",
|
||||
"hiredesc.txt" => "hiredesc.txt",
|
||||
"Hireling.txt" => "Hireling.txt",
|
||||
"HitClass.txt" => "HitClass.txt",
|
||||
"Inventory.txt" => "Inventory.txt",
|
||||
"ItemRatio.txt" => "ItemRatio.txt",
|
||||
"ItemStatCost.txt" => "ItemStatCost.txt",
|
||||
"ItemTypes.txt" => "ItemTypes.txt",
|
||||
"Levels.txt" => "Levels.txt",
|
||||
"lowqualityitems.txt" => "lowqualityitems.txt",
|
||||
"LvlMaze.txt" => "LvlMaze.txt",
|
||||
"LvlPrest.txt" => "LvlPrest.txt",
|
||||
"LvlSub.txt" => "LvlSub.txt",
|
||||
"LvlTypes.txt" => "LvlTypes.txt",
|
||||
"LvlWarp.txt" => "LvlWarp.txt",
|
||||
"MagicPrefix.txt" => "MagicPrefix.txt",
|
||||
"MagicSuffix.txt" => "MagicSuffix.txt",
|
||||
"Misc.txt" => "Misc.txt",
|
||||
"MissCalc.txt" => "MissCalc.txt",
|
||||
"Missiles.txt" => "Missiles.txt",
|
||||
"MonAi.txt" => "MonAi.txt",
|
||||
"MonEquip.txt" => "MonEquip.txt",
|
||||
"MonItemPercent.txt" => "MonItemPercent.txt",
|
||||
"MonLvl.txt" => "MonLvl.txt",
|
||||
"MonMode.txt" => "MonMode.txt",
|
||||
"MonName.txt" => "MonName.txt",
|
||||
"MonPlace.txt" => "MonPlace.txt",
|
||||
"MonPreset.txt" => "MonPreset.txt",
|
||||
"MonProp.txt" => "MonProp.txt",
|
||||
"MonSeq.txt" => "MonSeq.txt",
|
||||
"MonSounds.txt" => "MonSounds.txt",
|
||||
"MonStats2.txt" => "MonStats2.txt",
|
||||
"MonStats.txt" => "MonStats.txt",
|
||||
"MonType.txt" => "MonType.txt",
|
||||
"MonUMod.txt" => "MonUMod.txt",
|
||||
"Npc.txt" => "Npc.txt",
|
||||
"Objects.txt" => "Objects.txt",
|
||||
"objgroup.txt" => "objgroup.txt",
|
||||
"ObjMode.txt" => "ObjMode.txt",
|
||||
"ObjType.txt" => "ObjType.txt",
|
||||
"Overlay.txt" => "Overlay.txt",
|
||||
"PetType.txt" => "PetType.txt",
|
||||
"PlayerClass.txt" => "PlayerClass.txt",
|
||||
"PlrMode.txt" => "PlrMode.txt",
|
||||
"PlrType.txt" => "PlrType.txt",
|
||||
"Properties.txt" => "Properties.txt",
|
||||
"qualityitems.txt" => "qualityitems.txt",
|
||||
"RarePrefix.txt" => "RarePrefix.txt",
|
||||
"RareSuffix.txt" => "RareSuffix.txt",
|
||||
"Runes.txt" => "Runes.txt",
|
||||
"SetItems.txt" => "SetItems.txt",
|
||||
"Sets.txt" => "Sets.txt",
|
||||
"Shrines.txt" => "Shrines.txt",
|
||||
"SkillCalc.txt" => "SkillCalc.txt",
|
||||
"SkillDesc.txt" => "SkillDesc.txt",
|
||||
"Skills.txt" => "Skills.txt",
|
||||
"SoundEnviron.txt" => "SoundEnviron.txt",
|
||||
"Sounds.txt" => "Sounds.txt",
|
||||
"States.txt" => "States.txt",
|
||||
"StorePage.txt" => "StorePage.txt",
|
||||
"SuperUniques.txt" => "SuperUniques.txt",
|
||||
"TreasureClassEx.txt" => "TreasureClassEx.txt",
|
||||
"TreasureClass.txt" => "TreasureClass.txt",
|
||||
"UniqueAppellation.txt" => "UniqueAppellation.txt",
|
||||
"UniqueItems.txt" => "UniqueItems.txt",
|
||||
"UniquePrefix.txt" => "UniquePrefix.txt",
|
||||
"UniqueSuffix.txt" => "UniqueSuffix.txt",
|
||||
"UniqueTitle.txt" => "UniqueTitle.txt",
|
||||
"WeaponClass.txt" => "WeaponClass.txt",
|
||||
"Weapons.txt" => "Weapons.txt",
|
||||
];
|
||||
|
||||
public function __construct() {
|
||||
$files = glob(TXT_PATH.DIRECTORY_SEPARATOR.'*.txt');
|
||||
|
||||
foreach ($files as $file){
|
||||
$this->files[] = basename($file);
|
||||
}
|
||||
return $this->files;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,6 +1,11 @@
|
||||
<?php
|
||||
include "includes.php";
|
||||
PDO_Connect("sqlite:" . "d2im.db");
|
||||
session_start();
|
||||
include "./_pdo.php";
|
||||
|
||||
// if config db exists, connect to it and grab list of mods
|
||||
if (file_exists("d2im.db")) {
|
||||
PDO_Connect("sqlite:d2im.db");
|
||||
|
||||
$sql = "SELECT * FROM d2im";
|
||||
$mods = PDO_FetchAll($sql);
|
||||
|
||||
@ -8,10 +13,14 @@ if (!empty($_POST)) {
|
||||
$sql = "SELECT * FROM d2im WHERE `modname`='{$_POST['modname']}'";
|
||||
$mod = PDO_FetchRow($sql);
|
||||
|
||||
$_SESSION['modname'] = $mod[modname];
|
||||
$_SESSION['modname'] = $mod['modname'];
|
||||
$_SESSION['path'] = $mod['path'];
|
||||
header("Location: /");
|
||||
}
|
||||
} else {
|
||||
// if config db does not exist, go to config page
|
||||
header("Location: /src/D2Config.php");
|
||||
}
|
||||
?>
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
|
Loading…
Reference in New Issue
Block a user