From b0658cd0009d13e39574cbc22b5da0dfd675081e Mon Sep 17 00:00:00 2001 From: gor_down Date: Sun, 2 Mar 2025 08:15:36 -0300 Subject: [PATCH] save evidence --- bin/storage/inventory/Basement.ini | 24 +++++++++ src/aoclient.cpp | 1 + src/aoclient.h | 1 + src/commands/casing.cpp | 50 +++++++++++++++++++ src/server.cpp | 2 +- .../target_wrapper.sh | 6 +++ tests/unittest_akashi_utils/target_wrapper.sh | 6 +++ tests/unittest_aopacket/target_wrapper.sh | 6 +++ tests/unittest_area/target_wrapper.sh | 6 +++ .../target_wrapper.sh | 6 +++ .../unittest_config_manager/target_wrapper.sh | 6 +++ tests/unittest_crypto/target_wrapper.sh | 6 +++ .../unittest_music_manager/target_wrapper.sh | 6 +++ 13 files changed, 125 insertions(+), 1 deletion(-) create mode 100644 bin/storage/inventory/Basement.ini create mode 100755 tests/unittest_acl_roles_handler/target_wrapper.sh create mode 100755 tests/unittest_akashi_utils/target_wrapper.sh create mode 100755 tests/unittest_aopacket/target_wrapper.sh create mode 100755 tests/unittest_area/target_wrapper.sh create mode 100755 tests/unittest_command_extension/target_wrapper.sh create mode 100755 tests/unittest_config_manager/target_wrapper.sh create mode 100755 tests/unittest_crypto/target_wrapper.sh create mode 100755 tests/unittest_music_manager/target_wrapper.sh diff --git a/bin/storage/inventory/Basement.ini b/bin/storage/inventory/Basement.ini new file mode 100644 index 0000000..daa9b69 --- /dev/null +++ b/bin/storage/inventory/Basement.ini @@ -0,0 +1,24 @@ +[0] +description=para q no se anden metiendo en esto +image=knife-aa.png +name=narcoejecucion + +[1] +description=del espacio +image=prosecutorbadge-aai.png +name=el omnitrix + +[2] +description=https://incels.wiki/w/Scientific_Blackpill\nhttps://incels.wiki/w/Scientific_Blackpill_(Supplemental) +image=DDcomputer.png +name=INCEL WIKI + +[3] +description=https://files.catbox.moe/ykrhq3.webp +image=AAautopsy.png +name=Informe medico de la victima + +[4] +description="http://esquizolandia.lyricaltokarev.com/expediente.html" +image=Autopsy.png +name=ESQUIZOLANDIA EXPEDIENTE diff --git a/src/aoclient.cpp b/src/aoclient.cpp index 39f938d..d313fce 100644 --- a/src/aoclient.cpp +++ b/src/aoclient.cpp @@ -111,6 +111,7 @@ const QMap AOClient::COMMANDS{ {"savetestimony", {{ACLRole::NONE}, 1, &AOClient::cmdSaveTestimony}}, {"loadtestimony", {{ACLRole::CM}, 1, &AOClient::cmdLoadTestimony}}, {"permitsaving", {{ACLRole::MODCHAT}, 1, &AOClient::cmdPermitSaving}}, + {"saveevidence", {{ACLRole::MODCHAT}, 0, &AOClient::cmdSaveEvidence}}, {"mutepm", {{ACLRole::NONE}, 0, &AOClient::cmdMutePM}}, {"toggleadverts", {{ACLRole::NONE}, 0, &AOClient::cmdToggleAdverts}}, {"ooc_mute", {{ACLRole::MUTE}, 1, &AOClient::cmdOocMute}}, diff --git a/src/aoclient.h b/src/aoclient.h index 1f5dec0..df79bfb 100644 --- a/src/aoclient.h +++ b/src/aoclient.h @@ -919,6 +919,7 @@ class AOClient : public QObject * * @iscommand */ + void cmdSaveEvidence(int argc, QStringList argv); void cmdArea(int argc, QStringList argv); /** diff --git a/src/commands/casing.cpp b/src/commands/casing.cpp index 5210b23..d78f6fb 100644 --- a/src/commands/casing.cpp +++ b/src/commands/casing.cpp @@ -22,6 +22,12 @@ #include "packet/packet_factory.h" #include "server.h" +#include +#include +#include +#include + + // This file is for commands under the casing category in aoclient.h // Be sure to register the command in the header before adding it here! @@ -38,6 +44,50 @@ void AOClient::cmdDoc(int argc, QStringList argv) } } +void AOClient::cmdSaveEvidence(int argc, QStringList argv) +{ + Q_UNUSED(argc); + Q_UNUSED(argv); + + AreaData *l_area = server->getAreaById(areaId()); + QString l_area_name = l_area->name().toLower().replace("..", ""); // Sanitize the area name + + // Ensure the inventory directory exists + QDir l_dir_inventory("storage/inventory"); + if (!l_dir_inventory.exists()) { + l_dir_inventory.mkpath("."); + } + + QString l_ini_file_name = "storage/inventory/" + l_area_name + ".ini"; + + // Open the INI file for writing + QFile l_file(l_ini_file_name); + if (!l_file.open(QIODevice::WriteOnly | QIODevice::Text)) { + sendServerMessage("Unable to open inventory file for writing."); + return; + } + + QTextStream l_out(&l_file); + + // Access the evidence list from the AreaData + QList evidenceList = l_area->evidence(); // Assuming evidence is a list of Evidence objects + + // Loop through each evidence item and write its data to the INI file + int l_ev_index = 0; + foreach (const AreaData::Evidence &evidence, evidenceList) { + l_out << "[" << l_ev_index++ << "]" << "\n"; + l_out << "name=" << evidence.name << "\n"; + l_out << "description=" << evidence.description << "\n"; + l_out << "image=" << evidence.image << "\n"; // Save the image path or name + l_out << "\n"; // Empty line between each evidence entry + } + + // Close the file after writing + l_file.close(); + + sendServerMessage("All evidence has been saved to " + l_ini_file_name); +} + void AOClient::cmdClearDoc(int argc, QStringList argv) { Q_UNUSED(argc); diff --git a/src/server.cpp b/src/server.cpp index 42e56aa..77069bb 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -143,7 +143,7 @@ void Server::loadInventoryForArea(AreaData* area, const QString& areaName) } // Search for an inventory file corresponding to the area name (e.g., "area_1.ini"). - QString inventoryFileName = areaName + ".ini"; // Assuming file is named as area name + QString inventoryFileName = (areaName + ".ini").toLower().replace("..", ""); // Sanitize the area name, assuming file is named as area name QString filePath = dir.absoluteFilePath(inventoryFileName); if (QFile::exists(filePath)) { diff --git a/tests/unittest_acl_roles_handler/target_wrapper.sh b/tests/unittest_acl_roles_handler/target_wrapper.sh new file mode 100755 index 0000000..3543fff --- /dev/null +++ b/tests/unittest_acl_roles_handler/target_wrapper.sh @@ -0,0 +1,6 @@ +#!/bin/sh +LD_LIBRARY_PATH=/usr/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} +export LD_LIBRARY_PATH +QT_PLUGIN_PATH=/usr/lib/qt/plugins${QT_PLUGIN_PATH:+:$QT_PLUGIN_PATH} +export QT_PLUGIN_PATH +exec "$@" diff --git a/tests/unittest_akashi_utils/target_wrapper.sh b/tests/unittest_akashi_utils/target_wrapper.sh new file mode 100755 index 0000000..3543fff --- /dev/null +++ b/tests/unittest_akashi_utils/target_wrapper.sh @@ -0,0 +1,6 @@ +#!/bin/sh +LD_LIBRARY_PATH=/usr/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} +export LD_LIBRARY_PATH +QT_PLUGIN_PATH=/usr/lib/qt/plugins${QT_PLUGIN_PATH:+:$QT_PLUGIN_PATH} +export QT_PLUGIN_PATH +exec "$@" diff --git a/tests/unittest_aopacket/target_wrapper.sh b/tests/unittest_aopacket/target_wrapper.sh new file mode 100755 index 0000000..3543fff --- /dev/null +++ b/tests/unittest_aopacket/target_wrapper.sh @@ -0,0 +1,6 @@ +#!/bin/sh +LD_LIBRARY_PATH=/usr/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} +export LD_LIBRARY_PATH +QT_PLUGIN_PATH=/usr/lib/qt/plugins${QT_PLUGIN_PATH:+:$QT_PLUGIN_PATH} +export QT_PLUGIN_PATH +exec "$@" diff --git a/tests/unittest_area/target_wrapper.sh b/tests/unittest_area/target_wrapper.sh new file mode 100755 index 0000000..3543fff --- /dev/null +++ b/tests/unittest_area/target_wrapper.sh @@ -0,0 +1,6 @@ +#!/bin/sh +LD_LIBRARY_PATH=/usr/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} +export LD_LIBRARY_PATH +QT_PLUGIN_PATH=/usr/lib/qt/plugins${QT_PLUGIN_PATH:+:$QT_PLUGIN_PATH} +export QT_PLUGIN_PATH +exec "$@" diff --git a/tests/unittest_command_extension/target_wrapper.sh b/tests/unittest_command_extension/target_wrapper.sh new file mode 100755 index 0000000..3543fff --- /dev/null +++ b/tests/unittest_command_extension/target_wrapper.sh @@ -0,0 +1,6 @@ +#!/bin/sh +LD_LIBRARY_PATH=/usr/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} +export LD_LIBRARY_PATH +QT_PLUGIN_PATH=/usr/lib/qt/plugins${QT_PLUGIN_PATH:+:$QT_PLUGIN_PATH} +export QT_PLUGIN_PATH +exec "$@" diff --git a/tests/unittest_config_manager/target_wrapper.sh b/tests/unittest_config_manager/target_wrapper.sh new file mode 100755 index 0000000..3543fff --- /dev/null +++ b/tests/unittest_config_manager/target_wrapper.sh @@ -0,0 +1,6 @@ +#!/bin/sh +LD_LIBRARY_PATH=/usr/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} +export LD_LIBRARY_PATH +QT_PLUGIN_PATH=/usr/lib/qt/plugins${QT_PLUGIN_PATH:+:$QT_PLUGIN_PATH} +export QT_PLUGIN_PATH +exec "$@" diff --git a/tests/unittest_crypto/target_wrapper.sh b/tests/unittest_crypto/target_wrapper.sh new file mode 100755 index 0000000..3543fff --- /dev/null +++ b/tests/unittest_crypto/target_wrapper.sh @@ -0,0 +1,6 @@ +#!/bin/sh +LD_LIBRARY_PATH=/usr/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} +export LD_LIBRARY_PATH +QT_PLUGIN_PATH=/usr/lib/qt/plugins${QT_PLUGIN_PATH:+:$QT_PLUGIN_PATH} +export QT_PLUGIN_PATH +exec "$@" diff --git a/tests/unittest_music_manager/target_wrapper.sh b/tests/unittest_music_manager/target_wrapper.sh new file mode 100755 index 0000000..3543fff --- /dev/null +++ b/tests/unittest_music_manager/target_wrapper.sh @@ -0,0 +1,6 @@ +#!/bin/sh +LD_LIBRARY_PATH=/usr/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} +export LD_LIBRARY_PATH +QT_PLUGIN_PATH=/usr/lib/qt/plugins${QT_PLUGIN_PATH:+:$QT_PLUGIN_PATH} +export QT_PLUGIN_PATH +exec "$@"