randomguy_01
Well-known member
- Joined
- Jul 13, 2005
- RedCents
- 54¢
I saw a request for this in the official compile thread.
/toggledoors on|off|always - hides all doors in a zone
/toggledoors on|off|always - hides all doors in a zone
Rich (BB code):
// MQ2Doors.cpp : Defines the entry point for the DLL application.
// MQ2Doors by cronic, minor changes from randomguy_01
#include "../MQ2Plugin.h"
PreSetup("MQ2Doors");
#pragma warning(disable : 4273)
#define EQSwitch__ChangeState 0x4C3DE0 // 4/24
#ifdef EQSwitch__ChangeState
FUNCTION_AT_ADDRESS(void EQSwitch::ChangeState(unsigned char, class EQPlayer *, bool), EQSwitch__ChangeState);
#endif
bool gHidden = false;
BOOL gHideAlways = false;
bool ModDoors(float fMod)
{
if (!pSwitchMgr || gGameState != GAMESTATE_INGAME) return false;
for (unsigned int i = 0; i < ((PDOORTABLE)pSwitchMgr)->NumEntries; i++)
{
PDOOR pDoor = ((PDOORTABLE)pSwitchMgr)->pDoor;
pDoor->DefaultZ += fMod;
pDoor->Z += fMod;
((EQSwitch*)pDoor)->ChangeState(3, 0, 0);
}
return true;
}
void HideDoors()
{
if (gHidden || !ModDoors(-1000000.00f)) return;
gHidden = true;
}
void RevealDoors()
{
if (!gHidden || !ModDoors(1000000.00f)) return;
gHidden = false;
}
void DoorHelp()
{
WriteChatColor("\arMQ2Doors Help:\ax");
WriteChatColor("\ag/toggledoors on\ax - Hide the doors in your current zone.");
WriteChatColor("\ag/toggledoors off\ax - Shows all doors and disables the 'always' feature");
WriteChatColor("\ag/toggledoors always\ax - Hides all doors in all zones");
}
PLUGIN_API VOID ToggleDoorsCmd(PSPAWNINFO pChar, PCHAR szLine)
{
CHAR szArg[MAX_STRING] = {0};
GetArg(szArg, szLine, 1);
if (szArg[0] == 0) DoorHelp();
else if (!strcmp(szArg, "on")) {
HideDoors();
WriteChatColor("Hiding doors");
}
else if (!strcmp(szArg, "off")) {
gHideAlways = false;
RevealDoors();
WriteChatColor("Revealing doors");
}
else if (!strcmp(szArg, "always")) {
gHideAlways = true;
WriteChatColor("Hiding doors in all zones after you zone");
}
}
PLUGIN_API VOID OnEndZone(VOID)
{
if (gHideAlways) {
gHidden = false;
HideDoors();
}
else return;
}
PLUGIN_API VOID InitializePlugin(VOID)
{
AddCommand("/toggledoors", ToggleDoorsCmd);
}
PLUGIN_API VOID ShutdownPlugin(VOID)
{
RemoveCommand("/toggledoors");
RevealDoors();
}
Last edited:

