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

📄 role.h

📁 网络游戏魔域源代码 测试可以完整变异
💻 H
📖 第 1 页 / 共 2 页
字号:
	CPath		objPath;
	CCommand	cmdProc;
	CMySize		sizeBase;
	int			nFlyOffset;
	int			nFlyOffsetGoal;
	BOOL		bAdjustDir;
	BOOL		bAdjustRun;
	int			nNextStep;
	DWORD		dwSpeed;
}CRoleInfo;


#include <list>
using namespace std;

typedef list<UINT> LIST_DIR;

class CRole :public CMapObj 
{
private:
	void	StaticAction(int nAction, int nDir=-1);

	BOOL	Step		(void);
	BOOL	Walk		(void);
	BOOL	WalkForward	(void);
	BOOL	Run			(void);
	BOOL	RunForward	(void);
	BOOL	Jump		(void);
	BOOL    Emotion		(void);
	BOOL	Attack		(void);
	BOOL	RushAtk		(void);
	BOOL	LockAtk		(void);
	BOOL	TeamFollow	(void);
	BOOL	Follow		(void);
	BOOL	Action		(void);
	BOOL	Die			(void);
	BOOL	DieNormal	(void);
	BOOL	DieDelay	(void);
	BOOL	DieFlying	(void);
	BOOL	DieFloat	(void);

	BOOL	PickUp		(void);
	BOOL	Pose		(void);
	BOOL	InTone		(void);
	BOOL	Bump		(void);
	BOOL	Mine		(void);
	BOOL	LockBooth	(void);
	BOOL	TakeOff		(void);
	BOOL	Landing		(void);
	BOOL	Float		(void);
	BOOL	Kongfu		(void);	
protected:
	int		GetOffsetY();
	BOOL	StandBy		(void);

private:
	int		GetStepDir		(void);	
	BOOL	IsMapReached	(void);
	int		GetJumpHeight	();
	int		GetJumpShadowHeight();
	DWORD	GetJumpFrameInterval();
	int     GetWalkHeight	();

public:
	CRole(void){Init();}
	virtual ~CRole(void){Destroy();}
	
	void	Init			(void);

	BOOL	Create	(UINT uLook=1, int nViewType = _ROLE_VIEW_ROLE);
	BOOL	Create	(UINT uLook, int nViewType, OBJID id, CMyPos pos);
	void	Destroy	(void);
		
	virtual void	GetWorldPos	(int& iPosX, int& iPosY)	{iPosX=m_Info.posWorld.x, iPosY=m_Info.posWorld.y;}
	virtual void	GetScrPos	(int& iPosX, int& iPosY)	{iPosX=m_Info.posScr.x, iPosY=m_Info.posScr.y;}
	virtual void	GetPos		(int& iPosX, int& iPosY)	{iPosX=m_Info.posMap.x, iPosY=m_Info.posMap.y;}
	
	virtual void	GetSize		(int& iWidth, int& iHeight)	{iWidth=iHeight=m_Info.iSize;}
	virtual void	Show		(void);
	virtual void	Process		(void* pInfo);

	
	virtual BOOL	ProcessAction	(void);

	virtual BOOL	IsMouseFocus(int evtMouse=_MOUSE_NONE);
	virtual BOOL	IsVisible(void);

	virtual int		GetAtkRange	(void) { return 1; }
	
	void	SetActionData	(void);
	void	ResetActionData	(void);

	DWORD   GetFrameInterval(int nActType);
	
	DWORD	GetDistance	(CRole* pRole);
	BOOL	IsMapAttainable	(int iMapX, int iMapY);
	BOOL	IsWalking	(void);
	BOOL	IsRunning	(void);
	BOOL	IsMoving	(void);
	BOOL	IsStandBy	(void);
	BOOL	IsIdle		(void);		// 空闲状态, 表示当前人物任务处在最低优先级别
	BOOL	IsBumpBackEnable	(void);

	DWORD	GetActionDelayInfoKey	(CRole* pTarget);
	DWORD	GetWeaponInfoKey		(CRole* pTarget);
	
	void	AddStepDir	(UINT uDir)	{m_lstStepDir.push_back(uDir%8);}
	void	ResetStepDir();
	
	BOOL	SetPos		(int iPosX, int iPosY);
	void    SetNextPos  (int iPosX, int iPosY)  {m_Info.posNext.x = iPosX;m_Info.posNext.y = iPosY;}	
	void	SetScrPos	(int iPosX, int iPosY)	{m_Info.posScr.x = iPosX;m_Info.posScr.y = iPosY;}
	void	SetRushPos	(int iPosX, int iPosY)	{m_Info.posRush.x = iPosX, m_Info.posRush.y = iPosY;}
	void	ClrRushPos	(void)	{m_Info.posRush.x = m_Info.posRush.y = 0;}
			
	void	ShowName	(void);
	void	Say			(const char* pszWords);

	DWORD	GetSpeed() const {return m_Info.dwSpeed;}
	void	SetSpeed(DWORD dwSpeed) {m_Info.dwSpeed = dwSpeed;}


	//	3d feature
	void	SetRGBA		(float alpha, float red, float green, float blue);
	void	SetArmor	(OBJID idType);
	void	SetArmet	(OBJID idType);
	void	SetRWeapon	(OBJID idType);
	void	SetLWeapon	(OBJID idType);
	void	SetMount	(OBJID idType);
	void	SetMantle	(OBJID idType);
	BOOL	HaveBow		();
	OBJID	GetArmor	(){return m_Info.idArmorType;}
	OBJID	GetArmet	(){return m_Info.idArmetType;}
	OBJID	GetRWeapon	(){return m_Info.idRWeaponType;}
	OBJID	GetLWeapon	(){return m_Info.idLWeaponType;}
	OBJID	GetMount	(){return m_Info.idMountType;}
	OBJID	GetMantle	(){return m_Info.idMantleType;}

// static...
public: 
	enum {SHADOW_NONE, SHADOW_SIMPLE, SHADOW_REAL};
	static int s_nShadowType;
	
public:
	int		GetActionType	(void)	{return m_Info.iActType;}
	BOOL	IsAttacking		(void);
	void	GetActionStartPos	(int& nWorldX, int& nWorldY)	{nWorldX=m_Info.posActionBegin.x, nWorldY=m_Info.posActionBegin.y;}
	void	GetActionEndPos		(int& nWorldX, int& nWorldY)	{nWorldX=m_Info.posActionEnd.x, nWorldY=m_Info.posActionEnd.y;}
	
	void	GetPrePos	(int& nPosX, int& nPosY);
	void    GetNextPos  (int& nPosX, int& nPosY){nPosX = m_Info.posNext.x;nPosY = m_Info.posNext.y;};
	int		GetDir		(CMyPos posTarget) const; 	
	int		GetDir		(CRole* pTarget) const;

//------------- status -------------	
public:
	void	SetStatus	(__int64 dwStatus);
	void	ClrStatus	(__int64 dwStatus);
	__int64	GetStatus	(void)	{return m_dwStatus;}
	BOOL	TestStatus	(__int64 dwStatus);

protected:
	__int64	m_dwStatus;

//------------- ani effects -------------	
public:
	BOOL	AddAniEffectEx (const char* pszEffectTitle,
							int nTimes=1,
							DWORD dwInterval=50, 
							int nShowWay=_SHOWWAY_NORMAL, 
							DWORD dwLoopInterval=0,
							int nOffsetX = 0, 
							int nOffsetY = 0,
							int nExigence = 0, 
							DWORD dwDelay = 0);

	BOOL	AddAniEffect	(const char* pszEffect);
	void	ClrAniEffect	(const char* pszEffect=NULL);

	void	ShowAniEffect	(int nPosX, int nPosY);
	void	ProcessAniEffect();
	BOOL	TestAniEffect(const char* pszEffect);
private:
	DEQUE_EFFECT	m_dequeAniEffect;

//------------- command -------------	
public:
	virtual DWORD	SetCommand	(CCommand* pCommand);
	virtual BOOL	ProcessCommand	(void);

	void		InitCommand	(void);
	CCommand*	GetCommand	(void)	{return &(m_Info.cmdProc);}

	int			GetCommandType(void);
	BOOL		GetCommandFlag(void){return m_Info.cmdProc.bData;}
	int			GetLastCommand(void)	{return m_Info.cmdProc.iType;}
	int			GetCommandStatus(void)	{return m_Info.cmdProc.iStatus;}

//------------- info -------------
public:
	BOOL	IsNpc(void) {return GetID() <= _IDMAX_NPC;}
	BOOL	IsPlayer(void) {return (GetID() >= PLAYER_ID_FIRST && GetID() <= PLAYER_ID_LAST);}

	//	BOOL	IsMonster(void) {return (GetID() >= MONSTERID_FIRST && GetID() <= MONSTERID_LAST);} 
	//ACTION创建的MONSTER也算是MONSTER   --2005 6- 13 --XUELIANG
	BOOL	IsMonster(void) {return (GetID() >= MONSTERID_FIRST && GetID() <= PETID_LAST);}  
	
	BOOL	IsGuard(void);
	BOOL	IsPet(void) {return (GetID() >= CALLPETID_FIRST && GetID() <= CALLPETID_LAST);}
	BOOL	IsMyPet(void);
	void	SetID		(OBJID id)		{m_Info.id =id;}
	OBJID	GetID		(void) const	{return m_Info.id;}
	
	void    SetLook		(USHORT usLook);
	USHORT	GetLook		(void) const	{return m_Info.usLook;}

	void    SetHair		(USHORT usHair);
	USHORT	GetHair		(void) const	{return m_Info.usHair;}
	
	void    SetFace		(USHORT usFace);
	USHORT	GetFace		(void) const	{return m_Info.usFace;}

	void    SetPose		(USHORT usPose)	{m_Info.usPose=usPose;}
	USHORT	GetPose		(void) const	{return m_Info.usPose;}

	void	SetDir		(int nDir);
	int		GetDir		(void) const	{return m_Info.iDirection;}

	const char*	GetName	(void) const	{return m_Info.szName;}
	void	SetName		(const char* pszName);

	DWORD   GetMonsterTypeId(void) {return m_Info.idMonsterType;} 
	void	SetMonsterTypeId(DWORD idType) {m_Info.idMonsterType = idType;}

	int		GetAddSize	(void) const	{return m_Info.iAddSize;}
	void	SetAddSize	(int nSize)		{m_Info.iAddSize=nSize;}

	int		GetZoomPercent	(void) const	{return m_Info.iZoomPercent;}
	void	SetZoomPercent	(int nPercent)	{m_Info.iZoomPercent=nPercent;}

	void	AddFStr(char* pszStr, int nMaxHeight=64, DWORD dwColor=0x00ffffff, int nStepHeight = 3, int nDelayTime=0);
	void	AddZoomNum		(int nNum, DWORD dwColor, DWORD dwDelay, int nRandOffset = 0);
	//int		GetType();
	void	SetActionCmd (int nAction, int nDir=-1, DWORD dwType=0, BOOL bData = false);
	void	SetIntoneCmd (int nAction, int nDir=-1, DWORD dwType=0, BOOL bData = false);
	void	Transform(int nLook);
	void	SetWorldPos(CMyPos posWorld){m_Info.posWorld = posWorld;}
	int		GetFrameIndex(){return m_Info.iActFrameIndex;}
	void	ShootArrow(OBJID idTarget, int nHpLose);

	int		GetSex(){return m_Info.nSex;}
	void	SetSex(int nSex){m_Info.nSex = nSex;}
	

	int		GetRace(){return m_Info.nRace;}
	void	SetRace(int nRace){m_Info.nRace = nRace;}

	void	AllotRes();
	int		GetViewType(){return m_nViewType;}

	static  int		GetIDType(OBJID id);
	int		GetRoleType(){return m_nRoleType;}
	void	SetRoleType(int nRoleType){m_nRoleType = nRoleType;}
	void	SetRoleAttribute(DWORD dwAttribute){m_dwRoleAttribute = dwAttribute;}
	DWORD	GetRoleAttribute(){return m_dwRoleAttribute;}
	void	SetFlyOffset(int nOffset);
	int		GetFlyOffset();
	void	SetFlyOffsetGoal(int nOffset);
	int		GetFlyOffsetGoal();
	void	FlashLastAttackTime(){m_tmLastAtk = ::TimeGet();}
	BOOL	IsHypersensitive();
	void	AddStep(CMyPos posCell);
protected:
	CRoleInfo		m_Info;
	int				m_nType;
	int				m_nViewType;
	int				m_nRoleType;
	DWORD			m_dwRoleAttribute;
	DWORD			m_tmDisappear;
	DWORD			m_tmLastAtk;
	LIST_DIR		m_lstStepDir;
	int				m_nWhichLeg;
	CMyPos			m_posCellOffset;
public:
	void SetSpriteEffect( UCHAR ucSprite );
	IRoleView*		m_pIRoleView;
	CSayHello		m_objSayHello;	
	CFloatingStr	m_objFStr;
	CGame3DEffectEx m_objEffect;
	CZoomNum		m_objZoomNum;

public:
	typedef struct 
	{
		int		nAction;
		DWORD	dwFrameInterval;
		char	szEffect[128];
		char	cDir;
		std::deque<char> setStep;
	}KongfuAction;
	std::deque<KongfuAction> m_setKongfu;
	BOOL	LoadKongfu(const char* pszFileName);	

public:
	DWORD m_dwDisappear;
	DWORD m_dwDisappearLast;
	void Disappear(DWORD dwLast);
public:
	static float s_fBaseScale;
	std::vector<CCommand*> m_setCmd;
	std::vector<int> m_setLife;
	std::deque<BeAttackCmdInfo*> m_setBeAttackCmdInfo;
	OBJID m_idLocker;
protected:
	DWORD m_dwSpeedRate;
protected:
	DWORD m_dwCommandIndex;
public:
	void SetSpeedRate(int nSpeedRate){m_dwSpeedRate = nSpeedRate;}
	void AddBeAttackCommandInfo(OBJID idSender, int nSenderCommandIndex, int nAction, int nFrameIndex, int nLife, DWORD dwColor);
	void PerformBeAttackCmd(BeAttackCmdInfo* pInfo);
	DWORD	GetSpeedRate(){return m_dwSpeedRate;}
//---------------for mapobj----------------
public:
	virtual int  GetObjType()               {return m_nType;}
	virtual BOOL IsFocus()                  {return false;}
	virtual void GetWorldPos(CMyPos& posWorld){posWorld = m_Info.posWorld;}
	virtual void GetPos(CMyPos& posCell)	{posCell = m_Info.posMap;}
	virtual void SetPos(CMyPos posCell)		{SetPos(posCell.x, posCell.y);}
	virtual void GetBase(CMySize& infoSize)	{infoSize.iWidth = 1; infoSize.iHeight = 1;}
	virtual void SetBase(CMySize& infoSize)	{m_Info.sizeBase = infoSize;}
//---------------for mapobj----------------
};



#endif

⌨️ 快捷键说明

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