Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.

Cadewen said:Attached is a compiled MQ2CGank using randomguy's code
[size=+1]Randomguy_01 is teh win![/size]
#define PKT_GRAB_ITEM 0x3CB2
--------------------Configuration: MQ2Gank - Win32 Release--------------------
Compiling...
MQ2Gank.cpp
C:\Program Files\MQ2\MQ2Gank\../MQ2Main/MQ2Internal.h(343) : warning C4005: 'PKT_UPDATE_POSITION' : macro redefinition
C:\Program Files\MQ2\MQ2Gank\MQ2Gank.cpp(7) : see previous definition of 'PKT_UPDATE_POSITION'
EQLIB_IMPORTS
Linking...
Creating library ../Release/MQ2Gank.lib and object ../Release/MQ2Gank.exp
MQ2Gank.dll - 0 error(s), 1 warning(s)
#include "../MQ2Plugin.h"
#ifdef PKT_UPDATE_POSITION
#undef PKT_UPDATE_POSITION
#endif
#define PKT_UPDATE_POSITION 0x2B94
#define PKT_GRAB_ITEM 0x0F47
PreSetup("MQ2CGank");
VOID GankCmd(PSPAWNINFO pChar, PCHAR szLine)
{
// check for target
if (!pTarget || !pGroundTarget) return;
// acquire item
PGROUNDITEM pItem = (PGROUNDITEM)pGroundTarget;
// setup move packet
struct _MOVEPKT {
/*0000*/ unsigned short SpawnID;
/*0002*/ unsigned short TimeStamp;
/*0004*/ int Heading:12;
/*0004*/ int padding1_0004:10;
/*0004*/ int padding2_0004:10;
/*0008*/ float DeltaY;
/*0012*/ float X;
/*0016*/ float DeltaX;
/*0020*/ int DeltaHeading:10;
/*0020*/ int Animation:10;
/*0020*/ int padding0020:12;
/*0024*/ float Z;
/*0028*/ float Y;
/*0032*/ float DeltaZ;
} P;
// init move packet
ZeroMemory(&P, sizeof(P));
P.SpawnID = (unsigned short)pChar->SpawnID;
P.Heading = (unsigned int)(pChar->Heading * 4);
// jump to
P.Z = pItem->Z;
P.Y = pItem->Y;
P.X = pItem->X;
SendEQMessage(PKT_UPDATE_POSITION, &P, sizeof(P));
// gank
struct _GRABITEMPKT {
unsigned long DropID;
unsigned long SpawnID;
} GP;
GP.DropID = pItem->DropID;
GP.SpawnID = pChar->SpawnID;
SendEQMessage(PKT_GRAB_ITEM, &GP, sizeof(GP));
// jump back
P.Z = pChar->Z;
P.Y = pChar->Y;
P.X = pChar->X;
SendEQMessage(PKT_UPDATE_POSITION, &P, sizeof(P));
// clear target
pTarget = 0;
pGroundTarget = 0;
}
PLUGIN_API VOID InitializePlugin(VOID)
{
AddCommand("/gank", GankCmd);
}
PLUGIN_API VOID ShutdownPlugin(VOID)
{
RemoveCommand("/gank");
}

#define PKT_UPDATE_POSITION 0x14CB
#define PKT_GRAB_ITEM 0xF47
code outdated

// cronic
#include "../MQ2Plugin.h"
PLUGIN_VERSION(20060223);
#ifdef PKT_UPDATE_POSITION
#undef PKT_UPDATE_POSITION
#endif
#define PKT_UPDATE_POSITION 0x7B59
#define PKT_GRAB_ITEM 0x5546
PreSetup("MQ2CGank");
VOID GankCmd(PSPAWNINFO pChar, PCHAR szLine)
{
// check for target
if (!pGroundTarget) {
WriteChatf("Please use /itemtarget to aquire a target.");
return;
}
// acquire item
PGROUNDITEM pItem = (PGROUNDITEM)pGroundTarget;
PSPAWNINFO Target = (PSPAWNINFO)pTarget;
// setup move packet
struct _MOVEPKT {
/*0000*/ unsigned short SpawnID;
/*0002*/ unsigned short TimeStamp;
/*0004*/ int DeltaHeading:16;
/*0006*/ int padding0020:16;
/*0008*/ float DeltaZ;
/*0012*/ float Y;
/*0016*/ int Animation:16;
/*0018*/ int Heading:16;
/*0020*/ float X;
/*0024*/ float DeltaY;
/*0028*/ float DeltaX;
/*0032*/ float Z;
} P;
// init move packet
ZeroMemory(&P, sizeof(P));
P.SpawnID = (unsigned short)pChar->SpawnID;
P.Heading = (unsigned int)(pChar->Heading * 4);
// jump to
P.Z = pItem->Z;
P.Y = pItem->Y;
P.X = pItem->X;
SendEQMessage(PKT_UPDATE_POSITION, &P, sizeof(P));
// gank
struct _GRABITEMPKT {
unsigned long DropID;
unsigned long SpawnID;
} GP;
GP.DropID = pItem->DropID;
GP.SpawnID = pChar->SpawnID;
SendEQMessage(PKT_GRAB_ITEM, &GP, sizeof(GP));
// jump back
P.Z = pChar->Z;
P.Y = pChar->Y;
P.X = pChar->X;
SendEQMessage(PKT_UPDATE_POSITION, &P, sizeof(P));
// clear target
pTarget = 0;
pGroundTarget = 0;
}
PLUGIN_API VOID InitializePlugin(VOID)
{
AddCommand("/gank", GankCmd);
}
PLUGIN_API VOID ShutdownPlugin(VOID)
{
RemoveCommand("/gank");
}
