📄 client.h
字号:
#ifndef _CLIENT_H_
#define _CLIENT_H_
// # of message to allocate for message queue
#define NUM_MESSAGES 1024
// Types of messages
#define MSG_CREATE_PLAYER 1
#define MSG_PLAYER_INFO 2
#define MSG_DESTROY_PLAYER 3
#define MSG_STATE_CHANGE 4
#define MSG_SPELL_CHANGE 5
#define MSG_ATTACK_CHANGE 6
#define MSG_ROUTINE_CHANGE 7
#define MSG_ALTER_EFFECT 8
#define MSG_INIT_FILE 9
#define MSG_RELIVE_CHANGE 10
#define MSG_ITEM_CHANGE 11
#define MSG_ASSIGNID 256
// Types of messages
#define MSG_FAILED 1
#define MSG_MISSED 2
#define MSG_DODGED 3
#define MSG_ALTERHP 4
#define MSG_ICS 1
#define MSG_CHARACTER 2
class cApp;
// The message header structure used in all messages
typedef struct {
long Type; // Type of message (MSG_*)
long Size; // Size of data to send
union{
DPNID PlayerID; // Player performing action
long ID;
};
} sMessageHeader;
// The message queue message structure
typedef struct {
sMessageHeader Header; // Message header
char Data[512]; // Message data
} sMessage;
// The message queue message structure
typedef struct {
sMessageHeader Header; // Message header
long FileSize;
char FileType;
char Data[500]; // Message data
} sFileMessage;
// Request a player DPNID from server message
typedef struct {
sMessageHeader Header; // Message header
} sAssignPlayerIDMessage;
// Create a player message
typedef struct {
sMessageHeader Header; // Message header
float XPos, YPos, ZPos; // Create player coordinates
float Direction; // Direction of player
long Definition;
long Type;
long AI;
long Action;
char Name[32];
} sCreatePlayerMessage;
// Request player information message
typedef struct {
sMessageHeader Header; // Message header
DPNID PlayerID; // Which player to request
} sRequestPlayerInfoMessage;
// Destroy a player message
typedef struct {
sMessageHeader Header; // Message header
} sDestroyPlayerMessage;
// Change in state message
typedef struct {
sMessageHeader Header; // Message header
long Action; // State message (STATE_*)
union{
float Direction; // Player facing direction
long AttackerDpnid; // Spell target coords
};
} sStateChangeMessage;
// Change in state message
typedef struct {
sMessageHeader Header; // Message header
long Experience; // State message (STATE_*)
} sReliveChangeMessage;
// Change in state message
typedef struct {
sMessageHeader Header; // Message header
float XPos, YPos, ZPos; // Player coordinates
float Direction; // Player facing direction
long Time; // Time of last state update
} sRoutineChangeMessage;
// Change in spell message
typedef struct {
sMessageHeader Header; // Message header
long SpellNum, SpellTarget; // Player coordinates
float TargetX, TargetY, TargetZ; // Spell target coords
//float Direction; // Player facing direction
} sSpellChangeMessage;
// Change in spell message
typedef struct {
sMessageHeader Header; // Message header
long VictimDpnid; // State message (STATE_*)
// long AttackerDpnid; // Spell target coords
//float Direction; // Latency value of connection
} sAttackChangeMessage;
// Change in spell message
typedef struct {
sMessageHeader Header; // Message header
long EffectType;
long HealthPoints;
long ManaPoints;
long VictimDpnid; // State message (STATE_*)
long AlterHPAmount;
} sAlterEffectMessage;
// Change in spell message
typedef struct {
sMessageHeader Header; // Message header
long ItemNum;
BOOL IsAdd;
long TargetDpnid;
} sItemChangeMessage;
///////////////////////////////////////////////////////////
// Proc Message
///////////////////////////////////////////////////////////
// The message queue message structure
typedef struct {
sMessageHeader Header; // Message header
long Time;
} sTimeMessage;
// Request a player DPNID from server message
typedef struct {
sMessageHeader Header; // Message header
} sAssignPlayerIDProcMessage;
// Create a player message
typedef struct {
sMessageHeader Header; // Message header
float XPos, YPos, ZPos; // Create player coordinates
float Direction; // Direction of player
long Definition;
long Type;
long AI;
long Action;
char Name[32];
} sCreatePlayerProcMessage;
// The message queue message structure
typedef struct {
sMessageHeader Header; // Message header
long FileSize;
char FileType;
char Data[500]; // Message data
} sFileProcMessage;
// Destroy a player message
typedef struct {
sMessageHeader Header; // Message header
} sDestroyPlayerProcMessage;
// Change in state message
typedef struct {
sMessageHeader Header; // Message header
long Time; // Time of last state update
long Action; // State message (STATE_*)
union{
float Direction; // Player facing direction
long AttackerID; // Spell target coords
};
} sStateChangeProcMessage;
// Change in state message
typedef struct {
sMessageHeader Header; // Message header
float XPos, YPos, ZPos; // Player coordinates
float Direction; // Player facing direction
} sRoutineChangeProcMessage;
// Change in spell message
typedef struct {
sMessageHeader Header; // Message header
long Time; // Time of last state update
long SpellNum, SpellTarget; // Player coordinates
float TargetX, TargetY, TargetZ; // Spell target coords
// float Direction; // Player facing direction
} sSpellChangeProcMessage;
// Change in state message
typedef struct {
sMessageHeader Header; // Message header
long Experience; // State message (STATE_*)
} sReliveChangeProcMessage;
// Change in spell message
typedef struct {
sMessageHeader Header; // Message header
long Time; // Time of last state update
long VictimID; // State message (STATE_*)
// long AttackerDpnid; // Spell target coords
//float Direction; // Latency value of connection
} sAttackChangeProcMessage;
// Change in spell message
typedef struct {
sMessageHeader Header; // Message header
long Time; // Time of last state update
long EffectType;
long HealthPoints;
long ManaPoints;
long VictimID; // State message (STATE_*)
long AlterHPAmount;
} sAlterEffectProcMessage;
///////////////////////////////////////////////////////////
// Client class definition
///////////////////////////////////////////////////////////
class cClient : public cNetworkClient
{
private:
BOOL ConnectComplete(DPNMSG_CONNECT_COMPLETE *Msg);
BOOL Receive(DPNMSG_RECEIVE *Msg);
public:
cApp *m_App;
BOOL m_Connected; // Connection status
BOOL SetData(cApp *App);
cClient(){
m_Connected = FALSE;
}
};
struct evenDpnidPlayer
{
DPNID value;
evenDpnidPlayer(const DPNID& val){
value = val;
}
bool operator()(const sMessage& p) const{
return p.Header.PlayerID == value;
}
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -