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.