mellow2ghost 6 Posted September 30, 2023 Share Posted September 30, 2023 Hi Guys! I'm looking for the system that is a command that, if used by the GM, makes non-tradable items tradable, BUT Only for the GM. Thanks in advance Link to comment Share on other sites More sharing options...
AndreiS 2 Posted October 1, 2023 Share Posted October 1, 2023 That is not possible. 1 Link to comment Share on other sites More sharing options...
Active+ Member HFWhite 500 Posted October 1, 2023 Active+ Member Share Posted October 1, 2023 At most, you can do this: // # open cmd.cpp and search; ACMD(do_item); // # and add under; ACMD(do_item_transfer); // search; { "item", do_item, 0, POS_DEAD, GM_GOD }, // add under; { "item_transfer", do_item_transfer, 0, POS_DEAD, GM_GOD }, // # open cmd_gm.cpp and search; ACMD(do_item) { [...] } // # add under; ACMD(do_item_transfer) { char arg1[256], arg2[256], arg3[256]; three_arguments(argument, arg1, sizeof(arg1), arg2, sizeof(arg2), arg3, sizeof(arg3)); if (!*arg1 || !*arg2 || !*arg3) { ch->ChatPacket(CHAT_TYPE_INFO, "Usage: item_transfer <item vnum> <quantity> <target player name>"); return; } int iCount, iQuantity; str_to_number(iQuantity, arg2); if (iQuantity <= 0) { ch->ChatPacket(CHAT_TYPE_INFO, "Invalid quantity."); return; } iCount = MINMAX(1, iQuantity, g_bItemCountLimit); DWORD dwVnum; if (isnhdigit(*arg1)) str_to_number(dwVnum, arg1); else { if (!ITEM_MANAGER::instance().GetVnum(arg1, dwVnum)) { ch->ChatPacket(CHAT_TYPE_INFO, "#%u item not exist by that vnum(%s).", dwVnum, arg1); return; } } LPCHARACTER targetPlayer = CHARACTER_MANAGER::instance().FindPC(arg3); if (!targetPlayer) { ch->ChatPacket(CHAT_TYPE_INFO, "Target player not found."); return; } LPITEM item = ITEM_MANAGER::instance().CreateItem(dwVnum, iCount, 0, true); if (item) { if (item->IsUpgradeItem()) { int iEmptyPos = targetPlayer->GetEmptyUpgradeInventory(item); if (iEmptyPos != -1) { item->AddToCharacter(targetPlayer, TItemPos(UPGRADE_INVENTORY, iEmptyPos)); LogManager::instance().ItemLog(targetPlayer, item, "GM_GIVE", item->GetName()); ch->ChatPacket(CHAT_TYPE_INFO, "You have transferred %d of #%u item to %s.", iCount, dwVnum, targetPlayer->GetName()); } else { M2_DESTROY_ITEM(item); ch->ChatPacket(CHAT_TYPE_INFO, "Target player does not have enough upgrade inventory space."); } } else { int iEmptyPos = targetPlayer->GetEmptyInventory(item->GetSize()); if (iEmptyPos != -1) { item->AddToCharacter(targetPlayer, TItemPos(INVENTORY, iEmptyPos)); LogManager::instance().ItemLog(targetPlayer, item, "GM_GIVE", item->GetName()); ch->ChatPacket(CHAT_TYPE_INFO, "You have transferred %d of #%u item to %s.", iCount, dwVnum, targetPlayer->GetName()); } else { M2_DESTROY_ITEM(item); ch->ChatPacket(CHAT_TYPE_INFO, "Target player does not have enough inventory space."); } } } else { ch->ChatPacket(CHAT_TYPE_INFO, "#%u item not exist by that vnum(%s).", dwVnum, arg1); } } 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now