diff --git a/zone/command.cpp b/zone/command.cpp index f63928a8f..173316ebf 100755 --- a/zone/command.cpp +++ b/zone/command.cpp @@ -267,7 +267,7 @@ int command_init(void) command_add("npctypespawn", "[npctypeid] [factionid] - Spawn an NPC from the db", AccountStatus::Steward, command_npctypespawn) || command_add("nudge", "- Nudge your target's current position by specific values", AccountStatus::QuestTroupe, command_nudge) || command_add("nukebuffs", "- Strip all buffs on you or your target", AccountStatus::Guide, command_nukebuffs) || - command_add("nukeitem", "[itemid] - Remove itemid from your player target's inventory", AccountStatus::GMLeadAdmin, command_nukeitem) || + command_add("nukeitem", "[Item ID] - Removes the specified Item ID from you or your player target's inventory", AccountStatus::GMLeadAdmin, command_nukeitem) || command_add("object", "List|Add|Edit|Move|Rotate|Copy|Save|Undo|Delete - Manipulate static and tradeskill objects within the zone", AccountStatus::GMAdmin, command_object) || command_add("oocmute", "[1/0] - Mutes OOC chat", AccountStatus::GMMgmt, command_oocmute) || command_add("opcode", "- opcode management", AccountStatus::GMImpossible, command_opcode) || diff --git a/zone/gm_commands/nukeitem.cpp b/zone/gm_commands/nukeitem.cpp index 91e219b4d..60fccd00f 100755 --- a/zone/gm_commands/nukeitem.cpp +++ b/zone/gm_commands/nukeitem.cpp @@ -2,15 +2,40 @@ void command_nukeitem(Client *c, const Seperator *sep) { - int numitems, itemid; - - if (c->GetTarget() && c->GetTarget()->IsClient() && (sep->IsNumber(1) || sep->IsHexNumber(1))) { - itemid = sep->IsNumber(1) ? atoi(sep->arg[1]) : hextoi(sep->arg[1]); - numitems = c->GetTarget()->CastToClient()->NukeItem(itemid); - c->Message(Chat::White, " %u items deleted", numitems); + int arguments = sep->argnum; + if (!arguments || !sep->IsNumber(1)) { + c->Message(Chat::White, "Usage: #nukeitem [Item ID] - Removes the specified Item ID from you or your player target's inventory"); + return; } - else { - c->Message(Chat::White, "Usage: (targted) #nukeitem itemnum - removes the item from the player's inventory"); + + Client *target = c; + if (c->GetTarget() && c->GetTarget()->IsClient()) { + target = c->GetTarget()->CastToClient(); + } + + auto item_id = std::stoi(sep->arg[1]); + auto deleted_count = target->NukeItem(item_id); + if (deleted_count) { + c->Message( + Chat::White, + fmt::format( + "{} {} ({}) deleted from {}.", + deleted_count, + database.CreateItemLink(item_id), + item_id, + c == target ? "yourself" : target->GetCleanName() + ).c_str() + ); + } else { + c->Message( + Chat::White, + fmt::format( + "Could not find any {} ({}) to delete from {}.", + database.CreateItemLink(item_id), + item_id, + c == target ? "yourself" : target->GetCleanName() + ).c_str() + ); } }