Concept: Difference between revisions
Jump to navigation
Jump to search
1416006136 (talk | contribs) m (1416006136 moved page Concept to Concept/en: use {{MultiPage}}) |
1416006136 (talk | contribs) mNo edit summary |
||
Line 1: | Line 1: | ||
{{ | {{langsp|title=Concept}} | ||
{{stub}} | {{stub}} | ||
A '''concept''' is high-level statement that the code is trying to convey, such as say hello(TLK_HELLO), answer some question(TLK_ANSWER), call for help(TLK_HELP_ME), etc. | A '''concept''' is high-level statement that the code is trying to convey, such as say hello(TLK_HELLO), answer some question(TLK_ANSWER), call for help(TLK_HELP_ME), etc. | ||
Revision as of 23:57, 1 May 2024
A concept is high-level statement that the code is trying to convey, such as say hello(TLK_HELLO), answer some question(TLK_ANSWER), call for help(TLK_HELP_ME), etc.
You can command a NPC to speak based on a concept by using Speak( AIConcept_t concept, const char *modifiers /*= NULL*/ )
method. This is defined in 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; }
It tries to find a response for the concept from Response System scripts. Then if it finds one, tries to dispatch it.
NPC_talker.cpp
is a good example integrating concept speaks within tasks and schedules. If you want to make a custom NPC that talks, this would be the best place to start.
You can also make a NPC choose a response via "DispatchResponse" entity input.