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

📄 pet1.h

📁 网络游戏魔域源代码 测试可以完整变异
💻 H
字号:
//--------------------------------------------------------------------------------------
// File Name: pet.h
// Create by: Huang Yuhang
// Create on: 2003/8/25 15:00
//--------------------------------------------------------------------------------------
#ifndef _PET_H
#define _PET_H

#include "Player.h"
#include "Magic.h"
#include "3DRoleData.h"

class CPet	: public CPlayer
{
public:
	// 状态
	enum {_PET_IDLE, _PET_BEHAVIOR_READY, _PET_BEHAVIOR_FIND_HOST, _PET_ATTACK};
	// 寻的方式
	enum 
	{	
			_PET_SE_STATUS_ASSISTANT	=	1,	//	目标为Hero,用于状态辅助型召唤兽
			_PET_SE_ATTACK_ASSISTANT	=	2,	//	以Hero的目标为目标,用于攻击辅助召唤兽
			_PET_SE_REVENGE				=	3,	//	以攻击者为目标,复仇类型
			_PET_SE_GUARD				=	4,	//	以靠近Hero的怪物为目标,好战类型
			_PET_SE_WARLIKE				=	5,	//	寻找与自己最近的敌人战斗, 好战类型
			_PET_SE_JUSTICAL_A			=	6,	//	寻找黑名的玩家战斗,正义类型A
			_PET_SE_JUSTICAL_B			=	7,	//	寻找红名的玩家战斗,正义类型B
			_PET_SE_JUSTICAL_C			=	8,	//	寻找蓝名的玩家战斗,正义类型C
	};
	// 环境策略
	enum
	{
			_PET_ENV_ELUDE				=	1,	// 规避敌人		 (适合远程攻击)
			_PET_ENV_FEARLESS			=	2,	// 无畏的		 (适合近程攻击)			
	};
public:
	CPet();
	virtual ~CPet();

	void	Init	(void);
	void	Reset	(void);
	int		GetAtkRange	(void);
	//void	SetAlignPos(int nX, int nY);
public:
	void	LockAttack		(CPlayer* pTarget);
	void	Walk			(int nPosX, int nPosY);
	void	Run				(int nPosX, int nPosY);
	void	Transfer		(int nPosX, int nPosY);
	void	Jump			(int nPosX, int nPosY);
	
//	void	Direction		(int nPosX, int nPosY);
//	void	Stop			(void);
	DWORD	SetCommand		(CCommand* pCommand);
	BOOL	ProcessCommand	();
	
	void	Process		(void* pInfo);
	void	ProcessAI	();
	
	BOOL	CanJump(CMyPos posTarGet);
	void	SetAIType(int nType);
public:
	static CPet*	CreateNewPet	(OBJID idPet, int nType,OBJID idItem);
	void	SetItemID (OBJID idItem) {m_idItem = idItem;}
	OBJID   GetItemID ( ) { return m_idItem;}
public:
	void   AddMagic(OBJID idMagic, DWORD dwLevel, DWORD dwExp);
	int	   GetMagicAmount();
	CMagic*   GetMagicByIndex(int nIndex);
	CMagic*   GetMagic(OBJID idMagicType);
private:
	OBJID   m_idItem;		//幻兽的物品ID
	
	VECTOR_MAGIC		m_setMagic;	
	void   DestroyMagicSet();
// for AI
private:
	int		m_nBehaviorType;
	BOOL	m_bFirstAtk;
	DWORD	m_dwIdleEnd;
	OBJID	m_idTarget;
	PetInfo m_AIInfo;
	
	OBJID	m_idHeroTarget;
	BOOL	m_bRevengeID;
public:
	void	SetHeroTarget(OBJID idTarger){m_idHeroTarget = idTarger;}
private:
	// 寻的部分
	BOOL	SearchEnemy();
	void	SearchEnemy(int nMethod);

	void	SearchStatusAsistant();
	void	SearchAttackAsistant();
	void	SearchEnemyRevenge();
	void	SearchEnemyGuard();
	void	SearchEnemyWarlike();
	void	SearchEnemyJusticalA();
	void	SearchEnemyJusticalB();
	void	SearchEnemyJusticalC();

	void	AttackAI_1();
	void	AttackAI_2();
	void	AttackAI_3();
	void	AttackAI_4();
	void	AttackAI_5();

	// 脱离战斗以及后继处理
	BOOL	CheckEnemy(CPlayer* pPlayer,int nRange=12 , BOOL bHero = true);
	
	void	CheckTarget();
	BOOL	CheckTargetDie();
	BOOL	CheckTargetNotFound();
	BOOL	CheckTargetTooFar();
	BOOL	CheckTargetSpecialCommand();
	BOOL	CheckTargetElude();
	
	

	void	Idle(DWORD dwDelay);
private:
	void	ProcessAI_Idle();
	void	ProcessAI_Ready();
	void	ProcessAI_GenerateNewBehavior();
	void	ProcessAI_FindHost();
	void	ProcessAI_Attack();

};

#endif

⌨️ 快捷键说明

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