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

📄 player.h

📁 网络游戏魔域源代码 测试可以完整变异
💻 H
字号:
// Player.h: interface for the CPlayer class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_PLAYER_H__EF9F33AA_217F_4793_A28A_4F3C56254D27__INCLUDED_)
#define AFX_PLAYER_H__EF9F33AA_217F_4793_A28A_4F3C56254D27__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "Role.h"
#include <deque>
#include <vector>
#include "EncryptData.h"
#include "ImageString.h"
#include "FDword.h"
using namespace std;


const int RANKAMOUNT = 7;
const int FLASHCRIME_TIME= 100000; //闪蓝显示血条时间10秒
 
enum // 爵位定义
{
	CIVILIAN	=	0,	// 平民
	BARON		=	1,	// 爵士
	VISCOUNT	=	2,	// 子爵
	EARL		=	3,	// 伯爵
	MARQUESS	=	4,	// 侯爵
	DUKE		=	5,	// 公爵
};
typedef struct
{
	DWORD	dwRank;
	OBJID	idTitle;
	//char	szTitle[_MAX_NAMESIZE];
}InfoSyndicateRank;
enum 
{
		RANK_LEADER			= 100,
		RANK_ASSISTANT		= 90,
		RANK_SUBLEADER		= 80,
		RANK_SUBASSISTANT	= 70,
		RANK_TEAMLEADER		= 60,
		RANK_SAN			= 50,			// 圣骑士、光辉骑士、十字军骑士、蔷薇骑士、骑士
		RANK_LIGHT			= 40,
		RANK_CROSS			= 30,
		RANK_NEWBIE			= 20,
		RANK_RESERVED		= 10,
		RANK_NONE			= 0,
};
const InfoSyndicateRank SYNDICATERANKINFOSET[RANKAMOUNT]=
{
	{RANK_LEADER , 100079},		//军团团长 100
	{RANK_SUBLEADER ,100080},	//分团长 80
	{RANK_TEAMLEADER , 100081}, //队长 60
	{RANK_NEWBIE , 100120},		//普通团员 20
	{RANK_RESERVED , 100121},	//预备团员 10
	{RANK_NONE, 100122},		// 0
//	{RANK_LEADER, 100079},
//	{RANK_ASSISTANT, 100080},
//	{RANK_NEWBIE, 100081},
//	{RANK_NONE, 100021},
//	{RANK_SUBLEADER, 100120},
//	{RANK_SUBASSISTANT, 100122},
//	{RANK_PRESUBLEADER, 100121},
};

typedef struct{
	char	szMate[_MAX_NAMESIZE];
	DWORD	dwForce,dwDexterity,dwConstitution, dwSpeed, dwHealth, dwSoul, dwXP, dwMaxLife, dwMaxLifePercent;
	CEncryptData dataLife;
	CEncryptData dataMana;
	CEncryptData dataCurLife;
	CEncryptData dataCurMana;
	

	DWORD	dwProfession;
	DWORD	dwPhysicalForce;			// 体力值
	DWORD	dwMaxPhysicalForce;			// 最大体力值

	DWORD	dwLev;
	DWORD	dwAddPoint;
	DWORD	dwMedalSelect;
	int		nPotential;	//潜能
	int		nRepute;
	int		nDeed;
	int		nExp;
	int		nPk;
	OBJID	idSyndicate;
	UCHAR	ucSyndicateSynRank;		//军团等级
	DWORD	dwSyndicateRank;		//幻兽:幻兽主人id
	UINT	uiSyndicateLevel;		// 帮派中的等级
	int		nSyndicateProffer;
	DWORD	dwSyndicateFamer;
	char	szSyndicateLeader[_MAX_NAMESIZE];	// 帮主
	DWORD	dwSyndicateFund;			// 帮派基金
	DWORD	dwSyndicatePopulation;		// 帮派人口
	DWORD	dwKoAmount;
	DWORD	dwVirtue;
	BOOL	bShowIcon;

	DWORD	dwMercenaryLevel;			// 佣兵等级
	DWORD	dwMercenaryExp;				// 佣兵经验		
	DWORD	dwSelectHonorTitle;			// 称号、显示的称号

	DWORD	dwNobilityRank;				// 爵位
	DWORD	dwExploit;					// 功勋

	DWORD	dwTutorLevel;				//	导师等级
	int		dwTutorExp;					//	导师经验
		
	deque<CCommand> setCmd;
	vector<unsigned char>	setHonorTitle;
	vector<unsigned char>	setMedal;
}CPlayerInfo;

struct TimerCmdInfo {
	CCommand	cmd;
	DWORD		tmExecute;
	std::string	strEffect;
	std::string strSound;
};

class CPlayer: public CRole
{
public:
	enum
	{
			_PLAYER_LIFE		= 1,
			_PLAYER_CURRENTLIFE = 15,
			_PLAYER_MANA		= 9,
			_PLAYER_CURRENTMANA	= 5,
	};
	enum
	{
		PROFSORT_MAGICIAN	=1, 
		PROFSORT_SOLDIER	=2, 
		PROFSORT_ARCHER		=3, 
	};
public:
	DWORD	GetData(DWORD dwDataType);
	virtual void		SetData(DWORD dwDataType, DWORD dwData);
public:	// virtual...
	virtual void	Show		(void* pInfo);
	virtual void	Process		(void* pInfo);

	virtual DWORD	SetCommand	(CCommand* pCommand);

public:
	void SetTimerCommand	(CCommand& cmd, DWORD tmExecute, const char* pszEffect = NULL, const char* pszSound = NULL);
	void ClrTimerCommand	(void);
	bool ProcessTimerCommand(void);
	
private:
	std::list< TimerCmdInfo > m_setCmdList;
	
public:
	CPlayer();
	virtual ~CPlayer();

	static	BOOL	s_bShowName;

	void	ShowSyndicate	();
	void	ShowInfo		();
	void	ShowName		();
	void	ShowLife		();

	BOOL	IsSynLeader		()  { return (strcmp(this->GetSyndicateLeaderName(),this->GetName()) == 0);}
	BOOL	IsDead			()	{ return (this->GetStatus()&USERSTATUS_DIE) != 0; }
	BOOL	IsGhost			()	{ return (this->GetStatus()&USERSTATUS_GHOST) != 0; }

//--------- info ---------
public:

	virtual DWORD			GetHonorTitleAmount();
	virtual const char*		GetHororTitle(int nIndex);
	virtual unsigned char	GetHororTitleIndex(int nIndex);
	virtual void			AddHororTitle(int nIndex);

	virtual DWORD			GetMedalAmount();
	virtual const char*		GetMedale(int nIndex);
	virtual unsigned char	GetMedaleIndex(int nIndex);
	virtual void			AddMedaleTitle(int nIndex);

	void    SetFlashCrime();
	BOOL    IsFlashCrime();
	const CPlayerInfo* GetPlayerInfo() const {return &m_infoPlayer;}

	DWORD	GetVirtue(){return m_infoPlayer.dwVirtue;}
	void	SetVirtue(DWORD dwVirtue){m_infoPlayer.dwVirtue = dwVirtue;}
	const char*	GetMate() const {return m_infoPlayer.szMate;}
	void	SetMate(const char* pszMate);
	
	virtual DWORD	GetMercenaryLevel();
	virtual	void	SetMercenaryLevel(DWORD dwMercenaryLevel);
	virtual DWORD	GetMercenaryExp();
	virtual	void	SetMercenaryExp(DWORD dwMercenaryExp);

	virtual DWORD	GetSelectedHonorTitle();
	virtual	void	SetSelectedHonorTitle(DWORD dwSelectedTitle);

	virtual DWORD	GetNobilityRank();
	virtual	void	SetNobilityRank(DWORD dwNobilityTitle);
	virtual	char*	GetNobilityTitle();

	virtual	DWORD	GetLife();
	virtual void	SetLife(DWORD dwLife);

	virtual	DWORD	GetCurLife();
	virtual	void	SetCurLife(int nLife);

	virtual	DWORD	GetCurMana();
	virtual	void	SetCurMana(int nMana);
	
	void    SetMaxLifePercent(DWORD  dwMaxLifePercent) {m_infoPlayer.dwMaxLifePercent = dwMaxLifePercent;}
	DWORD	GetMaxLifePercent() {return m_infoPlayer.dwMaxLifePercent;}
	DWORD	GetExploit() const {return m_infoPlayer.dwExploit;}
	void	SetExploit(DWORD dwExploit) {m_infoPlayer.dwExploit = dwExploit;}

	int		GetRepute() const {return m_infoPlayer.nRepute;}
	void	SetRepute(int nRepute) {m_infoPlayer.nRepute=nRepute;}

	int		GetDeed() const	{return m_infoPlayer.nDeed;}
	void	SetDeed(int nDeed) {m_infoPlayer.nDeed=nDeed;}

	int		GetExp() const	{return (this->GetLev() >= _MAX_LEVEL ?  0 : m_infoPlayer.nExp);}
	void	SetExp(int nExp) {m_infoPlayer.nExp=nExp;}

	int		GetPk() const {return m_infoPlayer.nPk;}
	void	SetPk(int nPk) {m_infoPlayer.nPk=nPk; PostCmd(CMD_FLASHPK);}

	DWORD	GetLev() const	{return m_infoPlayer.dwLev;}
	void	SetLev(DWORD dwLev) {m_infoPlayer.dwLev = dwLev;}

	DWORD	GetForce() const {return m_infoPlayer.dwForce;}
	void	SetForce(DWORD dwForce) {m_infoPlayer.dwForce = dwForce;}
	
	DWORD   GetConstitution() const {return m_infoPlayer.dwConstitution;}
	void	SetConstitution(DWORD dwConstitution) {m_infoPlayer.dwConstitution = dwConstitution;}

//	DWORD	GetPhysique() const {return m_infoPlayer.dwPhysique;}
//	void	SetPhysique(DWORD dwPhysique) {m_infoPlayer.dwPhysique = dwPhysique;}
	
	void	SetSpeed(DWORD dwSpeed) {m_infoPlayer.dwSpeed = dwSpeed;}
	DWORD   GetSpeed() {return m_infoPlayer.dwSpeed;}

	DWORD	GetHealth() const {return m_infoPlayer.dwHealth;}
	void	SetHealth(DWORD dwHealth) {m_infoPlayer.dwHealth = dwHealth;}

	virtual DWORD	GetSoul() const {return m_infoPlayer.dwSoul;}
	void	SetSoul(DWORD dwSoul) {m_infoPlayer.dwSoul = dwSoul;}

	virtual	DWORD	GetMana();
	virtual	void	SetMana(DWORD dwMana);

	DWORD	GetProfession() const {return m_infoPlayer.dwProfession;}
	void	SetProfession(DWORD dwProfession) {m_infoPlayer.dwProfession = dwProfession;}

	DWORD	GetAddPoint() const {return m_infoPlayer.dwAddPoint;}
	void	SetAddPoint(DWORD dwAddPoint) {m_infoPlayer.dwAddPoint = dwAddPoint;}

	DWORD	GetMedalSelect() const {return m_infoPlayer.dwMedalSelect;}
	virtual	void	SetMedalSelect(DWORD dwMedalSelect) {m_infoPlayer.dwMedalSelect = dwMedalSelect;}
	
	DWORD	GetXP() const {return m_infoPlayer.dwXP;}
	void	SetXP(DWORD dwXP) {m_infoPlayer.dwXP = __min(100, dwXP);}

	void	SetKoAmount(DWORD dwAmount)	{m_infoPlayer.dwKoAmount = dwAmount; m_dwKoScale = 100;}
	DWORD	GetKoAmount()	{return m_infoPlayer.dwKoAmount;}



	DWORD	GetProfessionSort	()	{ return (m_infoPlayer.dwProfession%1000)/10; }
	DWORD	GetProfessionLevel	()	{ return m_infoPlayer.dwProfession%10; }

	virtual DWORD GetMaxLife() const {return m_infoPlayer.dwMaxLife;}
	virtual void SetMaxLife(DWORD dwMaxLife) ;

	virtual void DoLevelUp();

	virtual void ReplaceStatus	(__int64 dwStatus);
	virtual	void	SetSyndicateRank(DWORD dwRank);

	// syndicate interfaces
	OBJID	GetSydicateID(); 	
	void	SetSyndicateID(OBJID idSyndicate);
	DWORD	GetSyndicateRank();
	int		GetSyndicateProffer();
	void	SetSyndicateProffer(int nSyndicateProffer);
	DWORD	GetSyndicateFamer();
	void	SetSyndicateFamer(DWORD dwSyndicateFamer);
	char*	GetSyndicate();
	char*	GetSubSyndicate();
	char*	GetSyndicateTitle();
	UINT	GetSyndicateLevel();
	void	SetSyndicateLevel(UINT uiLevel);
	// additioncal syndicate interfaces
	char*	GetSyndicateLeaderName();
	void	SetSyndicateLeaderName(char* pszLeader);
	DWORD	GetSyndicateFund();
	void	SetSyndicateFund(DWORD dwFund);
	DWORD	GetSyndicatePopulation();
	void	SetSyndicatePopulation(DWORD dwPopulation);
	void	SetSyndicateSynRank(UCHAR ucSynRank) {m_infoPlayer.ucSyndicateSynRank = ucSynRank;}
	UCHAR	GetSyndicateSynRank() {return m_infoPlayer.ucSyndicateSynRank;}
	DWORD	GetPhysicalForce(){return __min(m_infoPlayer.dwPhysicalForce, this->GetMaxPhysicalForce());}
	DWORD	GetMaxPhysicalForce(){return m_infoPlayer.dwMaxPhysicalForce;}
	void	SetPhysicalForce(DWORD dwForce){m_infoPlayer.dwPhysicalForce = dwForce;}
	void	SetMaxPhysicalForce(DWORD dwMaxForce){m_infoPlayer.dwMaxPhysicalForce = dwMaxForce;}
	void	SetCryOut(char* pszStr){if(pszStr) strcpy(m_szCryOut, pszStr);}
	char*	GetPkTitle();
	void	AddProfessionalCoolposEffect(DWORD dwProfessional, BOOL bAllNosuch = true);
	
	BOOL	IsBaddy();

	void	ShowKoAmount	(BOOL bImmedia = true);
	void	AddMoneyEffect	(DWORD dwMoney);

	void	ProcessStatusEffect(__int64 dwStatus);

	void	SetShowIcon(BOOL bShow){m_infoPlayer.bShowIcon = bShow;}
	BOOL	GetShowIcon(){return m_infoPlayer.bShowIcon;}

	void	SetTutorLevel(DWORD dwTutorLevel);
	void	SetTutorExp(int dwTutorExp);

	DWORD   GetTutorLevel();
	int 	GetTutorExp();
	
	void    SetDexterity(DWORD dwDexterity){m_infoPlayer.dwDexterity = dwDexterity;}
	void	SetPotential(int nPotential){m_infoPlayer.nPotential = nPotential;}

	DWORD   GetDexterity(){return m_infoPlayer.dwDexterity;}	//敏捷
	int		GetPotential(){return m_infoPlayer.nPotential;}     //潜能
	void    SynTrack(BOOL bMove = true);
	void	SetNpcTitle(const char* pszTitle);

// for pet
	void	SetPetOwnerId(OBJID idOwner) { m_infoPlayer.dwSyndicateRank = idOwner;}
	OBJID	GetPetOwnerId() {return m_infoPlayer.dwSyndicateRank;}
	
	void    SetIDWhoAttackMe(OBJID id){m_idWhoAttackMe = id;m_dwTimeWhoAttackMe = ::TimeGet();}
	OBJID	GetIDWhoAttackMe(){return m_idWhoAttackMe;}
	DWORD	GetTimeWhoAttackme(){return m_dwTimeWhoAttackMe;}
	
protected:	
	OBJID	m_idWhoAttackMe;
	DWORD   m_dwTimeWhoAttackMe;
	int     m_nAttackTimes;
public:
	void SetAttackTimes(int nTimes){m_nAttackTimes = nTimes;}
	int  GetAttackTimes(void){ return m_nAttackTimes > 0?m_nAttackTimes:0;}	
protected:
	CPlayerInfo		m_infoPlayer;
	char			m_szCryOut[256];
	char			m_szNpcTitle[128];
	DWORD			m_dwKoScale;
	CImageString	m_objImgNumber;
	BOOL			m_bFlashCrime;
	DWORD           m_dwFlashCrimeTime;
	
public:
	static HANDLE	s_hHeap;
	static UINT		s_uNumAllocsInHeap;
	
	static BOOL		IsValidPt	(void* p);
	
	void*	operator new		(size_t size);
	void	operator delete		(void* p);
private:
	CFDword*	m_pFD;	
};

#endif // !defined(AFX_PLAYER_H__EF9F33AA_217F_4793_A28A_4F3C56254D27__INCLUDED_)

⌨️ 快捷键说明

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