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

📄 nationsys.h

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

	inline t_CommanderInformation*		GetCommanderInfo(int Kind) 
												{ return &m_tSquad[Kind].Commander; }
	inline t_CommanderInformation*		GetCandidaterInfo(int Kind,int CandidaterNo) 
												{ return &m_tSquad[Kind].Candidater[CandidaterNo];}
	inline void		IncCommanderVoteData(int Kind,int CandidaterNo) 
												{ m_tSquad[Kind].Candidater[CandidaterNo].VoteCount++; }
	inline int		GetCommanderVoteData(int Kind,int CandidaterNo) 
												{ return m_tSquad[Kind].Candidater[CandidaterNo].VoteCount; }
	bool			CanRegCommanderCandidater(int Kind,int CandidaterNo);
	void			SetCandidaterInfo(int Kind,int CandidaterNo,t_CommanderInformation* CandidaterInfo);

	void			AllGuardStoneWasBroked(); // 傈里铰菩狼 搬沥..
	void			ProcessNationWarEnd(bool AttackerWin);    //傈里狼 贸府 //牢磊 妮鸥涝.. 矫埃, 荐龋籍..

	void			FirstMakeWeaponData();
	void			MakeWeaponData();   //NPC积己
  void      WeaponDataList();   // 叼滚弊侩

	void			GiveSquadPoint2Other(int cn,int Point);
	void			GiveGuildPoint2Other(int cn,int Point);
	void			ReturnFame();		// 目池记捞 够 何继促搁 蔼阑 府畔茄促.
	void			CalcFame(bool AttackerWin);		// FAME拌魂 

	void			SendCheckWarfieldStatus();
	void			SendWarfieldStatus();
	void			ChangeWarfieldStatus(int Result);
	void			SendCMD_REQUEST_VOTE_RESULT();
	void			RecvCMD_ANSWER_VOTE_RESULT(t_packet *p, t_connection c[], int cn );
	void			SendStartUpMapPossession();
	void			SendMapPossessChanged();

	void			ClearAllSquad(int Nation);
	void			MoneySpread(double TotalMoney);

	void			DisplaySquadMember(int Type,int SquadNo); 
	void			DisplayMember(SquadList* g_SquadList);
	void			DeleteSquadMember(const int cn); //020903 lsw
	void			DeleteSquadMember(const int Type,const int SquadNo,const int ID);
	void			DeleteMember(SquadList* g_SquadList,int ID); // Type : Attacker, Defender
	void			SendSquadMessage(int Type,int SquadNo,t_packet* p);
	void			SendMessage(SquadList* g_SquadList,t_packet* p);
	void			DeleteSquadHash(SquadList* g_SquadList);
	void			DeleteAllSquadMember();
	void			InsertSquadMember(int cn,int Status=1);
	void			InsertSquadMember(int Type,int SquadNo,int ID,int Status=1); // Type : Attacker, Defender, Reinforce, Commander
	void			InsertMember(SquadList* g_SquadList,int ID,int Status=1); 

	void			DeleteAllKiller();
	void			DeleteKiller(char* Name);
	void			InsertKiller(char* Name,int KillSprNo);
	void			DeleteAllMonsterData();
	void			InsertMonsterData(t_WeaponStruct Monster);

	void			CommanderEnter(int Type);
	void			CommanderLeave(int Type);
	void			SquadLeaderEnter(int Type,int SquadNo);
	void			SquadLeaderLeave(int Type,int SquadNo);

	inline bool		CommanderExist(int Type)				{ return m_bCommanderExist[Type]; }
	inline bool		SquadLeaderExist(int Type,int SquadNo)	{ return m_bSquadLeaderExist[Type][SquadNo]; }

	inline const char*	GetCommanderName(int Kind)			{ return m_tSquad[Kind].Commander.CO_Name; }
	inline const char*	GetCandidaterName(int Kind,int CandidaterNo) 
															{ return m_tSquad[Kind].Candidater[CandidaterNo].CO_Name; }
	inline const int	GetCandidaterVoteCount(int Kind,int CandidaterNo) 
															{ return m_tSquad[Kind].Candidater[CandidaterNo].VoteCount; }

	void			ActiveBonusTime();
	void			FirstMakeMonster();
	void			MakeMonster();
	void			PrepareSquadForWar();
	inline bool		isBonusTime()							{ return m_bBonusActive; }

	SquadList*		GetSquadListPointer(int iBattleType, int iSqaudNo) 
															{
																switch(iBattleType)
																{
																case NW_ATTACKER:
																	return &g_AttackSquadList[iSqaudNo];
																case NW_DEFENCER:
																	return &g_DefenceSquadList[iSqaudNo];
																case NW_REINFORCE:
																	return &g_ReinforceSquadList[iSqaudNo];
																}
																return NULL;
															}

	inline void		IncKilledCount(int Kind)				{ m_KilledCount[Kind]++; }
	inline int		GetKilledCount(int Kind)				{ return m_KilledCount[Kind]; }

	inline POINTS	GetLivePoints(int Kind)					{ return m_LivePoints[Kind]; }		// 011015 LTS
	inline char		GetSquadLoadingPoint(int Kind,int SquadNo) 
															{ return m_tSquad[Kind].SquadInfo[SquadNo].LoadingPoint; }
	inline char		GetSquadRareSok(int Kind,int SquadNo,int SokNo) 
															{ return m_tSquad[Kind].SquadInfo[SquadNo].Sok[SokNo]; } //裹困俊矾 
	inline char*	GetSquadRareSok2(int Kind,int SquadNo)	{ return m_tSquad[Kind].SquadInfo[SquadNo].Sok; } //裹困俊矾 
	inline void		SetSquadRareSok(int Kind,int SquadNo,int SokNo,int Sok) 
															{ m_tSquad[Kind].SquadInfo[SquadNo].Sok[SokNo]=Sok; }
	char*			GetLeadCandidaterName(int Kind);
	inline bool		ElectCommander()						{ return m_bRequestCommanderVotingResult; }
	inline bool		CheckSecretPlaceOpen()					{ return m_bBonusActive; }
	inline void		SetRemainTime(DWORD RemainTime)			{ m_dRemainTime=RemainTime;}
	inline DWORD	GetRemainTime()							{ return m_dRemainTime; }
	DWORD			GetWarLoopTime();						// 011025 LTS
	void			SetWarLoopTime(DWORD LoopTime);		// 011025 LTS
	inline void		SetSecretOpen(bool isActive)			{ m_bBonusActive=isActive; }	// 011025 LTS

	void			SendSecretActiveMessage2Manager();
	void			InitWarLoopDefine();									// 011101 LTS
	void			IncNationMemberCount(int Nation);
	void			DecNationMemberCount(int Nation);
	int				GetNationMemberCount(int Nation);
	int				GetNationMemberMax(int Nation);
	void			ClearGainedFame();
	void			CalcNationWar_Exp();

	void			UpdateProgressofWar();										// LTS NEW_NATION_WAR
	void			UpdateStatusofWar();										// LTS NEW_NATION_WAR
	void			SetStatusVote();													// LTS NEW_NATION_WAR
	void			LoopTimeChange(t_packet* p);



public:
  cWarfield& operator[](int nIndex);
};

struct tSealStoneIndex															// LTS NEW LOCALWAR
{
	int SealStoneNo;
	int Status;
	int Hp; // 030516 kyo
};


class cNation
{
	cWarfield*					Warfield;
	cLocalWarfield*				LocalWarfield;					// LTS LOCALWAR

	int							m_VoteData[NW_WARFIELD_COUNT];
	DWORD						m_WarNo;

	int							m_LocalWarfieldSize;				

	int							m_LocalWarStart;					//惫瘤傈捞 矫累登菌促.
	int							m_WarStart;
	unsigned short				m_LocalWarPoint[NW_NATION_COUNT];	// BY,ZY,YL LocalWar Point	// 020130 LTS
	__int64						g_LocalWarRemainTime;				// 020115 LTS

	tSealStoneIndex				LocalWarSealStoneStatus[3][9];					// LTS NEW LOCALWAR
	unsigned short				m_LocalWarDefencePoint[3];							// LTS NEW LOCALWAR
	int							m_LocalWarResult[3];								// LTS NEW LOCALWAR
	unsigned short				m_nAllLocalWarSealStoneHP[3];		// 惫瘤傈 葛电 搬拌籍HP荐

	LP_START_WAR_TIME			m_pStartWarTime;									// LTS NEW_NATION_WAR
	int							m_iStartWarTimeCount;								// LTS NEW_NATION_WAR
	TimeData					m_tTimeData;										// LTS NEW_NATION_WAR

	LP_START_WAR_TIME			m_pNewStartWarTime;									// LTS NEW_NATION_WAR
	int							m_iNewStartWarTimeCount;

	int							m_NewWarfieldStatus[MAX_NEW_WARFIELD];				// LTS NEW_NATION_WAR
	DWORD						m_NewWarfieldRemainTime[MAX_NEW_WARFIELD];

	inline int		GetPointMAXIndex(unsigned short Point[3]);										// LTS NEW LOCALWAR	
	inline int		GetPointMAXIndex();										//030505 kyo 茄锅父俊 惫瘤傈铰府惫啊甫 府畔茄促.
	inline int		GetPointEqual(int Index,unsigned short Point[3]);								// LTS NEW LOCALWAR	
	inline int		GetLPointEqual(int Index,unsigned short Point[3],unsigned short DPoint[3]);				// LTS NEW LOCALWAR	

public :

	cNation();
	~cNation();

	bool InitNation();
	bool LoadWarfieldData();
	bool InitLocalWarfield();

	void SetWarFieldStatus(int WarfieldNo,int Status);
	void CheckWarFieldStatus(int WarfieldNo,int Status);
	int  GetWarfieldStatus(int WarfieldNo);

	void			CheckStartWarfieldWar();						// New		Day of Week
	void			CheckAndActive(int Index);
	void			NewCheckAndActive(int Index);
	void			GetDayofWeek();

	int  GetVoteData(int WarfieldNo) { return m_VoteData[WarfieldNo]; }
	void IncVoteData(int WarfieldNo) { m_VoteData[WarfieldNo]++; }
	void InitVoteData(int WarfieldNo) { m_VoteData[WarfieldNo]=0; }

	void ClearWarfieldData(int Warfieldno);

	DWORD GetWarCount() { return (DWORD)m_WarNo%128; }
	int   GetWarNo()  { return m_WarNo; }

	int GetSquadKind(int Nation,int WarfieldNo)
	{
		int tempNation=Warfield[WarfieldNo].GetNationCode();
		if (Nation==NW_YL) return NW_REINFORCE;
		if (Nation==tempNation) return NW_DEFENCER;
		else return NW_ATTACKER;
	}

	int GetAttacker(int WarfieldNo)
	{
		if (Warfield[WarfieldNo].GetNationCode()==NW_BY) return NW_ZY;
		else return NW_BY;
	}

	int GetDefender(int WarfieldNo)
	{
		if (Warfield[WarfieldNo].GetNationCode()==NW_BY) return NW_BY;
		else return NW_ZY;
	}

	int GetReinforce(int WarfieldNo)
	{
		return NW_YL;
	}

	int GetNation(int WarfieldNo,int Kind)
	{
		int tempNation=Warfield[WarfieldNo].GetNationCode();
		switch(Kind)
		{
		case NW_ATTACKER :
			if (tempNation==NW_BY) return NW_ZY;
			else return NW_BY;
			break;
		case NW_DEFENCER :
			return tempNation;
			break;
		case NW_REINFORCE :
			return NW_YL;
			break;
		}
	}

	t_SquadInformation*	GetSquadInfo(int Nation,int WarfieldNo,int SquadNo) 
	{ 
		return Warfield[WarfieldNo].GetSquadInfo(GetSquadKind(Nation,WarfieldNo),SquadNo); 
	}

    void IncSquadMemberCount(int Nation,int WarfieldNo,int SquadNo) 
	{ 
		Warfield[WarfieldNo].IncSquadMemberCount(GetSquadKind(Nation,WarfieldNo),SquadNo); 

	}
	void DecSquadMemberCount(int Nation,int WarfieldNo,int SquadNo) 
	{ 
		Warfield[WarfieldNo].DecSquadMemberCount(GetSquadKind(Nation,WarfieldNo),SquadNo); 
	}
	int GetSquadMemberCount(int Nation,int WarfieldNo,int SquadNo) 
	{ 
		return Warfield[WarfieldNo].GetSquadMemberCount(GetSquadKind(Nation,WarfieldNo),SquadNo); 
	}
	void SetSquadLoadingPoint(int Nation,int WarfieldNo,int SquadNo,int LoadingPoint) 
	{ 
		Warfield[WarfieldNo].SetSquadLoadingPoint(GetSquadKind(Nation,WarfieldNo),SquadNo,LoadingPoint); 
	}
	void SetSquadLeader(int Nation,int WarfieldNo,int SquadNo,t_CommanderInformation* SquadLeaderInfo) 
	{ 
		Warfield[WarfieldNo].SetSquadLeader(GetSquadKind(Nation,WarfieldNo),SquadNo,SquadLeaderInfo); 
	}

	t_CommanderInformation* GetCommanderInfo(int Nation,int WarfieldNo) 
	{ 
		return Warfield[WarfieldNo].GetCommanderInfo(GetSquadKind(Nation,WarfieldNo)); 
	}

	t_CommanderInformation* GetCommanderInfoByKind(int Kind,int WarfieldNo) 
	{ 
		return Warfield[WarfieldNo].GetCommanderInfo(Kind); 
	}

	t_CommanderInformation* GetCandidaterInfo(int Nation,int WarfieldNo,int CandidaterNo) 
	{ 
		return Warfield[WarfieldNo].GetCandidaterInfo(GetSquadKind(Nation,WarfieldNo),CandidaterNo); 
	}
	void IncCommanderVoteData(int Nation,int WarfieldNo,int CandidaterNo) 
	{ 
		Warfield[WarfieldNo].IncCommanderVoteData(GetSquadKind(Nation,WarfieldNo),CandidaterNo); 
	}
	int GetCommanderVoteData(int Nation,int WarfieldNo,int CandidaterNo) 
	{ 
		return Warfield[WarfieldNo].GetCommanderVoteData(GetSquadKind(Nation,WarfieldNo),CandidaterNo); 
	}
	int GetCommanderVoteDataByKind(int WarfieldNo,int Kind,int CandidaterNo)
	{
		return Warfield[WarfieldNo].GetCommanderVoteData(Kind,CandidaterNo);
	}
	bool CanRegCommanderCandidater(int Nation,int WarfieldNo,int CandidaterNo) 
	{ 
		return Warfield[WarfieldNo].CanRegCommanderCandidater(GetSquadKind(Nation,WarfieldNo),CandidaterNo); 
	} 
	void SetCandidaterInfo(int Nation,int WarfieldNo,int CandidaterNo,t_CommanderInformation* CandidaterInfo) 
	{ 
		Warfield[WarfieldNo].SetCandidaterInfo(GetSquadKind(Nation,WarfieldNo),CandidaterNo,CandidaterInfo); 
	}
	void SetCommander(int WarfieldNo,int Kind,int CandidaterNo)
	{
		Warfield[WarfieldNo].SetCommander(Kind,CandidaterNo);
	}

	int  GetWarfieldNationCode(int WarfieldNo) { return Warfield[WarfieldNo].GetNationCode(); }
	int  GetWarfieldNationCode() 
	{
		if (Warfield[0].GetStatus()>=2) return Warfield[0].GetNationCode();
		if (Warfield[1].GetStatus()>=2) return Warfield[1].GetNationCode();
		if (Warfield[2].GetStatus()>=2) return Warfield[2].GetNationCode();
	}
	void SetWarfieldNationCode(int WarfieldNo,int Code) {Warfield[WarfieldNo].SetNationCode(Code); }

	const char* GetCommanderName(int WarfieldNo,int Nation) { return Warfield[WarfieldNo].GetCommanderName(GetSquadKind(Nation,WarfieldNo)); }
	const char* GetCandidaterName(int WarfieldNo,int Nation,int CandidaterNo) { return Warfield[WarfieldNo].GetCandidaterName(GetSquadKind(Nation,WarfieldNo),CandidaterNo); }
	const int GetCandidaterVoteCount(int WarfieldNo,int Nation,int CandidaterNo) { return Warfield[WarfieldNo].GetCandidaterVoteCount(GetSquadKind(Nation,WarfieldNo),CandidaterNo); }
	char GetSquadLoadingPoint(int WarfieldNo,int Kind,int SquadNo) { return Warfield[WarfieldNo].GetSquadLoadingPoint(Kind,SquadNo); }
	char GetSquadRareSok(int WarfieldNo,int Kind,int SquadNo,int SokNo) { return Warfield[WarfieldNo].GetSquadRareSok(Kind,SquadNo,SokNo); }
	char* GetSquadRareSok2(int WarfieldNo,int Kind,int SquadNo) { return Warfield[WarfieldNo].GetSquadRareSok2(Kind,SquadNo); }

	char* GetLeadCandidaterName(int WarfieldNo,int Kind)
	{
		return Warfield[WarfieldNo].GetLeadCandidaterName(Kind);
	}

	bool ElectCommander(int WarfieldNo) { return Warfield[WarfieldNo].ElectCommander(); }
	bool CheckSecretPlaceOpen(int WarfieldNo) { return Warfield[WarfieldNo].CheckSecretPlaceOpen(); }
	bool CheckSecretPlaceOpen()
	{
		if (Warfield[0].CheckSecretPlaceOpen()) return true;
		if (Warfield[1].CheckSecretPlaceOpen()) return true;
		if (Warfield[2].CheckSecretPlaceOpen()) return true;
		if (m_NewWarfieldStatus[0]==NW_SOPEN) return true;
		return false;

⌨️ 快捷键说明

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