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

📄 nationsys.h

📁 国内著名网络游戏dragon的服务端完整源码 内附完整数据库结构
💻 H
📖 第 1 页 / 共 3 页
字号:
#ifndef _NATION_SYS_H_
#define _NATION_SYS_H_

#include "NationSys_Define.h"
#include "LTSSupport.h"
#include "WarStartInfo.h"

#define MAX_WARTIME_COUNT			30
#define	GIVE_FAME_RANGE				15

typedef struct MonPoint
{
	int		MonsterIndex;
	int		Size;
	POINTS* Points;
}	t_MonPoint;


// Structure Squad Infomation
typedef struct SquadInformation_P
{
	char	SquadNo;
	int		CO_ID;
	char	CO_Name[NW_NAME_MAX];
	int		SoliderCount;
	char	Sok[NW_SQUAD_RARE_MAX];
	char	LoadingPoint;
} t_SquadInformation;


// Structure Commander or Commander Candidate
typedef struct CommanderInformation_P
{
	char		VoteNo;
	int			CO_ID;
	char		CO_Name[NW_NAME_MAX];
	BYTE		btLevel; // CSD-030806
	short		Fame;
	short int	Face;
	short int	Gender;
	short int	Class;
	__int8		nDual;					// 011020 LTS
	__int8		nStep;					// 011020 LTS
	DWORD		LadderScore;
	WORD		VoteCount;
} t_CommanderInformation;

typedef struct WeaponStruct_P
{
	int		NPC_ID;
	int		MonPointIndex;
	int		NPC_Index;
	int		Phase;			// 011022 LTS
	int		Locationx;
	int		Locationy;
	int		EventNo;
	int		GenerationPos;
	int		GenerationType;
	int		Status;
}	t_WeaponStruct;

typedef	struct MWarfield
{
	char	Status;
	int		Possession;
}	t_Warfield;

typedef struct DeadWeapon_P
{
	char	NPCCount;
	int*	NPC_ID;
} t_DeadWeapon;



class SquadMember
{
	int		m_iData;
	char	m_cStatus;

public :
	SquadMember(){}
	SquadMember(int i) { m_iData=i;}
	SquadMember(int i,int Status) {m_iData=i; m_cStatus=Status; }
	~SquadMember() {}
	void SetData(int i)	{ m_iData=i;}
	int  GetData()	{ return m_iData; }
	void SetStatus(int i)	{ m_cStatus=i; }
	int	GetStatus()	{ return m_cStatus; }
};

class cKiller
{
	char	m_sUserName[20];
	WORD	m_wKillSprNo;
public :
	cKiller(){}
	cKiller(char* Name,int SprNo) { strcpy(m_sUserName,Name); m_wKillSprNo=SprNo; }
	~cKiller() {}
	void SetUserName(char* Name) { strcpy(m_sUserName,Name); }
	void SetKillSprNo(int SprNo) { m_wKillSprNo=SprNo; }
	const char* GetUserName() { return m_sUserName; }
	int GetKillSprNo() { return m_wKillSprNo; }
};

class cMonster			
{
	t_WeaponStruct	Data;

public :
	cMonster(){}
	cMonster(t_WeaponStruct Monster) 
	{
		Data.NPC_ID=Monster.NPC_ID;
		Data.MonPointIndex=Monster.MonPointIndex;
		Data.NPC_Index=Monster.NPC_Index;
		Data.Locationx=Monster.Locationx;
		Data.Locationy=Monster.Locationy;
		Data.EventNo=Monster.EventNo;
		Data.GenerationPos=Monster.GenerationPos;
		Data.GenerationType=Monster.GenerationType;
		Data.Status=Monster.Status;
	}
	~cMonster(){}
	int GetMonsterID() { return Data.NPC_ID; }
	void SetMonsterID(int ID) { Data.NPC_ID=ID; } 
	t_WeaponStruct GetMonsterData() { return Data; } 
};



// Class cWarfield 

typedef struct Squad_P
{
	t_CommanderInformation			Commander;							// Commander
	t_CommanderInformation			Candidater[NW_CANDIDATE_MAX];		// Candidater
	t_SquadInformation				SquadInfo[NW_SQUAD_MAX];			// Squad Information
	SquadMember*					SquadDataLink[NW_SQUAD_MAX];		// Squad Hash
} t_Squad;


struct MonPoint2
{
	int Size;
	POINTS* MPoint; 
};

struct MonsterPoints2
{
	int CastleGateWayNo;
	int MonsterIndex;
	int locationX;
	int LocationY;
	MonPoint2* MonsterPoint;
	MonPoint2* EMonsterPoint;
};

using namespace std;


typedef list<SquadMember*> SquadList;
typedef list<cKiller*> KillerList;
typedef list<cMonster*> MonsterList;

typedef SquadList::iterator SquadListItor; // STL List
typedef KillerList::iterator KillerListItor;
typedef MonsterList::iterator MonsterListItor;

struct LoopTimeDefine						// 011101 LTS
{
	DWORD	NWPeaceTime1;		// 傈里饶狼 乞拳矫埃 
	DWORD	NWPeaceTime2;		// 魂吝傈里磐狼 弥檬 傈里风橇 矫累矫埃 
	DWORD	NWPeaceTime3;		// 乞盔傈里磐狼 弥檬 傈里风橇 矫累矫埃 
	DWORD	NWPeaceTime4;		// 级  傈里磐狼 弥檬 傈里风橇 矫累矫埃 
	DWORD	NWVoteTime;			// 傈里 捧钎 矫埃
	DWORD	NWPrepareTime;		// 傈里 霖厚 矫埃 
	DWORD	NWWarTime;			// 傈里 矫埃 
	DWORD	NWBonusTime;		// 厚剐瘤开 坷锹矫埃
	DWORD	NWVoteMin;			// 捧钎 弥家牢盔			// LTS LOCALWAR
	WORD	NWBYJoinMAX;		// 傈里磐 曼咯牢盔 官捞 钙胶
	WORD	NWZYJoinMAX;		// 傈里磐 曼咯牢盔 磊捞 钙胶
	WORD	NWYLJoinMAX;		// 傈里磐 曼咯牢盔 老胶 钙胶
};

typedef struct StartWarTime
{
	int DayofWeek;
	int DHour;
}* LP_START_WAR_TIME;

class cWarfield
{
	// Lopp Concern
	char			m_cLoopActive;										//傈里狼 风橇甫 牧飘费 茄促.
	__int64			m_LoopTime;										// 傈里狼 林风橇 鸥烙
	char			m_Status;										// 傈里磐狼 惑怕
	bool			m_bRequestCommanderVotingResult;				// 荤飞包 捧钎 搬苞甫 夸没沁唱?

	bool			m_bBonusActive;									// 焊呈胶甘狼 咀飘宏 惑怕 
	__int64			m_dBonusLoopTime;								// 焊呈胶 甘狼 风橇鸥烙 
	DWORD			m_dRemainTime;

	LoopTimeDefine	m_LoopTimeDefine;							// 傈里风橇狼 沥狼 MapServer.ini俊 沥狼 // 011101 LTS

	// Data Concern //肺爹矫 DB俊辑 佬绢坷绰 何盒捞促. 

	int				m_WarfieldCode;									// 傈里磐 锅龋
	int				m_MapPortNum;									// 器飘锅龋
	char			m_pWarfieldName[NW_NAME_MAX];					// 傈里磐 捞抚
	int				m_NationCode;									// 家蜡 惫啊
	DWORD			m_dwStartDateTime;								// 傈里矫累矫埃
	DWORD			m_dwEndDateTime;								// 傈里辆丰矫埃
	DWORD			m_dwNextDateTime;								// 促澜 傈里矫累矫埃

	char			m_cNpcCount;									// 己巩, 荐龋籍狼 墨款飘

	char			m_cGuardStoneCount;								// 荐龋籍 墨款飘
	char			m_cCastleDoorCount;								// 己巩墨款飘

	char			m_cGuardStoneBossCount;							// 空荐龋籍 墨款飘

	char			m_cGuardStoneBrokenCount;						// 何辑柳 荐龋籍 墨款飘
	char			m_cCastleDoorBrokenCount;						// 何辑柳 己巩 墨款飘

	bool			m_bAttackerWin;									// 傍拜磊啊 捞板绰啊?
	bool			m_bFirstMakeMonster;							// 阁胶磐啊 傈俊 父甸绢 脸绰啊?

	POINTS			m_LivePoints[NW_SQUAD_KIND];					// 傍拜磊 规绢磊狼 蜡飞 混酒唱绰 器牢飘		// 011015 LTS


	// Squad Concern

	t_Squad			m_tSquad[NW_SQUAD_KIND];						// NW_ATTACKER, NW_DEFENCER, NW_REINFORCE		// 何措包访
	t_WeaponStruct	m_tWeaponData[NW_MAX_NPC];						// 己巩,荐龋籍 包访
	t_MonPoint		m_tMonsterPoint[MAX_MONSTER_POINT];				// 己巩狼 困摹 棺 捣飘狼 困摹 	

	SquadList		g_AttackSquadList[NW_SQUAD_MAX];				// 泅犁 甘俊 乐绰 傍拜磊 府胶飘
	SquadList		g_DefenceSquadList[NW_SQUAD_MAX];				// 规绢磊 府胶飘
	SquadList		g_ReinforceSquadList[NW_SQUAD_MAX];				// 瘤盔焙 府胶飘
	SquadList		g_CommanderList[NW_SQUAD_KIND];					// 何措厘 , 荤飞包 府胶飘

	KillerList		g_KillerList;									// 己巩, 荐龋籍阑 何鉴 荤恩 府胶飘	
	MonsterList		m_MonsterList;									// 老矫利栏肺 积己登绰 阁胶飘狼 府胶飘 焊呈胶 鸥烙俊..

	int				g_SquadCount[NW_SQUAD_KIND][NW_SQUAD_MAX];		// 何措喊 甘 牢盔 墨款飘 
	int				m_JoinSquadCount[NW_SQUAD_KIND];				// 老胶狼 何措 墨款飘		// 011016 LTS


	MonsterPoints2	m_MonsterPoint2;								//阁胶磐 器牢飘 犬厘侩

	bool			m_bCommanderExist[NW_SQUAD_KIND];					// 傈里磐俊 何措厘捞 粮犁
	bool			m_bSquadLeaderExist[NW_SQUAD_KIND][NW_SQUAD_MAX];	// 傈里磐俊 荤飞包捞 粮犁 困酒贰 官柴
	DWORD			m_KilledCount[NW_SQUAD_KIND];

	WORD			m_NationMemberCount[3];							// 官捞 磊捞 老胶狼 糕滚墨款飘	// 011218 LTS


public :

	cWarfield();
	~cWarfield();

	bool			InitWarfield();
	bool			LoadWarfieldData(WORD PortNum);
	bool			LoadWarfieldWeaponData(WORD PortNum);
	bool			LoadWarfieldMonsterData(WORD PortNum);
	bool			LoadMonsterPoint();								//颇老肚绰 单捞磐 海捞胶..
//	bool			LoadNationWar_Exp();							// LTS NEW LOCALWAR
	void			InitWarLoop();
	void			Destroy();
	void			UpdateWarfieldStatus();							// OLD		LoopTime
	void			WarUpdate();
	void			ClearCommander();
	void			ClearCommander(int Kind);
	void			ClearSquadCount();

	inline int		GetLoopActive()				{ return m_cLoopActive; }
	inline void		SetLoopActive(bool Active)	{ m_cLoopActive=Active; }
	inline DWORD	GetLoopTime()				{ return m_LoopTime; }

	inline int		GetNationCode()				{ return m_NationCode; }
	inline void		SetNationCode(int Code)		{ m_NationCode=Code; }
	inline int		GetWarfieldCode()			{ return m_WarfieldCode; }

	inline void		SetTileDont(int MonNo,int type);
	void			CheckCastleGateWay();
	void			CheckGroup(SquadList* g_SquadList);
	void			CheckCommanderGroup();
	void			SendTileDont(t_packet *p, t_connection c[], int cn );
	void			SendAllTileDont(int type);
	void			SendTileDontChange(int MonNo,int type);

	void			KickDefeatUser2Home();


	void			SetStatus(char Status);
	char			GetStatus() { return m_Status; }

	inline int		GetGuardStoneCount()		{ return m_cGuardStoneCount; }
	inline int		GetCastleDoorCount()		{ return m_cCastleDoorCount; }

	inline int		GetNpcCount()				{ return m_cNpcCount; }
	inline int		GetWeaponIndex(int No)		{ return m_tWeaponData[No].NPC_Index; }
	inline int		GetWeaponStatus(int No)		{ return m_tWeaponData[No].Status; }

	inline int		GetAllSquadCurrentMemberCount(int Kind) 
												{
													int temp=0;
													temp+=g_SquadCount[Kind][0];	// LOOP UNROLL
													temp+=g_SquadCount[Kind][1];	// NW_SQUAD
													temp+=g_SquadCount[Kind][2];
													temp+=g_SquadCount[Kind][3];
													temp+=g_SquadCount[Kind][4];
													temp+=m_JoinSquadCount[Kind];
													return temp;
												}
	inline int		GetSquadCurrentMemberCount(int Kind,int SquadNo)
												{return g_SquadCount[Kind][SquadNo];}

	
	t_SquadInformation*			GetSquadInfo(int Kind,int SquadNo);	// Kind : 0 : Attack, 1: Defence, 2:Reinforce

	void			InitSquad();

    inline void		IncSquadMemberCount(int Kind, int SquadNo)			// 何措祈己矫 (傈里惑炔捞 酒匆锭..) 祈己牢盔 刘啊
												{m_tSquad[Kind].SquadInfo[SquadNo].SoliderCount++;}
	inline void		DecSquadMemberCount(int Kind, int SquadNo)			// 何措祈己矫 (傈里惑炔捞 酒匆锭..) 祈己牢盔 皑家
												{m_tSquad[Kind].SquadInfo[SquadNo].SoliderCount--;}
	inline int		GetSquadMemberCount(int Kind,int SquadNo) 
												{ return m_tSquad[Kind].SquadInfo[SquadNo].SoliderCount; }
	inline void		SetSquadLoadingPoint(int Kind,int SquadNo,int LoadingPoint) 
												{m_tSquad[Kind].SquadInfo[SquadNo].LoadingPoint=LoadingPoint;}
	void			SetSquadLeader(int Kind,int SqaudNo,t_CommanderInformation* SquadLeaderInfo);

	void			SetCommander(int Kind,int CandidaterNo);
	void			SetCommander(int Kind,t_CommanderInformation* Commander);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -