mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-11 21:01:29 +00:00
77 lines
2.6 KiB
C++
Executable File
77 lines
2.6 KiB
C++
Executable File
#include "../client.h"
|
|
|
|
void command_interrogateinv(Client *c, const Seperator *sep)
|
|
{
|
|
// 'command_interrogateinv' is an in-memory inventory interrogation tool only.
|
|
//
|
|
// it does not verify against actual database entries..but, the output can be
|
|
// used to verify that something has been corrupted in a player's inventory.
|
|
// any error condition should be assumed that the item in question will be
|
|
// lost when the player logs out or zones (or incurrs any action that will
|
|
// consume the Client-Inventory object instance in question.)
|
|
//
|
|
// any item instances located at a greater depth than a reported error should
|
|
// be treated as an error themselves regardless of whether they report as the
|
|
// same or not.
|
|
|
|
if (strcasecmp(sep->arg[1], "help") == 0) {
|
|
if (c->Admin() < commandInterrogateInv) {
|
|
c->Message(Chat::White, "Usage: #interrogateinv");
|
|
c->Message(Chat::White, " Displays your inventory's current in-memory nested storage references");
|
|
}
|
|
else {
|
|
c->Message(Chat::White, "Usage: #interrogateinv [log] [silent]");
|
|
c->Message(
|
|
Chat::White,
|
|
" Displays your or your Player target inventory's current in-memory nested storage references"
|
|
);
|
|
c->Message(Chat::White, " [log] - Logs interrogation to file");
|
|
c->Message(Chat::White, " [silent] - Omits the in-game message portion of the interrogation");
|
|
}
|
|
return;
|
|
}
|
|
|
|
Client *target = nullptr;
|
|
std::map<int16, const EQ::ItemInstance *> instmap;
|
|
bool log = false;
|
|
bool silent = false;
|
|
bool error = false;
|
|
bool allowtrip = false;
|
|
|
|
if (c->Admin() < commandInterrogateInv) {
|
|
if (c->GetInterrogateInvState()) {
|
|
c->Message(Chat::Red, "The last use of #interrogateinv on this inventory instance discovered an error...");
|
|
c->Message(Chat::Red, "Logging out, zoning or re-arranging items at this point will result in item loss!");
|
|
return;
|
|
}
|
|
target = c;
|
|
allowtrip = true;
|
|
}
|
|
else {
|
|
if (c->GetTarget() == nullptr) {
|
|
target = c;
|
|
}
|
|
else if (c->GetTarget()->IsClient()) {
|
|
target = c->GetTarget()->CastToClient();
|
|
}
|
|
else {
|
|
c->Message(Chat::Default, "Use of this command is limited to Client entities");
|
|
return;
|
|
}
|
|
|
|
if (strcasecmp(sep->arg[1], "log") == 0) {
|
|
log = true;
|
|
}
|
|
if (strcasecmp(sep->arg[2], "silent") == 0) {
|
|
silent = true;
|
|
}
|
|
}
|
|
|
|
bool success = target->InterrogateInventory(c, log, silent, allowtrip, error);
|
|
|
|
if (!success) {
|
|
c->Message(Chat::Red, "An unknown error occurred while processing Client::InterrogateInventory()");
|
|
}
|
|
}
|
|
|