GetMatchedSubstring(int)

ListenPatternで指定された文字列と一致した文字列を返します。

string GetMatchedSubstring(
    int nString
);

Parameters

nString

一致した文字列のインデックス。0から始まります。


Description

ListenPatternで指定された文字列と一致した文字列を返します。

一致した文字列はnStringでインデックス化されて返されます(後述)。

この関数はSetListenPatternで文字列を指定する際ワイルドカードで指定された場合に、OnConversationでのみ有効となります。

(例えば:SetListenPattern(OBJECT_SELF, "FOO**", 500)では"FOO", "FOOTER" "FOOBAR, それに"FOOT"が一致します。

文字列は大文字・小文字の区別はなく"FoOBaR""fooBAR"も同様に一致します。)


例として、SetListenPattern(OBJECT_SELF, "FOO**", 500)と指定し、NPCは”foobar”と聞いたとします:


まず文字列が一致しているかどうか比較されます。

GetListenPatternNumber()で500が返されます。


次に一致した文字列が決定されます。

GetMatichedSubstringsCount()で2が返されます。


インデックスは0から始まります(Cの配列と同様です)。

例えば:

GetMatchedSubstring(0) で "foo" を返します
GetMatchedSubstring(1) で "bar" を返します


また他の例として、SetListenPattern(OBJECT_SELF, "**foo**bar**", 500)と指定し、NPCが”foofoofoobarbarbar”と聞いたとします:


GetMatchedSubstring(0) で "" を返します
GetMatchedSubstring(1) で "foo" を返します
GetMatchedSubstring(2) で "foofoo" を返します
GetMatchedSubstring(3) で "bar" を返します
GetMatchedSubstring(4) で "barbar" を返します



Remarks

使い方を教えてくださったTemple氏に感謝します。


NWCJに登録されている「謎かけ墓地」で多く使われています(sPassword = GetMatchedSubstring(0);として答えを求めています)。


Version

1.22

Example

// このスクリプトではNPCは「woot」という言葉を聞いたら返答します。
// 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++;
    }
}

See Also

functions: GetListenPatternNumber | GetMatchedSubstringsCount | SetListening | SetListeningPatterns | SetListenPattern
categories: Conversation Functions | Henchmen/Familiars/Summoned Functions
events: OnConversation Event


author: GoLeM, editor: Kristian Markon, JP team: geshi
Send comments on this topic.