你平常肯定接触到很多比如 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 的代码,里面有你想要的!
时间: 2024-10-10 05:42:57