Subversion Repositories WoWGM

Rev

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

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