• You've discovered RedGuides, an EverQuest multi-boxing and scripting community 🧙‍♀️⚙️. We want you to play several EQ characters at once, come join us and say hello! 👋

  • A TLP without truebox has thawed (Very Vanilla ready)
    Frostreaver

MQ2CSum (1 Viewer)

/Bump

Anyone have these updated for most recent patch/MQ?

Rich (BB code):
#define PKT_CORPSE_DRAG          0x6536
#define PKT_CORPSE_DROP          0x50C0
 
updated ones

Rich (BB code):
#define PKT_CORPSE_DRAG			0x61C3 
#define PKT_CORPSE_DROP			0x6B74
 
for 2/23/06, thank odessa for new MOVEPKT structure

Rich (BB code):
// cronic

#include "../MQ2Plugin.h"

#ifdef PKT_CORPSE_DRAG
#undef PKT_CORPSE_DRAG
#endif
#ifdef PKT_CORPSE_DROP
#undef PKT_CORPSE_DROP
#endif
#ifdef PKT_UPDATE_POSITION
#undef PKT_UPDATE_POSITION
#endif

#define PKT_CORPSE_DRAG      0x61C3
#define PKT_CORPSE_DROP      0x6B74
#define PKT_UPDATE_POSITION  0x7B59

PreSetup("MQ2CSum");

VOID SumCorpseCmd(PSPAWNINFO pChar, PCHAR szLine)
{
	// check for target
	if (!pTarget || !ppTarget) return;
	
	// make sure it's a corpse
	PSPAWNINFO Target = (PSPAWNINFO)pTarget;
	if (Target->Type != SPAWN_CORPSE) return;

	// 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 = Target->Z;
	P.Y = Target->Y;
	P.X = Target->X;
	SendEQMessage(PKT_UPDATE_POSITION, &P, sizeof(P));

	// corpse drag
	char szCorpseName[152] = {0};
	strcpy(szCorpseName, Target->Name);
	SendEQMessage(PKT_CORPSE_DRAG, szCorpseName, 152);

	// jump back
	P.Z = pChar->Z;
	P.Y = pChar->Y;
	P.X = pChar->X;
	SendEQMessage(PKT_UPDATE_POSITION, &P, sizeof(P));

	// corpse drop
	SendEQMessage(PKT_CORPSE_DROP, "", 0);
}

PLUGIN_API VOID InitializePlugin(VOID)
{
	AddCommand("/sumcorpse", SumCorpseCmd);
}

PLUGIN_API VOID ShutdownPlugin(VOID)
{
	RemoveCommand("/sumcorpse");
}
 
I changed
Rich (BB code):
#define PKT_CORPSE_DRAG      0x61C3
#define PKT_CORPSE_DROP      0x6B74
#define PKT_UPDATE_POSITION  0x7B59
to this
Rich (BB code):
#define PKT_CORPSE_DRAG      0x61C3
#define PKT_CORPSE_DROP      0x6B74
#define PKT_UPDATE_POSITION  0x14CB

I know at least the PKT_UPDATE_POSITION changed, but what about the others?
 
Updated CSum.dll

#define PKT_UPDATE_POSITION 0x3813
#define PKT_CORPSE_DRAG 0x7589
#define PKT_CORPSE_DROP 0x06AE

ARMY
 
I am having trouble getting this working with the 6/16/06 patch. I made these changes that I found in the 6/13/06 offsets thread.

Rich (BB code):
#define PKT_CORPSE_DRAG			  0x7117
#define PKT_CORPSE_DROP			  0x7bd6
#define PKT_UPDATE_POSITION		0x178a
and
Rich (BB code):
struct _MOVEPKT {
	/*0000*/ unsigned short SpawnID;
	/*0002*/ unsigned short TimeStamp;
	/*0004*/ int Heading:16;
	/*0006*/ int unknown1:16;     //??
	/*0008*/ float DeltaZ;        // ?? not sure
	/*0012*/ int Animation:16;
	/*0014*/ int padding014:16;   //??
	/*0016*/ int DeltaHeading:16; //?? not sure
	/*0018*/ int unknown2:16;     //??
	/*0020*/ float Y;
	/*0024*/ float DeltaY;        //?? not sure
	/*0028*/ float DeltaX;        //?? not sure
	/*0032*/ float Z;
	/*0036*/ float X;
} P;

Note that I made the _MOVEPKT within the MQ2Csum.cpp and not EQData.h. Well it compiles just fine and loads without any problem, but it does nothing when I try to run it. Anyone notice anything I missed in those changes? I am using the latest source from this thread also. Thanks in advance for the help.
 
I only updated the defines, and Mine is not working either, anyone have the finished movepkt code??
 
This is working for me. Only difference I see from that above is Animation2, but that ought not to make a difference for CSUM.

Rich (BB code):
	/*0000*/ unsigned short SpawnID;
	/*0002*/ unsigned short TimeStamp;
	/*0004*/ int Heading:16;
	/*0006*/ int unknown1:16;     //??
	/*0008*/ float DeltaZ;        // ?? not sure
	/*0012*/ int Animation:16;
	/*0014*/ int padding014:16;   //??
	/*0016*/ int DeltaHeading:16; //?? not sure
	/*0018*/ int Animation2:16;   // something else to do with animation
	/*0020*/ float Y;
	/*0024*/ float DeltaY;        //?? not sure
	/*0028*/ float DeltaX;        //?? not sure
	/*0032*/ float Z;
	/*0036*/ float X;
 
Yeah, tried yours and still no good. Just doesn't do anything at all. Here's the entire code just in case someone notices anything.

Rich (BB code):
// cronic

#include "../MQ2Plugin.h"

#ifdef PKT_CORPSE_DRAG
#undef PKT_CORPSE_DRAG
#endif
#ifdef PKT_CORPSE_DROP
#undef PKT_CORPSE_DROP
#endif
#ifdef PKT_UPDATE_POSITION
#undef PKT_UPDATE_POSITION
#endif

#define PKT_CORPSE_DRAG			  0x7117
#define PKT_CORPSE_DROP			  0x7bd6
#define PKT_UPDATE_POSITION		0x178a

PreSetup("MQ2CSum");

VOID SumCorpseCmd(PSPAWNINFO pChar, PCHAR szLine)
{
	// check for target
	if (!pTarget || !ppTarget) return;
	
	// make sure it's a corpse
	PSPAWNINFO Target = (PSPAWNINFO)pTarget;
	if (Target->Type != SPAWN_CORPSE) return;

	// setup move packet
    struct _MOVEPKT {
	/*0000*/ unsigned short SpawnID;
	/*0002*/ unsigned short TimeStamp;
	/*0004*/ int Heading:16;
	/*0006*/ int unknown1:16;     //??
	/*0008*/ float DeltaZ;        // ?? not sure
	/*0012*/ int Animation:16;
	/*0014*/ int padding014:16;   //??
	/*0016*/ int DeltaHeading:16; //?? not sure
	/*0018*/ int Animation2:16;   // something else to do with animation
	/*0020*/ float Y;
	/*0024*/ float DeltaY;        //?? not sure
	/*0028*/ float DeltaX;        //?? not sure
	/*0032*/ float Z;
	/*0036*/ float X;    } P; // 40

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

	// corpse drag
	char szCorpseName[152] = {0};
	strcpy(szCorpseName, Target->Name);
	SendEQMessage(PKT_CORPSE_DRAG, szCorpseName, 152);

	// jump back
	P.Z = pChar->Z;
	P.Y = pChar->Y;
	P.X = pChar->X;
	SendEQMessage(PKT_UPDATE_POSITION, &P, sizeof(P));

	// corpse drop
	SendEQMessage(PKT_CORPSE_DROP, "", 0);
}

PLUGIN_API VOID InitializePlugin(VOID)
{
	AddCommand("/sum", SumCorpseCmd);
}

PLUGIN_API VOID ShutdownPlugin(VOID)
{
	RemoveCommand("/sum");
}
 
Rich (BB code):
struct _MOVEPKT {
	/*0000*/ unsigned short SpawnID;
	/*0002*/ unsigned short TimeStamp;
	/*0004*/ int Heading:16;
	/*0006*/ int unknown1:16;     //??
	/*0008*/ float DeltaZ;        // ?? not sure
	/*0012*/ int Animation:16;
	/*0014*/ int padding014:16;   //??
	/*0016*/ int DeltaHeading:16; //?? not sure
	/*0018*/ int unknown2:16;     //??
	/*0020*/ float Y;
	/*0024*/ float DeltaY;        //?? not sure
	/*0028*/ float DeltaX;        //?? not sure
	/*0032*/ float Z;
	/*0036*/ float X;
} P;
 
Ok here is what i have and it works with the 6/16/2006 patch

Rich (BB code):
// cronic

#include "../MQ2Plugin.h"

#ifdef PKT_CORPSE_DRAG
#undef PKT_CORPSE_DRAG
#endif
#ifdef PKT_CORPSE_DROP
#undef PKT_CORPSE_DROP
#endif
#ifdef PKT_UPDATE_POSITION
#undef PKT_UPDATE_POSITION
#endif

#define PKT_UPDATE_POSITION 0x178a
#define PKT_CORPSE_DRAG 0x7117
#define PKT_CORPSE_DROP 0x7bd6

PreSetup("MQ2CSum");

VOID SumCorpseCmd(PSPAWNINFO pChar, PCHAR szLine)
{
	// check for target
	if (!pTarget || !ppTarget) return;
	
	// make sure it's a corpse
	PSPAWNINFO Target = (PSPAWNINFO)pTarget;
	if (Target->Type != SPAWN_CORPSE) return;

	// setup move packet
	struct _MOVEPKT {
	/*0000*/ unsigned short SpawnID;
	/*0002*/ unsigned short TimeStamp;
	/*0004*/ int Heading:16;
	/*0006*/ int unknown1:16;     //??
	/*0008*/ float DeltaZ;        // ?? not sure
	/*0012*/ int Animation:16;
	/*0014*/ int padding014:16;   //??
	/*0016*/ int DeltaHeading:16; //?? not sure
	/*0018*/ int Animation2:16;   // something else to do with animation
	/*0020*/ float Y;
	/*0024*/ float DeltaY;        //?? not sure
	/*0028*/ float DeltaX;        //?? not sure
	/*0032*/ float Z;
	/*0036*/ float X;
	} 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));

	// corpse drag
	char szCorpseName[152] = {0};
	strcpy(szCorpseName, Target->Name);
	SendEQMessage(PKT_CORPSE_DRAG, szCorpseName, 152);

	// jump back
	P.Z = pChar->Z;
	P.Y = pChar->Y;
	P.X = pChar->X;
	SendEQMessage(PKT_UPDATE_POSITION, &P, sizeof(P));

	// corpse drop
	SendEQMessage(PKT_CORPSE_DROP, "", 0);
}

PLUGIN_API VOID InitializePlugin(VOID)
{
	AddCommand("/sumcorpse", SumCorpseCmd);
}

PLUGIN_API VOID ShutdownPlugin(VOID)
{
	RemoveCommand("/sumcorpse");
}
 
Last edited:
in short, I believe so.

From my understanding of the way it works, it send a packet to the server that your at the person's body, issues the command /corpsedrag, then send a packet saying your where you started, then issues the command /corpsedrop.

So it is warping you to a body, dragging it, then warping you back and dropping it. Doing this so fast that you arent even seen moving on the client side.
 
larry1024, code brackets are you friend.

This isn't the same code larry1024 posted, this is the copy I used to compile, and it works perfectly. It's about identical though.

Compiled dll for download included
MQ2CSum.dll
Created 6/17/2006 @ 6:07PM EST

Rich (BB code):
// cronic

#include "../MQ2Plugin.h"

#ifdef PKT_CORPSE_DRAG
#undef PKT_CORPSE_DRAG
#endif
#ifdef PKT_CORPSE_DROP
#undef PKT_CORPSE_DROP
#endif
#ifdef PKT_UPDATE_POSITION
#undef PKT_UPDATE_POSITION
#endif

#define PKT_CORPSE_DRAG      0x7117
#define PKT_CORPSE_DROP      0x7bd6
#define PKT_UPDATE_POSITION  0x178a

PreSetup("MQ2CSum");

VOID SumCorpseCmd(PSPAWNINFO pChar, PCHAR szLine)
{
	// check for target
	if (!pTarget || !ppTarget) return;
	
	// make sure it's a corpse
	PSPAWNINFO Target = (PSPAWNINFO)pTarget;
	if (Target->Type != SPAWN_CORPSE) return;

	// setup move packet
	struct _MOVEPKT {
			/*0000*/ unsigned short SpawnID;
			/*0002*/ unsigned short TimeStamp;
			/*0004*/ int Heading:16;
			/*0006*/ int unknown1:16;     //??
			/*0008*/ float DeltaZ;        // ?? not sure
			/*0012*/ int Animation:16;
			/*0014*/ int padding014:16;   //??
			/*0016*/ int DeltaHeading:16; //?? not sure
			/*0018*/ int Animation2:16;   // something else to do with animation
			/*0020*/ float Y;
			/*0024*/ float DeltaY;        //?? not sure
			/*0028*/ float DeltaX;        //?? not sure
			/*0032*/ float Z;
			/*0036*/ float X;
	} 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));

	// corpse drag
	char szCorpseName[152] = {0};
	strcpy(szCorpseName, Target->Name);
	SendEQMessage(PKT_CORPSE_DRAG, szCorpseName, 152);

	// jump back
	P.Z = pChar->Z;
	P.Y = pChar->Y;
	P.X = pChar->X;
	SendEQMessage(PKT_UPDATE_POSITION, &P, sizeof(P));

	// corpse drop
	SendEQMessage(PKT_CORPSE_DROP, "", 0);
}

PLUGIN_API VOID InitializePlugin(VOID)
{
	AddCommand("/sumcorpse", SumCorpseCmd);
}

PLUGIN_API VOID ShutdownPlugin(VOID)
{
	RemoveCommand("/sumcorpse");
}
 
Is there any way to make this so it will grab corpses that are bugged 2000+ feet underground or at loc 0,0,0? Trying to use it on either of those will just say the corpse is too far away to summon.
 
If its not doing it something might need to be updated. You sure the plugin is loaded and you have the corpse targetted and you're typing /sumcorpse ?
 
Yep, I'm sure it's loaded and typing the right command. It happens fairly often when getting rezzed into an instance. I have target loc in my hud so I can see the corpse is at 0,0,0 and it won't summon, yet if I coffin summon the corpse and then warp away to another part of the zone it will summon correctly.

It's been doing this for as long as I can remember, if I don't have someone that can coffin summon in group we have to kill the instance and wait for corpse to pop outside or run to lobby and summon it that way.
 
it happens sometimes in Rifts, all you need to do is warp to the corpse, summon it, warp back to wherever you want to csum it and summon it there.
 
I have found that if I /corpsedrag then /warp the corpse comes with me...don't know if that works in every situation but it has helped me before.
 
Tried all of that, none of it will work. I can warp to the corpse and it see it right under me but /corpse, /corpsedrag, and /loot all say it's still too far away, and on the other screen I see the warped char still at the pre-warp spot. Corpse is setting at 0,0,0 which is about 1300 feet underworld. Guess it's just an bug, but sure is annoying.
 
Has Csum changed on 4-10-2006, seems even using the current offsets that it has stoped working for me.
 
since they arent including warp right now in the program because of changes, and csum has warp in it, we probably wont see this again for a bit
 
Anyone got a working version of this the one above just says to far to summon.
 
I have MQ2Pax loaded and MQ2CSum but /corpsesum or /sumcorpse still doesn't work
 
The way to make it work is you target the corpse you want either with the map or /targ command then you /sum and your gold!!! saved many raids this way. also would like to see /rez intergrated into pax that would ROQ
 
Lol, the reason I made MQ2Pax was so that I could combine all of the plugins I had with opcodes / structs into a single plugin, so that I didn't have to keep updating MvPkt in 50 different plugin codes. If you want the /rez command, just add that particular plugin into your repetoire...it's not a big deal.
 
thez said:
Lol, the reason I made MQ2Pax was so that I could combine all of the plugins I had with opcodes / structs into a single plugin, so that I didn't have to keep updating MvPkt in 50 different plugin codes. If you want the /rez command, just add that particular plugin into your repetoire...it's not a big deal.

.h file ftw.
 
thez said:
Lol, the reason I made MQ2Pax was so that I could combine all of the plugins I had with opcodes / structs into a single plugin, so that I didn't have to keep updating MvPkt in 50 different plugin codes. If you want the /rez command, just add that particular plugin into your repetoire...it's not a big deal.

What Cobalt said. It makes no sense to create an 'uber-plugin' when all it takes is #include "mystructs.h" in any plugin. Do you really think we update all our plugins every patch? :)
 
MQ2CSum

Users who are viewing this thread

Back
Top
Cart