概念

From Valve Developer Community
< Zh
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
English (en)中文 (zh)Translate (Translate)

This page was translated by DaKang233 on May 2, 2024 (UTC+8). Anyone is welcome to add new content or fix errors.


小作品

这篇文章是一个小作品,您可以帮助我们完善它。

一个 概念 (Concept) 是代码试图传达的高层次陈述,比如说 hello(TLK_HELLO),回答某个问题(TLK_ANSWER),呼救(TLK_HELP_ME)等等。

你可以通过使用 Speak( AIConcept_t concept, const char *modifiers /*= NULL*/ ) 方法,基于概念命令NPC说话。这个方法定义在 AI_Speech.cpp 中。

bool CAI_Expresser::Speak( AIConcept_t concept, const char *modifiers /*= NULL*/ )
{
	AI_Response *result = SpeakFindResponse( concept, modifiers );
	if ( !result )
	{
		return false;
	}

	SpeechMsg( GetOuter(), "%s (%x) spoke %s (%f)\n", STRING(GetOuter()->GetEntityName()),
		GetOuter(), concept, gpGlobals->curtime );

	bool spoke = SpeakDispatchResponse( concept, result );
	return spoke;
}

它尝试从响应系统(en)脚本中找到概念的响应。如果找到了,就尝试分派它。

NPC_talker.cpp 是一个很好的示例,它将概念说话整合到任务(en)日程安排(en)中。如果你想制作一个自定义的NPC说话,这将是开始的最佳地点。

你也可以通过 "DispatchResponse" 实体输入使NPC选择一个响应。

参见