Jump to content

Super trader?


Recommended Posts

  • Active+ Member

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);
    }
}

 

  • Lmao 1

spacer.png

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now


×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.