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

📄 i_role.h

📁 网络游戏魔域的服务端与客户端完整源代码 包括详细的说明文档与开发日志
💻 H
📖 第 1 页 / 共 2 页
字号:
// RoleManager.h: interface for the CRoleManager class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(I_ROLE_HEADER)
#define I_ROLE_HEADER

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

#include <math.h>
#include "define.h"
#include "GameObjSet.h"
#include "TimeOut.h"

enum { POSE_STAND=0, };

const int	ADJUST_PERCENT			= 30000;						// ADJUST时,>=30000 表示百分数
const int	ADJUST_SET				= -30000;						// ADJUST时,<=-30000 表示等于(-1*num - 30000)
const int	ADJUST_FULL				= -32768;						// ADJUST时,== -32768 表示填满
const int	DEFAULT_DEFENCE2		= 10000;						// 数据库缺省值

//帮派等级需要的人数的最低限度
const int	SYNMEMSUM_LOWERLIMIT_TWO = 60;
const int	SYNMEMSUM_LOWERLIMIT_THREE = 150;
const int	SYNMEMSUM_LOWERLIMIT_FOUR = 380;	
//帮派级别
const int SYNRANK_FOUR	= 4;
const int SYNRANK_THREE	= 3;
const int SYNRANK_TWO	= 2;
const int SYNRANK_ONE	= 1;

const DWORD TIME_FOOTPRINT	= 1000;

const int	TEAM_STATUS_REQ_ROLES	= 3;		// 结界状态生效需要的最少组队人数

const int	MAX_FRENZY_LIFE_PERCENT	= 70;		// 生命超过这个百分比就会取消狂暴状态


///////////////////////////////////////
// 修改魔法系统需要的
const int	ARROW_FLY_ALT					= 60;							// 箭支飞行高度


//---帮派---begin
//////////////////////////////////////////////////////////////////////
enum {
		RANK_LEADER			= 100,			//军团团长		
		RANK_SUBLEADER		= 80,			//分团长
		RANK_TEAMLEADER		= 60,			//队长
		RANK_NEWBIE			= 20,			//普通团员
		RANK_RESERVED		= 10,			//预备团员		
		RANK_NONE			= 0,

		RANK_SUB		= RANK_LEADER - RANK_SUBLEADER,
//		RANK_PRE		= -1,//RANK_SUBLEADER - RANK_PRESUBLEADER,
//		RANK_TEAM		= RANK_SUBLEADER - RANK_TEAMLEADER,
};

enum
{
	SYNMEM_LEVEL_ONE		= 1,
	SYNMEM_LEVEL_TWO		= 2,
	SYNMEM_LEVEL_THREE		= 3,
	SYNMEM_LEVEL_FOUR		= 4,
	SYNMEM_LEVEL_FIVE		= 5,		
};

//---帮派---end
//////////////////////////////////////////////////////////////////////
enum 
{
		DIE_NORMAL			= 1,
		DIE_CRITICALHIT		= 2,
		DIE_MAGIC			= 3,
		DIE_FLOAT			= 4,		// only for client
		DIE_ARROWSHOOT		= 5,
};

//////////////////////////////////////////////////////////////////////
enum { OWNER_NONE, OWNER_USER, OWNER_SYN, OWNER_NPC };

//////////////////////////////////////////////////////////////////////
// 外部状态,需要通过MsgPlayer通知其它玩家的状态。与客户端同步
const I64		KEEPEFFECT_NORMAL			=0x00000000; 	// 无特殊状态

const I64		KEEPEFFECT_TEAMLEADER		=0x00000001;    // 队长

const I64		KEEPEFFECT_DIE				=0x00000002;	// 死亡
const I64		KEEPEFFECT_GHOST			=0x00000004;    // 灵魂状态
const I64		KEEPEFFECT_DISAPPEARING		=0x00000008;    // 尸体消失状态


const I64		KEEPEFFECT_CRIME			=0x00000010;	// 犯罪 // 闪蓝色	
const I64		KEEPEFFECT_RED				=0x00000020;	// 红名
const I64		KEEPEFFECT_DEEPRED			=0x00000040;	// 黑名
const I64		KEEPEFFECT_SYNCRIME			=0x00000080;	// 帮派犯罪

const I64		KEEPEFFECT_POISON			=0x00000100;    // 中毒
const I64		KEEPEFFECT_HIDDEN			=0x00000200;    // 隐身
const I64		KEEPEFFECT_FREEZE			=0x00000400;    // 冰冻
const I64		KEEPEFFECT_SUPERSOLDIER		=0x00000800;    // 无双
const I64		KEEPEFFECT_LURKER			=0x00001000;    // 潜伏

const I64		KEEPEFFECT_DEFENCE1			=0x00002000;    // 防御提高1
const I64		KEEPEFFECT_DEFENCE2			=0x00004000;    // 防御提高2
const I64		KEEPEFFECT_DEFENCE3			=0x00008000;    // 防御提高3

const I64		KEEPEFFECT_ATTACK			=0x00010000;    // 攻击提升
const I64		KEEPEFFECT_ATKSPEED			=0x00020000;    // 攻击速度提高

const I64		KEEPEFFECT_MAGICDAMAGE		=0x00040000;    // 魔法伤害提高
const I64		KEEPEFFECT_MAGICDEFENCE 	=0x00080000;    // 魔法防御提高

const I64		KEEPEFFECT_REFLECT			=0x00100000;	// 攻击反射
const I64		KEEPEFFECT_REFLECTMAGIC		=0x00200000;    // 魔法反射

const I64		KEEPEFFECT_SLOWDOWN1		=0x00400000;    // 减速状态 50%
const I64		KEEPEFFECT_SLOWDOWN2		=0x00800000;	// 减速状态 // 血少于一半时开始减速 // 50%

const I64		KEEPEFFECT_TEAM_HEALTH		=0x01000000;	// 医疗结界状态
const I64		KEEPEFFECT_TEAM_ATTACK		=0x02000000;	// 攻击结界状态
const I64		KEEPEFFECT_TEAM_DEFENCE		=0x04000000;	// 护体结界状态
const I64		KEEPEFFECT_TEAM_SPEED		=0x08000000;	// 速度结界状态
const I64		KEEPEFFECT_TEAM_EXP			=0x10000000;	// 修炼结界状态
const I64		KEEPEFFECT_TEAM_SPIRIT		=0x20000000;	// 心灵结界状态
const I64		KEEPEFFECT_TEAM_CLEAN		=0x40000000;	// 净化结界状态

const I64		KEEPEFFECT_SMOKE			=0x80000000;			// 烟雾效果
const I64		KEEPEFFECT_DARKNESS			=0x0000000100000000;	// 黑暗效果
const I64		KEEPEFFECT_PALSY			=0x0000000200000000;	// 麻痹效果
const I64		KEEPEFFECT_MAXLIFE			=0x0000000400000000;	// 最大生命增加/减少
const I64		KEEPEFFECT_MAXENERGY		=0x0000000800000000;	// 最大体力增加/减少

const I64		KEEPEFFECT_ADD_EXP			=0x0000001000000000;	// 战斗经验增加
const I64		KEEPEFFECT_ATTRACT_MONSTER	=0x0000002000000000;	// 吸引怪物
const I64		KEEPEFFECT_XPFULL			=0x0000004000000000;	// XP满

const I64		KEEPEFFECT_ADJUST_DODGE			=0x0000008000000000;	// 调节总的躲避值
const I64		KEEPEFFECT_ADJUST_XP			=0x0000010000000000;	// 调节每次增加XP值
const I64		KEEPEFFECT_ADJUST_DROPMONEY		=0x0000020000000000;	// 调节怪物每次掉钱

const I64		KEEPEFFECT_PK_PROTECT			=0x0000040000000000;	// pk保护状态
const I64		KEEPEFFECT_PELT					=0x0000080000000000;	// 疾行状态
const I64		KEEPEFFECT_ADJUST_EXP			=0x0000100000000000;	// 战斗获得经验调整

const I64		KEEPEFFECT_HEAL					=0x0000200000000000;	// 治愈状态
const I64		KEEPEFFECT_FAINT				=0x0000400000000000;	// 晕
const I64		KEEPEFFECT_TRUCULENCE			=0x0000800000000000;	// 野蛮
const I64		KEEPEFFECT_DAMAGE				=0x0001000000000000;	// 调整受到的伤害
const I64		KEEPEFFECT_ATKER_DAMAGE			=0x0002000000000000;	// 调整对目标造成的伤害
const I64		KEEPEFFECT_CONFUSION			=0x0004000000000000;	// 混乱
const I64		KEEPEFFECT_FRENZY				=0x0008000000000000;	// 狂暴
const I64		KEEPEFFECT_EXTRA_POWER			=0x0010000000000000;	// 神力
const I64		KEEPEFFECT_TRANSFER_SHIELD		=0x0020000000000000;	// 护盾
const I64		KEEPEFFECT_SORB_REFLECT			=0x0040000000000000;	// 吸收反射
const I64		KEEPEFFECT_FRENZY2				=0X0080000000000000;	// 另一种狂暴状态

//////////////////////////////////////////////////////////////////////
// 综合状态
//enum {
const I64		KEEPEFFECT_NOT_ACTIVE		=KEEPEFFECT_DIE|KEEPEFFECT_FREEZE|KEEPEFFECT_PALSY;
const I64		KEEPEFFECT_NOT_CLEAR		=KEEPEFFECT_TEAMLEADER|KEEPEFFECT_RED|KEEPEFFECT_DEEPRED;		// 玩家死亡不清此状态
		// 结界系统所有状态
const I64		KEEPEFFECT_TEAM_ALL			=KEEPEFFECT_TEAM_HEALTH|KEEPEFFECT_TEAM_ATTACK|KEEPEFFECT_TEAM_DEFENCE
											|KEEPEFFECT_TEAM_SPEED|KEEPEFFECT_TEAM_EXP|KEEPEFFECT_TEAM_SPIRIT|KEEPEFFECT_TEAM_CLEAN;
//};

//////////////////////////////////////////////////////////////////////
// 内部状态,不需要通过MsgPlayer通知其它玩家的状态。服务器内部使用(cq_magictype使用)
enum {
		STATUS_NORMAL		=0,
		STATUS_DIE			=1,										// 死亡
		STATUS_CRIME		=2,										// 犯罪闪蓝状态
		STATUS_POISON		=3,										// 中毒
		STATUS_TEAMLEADER	=4,										// 队长
		STATUS_PKVALUE		=5,										// PK状态
		STATUS_DETACH_BADLY	=6,										// 清除所有不良状态
		STATUS_DETACH_ALL	=7,										// 清除所有魔法状态
		STATUS_VAMPIRE		=8,										// ATKSTATUS中吸血
		STATUS_DISAPPEARING	=9,										// 尸体消失状态
		STATUS_MAGICDEFENCE	=10,									// 魔法防御提升/下降
		STATUS_SUPER_MDEF	=11,									// 超级魔防
		STATUS_ATTACK		=12,									// 攻击提升/下降
		STATUS_REFLECT		=13,									// 攻击反射
		STATUS_HIDDEN		=14,									// 隐身
		STATUS_MAGICDAMAGE	=15,									// 魔法伤害提升/下降
		STATUS_ATKSPEED		=16,									// 攻击速度提升/下降
		STATUS_LURKER		=17,									// user only			// 潜行,此状态下不受NPC攻击,对玩家无效
		STATUS_SYNCRIME		=18,									// 帮派犯罪
		STATUS_REFLECTMAGIC	=19,									// 魔法反射
		STATUS_SUPER_DEF	=20,									// 超级防御
		STATUS_SUPER_ATK	=21,									// self only	// 超级攻击
		STATUS_SUPER_MATK	=22,		 							// self only	// 超级魔攻
		STATUS_STOP			=23,
		STATUS_DEFENCE1		=24,									// 防御提高/降低1
		STATUS_DEFENCE2		=25,									// 防御提高/降低2
		STATUS_DEFENCE3		=26,									// 防御提高/降低3
		STATUS_FREEZE		=27,									// 冰冻状态
		STATUS_SMOKE		=28,									// 烟雾效果
		STATUS_DARKNESS		=29,									// 黑暗效果
		STATUS_PALSY		=30,									// 麻痹效果

		STATUS_TEAM_BEGIN	=31,
		STATUS_TEAMHEALTH	=31,									// 医疗结界
		STATUS_TEAMATTACK	=32,									// 攻击结界
		STATUS_TEAMDEFENCE	=33,									// 护体结界
		STATUS_TEAMSPEED	=34,									// 速度结界
		STATUS_TEAMEXP		=35,									// 修炼结界
		STATUS_TEAMSPIRIT 	=36,									// 心灵结界
		STATUS_TEAMCLEAN	=37,									// 净化结界
		STATUS_TEAM_END		=37,

		STATUS_SLOWDOWN1	=38,									// 移动速度提升/下降
		STATUS_SLOWDOWN2	=39,									// 降低速度(仅在生命低于一半的时候。客户端表现)
		STATUS_MAXLIFE		=40,									// 最大生命增加/降低
		STATUS_MAXENERGY	=41,									// 最大体力增加/降低
		STATUS_DEF2ATK		=42,									// 防御转换为攻击(power=被转换的防御百分比)
		STATUS_ADD_EXP		=43,						// 战斗经验增加 -- 只能对队长使用,类似修炼结界效果
		STATUS_DMG2LIFE		=44,									// 每次攻击伤害部分转换为自己的生命(power=被转换的百分比)
		STATUS_ATTRACT_MONSTER	=45,								// 吸引怪物
		STATUS_XPFULL		=46,									// XP满
		//---jinggy---begin
		STATUS_ADJUST_DODGE	=47,			//调节总的躲避值
		STATUS_ADJUST_XP	=48,			//调节每次增加XP值
		STATUS_ADJUST_DROPMONEY	=49,		//调节怪物每次掉钱
		//---jinggy---end
		STATUS_PK_PROTECT	=50,									// PK保护状态
		STATUS_PELT			=51,									// 疾行状态
		STATUS_ADJUST_EXP	=52,									// 战斗获得经验调整——允许对任何人使用

		/////////////////////////////////
		// 幻兽技能需要用到的状态
		STATUS_HEAL				=100,			// 治愈
		STATUS_FAINT			=101,			// 打晕
		STATUS_TRUCULENCE		=102,			// 野蛮
		STATUS_DAMAGE			=103,			// 调整受到的伤害
		STATUS_ATKER_DAMAGE		=104,			// 调整对目标造成的伤害
		STATUS_CONFUSION		=105,			// 混乱
		STATUS_FRENZY			=106,			// 狂暴
		STATUS_EXTRA_POWER		=107,			// 神力
		STATUS_TRANSFER_SHIELD	=108,			// 护盾
		STATUS_SORB_REFLECT		=109,			// 吸收反射
		STATUS_FRENZY2			=110,			// 另外一种狂暴状态

		/////////////////////////////////

		STATUS_LOCK			=251,									// 被锁定状态 -- only used in server

		STATUS_LIMIT		=256,						// 角色状态不能超过这个值
};

//////////////////////////////////////////////////////////////////////
struct StatusInfoStruct;
class IStatus
{
public:
	virtual OBJID	GetID()							PURE_VIRTUAL_FUNCTION_0
	virtual ULONG	ReleaseByOwner()				PURE_VIRTUAL_FUNCTION_0

	virtual bool		IsValid()							PURE_VIRTUAL_FUNCTION_0
	virtual int			GetPower()							PURE_VIRTUAL_FUNCTION_0
	virtual bool		GetInfo(StatusInfoStruct* pInfo)	PURE_VIRTUAL_FUNCTION_0
	virtual void		OnTimer(DWORD tCurr)				PURE_VIRTUAL_FUNCTION
	virtual bool		ChangeData(int nPower, int nSecs, int nTimes=0)		PURE_VIRTUAL_FUNCTION_0
	virtual bool		IncTime(int nMilliSecs, int nLimit)		PURE_VIRTUAL_FUNCTION_0
	virtual bool		ToFlash()							PURE_VIRTUAL_FUNCTION_0
};

typedef	IGameObjSet<IStatus>		IStatusSet;
typedef	CGameObjSet<IStatus>		CStatusSet;

////////////////////////////////////////////////////////////////
enum {	MOVEMODE_WALK=0,					// PathMove()的模式
		MOVEMODE_RUN,
		MOVEMODE_SHIFT,						// to server only
		MOVEMODE_JUMP,
		MOVEMODE_TRANS,
		MOVEMODE_CHGMAP,
		MOVEMODE_JUMPMAGICATTCK,
		MOVEMODE_COLLIDE,
		MOVEMODE_SYNCHRO,					// to server only
		MOVEMODE_TRACK,

		MOVEMODE_RUN_DIR0 = 20,

		MOVEMODE_RUN_DIR7 = 27,
};

////////////////////////////////////////////////////////////////
const int _DELTA_X[9]={ 0, -1, -1, -1, 0, 1, 1, 1, 0 };
const int _DELTA_Y[9]={ 1, 1, 0, -1, -1, -1, 0, 1, 0 };
const int MAX_DIRSIZE = 8;
inline int GetDirByPos(int nFromX, int nFromY, int nToX, int nToY)		// return MAX_DIRSIZE: error
{
	if(nFromX < nToX)
	{
		if(nFromY < nToY)
			return 7;

⌨️ 快捷键说明

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