Ok so after a couple hours and some hints from the vetern's around here i finally got the damn warp working.... couple things though... its commands are diffrent... and here they are... Also got a good feeling this may make it to top posts of month of may... REMEMBER to vote NOOB!!!!!
4 commands
/splooge mob (warps to target)
/splooge safe (warps to succor)
/splooge point x y z (warps to loc x y z)
/begone (gates you)
***NEW 05/25/05***WAYPOINT INTEGRATED WARPING***
/waypoint add name
/waypoint delete name
/waypoint list
/splooge wp name (warps you to that waypoint)
***DLL was updated on 05/25/05***CODE Updated 05/25/05***
To Download dll here is link http://69.10.135.232/~everstor/ and download mq2splooge.dll in the noobhaxor folder.
for those that want to do self compile here is code ....
open Eqdata.h in MQ2Main, search for _ZONEINFO and you will notice that in the structure there is room for floats that JUST AREN'T THERE (jumps from 0x1ec to 0x1f8), the dev's have removed them and replaced it with an /*0x1ec*/ unknown0x1ec, delete that and place
/*0x1ec*/ FLOAT SafeYLoc;
/*0x1f0*/ FLOAT SafeXLoc;
/*0x1f4*/ FLOAT SafeZLoc;
so that it reads
/*0x1db*/ BYTE Unknown0x1db[0xd];
/*0x1e8*/ FLOAT ZoneExpModifier;
/*0x1ec*/ FLOAT SafeYLoc;
/*0x1f0*/ FLOAT SafeXLoc;
/*0x1f4*/ FLOAT SafeZLoc;
/*0x1f8*/ FLOAT Ceiling;
4 commands
/splooge mob (warps to target)
/splooge safe (warps to succor)
/splooge point x y z (warps to loc x y z)
/begone (gates you)
***NEW 05/25/05***WAYPOINT INTEGRATED WARPING***
/waypoint add name
/waypoint delete name
/waypoint list
/splooge wp name (warps you to that waypoint)
***DLL was updated on 05/25/05***CODE Updated 05/25/05***
To Download dll here is link http://69.10.135.232/~everstor/ and download mq2splooge.dll in the noobhaxor folder.
for those that want to do self compile here is code ....
open Eqdata.h in MQ2Main, search for _ZONEINFO and you will notice that in the structure there is room for floats that JUST AREN'T THERE (jumps from 0x1ec to 0x1f8), the dev's have removed them and replaced it with an /*0x1ec*/ unknown0x1ec, delete that and place
/*0x1ec*/ FLOAT SafeYLoc;
/*0x1f0*/ FLOAT SafeXLoc;
/*0x1f4*/ FLOAT SafeZLoc;
so that it reads
/*0x1db*/ BYTE Unknown0x1db[0xd];
/*0x1e8*/ FLOAT ZoneExpModifier;
/*0x1ec*/ FLOAT SafeYLoc;
/*0x1f0*/ FLOAT SafeXLoc;
/*0x1f4*/ FLOAT SafeZLoc;
/*0x1f8*/ FLOAT Ceiling;
Rich (BB code):
#include "../MQ2Plugin.h"
PreSetup("mq2splooge");
#undef CDisplay__MoveLocalPlayerToSafeCoords
#define CDisplay__MoveLocalPlayerToSafeCoords 0x00444C21
#undef SafeYLoc
#undef SafeXLoc
#undef SafeZLoc
VOID DoSplooge(float yewok, float xewok, float zewok);
VOID Splooge(PSPAWNINFO pChar, PCHAR szLine);
VOID Begone(PSPAWNINFO, PCHAR);
VOID waypoint(PSPAWNINFO pChar, PCHAR szLine);
PLUGIN_API VOID InitializePlugin(VOID)
{
AddCommand("/splooge",Splooge);
AddCommand("/begone",Begone);
AddCommand("/waypoint", waypoint);
}
PLUGIN_API VOID ShutdownPlugin(VOID)
{
DebugSpewAlways("Shutting down mq2splooge");
RemoveCommand("/begone");
RemoveCommand("/splooge");
RemoveCommand("/waypoint");
}
// WARP commands
VOID Splooge(PSPAWNINFO pChar, PCHAR szLine)
{
float NewYewok = 0;
float NewXewok = 0;
bRunNextCommand = TRUE;
PSPAWNINFO psTarget = NULL;
PZONEINFO Zone = (PZONEINFO)pZoneInfo;
CHAR command[MAX_STRING]; GetArg(command,szLine,1);
CHAR Yewok[MAX_STRING]; GetArg(Yewok,szLine,2);
CHAR Xewok[MAX_STRING]; GetArg(Xewok,szLine,3);
CHAR Zewok[MAX_STRING]; GetArg(Zewok,szLine,4);
if (
stricmp(command, "safe") != 0 &&
stricmp(command, "point") != 0 &&
stricmp(command, "mob") != 0 &&
stricmp(command, "wp") != 0
) {
WriteChatColor("Usage: /splooge <safe|mob|point y x z|wp name>", CONCOLOR_RED);
return;
} else {
if (!stricmp(command,"mob")) {
if (ppTarget && pTarget) {
psTarget = (PSPAWNINFO)pTarget;
}
if (!psTarget) {
WriteChatColor("You must have a target for /splooge mob.", CONCOLOR_RED);
return;
}
float TargetZewok = float (psTarget->Z-(psTarget->AvatarHeight*0.5));
srand (time(NULL));
//random Y
if (rand()%2!=0)
{
NewYewok = float(psTarget->Y+rand()%4);
}
else {
NewYewok = float(psTarget->Y-rand()%4);
}
//random X
if (rand()%2!=0)
{
NewXewok = float(psTarget->X+rand()%4);
}
else {
NewXewok = float(psTarget->X-rand()%4);
}
DoSplooge(NewYewok, NewXewok, TargetZewok);
} else if (!stricmp(command,"safe")) {
static float north = 0;
((PSPAWNINFO)pCharSpawn)->Heading = north;
DWORD MLPTSC = CDisplay__MoveLocalPlayerToSafeCoords;
__asm call dword ptr [MLPTSC];
return;
} else if (!stricmp(command,"point")) {
if ((Yewok[0] == 0) || (Xewok[0] == 0) || (Zewok[0] == 0))
{
WriteChatColor("You must provide <y> <x> <z> if going to a location.",
CONCOLOR_RED);
return;
}
DoSplooge((float)atof(Yewok), (float)atof(Xewok), (float)atof(Zewok));
return;
} else if (!stricmp(command,"wp"))
{
char szLoc[MAX_STRING] = {0};
char szName[MAX_STRING] = {0};
char WaypointsINI[MAX_STRING] = {0};
char szBuf[MAX_STRING] = {0};
char szHeading[MAX_STRING] = {0};
char szDestWarpX[MAX_STRING] = {0};
char szDestWarpY[MAX_STRING] = {0};
char szDestWarpZ[MAX_STRING] = {0};
char szMsg[MAX_STRING] = {0};
sprintf(WaypointsINI,"%s\\waypoints.ini",gszINIPath);
GetArg(szName, szLine, 2);
if(!strnicmp(szName, "", 1))
{
WriteChatColor("You didn't specify a waypoint.", COLOR_LIGHTGREY);
}
else
{
GetPrivateProfileString(Zone->ShortName,szName,"",szLoc,MAX_STRING,WaypointsINI);
if (!strnicmp(szLoc, "", 1))
{
sprintf(szMsg, "Waypoint \'%s\' does not exist.", szName);
WriteChatColor(szMsg, COLOR_LIGHTGREY);
}
else
{
// get destination locs
GetArg(szDestWarpX, szLoc, 2);
GetArg(szDestWarpY, szLoc, 1);
GetArg(szDestWarpZ, szLoc, 3);
// get heading
GetArg(szBuf, szLoc, 4);
GetArg(szHeading,szBuf,1,0,0,0,':');
DoSplooge((float)atof(szDestWarpY), (float)atof(szDestWarpX), (float)atof(szDestWarpZ));
}
}
}
}
}
// GATE
VOID Begone(PSPAWNINFO pChar, PCHAR szLine)
{
pChar->Type = SPAWN_CORPSE;
}
// MEGAWARP
VOID DoSplooge(float yewok, float xewok, float zewok)
{
PZONEINFO Zone = (PZONEINFO)pZoneInfo;
float SafeYewok = Zone->SafeYLoc;
float SafeXewok = Zone->SafeXLoc;
float SafeZewok = Zone->SafeZLoc;
Zone->SafeYLoc = yewok;
Zone->SafeXLoc = xewok;
Zone->SafeZLoc = zewok;
CHAR szMsg[MAX_STRING] = {0};
sprintf(szMsg, "Warping to: %3.2f, %3.2f, %3.2f.", Zone->SafeXLoc,
Zone->SafeYLoc, Zone->SafeZLoc);
WriteChatColor(szMsg, COLOR_PURPLE);
DWORD MLPTSC = CDisplay__MoveLocalPlayerToSafeCoords;
__asm call dword ptr [MLPTSC];
Zone->SafeYLoc = SafeYewok;
Zone->SafeXLoc = SafeXewok;
Zone->SafeZLoc = SafeZewok;
}
// Waypoints stuffz
VOID waypoint(PSPAWNINFO pChar, PCHAR szLine)
{
PZONEINFO Zone = (PZONEINFO)pZoneInfo;
CHAR WaypointsINI[MAX_STRING] = {0};
CHAR szTemp[10] = {0};
CHAR szData[MAX_STRING] = {0};
CHAR szDesc[MAX_STRING] = {0};
CHAR szName[MAX_STRING] = {0};
CHAR szCommand[MAX_STRING] = {0};
CHAR szBuffer[MAX_STRING] = {0};
CHAR szMsg[MAX_STRING] = {0};
CHAR WaypointList[MAX_STRING*10] = {0};
PCHAR pWaypointList = WaypointList;
CHAR szKey[MAX_STRING] = {0};
CHAR szValue[MAX_STRING] = {0};
sprintf(WaypointsINI,"%s\\waypoints.ini",gszINIPath);
GetArg(szCommand, szLine, 1);
if (!strnicmp(szCommand, "add", 3))
{
GetArg(szName, szLine, 2);
if(!strnicmp(szName, "", 1))
{
WriteChatColor("You didn't specify a name for the waypoint.", COLOR_LIGHTGREY);
}
else
{
GetPrivateProfileString(Zone->ShortName,szName,"",szBuffer,MAX_STRING,WaypointsINI);
if (!strnicmp(szBuffer, "", 1))
{
GetArg(szDesc, szLine, 3);
sprintf(szData, "%1.2f %1.2f %1.2f %1.2f:%s", pChar->Y, pChar->X, pChar->Z, (float)pChar->Heading*0.703125f, szDesc);
WritePrivateProfileString(Zone->ShortName,szName,szData,WaypointsINI);
sprintf(szMsg, "Waypoint \'%s\' added.", szName);
WriteChatColor(szMsg, COLOR_LIGHTGREY);
}
else
{
sprintf(szMsg, "Waypoint \'%s\' already exists.", szName);
WriteChatColor(szMsg, COLOR_LIGHTGREY);
}
}
}
else if (!strnicmp(szCommand, "delete", 6))
{
GetArg(szName, szLine, 2);
if(!strnicmp(szName, "", 1))
{
WriteChatColor("You didn't specify a waypoint to delete.", COLOR_LIGHTGREY);
}
else
{
GetPrivateProfileString(Zone->ShortName,szName,"",szBuffer,MAX_STRING,WaypointsINI);
if (!strnicmp(szBuffer, "", 1))
{
sprintf(szMsg, "Waypoint \'%s\' does not exist.", szName);
WriteChatColor(szMsg, COLOR_LIGHTGREY);
}
else
{
WritePrivateProfileString(Zone->ShortName,szName,"",WaypointsINI);
// rewrite the section minus the deleted waypoint
GetPrivateProfileSection(Zone->ShortName,WaypointList,MAX_STRING*10,WaypointsINI) ;
WritePrivateProfileSection(Zone->ShortName,"",WaypointsINI);
pWaypointList = WaypointList;
while (pWaypointList[0]!=0)
{
GetArg(szKey,pWaypointList,1,0,0,0,'=');
GetArg(szValue,pWaypointList,2,0,0,0,'=');
if (strnicmp(szValue, "", 1))
{
WritePrivateProfileString(Zone->ShortName,szKey,szValue,WaypointsINI);
}
pWaypointList+=strlen(pWaypointList)+1;
}
sprintf(szMsg, "Waypoint \'%s\' deleted.", szName);
WriteChatColor(szMsg, COLOR_LIGHTGREY);
}
}
}
else if (!strnicmp(szCommand, "list", 4))
{
GetPrivateProfileSection(Zone->ShortName,WaypointList,MAX_STRING*10,WaypointsINI) ;
pWaypointList = WaypointList;
sprintf(szMsg, "Waypoints for %s", Zone->LongName);
WriteChatColor(szMsg, CONCOLOR_YELLOW);
while (pWaypointList[0]!=0)
{
GetArg(szName,pWaypointList,1,0,0,0,'=');
GetArg(szData,pWaypointList,2,0,0,0,'=');
GetArg(szDesc,szData,2,0,0,0,':');
if (strnicmp(szDesc,"",1))
{
sprintf(szMsg, "- %s ( %s )", szName, szDesc);
}
else
{
sprintf(szMsg, "- %s", szName);
}
WriteChatColor(szMsg, COLOR_LIGHTGREY);
pWaypointList+=strlen(pWaypointList)+1;
}
}
else
{
WriteChatColor("Invalid syntax. Usage:", COLOR_LIGHTGREY);
WriteChatColor("/waypoint add name", COLOR_LIGHTGREY);
WriteChatColor("/waypoint delete name", COLOR_LIGHTGREY);
WriteChatColor("/waypoint list", COLOR_LIGHTGREY);
}
}
Last edited:


ty
.. i along with alot others will never ever use a compiled dll. i have only used one once. and that was from a friend irl..