Subversion Repositories WoWGM

Rev

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

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