Rev 32 | Rev 34 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
#include "pch.h"
#pragma hdrstop
#include "ClientCommands.h"
#include <ClientDebugCommands.h>
#include <ClientGMCommands.h>
#include <Console/ConsoleClient.h>
#include <FrameScript/FrameScript.h>
#include <WowSvcs/ClientServices.h>
/****************************************************************************
*
* Client memory addresses
*
***/
#define INSTALLGAMECONSOLECOMMANDSPTR 0x00407870
#define UNINSTALLGAMECONSOLECOMMANDSPTR 0x00406EF0
/****************************************************************************
*
* Client function pointers
*
***/
void (*InstallGameConsoleCommandsPtr)() = *(void (*)())INSTALLGAMECONSOLECOMMANDSPTR;
void (*UninstallGameConsoleCommandsPtr)() = *(void (*)())UNINSTALLGAMECONSOLECOMMANDSPTR;
/****************************************************************************
*
* Client Game Commands
*
***/
//===========================================================================
BOOL CCommand_Beastmaster (char const* commandStr, char const* arguments) {
CDataStore msg;
msg.Put(CMSG_BEASTMASTER);
BYTE val = SStrCmpI(arguments, "off") != 0;
msg.Put(val);
msg.Finalize();
ClientServices_Send(&msg);
return TRUE;
}
//===========================================================================
BOOL CCommand_GodMode (const char* cmd, const char* arguments) {
if (arguments && *arguments) {
int enable = atoi(arguments);
CDataStore msg;
msg.Put(CMSG_GODMODE);
msg.Put(enable);
msg.Finalize();
ClientServices_Send(&msg);
}
return TRUE;
}
/****************************************************************************
*
* Private
*
***/
//===========================================================================
void InstallGameConsoleCommands () {
InstallGameConsoleCommandsPtr();
// Register our own commands
ConsoleCommandRegister("godmode",CCommand_GodMode,GAME,NOHELP);
ConsoleCommandRegister("beastmaster",CCommand_Beastmaster,GAME,NOHELP);
DebugClientCommands::Install();
GMClientCommands::Install();
}
//===========================================================================
void UninstallGameConsoleCommands () {
UninstallGameConsoleCommandsPtr();
// Unregister our own commands
ConsoleCommandUnregister("godmode");
ConsoleCommandUnregister("beastmaster");
DebugClientCommands::Uninstall();
GMClientCommands::Uninstall();
}
/****************************************************************************
*
* Detours setup
*
***/
//===========================================================================
void WowGM::InstallGameConsoleCommands () {
DETOUR_INIT;
DETOUR_ATTACH(InstallGameConsoleCommandsPtr,::InstallGameConsoleCommands);
DETOUR_ATTACH(UninstallGameConsoleCommandsPtr,::UninstallGameConsoleCommands);
DETOUR_COMMIT;
}
//===========================================================================
void WowGM::UninstallGameConsoleCommands () {
DETOUR_INIT;
DETOUR_DETACH(InstallGameConsoleCommandsPtr,::InstallGameConsoleCommands);
DETOUR_DETACH(UninstallGameConsoleCommandsPtr,::UninstallGameConsoleCommands);
DETOUR_COMMIT;
}