Subversion Repositories WoWGM

Rev

Rev 32 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 32 Rev 34
Line 13... Line 13...
13
#pragma hdrstop
13
#pragma hdrstop
14
 
14
 
15
#include "Client.h"
15
#include "Client.h"
16
#include "ClientCommands.h"
16
#include "ClientCommands.h"
17
#include "ClientDebugCommands.h"
17
#include "ClientDebugCommands.h"
-
 
18
#include "ClientGMCommands.h"
18
#include <WowSvcs/ClientServices.h>
19
#include <WowSvcs/ClientServices.h>
19
#include <Glue/CGlueMgr.h>
20
#include <Glue/CGlueMgr.h>
20
#include <Ui/GameUI.h>
21
#include <Ui/GameUI.h>
21
#include <FrameScript/FrameScript.h>
22
#include <FrameScript/FrameScript.h>
22
#include <Object/ObjectClient/Player_C.h>
23
#include <Object/ObjectClient/Player_C.h>
23
 
24
 
24
 
25
 
25
//===========================================================================
-
 
26
BOOL CCommand_Bug(char const* command, char const* args);
-
 
27
 
-
 
28
 
-
 
29
/****************************************************************************
26
/****************************************************************************
30
*
27
*
31
*   Client memory addresses
28
*   Client memory addresses
32
*
29
*
33
***/
30
***/
34
 
31
 
35
#define  CLIENTREGISTERCONSOLECOMMANDS    0x00401B60
32
#define  CLIENTREGISTERCONSOLECOMMANDS    0x00401B60
36
#define  COMMONMAINDESTROY                0x004066D0
33
#define  COMMONMAINDESTROY                0x004066D0
37
#define  COMMONMAININITIALIZE             0x004047E0
34
#define  COMMONMAININITIALIZE             0x004047E0
-
 
35
#define  INSTALLGAMECONSOLECOMMANDSPTR    0x00407870
-
 
36
#define  UNINSTALLGAMECONSOLECOMMANDSPTR  0x00406EF0
38
#define  SCRIPT_GETBUILDINFO              0x004DBE60
37
#define  SCRIPT_GETBUILDINFO              0x004DBE60
39
#define  WOWCLIENTDESTROY                 0x00402910
38
#define  WOWCLIENTDESTROY                 0x00402910
40
#define  WOWCLIENTINIT                    0x00404130
39
#define  WOWCLIENTINIT                    0x00404130
41
 
40
 
42
 
41
 
Line 47... Line 46...
47
***/
46
***/
48
 
47
 
49
void  (*ClientRegisterConsoleCommands)()  = *(void(*)())CLIENTREGISTERCONSOLECOMMANDS;
48
void  (*ClientRegisterConsoleCommands)()  = *(void(*)())CLIENTREGISTERCONSOLECOMMANDS;
50
void  (*CommonMainDestroy)()              = *(void(*)())COMMONMAINDESTROY;
49
void  (*CommonMainDestroy)()              = *(void(*)())COMMONMAINDESTROY;
51
void  (*CommonMainInitialize)()           = *(void(*)())COMMONMAININITIALIZE;
50
void  (*CommonMainInitialize)()           = *(void(*)())COMMONMAININITIALIZE;
-
 
51
void  (*InstallGameConsoleCommands)()     = *(void(*)())INSTALLGAMECONSOLECOMMANDSPTR;
52
int   (*Script_GetBuildInfo)(lua_State*)  = *(int(*)(lua_State *))SCRIPT_GETBUILDINFO;
52
int   (*Script_GetBuildInfo)(lua_State*)  = *(int(*)(lua_State *))SCRIPT_GETBUILDINFO;
-
 
53
void  (*UninstallGameConsoleCommands)()   = *(void(*)())UNINSTALLGAMECONSOLECOMMANDSPTR;
53
void  (*WowClientDestroy)()               = *(void(*)())WOWCLIENTDESTROY;
54
void  (*WowClientDestroy)()               = *(void(*)())WOWCLIENTDESTROY;
54
void  (*WowClientInit)()                  = *(void(*)())WOWCLIENTINIT;
55
void  (*WowClientInit)()                  = *(void(*)())WOWCLIENTINIT;
55
 
56
 
56
 
57
 
57
/****************************************************************************
58
/****************************************************************************
Line 87... Line 88...
87
  ConsoleAccessSetEnabled(TRUE);
88
  ConsoleAccessSetEnabled(TRUE);
88
	CommonMainInitialize();
89
	CommonMainInitialize();
89
}
90
}
90
 
91
 
91
//===========================================================================
92
//===========================================================================
-
 
93
void InstallGameConsoleCommandsProc () {
-
 
94
  InstallGameConsoleCommands();
-
 
95
 
-
 
96
  // Register our own commands
-
 
97
  ConsoleCommandRegister("godmode",CCommand_Godmode,GAME,NOHELP);
-
 
98
  ConsoleCommandRegister("beastmaster",CCommand_Beastmaster,GAME,NOHELP);
-
 
99
 
-
 
100
  DebugClientCommands::Install();
-
 
101
  GMClientCommands::Install();
-
 
102
}
-
 
103
 
-
 
104
//===========================================================================
92
static int Script_GetBuildInfoProc (lua_State* L) {
105
static int Script_GetBuildInfoProc (lua_State* L) {
93
	char* version = FrameScript_GetText("VERSION", -1, GENDER_NONE);
106
	char* version = FrameScript_GetText("VERSION", -1, GENDER_NONE);
94
	_lua_pushstring(L, version);
107
	_lua_pushstring(L, version);
95
#ifdef _DEBUG
108
#ifdef _DEBUG
96
	_lua_pushstring(L,"Debug");
109
	_lua_pushstring(L,"Debug");
Line 102... Line 115...
102
	_lua_pushstring(L, __DATE__);
115
	_lua_pushstring(L, __DATE__);
103
	return 5;
116
	return 5;
104
}
117
}
105
 
118
 
106
//===========================================================================
119
//===========================================================================
-
 
120
void UninstallGameConsoleCommandsProc () {
-
 
121
  UninstallGameConsoleCommands();
-
 
122
 
-
 
123
  // Unregister our own commands
-
 
124
  ConsoleCommandUnregister("godmode");
-
 
125
  ConsoleCommandUnregister("beastmaster");
-
 
126
 
-
 
127
  DebugClientCommands::Uninstall();
-
 
128
  GMClientCommands::Uninstall();
-
 
129
}
-
 
130
 
-
 
131
//===========================================================================
107
void WowClientDestroyProc () {
132
void WowClientDestroyProc () {
108
  ConsoleCommandUnregister("Bug");
133
  ConsoleCommandUnregister("Bug");
109
  ConsoleCommandUnregister("Suggestion");
134
  ConsoleCommandUnregister("Suggestion");
110
  WowClientDestroy();
135
  WowClientDestroy();
111
}
136
}
Line 116... Line 141...
116
  WowGM::CGlueMgr::SetLoginPassword();
141
  WowGM::CGlueMgr::SetLoginPassword();
117
  ConsoleCommandExecute("run autoexec.wtf",FALSE);
142
  ConsoleCommandExecute("run autoexec.wtf",FALSE);
118
}
143
}
119
 
144
 
120
 
145
 
121
/****************************************************************************
-
 
122
*
-
 
123
*   Private
-
 
124
*
-
 
125
***/
-
 
126
 
-
 
127
//===========================================================================
146
//===========================================================================
128
void RegisterClientCallbacks () {
147
void RegisterClientCallbacks () {
129
  DETOUR_INIT;
148
  DETOUR_INIT;
130
  DETOUR_ATTACH(CommonMainDestroy, CommonMainDestroyProc);
149
  DETOUR_ATTACH(CommonMainDestroy, CommonMainDestroyProc);
131
  DETOUR_ATTACH(CommonMainInitialize, CommonMainInitializeProc);
150
  DETOUR_ATTACH(CommonMainInitialize, CommonMainInitializeProc);
132
  DETOUR_ATTACH(ClientRegisterConsoleCommands, ClientRegisterConsoleCommandsProc);
151
  DETOUR_ATTACH(ClientRegisterConsoleCommands, ClientRegisterConsoleCommandsProc);
133
  DETOUR_ATTACH(Script_GetBuildInfo, Script_GetBuildInfoProc);
152
  DETOUR_ATTACH(Script_GetBuildInfo, Script_GetBuildInfoProc);
134
  DETOUR_ATTACH(WowClientDestroy, WowClientDestroyProc);
153
  DETOUR_ATTACH(WowClientDestroy, WowClientDestroyProc);
135
  DETOUR_ATTACH(WowClientInit, WowClientInitProc);
154
  DETOUR_ATTACH(WowClientInit, WowClientInitProc);
-
 
155
  DETOUR_ATTACH(InstallGameConsoleCommands, InstallGameConsoleCommandsProc);
-
 
156
  DETOUR_ATTACH(UninstallGameConsoleCommands, UninstallGameConsoleCommandsProc);
136
  DETOUR_COMMIT;
157
  DETOUR_COMMIT;
137
}
158
}
138
 
159
 
139
//===========================================================================
160
//===========================================================================
140
void UnregisterClientCallbacks () {
161
void UnregisterClientCallbacks () {
Line 143... Line 164...
143
  DETOUR_DETACH(CommonMainInitialize, CommonMainInitializeProc);
164
  DETOUR_DETACH(CommonMainInitialize, CommonMainInitializeProc);
144
  DETOUR_DETACH(ClientRegisterConsoleCommands, ClientRegisterConsoleCommandsProc);
165
  DETOUR_DETACH(ClientRegisterConsoleCommands, ClientRegisterConsoleCommandsProc);
145
  DETOUR_DETACH(Script_GetBuildInfo, Script_GetBuildInfoProc);
166
  DETOUR_DETACH(Script_GetBuildInfo, Script_GetBuildInfoProc);
146
  DETOUR_DETACH(WowClientDestroy, WowClientDestroyProc);
167
  DETOUR_DETACH(WowClientDestroy, WowClientDestroyProc);
147
  DETOUR_DETACH(WowClientInit, WowClientInitProc);
168
  DETOUR_DETACH(WowClientInit, WowClientInitProc);
-
 
169
  DETOUR_DETACH(InstallGameConsoleCommands, InstallGameConsoleCommandsProc);
-
 
170
  DETOUR_DETACH(UninstallGameConsoleCommands, UninstallGameConsoleCommandsProc);
148
  DETOUR_COMMIT;
171
  DETOUR_COMMIT;
149
}
172
}
150
 
173
 
151
//===========================================================================
-
 
152
BOOL CCommand_Bug (char const* command, char const* args) {
-
 
153
  //TODO:
-
 
154
  //ASSERT(command);
-
 
155
 
-
 
156
  unsigned int category;
-
 
157
 
-
 
158
  if (!SStrCmpI(command, "bug"))
-
 
159
    category = 0;
-
 
160
  else if (!SStrCmpI(command, "suggestion"))
-
 
161
    category = 1;
-
 
162
 
-
 
163
  if (ClientServices_Report(category, args))
-
 
164
    ConsolePrintf("%s submitted", command);
-
 
165
  else
-
 
166
    ConsolePrintf("%s submission failed", command);
-
 
167
 
-
 
168
  return TRUE;
-
 
169
}
-
 
170
 
-
 
171
 
174
 
172
/****************************************************************************
175
/****************************************************************************
173
*
176
*
174
*   Program entry point (DllMain)
177
*   Program entry point (DllMain)
175
*
178
*
Line 194... Line 197...
194
			ConsoleCommandInitialize();
197
			ConsoleCommandInitialize();
195
			CGlueMgr::Initialize();
198
			CGlueMgr::Initialize();
196
			CGGameUI::Initialize();
199
			CGGameUI::Initialize();
197
      //TODO:
200
      //TODO:
198
			//ClientServices_Initialize();
201
			//ClientServices_Initialize();
199
			WowGM::InstallGameConsoleCommands();
-
 
200
			break;
202
			break;
201
		}
203
		}
202
		case DLL_THREAD_ATTACH:
204
		case DLL_THREAD_ATTACH:
203
		case DLL_THREAD_DETACH:
205
		case DLL_THREAD_DETACH:
204
			break;
206
			break;
Line 207... Line 209...
207
      UnregisterClientCallbacks();
209
      UnregisterClientCallbacks();
208
      //TODO:
210
      //TODO:
209
      WowGM::CGlueMgr::Shutdown();
211
      WowGM::CGlueMgr::Shutdown();
210
			CGGameUI::Shutdown();
212
			CGGameUI::Shutdown();
211
			//ClientServices_Destroy();
213
			//ClientServices_Destroy();
212
			WowGM::UninstallGameConsoleCommands();
-
 
213
			break;
214
			break;
214
		}
215
		}
215
	}
216
	}
216
 
217
 
217
	return TRUE;
218
	return TRUE;