112 lines
2.8 KiB
C++
112 lines
2.8 KiB
C++
#pragma once
|
||
|
||
/************************************************************************/
|
||
/*
|
||
/* 实体消息类
|
||
/*
|
||
/************************************************************************/
|
||
class CEntity;
|
||
|
||
class CEntityMsg
|
||
{
|
||
public:
|
||
enum eEntityMsgID
|
||
{
|
||
emSkillResult = 1, //技能的结果
|
||
emShowEntityEffect, //添加目标特效
|
||
emShowSceneEffect, //添加场景特效
|
||
emAppendEntityEffect, //添加目标特效 TO DELETE
|
||
emAppendSceneEffect, //添加场景特效 TO DELETE
|
||
emChangeHp, //掉血,比如跳跃延迟掉血
|
||
emGetQuestState, //获取NPC对特定人物的任务状态
|
||
emReUseMonster, // 怪物重生
|
||
emEntityTransfer, // 实体的发生传送
|
||
emEntityScriptDelay, // 脚本延迟处理消息
|
||
emAddDurEffect, //在实体的身上添加持续的特效数据,考虑到特效的存储,持续的特效放到这
|
||
emEntityDead, // 实体死亡消息
|
||
emRealTransfer, //延迟一定时间后再传送
|
||
emRealLaunchSkill, //延时执行技能
|
||
emSkillApplyOneRange, //延时单范围技能效果
|
||
};
|
||
public:
|
||
int nMsg; //消息号
|
||
bool nForceCallWhenDestroy; // 销毁时强制执行。默认为0表示不执行;1表示实体销毁时强制执行
|
||
bool bWaitDel; // 消息等待删除,避免消息执行中嵌套删除消息
|
||
bool bIsUsed; //是否正在使用中
|
||
bool bReserver; //保留
|
||
WORD wLine; //行数
|
||
CEntity* pOwner; //消息的所有者,在释放和删除的时候使用,避免删除了别人的消息
|
||
TICKCOUNT dwDelay; //生效时间
|
||
EntityHandle nSender; //技能中使用,比如技能的发送者
|
||
LPCSTR file; //申请的文件的位置
|
||
union
|
||
{
|
||
struct
|
||
{
|
||
INT_PTR nParam1;
|
||
INT_PTR nParam2;
|
||
INT_PTR nParam3;
|
||
INT_PTR nParam4;
|
||
INT_PTR nParam5;
|
||
INT_PTR nParam6;
|
||
INT_PTR nParam7;
|
||
INT_PTR nParam8;
|
||
INT_PTR nParam9;
|
||
INT_PTR nParam10;
|
||
};
|
||
struct
|
||
{
|
||
LPVOID pParam1;
|
||
LPVOID pParam2;
|
||
LPVOID pParam3;
|
||
LPVOID pParam4;
|
||
LPVOID pParam5;
|
||
LPVOID pParam6;
|
||
LPVOID pParam7;
|
||
LPVOID pParam8;
|
||
LPVOID pParam9;
|
||
LPVOID pParam10;
|
||
|
||
};
|
||
};
|
||
|
||
public:
|
||
CEntityMsg(INT_PTR msg)
|
||
{
|
||
memset(this, 0, sizeof(*this));
|
||
|
||
nMsg = (int)msg;
|
||
}
|
||
CEntityMsg(INT_PTR msg, EntityHandle aSender)
|
||
{
|
||
memset(this, 0, sizeof(*this));
|
||
nSender = aSender;
|
||
nMsg = (int)msg;
|
||
|
||
}
|
||
CEntityMsg(INT_PTR msg, TICKCOUNT nDelay)
|
||
{
|
||
memset(this, 0, sizeof(*this));
|
||
nMsg = (int)msg;
|
||
dwDelay = nDelay;
|
||
}
|
||
inline CEntityMsg& operator = (const CEntityMsg &another)
|
||
{
|
||
memcpy(this, &another, sizeof(*this));
|
||
return *this;
|
||
}
|
||
|
||
//设置申请的脚本的位置和行数
|
||
inline void SetAllocFileLine(LPCSTR allocFile,INT_PTR nLine )
|
||
{
|
||
file =allocFile;
|
||
wLine = (WORD)nLine;
|
||
}
|
||
|
||
//设置实体的所属的handle
|
||
inline void SetOwnerPtr(CEntity * pEntity)
|
||
{
|
||
pOwner = pEntity;
|
||
}
|
||
};
|