【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 的代码,里面有你想要的!

posted @ 2017-05-20 03:46  Akatsuki-  阅读(597)  评论(0编辑  收藏  举报