Subversion Repositories WoWGM

Rev

Rev 3 | Rev 25 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3 tristanc 1
#include "pch.h"
2
#pragma hdrstop
3
 
4
#include "ClientCommands.h"
6 tristanc 5
 
3 tristanc 6
#include <ClientDebugCommands.h>
6 tristanc 7
#include <ClientGMCommands.h>
3 tristanc 8
#include <Console/ConsoleClient.h>
9
#include <FrameScript/FrameScript.h>
10
#include <WowSvcs/ClientServices.h>
11
 
12
/****************************************************************************
13
*
14
*	 Memory addresses
15
*
16
***/
17
 
18
#define INSTALLGAMECONSOLECOMMANDSPTR	0x00407870;
19
#define UNINSTALLGAMECONSOLECOMMANDSPTR	0x00406EF0;
20
 
21
 
22
/****************************************************************************
23
*
24
*	 Function pointers
25
*
26
***/
27
 
28
void (*InstallGameConsoleCommandsPtr)()		= *(void (*)())INSTALLGAMECONSOLECOMMANDSPTR;
29
void (*UninstallGameConsoleCommandsPtr)()	= *(void (*)())UNINSTALLGAMECONSOLECOMMANDSPTR;
30
 
31
 
32
/****************************************************************************
33
*
34
*	Game commands
35
*
36
***/
37
 
38
//===========================================================================
39
BOOL CCommand_CreateMonster(const char* cmd, const char* arguments)
40
{
41
	if (arguments && *arguments) {
42
		unsigned int monster = atoi(arguments);
43
 
44
		CDataStore msg;
45
		msg.Put(CMSG_CREATEMONSTER);
46
		msg.Put(monster);
47
		msg.Finalize();
48
 
49
		ClientServices_Send(&msg);
50
	}
51
	return TRUE;
52
}
53
 
54
//===========================================================================
55
BOOL CCommand_GodMode(const char* cmd, const char* arguments)
56
{	
57
	if (arguments && *arguments) {
58
		int enable = atoi(arguments);
59
 
60
		CDataStore msg;
61
		msg.Put(CMSG_GODMODE);
62
		msg.Put(enable);
63
		msg.Finalize();
64
 
65
		ClientServices_Send(&msg);
66
	}
67
	return TRUE;
68
}
69
 
70
 
71
/****************************************************************************
72
*
73
*	Private
74
*
75
***/
76
 
77
//===========================================================================
78
void InstallGameConsoleCommands()
79
{
80
	InstallGameConsoleCommandsPtr();
81
 
82
	// Register our own commands
83
	ConsoleCommandRegister("cm",CCommand_CreateMonster,GAME,NOHELP);
84
	ConsoleCommandRegister("createmonster",CCommand_CreateMonster,GAME,NOHELP);
85
	ConsoleCommandRegister("godmode",CCommand_GodMode,GAME,NOHELP);
86
 
87
	DebugClientCommands::Install();
6 tristanc 88
	GMClientCommands::Install();
3 tristanc 89
}
90
 
91
//===========================================================================
92
void UninstallGameConsoleCommands()
93
{
94
	UninstallGameConsoleCommandsPtr();
95
 
96
	// Unregister our own commands
97
	ConsoleCommandUnregister("cm");
98
	ConsoleCommandUnregister("createmonster");
99
	ConsoleCommandUnregister("godmode");
100
 
101
	DebugClientCommands::Uninstall();
6 tristanc 102
	GMClientCommands::Uninstall();
3 tristanc 103
}
104
 
105
 
106
/****************************************************************************
107
*
108
*	 Detours setup (external functions)
109
*
110
***/
111
 
112
//===========================================================================
113
void WowGM::InstallGameConsoleCommands()
114
{
115
	DETOUR_INIT;
116
	DETOUR_ATTACH(InstallGameConsoleCommandsPtr,::InstallGameConsoleCommands);
117
	DETOUR_ATTACH(UninstallGameConsoleCommandsPtr,::UninstallGameConsoleCommands);
118
	DETOUR_COMMIT;
119
}
120
 
121
//===========================================================================
122
void WowGM::UninstallGameConsoleCommands()
123
{
124
	DETOUR_INIT;	
125
	DETOUR_DETACH(InstallGameConsoleCommandsPtr,::InstallGameConsoleCommands);
126
	DETOUR_DETACH(UninstallGameConsoleCommandsPtr,::UninstallGameConsoleCommands);
127
	DETOUR_COMMIT;
128
}