• 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

MQ2PacketCorpseDecay - Pretty Interesting

Abyss

Well-known member
Joined
Sep 30, 2005
RedCents
69¢
I just finished my packet obstru yesterday however its still limited on some things, but it works great. However today I have finally got it to send me receive packets, instead of just send.

So I have been messing with receive packets, and man there is some interesting stuff to be found honestly. I had no idea that the server sends your client so much information, that can be read and bounced back. I am kind of thankful in a way that EverQuest did the packet changing, otherwise I probably would have never bothered looking into receive packets, nor would I have been working on a packet plugin for the last 5 months on and off, which taught me a great deal about client and server communication.

Anyway I have been messing with corpses in a zone in the last couple of hours and found some interesting stuff. Like for instance you can find out information such as what exact time that person died, what npc attacked him last, and stuff such as if that person was grouped or not when he died.

So far from what I can see, thru experimentation you can't really do anything other than *read* receive packets. I am still trying to change the information on things before they hit my client to see what effect it has, but its a long way still.

Here is a packet plugin I made while experimenting on corpse decaying, thru the receive packet. This plugin will read the receive packet on corpse deletion/decay, and spew it to your client. Any person or NPC who dies in the whole zone, and there corpse decays or has been looted it will give you that information. It will tell you the name of the person, or npc and even give you its ID, and when the corpse was looted.

The weird thing about this plugin is that it doesn't allow you to move, when turned on no idea why. I am still learning and messing with things.

Well here you go, you can check it out if you want. You will need to download two plugins. My MQ2EQAPI which is part of my obstru and the plugin MQ2PacketCorpseDecay both needs to be loaded especially MQ2EQAPI since it protects you from being banned.

Download:

http://www.kenetixeq.com/downloads/MQ2EQAPI.dll
http://www.kenetixeq.com/downloads/MQ2PacketCorpseDecay.dll

Commands:

/showdecaycorpse on
/showdecaycorpse off

Basically I am just excited because maybe you can get information such as how much HP your target has, or mana etc.
 
Abyss! Its great to see you again! I am looking forward to seeing what else you can come up with with this stuff :)

This really is an interesting plugin.... I'll play with it a bit more :P
 
That's really interesting, I haven't messed with that stuff at all but I'm definitely going to. Have you tried something like..

Rich (BB code):
PLUGIN_API BOOL OnReceivePacket(DWORD Type, DWORD Packet, DWORD size){
		if(uCorpseDecay) {
                          if (Type == U_CORPSEDECAY) {
				pDecayPkt DP = (pDecayPkt)Packet;
				TimeofDeath = DP->TOD;
				LastMobAttacked = DP->LMA;
				TotalDamageDealt = DP->TDD;
				return true;
			}
             }
}

I mean obviously that doesn't change anything but have you tried doing an OnReceivePacket change yet? I really don't know if it could do much being sent to you're client. But essentially you could change the information that the server sends you, which definitely has possibilities.. oh yah and here:

Rich (BB code):
// calls OnReceivePacket for each plugin
BOOL PluginsReceivePacket(DWORD Type, PVOID Packet, DWORD Size) {
	typedef BOOL (__cdecl *fMQReceivePacket)(DWORD, PVOID, DWORD);
	bool bRecv = true;
	PMQPLUGIN pPlugin = pPlugins;
	while(pPlugin) {
		fMQReceivePacket ReceivePacket = (fMQReceivePacket)GetProcAddress(pPlugin->hModule, "OnReceivePacket");
		if (ReceivePacket) {
			if (!ReceivePacket(Type, Packet, Size)) bRecv = false;
		}
		pPlugin = pPlugin->pNext;
	}
	return bRecv;
}

Well I'm sure you already have that and everything else you need. I'm also sure there's nothing that I said that you haven't thought of but just trying to help ;)

Let me know if you get any ideas you need help with or anything else that I can help with. EQ hacking is really becoming same old, same old and this looks interesting. I definitely would be willing to help out with anything new and something actually exciting for the first time in a while.

-UnKnoWn
 
The best way to do this would be to find what function is used when somebody else's corpse is decayed. If that works, then you could easilly detour that function, add in the printf of player_01's corpse has decayed or whatever and the return from the detour.

And almost anything you can think of is given to the client. Unfortunately if you change some things you will crash and/or just be disconnected because of unexpected information, information that was expected to be something but was changed to something else, etc.

Sadly its a hit and miss game on the receiving packet end.
 
Well I have been experimenting with it alot in the last few days. I basically have done nothing except try to change some things that get recieved. Basically Siddin is right, alot of stuff will make you CTD such as messing with money, items or stats. Some things do work tho. Like for instance I made a plugin that views your targets HP (Only works for PC's still trying to figure that one out) however, you still can't move when the command is on. I have no f'ing idea wtf is causing it. Currently I am rebuilding some structs to see if thats causing it, but at this point its basically process of elimination. I have a feeling tho, you can do alot more things with receive. I wouldn't really say "active hacks wise" more like viewing and reading things in the game that showeq or something doesn't show. Such as what items a person across the zone is wielding or some shit heh. Who knows heh

The best way to do this would be to find what function is used when somebody else's corpse is decayed. If that works, then you could easilly detour that function, add in the printf of player_01's corpse has decayed or whatever and the return from the detour.p

Ya that would be the easiest way, but this was basically a experiment.
 
Hmmm.. I was wondering the same thing. I'm going to make a hack like that right now and check if it does it for me as well, because that's really weird.

-UnKnoWn
 
MQ2PacketCorpseDecay - Pretty Interesting

Users who are viewing this thread

Back
Top
Cart