概念

From Valve Developer Community
Jump to: navigation, search
English (en)中文 (zh)

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选择一个响应。

参见