Here's a cool plugin that removes the distance check for /open. Attached is a compiled version. Have fun.
Rich (BB code):
// cronic
#include "../MQ2Plugin.h"
#ifdef PKT_UPDATE_POSITION
#undef PKT_UPDATE_POSITION
#endif
#define PKT_UPDATE_POSITION 0x2B94
#define PKT_OPEN_OBJECT 0x383C
PreSetup("MQ2COpen");
VOID OpenCmd(PSPAWNINFO pChar, PCHAR szLine)
{
// check for target
if (!pTarget || !ppTarget) return;
// acquire target
PSPAWNINFO Target = (PSPAWNINFO)pTarget;
// 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 = Target->Z;
P.Y = Target->Y;
P.X = Target->X;
SendEQMessage(PKT_UPDATE_POSITION, &P, sizeof(P));
// open
SendEQMessage(PKT_OPEN_OBJECT, "", 0);
// jump back
P.Z = pChar->Z;
P.Y = pChar->Y;
P.X = pChar->X;
SendEQMessage(PKT_UPDATE_POSITION, &P, sizeof(P));
}
PLUGIN_API VOID InitializePlugin(VOID)
{
AddCommand("/open", OpenCmd);
}
PLUGIN_API VOID ShutdownPlugin(VOID)
{
RemoveCommand("/open");
}
Last edited:


good work C