⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 server.h

📁 这是一个服务端/客户端模式的小型网络游戏
💻 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 + -