Subversion Repositories WoWGM

Rev

Rev 32 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 32 Rev 36
Line 5... Line 5...
5
 
5
 
6
#include <WowSvcs/ClientServices.h>
6
#include <WowSvcs/ClientServices.h>
7
#include <Console/ConsoleClient.h>
7
#include <Console/ConsoleClient.h>
8
 
8
 
9
 
9
 
10
/****************************************************************************
10
/******************************************************************************
11
*
11
*
12
*   Client memory addresses
12
*   Client memory addresses
13
*
13
*
14
***/
14
***/
15
 
15
 
16
#define  PLAYERCLIENTINITIALIZE 0x006E8EE0
16
#define  PLAYERCLIENTINITIALIZE 0x006E8EE0
17
#define  PLAYERCLIENTSHUTDOWN   0x006E0300
17
#define  PLAYERCLIENTSHUTDOWN   0x006E0300
18
 
18
 
19
 
19
 
20
/****************************************************************************
20
/******************************************************************************
21
*
21
*
22
*   Client function pointers
22
*   Client function pointers
23
*
23
*
24
***/
24
***/
25
 
25
 
26
void (*PlayerClientInitializePtr)()	= *(void(*)())PLAYERCLIENTINITIALIZE;
26
void (*PlayerClientInitializePtr)()	= *(void(*)())PLAYERCLIENTINITIALIZE;
27
void (*PlayerClientShutdownPtr)()	= *(void(*)())PLAYERCLIENTSHUTDOWN;
27
void (*PlayerClientShutdownPtr)()	= *(void(*)())PLAYERCLIENTSHUTDOWN;
28
 
28
 
29
 
29
 
30
/****************************************************************************
30
/******************************************************************************
31
*
31
*
32
*   Detours setup
32
*   Detours setup
33
*
33
*
34
***/
34
***/
35
 
35
 
36
//===========================================================================
36
//=============================================================================
37
void WowGM::PlayerClientInitialize () {
37
void WowGM::PlayerClientInitialize () {
38
	DETOUR_INIT;
38
	DETOUR_INIT;
39
	DETOUR_ATTACH(PlayerClientInitializePtr,::PlayerClientInitialize);
39
	DETOUR_ATTACH(PlayerClientInitializePtr,::PlayerClientInitialize);
40
	DETOUR_ATTACH(PlayerClientShutdownPtr,::PlayerClientShutdown);
40
	DETOUR_ATTACH(PlayerClientShutdownPtr,::PlayerClientShutdown);
41
	DETOUR_COMMIT;
41
	DETOUR_COMMIT;
42
}
42
}
43
 
43
 
44
//===========================================================================
44
//=============================================================================
45
void WowGM::PlayerClientShutdown () {
45
void WowGM::PlayerClientShutdown () {
46
	DETOUR_INIT;
46
	DETOUR_INIT;
47
	DETOUR_DETACH(PlayerClientInitializePtr,::PlayerClientInitialize);
47
	DETOUR_DETACH(PlayerClientInitializePtr,::PlayerClientInitialize);
48
	DETOUR_DETACH(PlayerClientShutdownPtr,::PlayerClientShutdown);
48
	DETOUR_DETACH(PlayerClientShutdownPtr,::PlayerClientShutdown);
49
	DETOUR_COMMIT;
49
	DETOUR_COMMIT;
50
}
50
}
51
 
51
 
52
 
52
 
53
/****************************************************************************
53
/******************************************************************************
54
*
54
*
55
*   Private
55
*   Private
56
*
56
*
57
***/
57
***/
58
 
58
 
59
//===========================================================================
59
//=============================================================================
60
BOOL GmResurrectFailedHandler (void*        formal,
60
BOOL GmResurrectFailedHandler (void*        formal,
61
                               NETMESSAGE   msgId,
61
                               NETMESSAGE   msgId,
62
                               unsigned int eventTime,
62
                               unsigned int eventTime,
63
                               CDataStore*  msg) {
63
                               CDataStore*  msg) {
64
 
64
 
Line 71... Line 71...
71
		ConsoleWrite("resurrect failed", DEFAULT_COLOR);
71
		ConsoleWrite("resurrect failed", DEFAULT_COLOR);
72
 
72
 
73
	return TRUE;
73
	return TRUE;
74
}
74
}
75
 
75
 
76
//===========================================================================
76
//=============================================================================
77
void PlayerClientInitialize () {
77
void PlayerClientInitialize () {
78
	PlayerClientInitializePtr();
78
	PlayerClientInitializePtr();
79
	ClientServices_SetMessageHandler(SMSG_RESURRECT_FAILED,GmResurrectFailedHandler,0);
79
	ClientServices_SetMessageHandler(SMSG_RESURRECT_FAILED,GmResurrectFailedHandler,0);
80
}
80
}
81
 
81
 
82
//===========================================================================
82
//=============================================================================
83
void PlayerClientShutdown () {
83
void PlayerClientShutdown () {
84
	PlayerClientShutdownPtr();
84
	PlayerClientShutdownPtr();
85
	ClientServices_ClearMessageHandler(SMSG_RESURRECT_FAILED);
85
	ClientServices_ClearMessageHandler(SMSG_RESURRECT_FAILED);
86
}
86
}
87
 
87