• 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

EQEMU plugs/docrack (1 Viewer)

wtb...please let me know if/how I can get that from you

I dunno about getting the docracks for it...but it would be good since they wouldn't need to be updated.
 
K well eqemu is now live so ANYTHING you have as of this moment and want to use even if eqemu breaks keep it in a backup folder along with all the folders in the eq dir dll's and exe's
 
MQ2 Warp for emu's running on the december patch still.

Code:
#include "../MQ2Plugin.h"


PreSetup("MQ2Warp");
VOID Warp(PSPAWNINFO pChar,PCHAR szLine)
{
DWORD SuccorFunc = 0x0043437B;
CHAR szBuffer[MAX_STRING] = {0};
CHAR Arg1[MAX_STRING] = {0};
CHAR Arg2[MAX_STRING] = {0};
CHAR Arg3[MAX_STRING] = {0};
PZONEINFO ZoneInfo = (PZONEINFO)pZoneInfo;
FLOAT SaveSafeX = ZoneInfo->SafeXLoc;
FLOAT SaveSafeY = ZoneInfo->SafeYLoc;
FLOAT SaveSafeZ = ZoneInfo->SafeZLoc;
PSPAWNINFO MyTarget = NULL;
bool WARPREADY = 0;

if (szLine[0] == 0) {
WriteChatColor("Usage: /warp t(arget) (n|s|e|w) (distance) || s(afepoint) || g(ate) || x y z",USERCOLOR_DEFAULT);
return;
}

GetArg(Arg1,szLine,1,false);
GetArg(Arg2,szLine,2,false);
GetArg(Arg3,szLine,3,false);

if(*Arg1 || (*Arg1 && *Arg2 && *Arg3)) {
if(!strcmp(Arg1,"g") || !strcmp(Arg1,"gate")) {
WriteChatColor ("Gating...",CONCOLOR_RED);
pChar->Type = 3;
}
if(!strcmp(Arg1,"t") || !strcmp(Arg1,"target")) {
// marker
// if (ppTarget && pTarget) {
// (PSPAWNINFO)pTarget = ppTarget;
// }
if (!pTarget) {
WriteChatColor("You must have a target selected for /warp t(arget) to work.",CONCOLOR_RED);
return;
}
if (!*Arg2 && !*Arg3) {
ZoneInfo->SafeXLoc = ((PSPAWNINFO)pTarget)->X;
ZoneInfo->SafeYLoc = ((PSPAWNINFO)pTarget)->Y;
ZoneInfo->SafeZLoc = ((PSPAWNINFO)pTarget)->Z;
sprintf(szBuffer,"Warping to %s, %.2f, %.2f, %.2f",((PSPAWNINFO)pTarget)->Name,((PSPAWNINFO)pTarget)->X,((PSPAWNINFO)pTarget)->Y,((PSPAWNINFO)pTarget)->Z);
WriteChatColor(szBuffer,CONCOLOR_RED);
WARPREADY=1;
}
if (!strcmp(Arg2,"w") && *Arg3) {
ZoneInfo->SafeXLoc = (((PSPAWNINFO)pTarget)->X + (float)atof(Arg3));
ZoneInfo->SafeYLoc = ((PSPAWNINFO)pTarget)->Y;
ZoneInfo->SafeZLoc = ((PSPAWNINFO)pTarget)->Z;
sprintf(szBuffer,"Warping to %s, %.2f, %.2f, %.2f",((PSPAWNINFO)pTarget)->Name,(((PSPAWNINFO)pTarget)->X + (float)atof(Arg3)),((PSPAWNINFO)pTarget)->Y,((PSPAWNINFO)pTarget)->Z);
WriteChatColor(szBuffer,CONCOLOR_RED);
WARPREADY=1;
}
if (!strcmp(Arg2,"e") && *Arg3) {
ZoneInfo->SafeXLoc = (((PSPAWNINFO)pTarget)->X - (float)atof(Arg3));
ZoneInfo->SafeYLoc = ((PSPAWNINFO)pTarget)->Y;
ZoneInfo->SafeZLoc = ((PSPAWNINFO)pTarget)->Z;
sprintf(szBuffer,"Warping to %s, %.2f, %.2f, %.2f",((PSPAWNINFO)pTarget)->Name,(((PSPAWNINFO)pTarget)->X - (float)atof(Arg3)),((PSPAWNINFO)pTarget)->Y,((PSPAWNINFO)pTarget)->Z);
WriteChatColor(szBuffer,CONCOLOR_RED);
WARPREADY=1;
}
if (!strcmp(Arg2,"n") && *Arg3) {
ZoneInfo->SafeXLoc = ((PSPAWNINFO)pTarget)->X;
ZoneInfo->SafeYLoc = (((PSPAWNINFO)pTarget)->Y + (float)atof(Arg3));
ZoneInfo->SafeZLoc = ((PSPAWNINFO)pTarget)->Z;
sprintf(szBuffer,"Warping to %s, %.2f, %.2f, %.2f",((PSPAWNINFO)pTarget)->Name,((PSPAWNINFO)pTarget)->X,(((PSPAWNINFO)pTarget)->Y + (float)atof(Arg3)),((PSPAWNINFO)pTarget)->Z);
WriteChatColor(szBuffer,CONCOLOR_RED);
WARPREADY=1;
}
if (!strcmp(Arg2,"s") && *Arg3) {
ZoneInfo->SafeXLoc = ((PSPAWNINFO)pTarget)->X;
ZoneInfo->SafeYLoc = (((PSPAWNINFO)pTarget)->Y - (float)atof(Arg3));
ZoneInfo->SafeZLoc = ((PSPAWNINFO)pTarget)->Z;
sprintf(szBuffer,"Warping to %s, %.2f, %.2f, %.2f",((PSPAWNINFO)pTarget)->Name,((PSPAWNINFO)pTarget)->X,(((PSPAWNINFO)pTarget)->Y - (float)atof(Arg3)),((PSPAWNINFO)pTarget)->Z);
WriteChatColor(szBuffer,CONCOLOR_RED);
WARPREADY=1;
}
}
if(!strcmp(Arg1,"s") || !strcmp(Arg1,"safepoint")) {
sprintf(szBuffer,"Warping to safepoint, %.2f, %.2f, %.2f",SaveSafeX,SaveSafeY,SaveSafeZ);
WARPREADY=1;
}
if(*Arg1 && *Arg2 && *Arg3 && !WARPREADY) {
ZoneInfo->SafeXLoc = (float)atof(Arg1);
ZoneInfo->SafeYLoc = (float)atof(Arg2);
ZoneInfo->SafeZLoc = (float)atof(Arg3);
sprintf(szBuffer,"Warping to %.2f, %.2f, %.2f",ZoneInfo->SafeXLoc,ZoneInfo->SafeYLoc,ZoneInfo->SafeZLoc);
WriteChatColor(szBuffer,CONCOLOR_RED);
WARPREADY=1;
}
if(WARPREADY) {
__asm {
call dword ptr [SuccorFunc];
}
ZoneInfo->SafeXLoc = SaveSafeX;
ZoneInfo->SafeYLoc = SaveSafeY;
ZoneInfo->SafeZLoc = SaveSafeZ;
}
} else {
WriteChatColor("Usage: /warp t(arget) (n|s|e|w) (distance) || s(afepoint) || g(ate) || x y z",USERCOLOR_DEFAULT);
return;
}
}

PLUGIN_API VOID InitializePlugin(VOID)
{
DebugSpewAlways("Initializing MQ2Warp");
AddCommand("/warp",Warp);
}

PLUGIN_API VOID ShutdownPlugin(VOID)
{
DebugSpewAlways("Shutting down MQ2Warp");
RemoveCommand("/warp");
}

Looking for maybe shared bank nodrop, and bard speed offsets. If you need the Exe file to find the offsets in, its on Krusher.org or whatever that site is.
 
EQEMU plugs/docrack

Users who are viewing this thread

Back
Top
Cart