• 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

mq2nosummon plugin (1 Viewer)

Czarman

Well-known member
Joined
Apr 28, 2005
RedCents
1,381¢
Updated this plugin I found lying around. If anyone wants to use it, or perhaps enhance it more here is the source and DLL. Not exactly sure where it is from, but is effective enough till we can actually find the nosummon offset. This only requres the WARP offset to work.

This will warp you immediately to the postion you were summoned from, so fast that you most likely wont even get hit.

Be careful when using this in a group with a mage that tries to summon you :P

** Will not compile using Visual C++, need .NET to make this.**

mq2nosummon

Rich (BB code):
// MQ2NoSummon.cpp : Defines the entry point for the DLL application

// Same offset as MQ2Warp

#define CDisplay__MoveLocalPlayerToSafeCoords   0x443249
#include "../MQ2Plugin.h"
float UnSummonY, UnSummonX, UnSummonZ;

PreSetup("MQ2NoSummon");
VOID UnSummonMe(PSPAWNINFO pChar);

PLUGIN_API VOID InitializePlugin(VOID)
{
   DebugSpewAlways("Initializing MQ2NoSummon");
}

PLUGIN_API VOID ShutdownPlugin(VOID)
{
   DebugSpewAlways("Shutting down MQ2NoSummon");
}


PLUGIN_API VOID OnPulse(VOID)
{
   CHAR ABuffer[MAX_STRING] = {0};
   PSPAWNINFO pChar = (PSPAWNINFO)pCharSpawn;
   PSPAWNINFO Target = (PSPAWNINFO)pTarget;

   
   if ( (pTarget) && (ppTarget) ) {
         if ( ( (abs(Target->Y - pChar->Y)<2) && (abs(UnSummonY - pChar->Y)>4) ) || ( (abs(Target->X - pChar->X)<2) && (abs(UnSummonX - pChar->X)>4) ) ) {
            if (pChar->SpawnID != Target->SpawnID) {
               UnSummonMe(pChar);
            }
         } else {
            UnSummonY = pChar->Y;
            UnSummonX = pChar->X;
            UnSummonZ = pChar->Z;
         }
   } else {
   UnSummonY = pChar->Y;
   UnSummonX = pChar->X;
   UnSummonZ = pChar->Z;
   }
       

}




VOID UnSummonMe(PSPAWNINFO pChar)
{
   CHAR ABuffer[MAX_STRING] = {0};
    PZONEINFO Zone = (PZONEINFO)pZoneInfo; 

   float SafeY = Zone->SafeYLoc;
   float SafeX = Zone->SafeXLoc;
   float SafeZ = Zone->SafeZLoc;

   Zone->SafeYLoc = UnSummonY;
   Zone->SafeXLoc = UnSummonX;
   Zone->SafeZLoc = UnSummonZ;

  DWORD MLPTSC = CDisplay__MoveLocalPlayerToSafeCoords; 
  __asm call dword ptr [MLPTSC];

   Zone->SafeYLoc = SafeY;
   Zone->SafeXLoc = SafeX;
   Zone->SafeZLoc = SafeZ;
}
 
Last edited:
There are offsets around that are better (and guarrantee only one round rather than more if you're lagging using this)
 
Been trying to find the offset for the last week, not really had any luck. If you have the offset by all means post it!

Yeah I guess if you were lagging the above plugin might cause problems (even without the plugin you would be having problems then no?), but otherwise it works nicely, and I find I rarely if at all get any hits.

Closest I got was what I posted on Kenetixeq:

Been working on getting NoSummon offset, and not having any luck. I am close but no cigar...... With this offset the mob believes he has summoned you and you can still be hit, in fact you are not in melee range but NPC still thinks you are. You will see "You will not evade me", but you will not see "you have been summoned". I usually make a warp wp safe close to where I have the mob and it kinda relocates me, but seems buggy so far.

There were 2 methods previously both which seem to have been nerfed. So kinda starting from scratch.

Once again this is NOT working but a step in the right direction perhaps, if any one else wants to lend a hand. Of course if you still have the program that uses the define that would be nice, I think I have a copy somewhere, but it needs updating.

Code:
[NoSummon]
Description="No Summon - NOT WORKING YET"
Version="2005.12.15"
address0=4619B5
normal0="74 16"
crack0="90 90"
 
try this
Rich (BB code):
[NoSummon]
Description="untested"
Version="2005.12.15"
address0=4619D4
normal0="0F 84 53 21 00 00"
crack0="0F 84 F4 D4 4D FF"

i have no way to test it
 
randomguy_01 said:
try this
Rich (BB code):
[NoSummon]
Description="untested"
Version="2005.12.15"
address0=4619D4
normal0="0F 84 53 21 00 00"
crack0="0F 84 F4 D4 4D FF"

i have no way to test it

Bummer, not working. Well back to the drawing board, lol.
 
Re: mq2nosummon plugin UPDATED a bit

Added a check for "You have been summoned!", so should be a bit more stable -- But still need to watchout if you are being CoTH'd.

Rich (BB code):
// MQ2NoSummon.cpp : Defines the entry point for the DLL application

// Same offset as MQ2Warp
#define CDisplay__MoveLocalPlayerToSafeCoords   0x00443854
#include "../MQ2Plugin.h"
float UnSummonY, UnSummonX, UnSummonZ;
bool bSummoned = false;
#undef SafeYLoc 
#undef SafeXLoc 
#undef SafeZLoc 


PreSetup("MQ2NoSummon");
VOID UnSummonMe(PSPAWNINFO pChar);

PLUGIN_API VOID InitializePlugin(VOID)
{
	DebugSpewAlways("Initializing MQ2NoSummon");
}

PLUGIN_API VOID ShutdownPlugin(VOID)
{
	DebugSpewAlways("Shutting down MQ2NoSummon");
}

PLUGIN_API DWORD OnIncomingChat(PCHAR Line, DWORD Color) 
{ 
	if (strstr(Line,"You have been summoned!")) 
		{ bSummoned = true; }
	return 0; 
} 


PLUGIN_API VOID OnPulse(VOID)
{
	CHAR ABuffer[MAX_STRING] = {0};
	PSPAWNINFO pChar = (PSPAWNINFO)pCharSpawn;
	PSPAWNINFO Target = (PSPAWNINFO)pTarget;

	
	if ( (pTarget) && (ppTarget) ) {
			if ( ( (abs(Target->Y - pChar->Y)<2) && (abs(UnSummonY - pChar->Y)>4) ) || ( (abs(Target->X - pChar->X)<2) && (abs(UnSummonX - pChar->X)>4) ) ) {
				if ((bSummoned) && (pChar->SpawnID != Target->SpawnID)) {
					UnSummonMe(pChar);
				}
			} else {
				UnSummonY = pChar->Y;
				UnSummonX = pChar->X;
				UnSummonZ = pChar->Z;
			}
	} else {
	UnSummonY = pChar->Y;
	UnSummonX = pChar->X;
	UnSummonZ = pChar->Z;
	}
       

}

VOID UnSummonMe(PSPAWNINFO pChar)
{
	CHAR ABuffer[MAX_STRING] = {0};
    PZONEINFO Zone = (PZONEINFO)pZoneInfo; 

   float SafeY = Zone->SafeYLoc; 
   float SafeX = Zone->SafeXLoc; 
   float SafeZ = Zone->SafeZLoc; 

   Zone->SafeYLoc = UnSummonY; 
   Zone->SafeXLoc = UnSummonX;
   Zone->SafeZLoc = UnSummonZ;

   DWORD MLPTSC = CDisplay__MoveLocalPlayerToSafeCoords; 
   __asm call dword ptr [MLPTSC]; 

   Zone->SafeYLoc = SafeY; 
   Zone->SafeXLoc = SafeX; 
   Zone->SafeZLoc = SafeZ; 
   bSummoned = false;
}
 
Last edited:
Well sort of. You will still get summoned, and possibly hit a few times, but this plugin will also immediately move you back to your last position before being summoned.
 
All this does is warp you back after getting summoned.
 
BadPuss said:
Yes, but it's the best we have at the moment, isn't it?

Yes at this point this is the best we got in the summon department.
 
Is there a way to avoid being banished by Vox or Nagafen any more?

I used to enjoy taking them out with my 52 monk, and it saved me a load of heal potions if my shaman could stay in the zone and heal.

Does banish work when the client see the "You have been summoned" message?
 
fd on monk and cast a heal vox / naggy have like no regen.. just make sure shammy is out of los of them
 
Both of the listed source codes are recently edited, but which one is the prefered one? I also see the CDisplay__MoveLocalPlayerToSafeCoords is used, I'm guessing this is to make it work without having to fix it in MQ2Main.h?
 
EvenLessSpam said:
Both of the listed source codes are recently edited, but which one is the prefered one? I also see the CDisplay__MoveLocalPlayerToSafeCoords is used, I'm guessing this is to make it work without having to fix it in MQ2Main.h?

Yes. You'll need to make a bunch of changes to your MQ2 source. About 6-10 in all depending on what you are doing, or you can download one of the posted precompiles and just insert the binary and it'll work.

http://www.redguides.com/community/showthread.php?t=4220
 
EvenLessSpam said:
Both of the listed source codes are recently edited, but which one is the prefered one? I also see the CDisplay__MoveLocalPlayerToSafeCoords is used, I'm guessing this is to make it work without having to fix it in MQ2Main.h?

I deleted the OLD DLLs because I was noticing people were still downloading them, and uploaded the new version above.
 
Is this the temp fix one that just warps you back to where you were or does it acutally stop the summoning again?
 
I'm trying to expand this a bit to combat Gravity Flux and effects like it, however I don't have much luck with it, nor knowledge about it ;)

I've changed the part where it checks the incoming message, and added the messages for the flings/gflux'es I know:

Rich (BB code):
	if (strstr(Line, "You have been summoned!") || 
		strstr(Line, "A massive force knocks you into the air.  You have taken 1 point of damage.") || 
		strstr(Line, "You experience chaotic weightlessness.") || 
		strstr(Line, "You feel gravity reverse.") || 
		strstr(Line, "A massive force knocks you backwards."))
	{
		bSummoned = true;
	}
However it doesn't work.

Anyone have any ideas? :)
 
It also checks to make sure you have a target, and that the target is within very close proximity (like it just summoned you).. You'd have to bypass those checks to make it work for 'flings/gfluxes'..
 
Psycotic said:
It also checks to make sure you have a target, and that the target is within very close proximity (like it just summoned you).. You'd have to bypass those checks to make it work for 'flings/gfluxes'..

Aah thanks..

I made a new plugin and called it MQ2NoGFlux and basically used the code from MQ2NoSummon, and removed a lot of checks. Right now it only checks on the text, which I guess could be bad but hope not.

Could someone look it over and say if it looks right? Unable to test it at the moment, the event where I needed it is over and I don't know of a place I can go solo and test it :(

Rich (BB code):
// MQ2NoGFlux.cpp : Defines the entry point for the DLL application

#include "../MQ2Plugin.h"
float preFluxY, preFluxX, preFluxZ;
bool bFluxed = false;
#undef SafeYLoc 
#undef SafeXLoc 
#undef SafeZLoc 

PreSetup("MQ2NoGFlux");
VOID UnFluxMe(PSPAWNINFO pChar);

PLUGIN_API VOID InitializePlugin(VOID)
{
	DebugSpewAlways("Initializing MQ2NoGFlux");
}

PLUGIN_API VOID ShutdownPlugin(VOID)
{
	DebugSpewAlways("Shutting down MQ2NoGFlux");
}

PLUGIN_API DWORD OnIncomingChat(PCHAR Line, DWORD Color) 
{ 
	if (strstr(Line, "A massive force knocks you into the air.  You have taken 1 point of damage.") || 
		strstr(Line, "You experience chaotic weightlessness.") || 
		strstr(Line, "You feel gravity reverse.") || 
		strstr(Line, "A massive force knocks you backwards."))
	{
		bFluxed = true;
	}
	return 0; 
} 

PLUGIN_API VOID OnPulse(VOID)
{
	PSPAWNINFO pChar = (PSPAWNINFO)pCharSpawn;

	if (bFluxed) {
		UnFluxMe(pChar);
	} else {
		preFluxY = pChar->Y;
		preFluxX = pChar->X;
		preFluxZ = pChar->Z;
	}
}

VOID UnFluxMe(PSPAWNINFO pChar)
{
	PZONEINFO Zone = (PZONEINFO)pZoneInfo; 

	float SafeY = Zone->SafeYLoc; 
	float SafeX = Zone->SafeXLoc; 
	float SafeZ = Zone->SafeZLoc; 

	Zone->SafeYLoc = preFluxY; 
	Zone->SafeXLoc = preFluxX;
	Zone->SafeZLoc = preFluxZ;

	DWORD MLPTSC = CDisplay__MoveLocalPlayerToSafeCoords; 
	__asm call dword ptr [MLPTSC]; 

	Zone->SafeYLoc = SafeY; 
	Zone->SafeXLoc = SafeX; 
	Zone->SafeZLoc = SafeZ; 
	bFluxed = false;
}

Added a precompiled .dll based on the codeblock I've pasted. (It's untested only use it if you think it works, cause I honestly don't know).
 
EvenLessSpam said:
Aah thanks..

I made a new plugin and called it MQ2NoGFlux and basically used the code from MQ2NoSummon, and removed a lot of checks. Right now it only checks on the text, which I guess could be bad but hope not.

Could someone look it over and say if it looks right? Unable to test it at the moment, the event where I needed it is over and I don't know of a place I can go solo and test it :(

Rich (BB code):
// MQ2NoGFlux.cpp : Defines the entry point for the DLL application

#include "../MQ2Plugin.h"
float preFluxY, preFluxX, preFluxZ;
bool bFluxed = false;
#undef SafeYLoc 
#undef SafeXLoc 
#undef SafeZLoc 

PreSetup("MQ2NoGFlux");
VOID UnFluxMe(PSPAWNINFO pChar);

PLUGIN_API VOID InitializePlugin(VOID)
{
	DebugSpewAlways("Initializing MQ2NoGFlux");
}

PLUGIN_API VOID ShutdownPlugin(VOID)
{
	DebugSpewAlways("Shutting down MQ2NoGFlux");
}

PLUGIN_API DWORD OnIncomingChat(PCHAR Line, DWORD Color) 
{ 
	if (strstr(Line, "A massive force knocks you into the air.  You have taken 1 point of damage.") || 
		strstr(Line, "You experience chaotic weightlessness.") || 
		strstr(Line, "You feel gravity reverse.") || 
		strstr(Line, "A massive force knocks you backwards."))
	{
		bFluxed = true;
	}
	return 0; 
} 

PLUGIN_API VOID OnPulse(VOID)
{
	PSPAWNINFO pChar = (PSPAWNINFO)pCharSpawn;

	if (bFluxed) {
		UnFluxMe(pChar);
	} else {
		preFluxY = pChar->Y;
		preFluxX = pChar->X;
		preFluxZ = pChar->Z;
	}
}

VOID UnFluxMe(PSPAWNINFO pChar)
{
	PZONEINFO Zone = (PZONEINFO)pZoneInfo; 

	float SafeY = Zone->SafeYLoc; 
	float SafeX = Zone->SafeXLoc; 
	float SafeZ = Zone->SafeZLoc; 

	Zone->SafeYLoc = preFluxY; 
	Zone->SafeXLoc = preFluxX;
	Zone->SafeZLoc = preFluxZ;

	DWORD MLPTSC = CDisplay__MoveLocalPlayerToSafeCoords; 
	__asm call dword ptr [MLPTSC]; 

	Zone->SafeYLoc = SafeY; 
	Zone->SafeXLoc = SafeX; 
	Zone->SafeZLoc = SafeZ; 
	bFluxed = false;
}

Added a precompiled .dll based on the codeblock I've pasted. (It's untested only use it if you think it works, cause I honestly don't know).


dosent work bro :( tested it
 
Ok so I’m new to this thread and to Red Guides...i remember my neighbor gave me mq2nosum a couple years ago, and all it basically did is warped you back to your spot after getting your ass kicked, for some warrior/cleric/dps combo's that couldn’t normally tank the mob of full but warrior could run around and not get stunned...it was helpful. But for main stream use I didn’t see much use for it so I stopped compiling it. Now, from what I read, is there...or WAS there...actually a plug-in that stopped summoning? That would be overly insane and almost scary for banworthyness (yes, I like to make up cool words, leave me alone!). Can someone explain to me what’s going on - is it the same old school way of going back to last location or what?
Thanks :)
 
Just wondering, is this plugin at all fixable?.. If so i can compile a list of AE Gflux's and summoning stuff the big bad mobs do..
 
is this able to be fixed by any chance?
possible one with the you ahve been summoned check and another with out the check?
 
i am not knowledgable enough to compile this, is there anyone who wouldnt mind helping me? plz dont flame because i suck at it, im well aware of that thanks.
 
It's nerfed to the point of you'll still take a round of hits before it brings you back to the spot you're supposed to be at
 
Zulan said:
i am not knowledgable enough to compile this, is there anyone who wouldnt mind helping me? plz dont flame because i suck at it, im well aware of that thanks.
Flaming is actually not allowed on these boards, but if you're still looking for this, i can probably compile it. (still need to install a new version of windows and then see if visual studio works on it.)
 
how do i complie this so it works, ive been a mq user for years but never learned how to compile crap ! ill give red cents for the dll file !!
 
mq2nosummon plugin

Users who are viewing this thread

Back
Top
Cart