diff --git a/TCEX.php b/TCEX.php
new file mode 100644
index 0000000..2febcc8
--- /dev/null
+++ b/TCEX.php
@@ -0,0 +1,214 @@
+getMessage();
+}
+
+$query = "SELECT * FROM treasureclassex WHERE `Treasure Class` != ''";
+$res = array_filter(PDO_FetchAll($query));
+
+$dropChances = [];
+
+foreach ($res as $r) {
+ $total = (int) $r['NoDrop'];
+
+ for ($i = 1; $i <= 10; $i++) {
+ if (!empty($r["Item$i"])) {
+ $total += (int) $r["Prob$i"];
+ $ic = $r["Item$i"];
+ $prob = (int) $r["Prob$i"];
+ $dropChances[$r['Treasure Class']]["nd"] = $r['NoDrop'];
+ $dropChances[$r['Treasure Class']]["nodrop"] = round(((int) $r['NoDrop'] / $total) * 100, 2);
+ $dropChances[$r['Treasure Class']]["items"]["Item$i"]["code"] = $ic;
+ $dropChances[$r['Treasure Class']]["items"]["Item$i"]["prob"] = $prob;
+ $dropChances[$r['Treasure Class']]["items"]["Item$i"]["chance"] = round(($prob / $total) * 100, 2);
+ }
+ }
+}
+header("Content-Type: text/html");
+?>
+
+
+
+ Drop Chances Table
+
+
+
+
+
+ Drop Chances Calculator by HCB (Hash Borgir)
+
+
+
diff --git a/TCEX_Process.php b/TCEX_Process.php
new file mode 100644
index 0000000..186eec7
--- /dev/null
+++ b/TCEX_Process.php
@@ -0,0 +1,77 @@
+escapeString($_POST['treasureClass']);
+$noDrop = $db->escapeString($_POST['noDrop']);
+$prob = [];
+for ($i = 1; $i <= 10; $i++) {
+ $prob[$i] = isset($_POST["prob$i"]) ? $db->escapeString($_POST["prob$i"]) : 0;
+}
+
+// Prepare the SQL UPDATE statement
+$query = "
+ UPDATE treasureclassex
+ SET NoDrop = $noDrop,
+ Prob1 = {$prob[1]}, Prob2 = {$prob[2]}, Prob3 = {$prob[3]}, Prob4 = {$prob[4]},
+ Prob5 = {$prob[5]}, Prob6 = {$prob[6]}, Prob7 = {$prob[7]}, Prob8 = {$prob[8]},
+ Prob9 = {$prob[9]}, Prob10 = {$prob[10]}
+ WHERE `Treasure Class` = '$treasureClass'
+";
+
+// Execute the update statement
+$result = $db->exec($query);
+
+if ($result) {
+ echo "Successfully updated!";
+} else {
+ echo "Failed to update! Error: " . $db->lastErrorMsg();
+}
+
+
+
+// Define the path to the TSV file
+$tsvFilePath = $_SESSION['path'] . "/treasureclassex.txt";
+
+// Open the file for writing
+$fileHandle = fopen($tsvFilePath, 'w');
+
+// Query to select all rows from the treasureclassex table
+$query = "SELECT * FROM treasureclassex";
+
+// Execute the query
+$result = $db->query($query);
+
+// Write the column headers to the file
+$columnNames = $result->numColumns();
+$headers = [];
+for ($i = 0; $i < $columnNames; $i++) {
+ $headers[] = $result->columnName($i);
+}
+fputcsv($fileHandle, $headers, "\t");
+
+// Write the rows to the file
+while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
+ fputcsv($fileHandle, $row, "\t");
+}
+
+// Close the file
+fclose($fileHandle);
+
+echo "Successfully updated and written to TSV file!";
+
+// Close the database connection
+$db->close();
\ No newline at end of file
diff --git a/TblEditorGUI.php b/TblEditorGUI.php
index 8ce4862..e382bb3 100644
--- a/TblEditorGUI.php
+++ b/TblEditorGUI.php
@@ -155,19 +155,19 @@ foreach (glob($tbl . "*.tbl") as $filename) {
// Initialize DataTables on the table
$('.table').DataTable();
- // Resize textareas on page load
- $('textarea').each(resizeTextarea);
-
- // Resize textareas on input
- $('textarea').on('input', resizeTextarea);
-
- // Resize textareas on custom select change
- $('.custom-select').change(function () {
- $('textarea').each(resizeTextarea);
- });
- $('.page-link').click(function () {
- $('textarea').each(resizeTextarea);
- });
+// // Resize textareas on page load
+// $('textarea').each(resizeTextarea);
+//
+// // Resize textareas on input
+// $('textarea').on('input', resizeTextarea);
+//
+// // Resize textareas on custom select change
+// $('.custom-select').change(function () {
+// $('textarea').each(resizeTextarea);
+// });
+// $('.page-link').click(function () {
+// $('textarea').each(resizeTextarea);
+// });
});
});
}
diff --git a/TblEditorGUI_TAB.php b/TblEditorGUI_TAB.php
index 582cad7..3d0c96e 100644
--- a/TblEditorGUI_TAB.php
+++ b/TblEditorGUI_TAB.php
@@ -278,9 +278,9 @@ foreach (glob($tbl . "*.tbl") as $filename) {
this.style.height = 'auto';
this.style.height = (this.scrollHeight) + 'px';
});
- setInterval(function () {
- $('textarea').each(resizeTextarea);
- }, 4000);
+// setInterval(function () {
+// $('textarea').each(resizeTextarea);
+// }, 4000);
});
@@ -297,10 +297,11 @@ foreach (glob($tbl . "*.tbl") as $filename) {
width: 75px !important;
}
textarea {
- overflow: hidden;
- resize: none;
- scrollbar-width: none; /* For Firefox */
- -ms-overflow-style: none; /* For Internet Explorer and Edge */
+ min-height: 240px;
+ overflow: ;
+ resize: vertical;
+/* scrollbar-width: none; For Firefox
+ -ms-overflow-style: none; For Internet Explorer and Edge */
}
#loading-spinner {
}
diff --git a/config.php b/config.php
index 29185e6..1d6e22a 100755
--- a/config.php
+++ b/config.php
@@ -45,7 +45,7 @@ ini_set('max_execution_time', '0');
*/
$title = 'D2 Modder';
$author = " HashCasper";
-$version = 'v6.1 Alpha ';
+$version = 'v7.0 Alpha ';
define('APP_DB', "D2Modder.db");
diff --git a/img/chest.jpg b/img/chest.jpg
new file mode 100644
index 0000000..e4703d8
Binary files /dev/null and b/img/chest.jpg differ
diff --git a/img/chest.png b/img/chest.png
new file mode 100644
index 0000000..6b20a33
Binary files /dev/null and b/img/chest.png differ
diff --git a/src/D2Files.php b/src/D2Files.php
index 9d54f8f..d5d4276 100755
--- a/src/D2Files.php
+++ b/src/D2Files.php
@@ -67,7 +67,7 @@ class D2Files {
"cubemain.txt", // cubemain is processed manually in sqlite cli tool
"misc.txt", // grew too large, process manually in processmanually function
"treasureclass.txt",
- "treasureclassex.txt"
+ //"treasureclassex.txt"
];
$glob = glob($_SESSION['path'] . '*.txt'); // Get a list of all ".txt" files in the specified path.
diff --git a/src/head.php b/src/head.php
index 1c553b1..f034bd7 100755
--- a/src/head.php
+++ b/src/head.php
@@ -71,7 +71,7 @@
-
+
D2Modder
\ No newline at end of file
diff --git a/src/tabs/Doc.php b/src/tabs/Doc.php
index f6e4e26..1717bc6 100644
--- a/src/tabs/Doc.php
+++ b/src/tabs/Doc.php
@@ -31,6 +31,7 @@
+
diff --git a/src/tabs/TC.php b/src/tabs/TC.php
new file mode 100644
index 0000000..da5da64
--- /dev/null
+++ b/src/tabs/TC.php
@@ -0,0 +1,59 @@
+
+
+
+
+
+
TreasureClassEx.txt Drop Rates
+
+
+
\ No newline at end of file
diff --git a/test.php b/test.php
new file mode 100644
index 0000000..6934e33
--- /dev/null
+++ b/test.php
@@ -0,0 +1,150 @@
+getMessage();
+}
+
+$query = "SELECT * FROM treasureclassex WHERE `Treasure Class` != ''";
+$res = array_filter(PDO_FetchAll($query));
+
+$dropChances = [];
+
+foreach ($res as $r) {
+ $total = (int) $r['NoDrop'];
+
+ for ($i = 1; $i <= 10; $i++) {
+ if (!empty($r["Item$i"])) {
+ $total += (int) $r["Prob$i"]; // total will be denominator
+
+ $ic = $r["Item$i"]; // get item code
+ $prob = (int) $r["Prob$i"];
+
+ // now every item divided by denominator = dropchance
+ $dropChances[$r['Treasure Class']]["nd"] =$r['NoDrop'];
+ $dropChances[$r['Treasure Class']]["nodrop"] = round(((int) $r['NoDrop'] / $total) * 100, 2);
+ $dropChances[$r['Treasure Class']]["items"]["Item$i"]["code"] = $ic;
+ $dropChances[$r['Treasure Class']]["items"]["Item$i"]["prob"] = $prob;
+ $dropChances[$r['Treasure Class']]["items"]["Item$i"]["chance"] = round(($prob / $total) * 100, 2);
+ }
+ }
+}
+
+?>
+
+
+
+
+
+ Drop Chances Table
+
+
+
+ Drop Chances Table
+
+
+
+ Treasure Class |
+ NoDrop % |
+ Item1 |
+ Item2 |
+ Item3 |
+ Item4 |
+ Item5 |
+ Item6 |
+ Item7 |
+ Item8 |
+ Item9 |
+ Item10 |
+
+
+
+
+ foreach ($dropChances as $treasureClass => $row) {
+ $nodrop = $row['nodrop']; // no drop chance
+ echo "";
+ echo "$treasureClass | ";
+ echo "NoDrop : {$row["nd"]} Chance: $nodrop | ";
+ foreach ($row['items'] as $item => $values) {
+
+ echo "
+
+
+
+ code |
+ prob |
+ chance |
+
+
+
+ {$values["code"]} |
+ {$values["prob"]} |
+ {$values["chance"]}% |
+
+
+ | ";
+ }
+ echo "
";
+ }
+ ?>
+
+
+
+