HLSDK系列怎么增加一种新实体

Posted Akatsuki

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HLSDK系列怎么增加一种新实体相关的知识,希望对你有一定的参考价值。

你平常肯定接触到很多比如 info_player_start hostage info_target 之类的实体,这里就解释一下怎么创建一种新的实体。

首先建立一个新的 .h 文件(当然你写在现有的文件上也可以),建立一个基于 CBaseEntity 的类,例如:

1 class CMyEntity : public CBaseEntity
2 {
3 public:
4     void Spawn(void);
5 }

在 .cpp 文件里编写这个类的函数体,例如:

1 void CMyEntity::Spawn(void)
2 {
3 }

写好了类还没完事,因为引擎还不认识你这个实体,你需要使用 LINK_ENTITY_TO_CLASS 宏来让你的类和一个名称关联起来,这个名称就是你的实体名。例如:

注:也是写在 .cpp 里

1 LINK_ENTITY_TO_CLASS(myentity, CMyEntity);

完成这些步骤,你就可以用 CREATE_NAMED_ENTITY (也就是 g_engfuncs.pfnCreateNamedEntity)来创建出你的实体了,例如:

 1 edict_t *pent = CREATE_NAMED_ENTITY(MAKE_STRING("myentity"));
 2 
 3 if (!pent)
 4     return;
 5 
 6 CMyEntity *pEntity = (CMyEntity *)CBaseEntity::Instance(pent);
 7 
 8 pEntity->Spawn();
 9 
10 // your code here ...

好了步骤就这些了,想实现各种各样的功能,不要忘了参考 HLSDK 的代码,里面有你想要的!

以上是关于HLSDK系列怎么增加一种新实体的主要内容,如果未能解决你的问题,请参考以下文章

HLSDK系列groupinfo的基本用法

HLSDK系列服务端 AddToFullPack 函数

HLSDK系列服务端 UpdateClientData 函数

HLSDK系列HL引擎入门篇

HLSDK系列Delta 详解

mysql如何自动增加一列序号