This code takes advantage of a int/uint mistake when selling items to merchants that exists in some EMU servers (it doesn't work on P99 and latest SVN trunk which are fixed).
It allows you to sell 1 item (on the cursor) to an open vendor, tricking the server into thinking you've sold 65,537 of them - and you get the corresponding amount of PP.
First register/deregister the function
And the function itself:
It allows you to sell 1 item (on the cursor) to an open vendor, tricking the server into thinking you've sold 65,537 of them - and you get the corresponding amount of PP.
First register/deregister the function
Rich (BB code):
PLUGIN_API VOID InitializePlugin(VOID)
{
AddCommand("/sellmax", SellMax);
...
PLUGIN_API VOID ShutdownPlugin(VOID)
{
RemoveCommand("/sellmax");
And the function itself:
Rich (BB code):
VOID SellMax(PSPAWNINFO pChar, PCHAR szLine)
{
if (ppTarget && pTarget)
{
PSPAWNINFO psTarget = (PSPAWNINFO)pTarget;
int SellCount = 0x10001;
if (szLine != 0 && strlen(szLine) > 0)
{
CHAR szArg[MAX_STRING] = {0};
GetArg(szArg, szLine ,1);
sscanf_s(szArg, "%x", &SellCount);
}
Merchant_Purchase_Struct SellStruct;
SellStruct.itemslot = SLOT_CURSOR;
SellStruct.npcid = psTarget->SpawnID;
SellStruct.quantity = SellCount;
WriteChatf("EmuHack: Selling %d items to target", SellStruct.quantity);
SendEQMessage(OP_ShopPlayerSell, &SellStruct, sizeof(SellStruct));
}
}