📄 server.h
字号:
#ifndef _SERVER_H_
#define _SERVER_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
// 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
} sAddPlayerProcMessage;
// Request player information message
typedef struct {
sMessageHeader Header; // Message header
long ID; // Which player to request
} sRequestPlayerInfoProcMessage;
// 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_*)
float Direction; // Player facing direction
} 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 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 ItemNum;
BOOL IsAdd;
long TargetDpnid;
} sItemChangeProcMessage;
///////////////////////////////////////////////////////////////////
// Server class definition
///////////////////////////////////////////////////////////////////
class cServer : public cNetworkServer
{
public:
LPCRITICAL_SECTION m_MessageCS;
// Functions to siphon network messages to application
BOOL CreatePlayer(DPNMSG_CREATE_PLAYER *Msg);
BOOL DestroyPlayer(DPNMSG_DESTROY_PLAYER *Msg);
BOOL Receive(DPNMSG_RECEIVE *Msg);
// Functions to process queued network messages
BOOL QueueMessage(void *Msg);
BOOL Free();
// Send a network message to client(s)
BOOL SendNetworkMessage(void *Msg, long SendFlags = 0, \
int To = -1);
cServer();
void init(LPCRITICAL_SECTION MessageCS);
sMessage *m_Messages; // Message queue
long m_MsgHead; // Head of message list
long m_MsgTail; // Tail of message list
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -