GetMatchedSubstring

From NWN Lexicon



Contents

[edit] GetMatchedSubstring(int)

Get a matched substring specified by a listen pattern.

string GetMatchedSubstring(
    int nString
);

[edit] Parameters

nString

Index of the matched substring. Begins at 0.


[edit] Description

Returns a matched substring specified by a listen pattern. The matched substring to be returned is indexed by nString (described below). This function should only be run in an OnConversation script when a listen pattern has been set using SetListenPattern with wildcards (e.g., SetListenPattern(OBJECT_SELF, "FOO**", 500) will match "FOO", "FOOTER" "FOOBAR", and "FOOT"; the patterns are case insensitive meaning that “FoOBaR” and “fooBAR” will also match).

As an example, consider the listen pattern specified by SetListenPattern(OBJECT_SELF, "FOO**", 500). Suppose an NPC heard the string "foobar":

First, a pattern match is checked for:
GetListenPatternNumber() returns 500.

Then the number of matched substrings is determined:
GetMatchedSubstringsCount() returns 2.

Indexes of the matched substrings begin at 0 (like an array in C, with a 0 index). For example:

GetMatchedSubstring(0) returns "foo".
GetMatchedSubstring(1) returns "bar".

As another example, if you have a listen pattern like SetListenPattern(OBJECT_SELF, "**foo**bar**", 500), and the NPC hears "foofoofoobarbarbar":

GetMatchedSubstring(0) returns "".
GetMatchedSubstring(1) returns "foo".
GetMatchedSubstring(2) returns "foofoo".
GetMatchedSubstring(3) returns "bar".
GetMatchedSubstring(4) returns "barbar".



[edit] Remarks

Special thanks to Temple for the HOW TO of this function. If you want your real name posted comment on this page.


[edit] Version

1.22

[edit] Example

// This program will cause an npc to listen out for woot and then respond.
// OnSpawn
void main()
{
    SetListening(OBJECT_SELF,TRUE);
    SetListenPattern(OBJECT_SELF,"Woot**",2001);
}
 
// OnConversation
void main()
{
    int i = 0;
    int nMatch = GetListenPatternNumber();
    if(nMatch == 2001)
        SpeakString("YEAH IT WORKS");
 
    nMatch = GetMatchedSubstringsCount();
    SpeakString(IntToString(nMatch));
    while(i<nMatch)
    {
        SpeakString(IntToString(i) + ". " + GetMatchedSubstring(i));
        i++;
    }
}

[edit] See Also

functions: 

SetListenPattern

events: 

OnConversation Event



 author: GoLeM, editor: Kristian Markon
 

Personal tools
Categories