SetLocalString(object, string, string)
オブジェクトに文字列型ローカル変数を保存する。
void SetLocalString( object oObject, string sVarName, string sValue );
Parameters
oObject
ローカル変数を保存するオブジェクト
sVarName
保存する変数の名称(ファイル名みたいなもの)
sValue
保存する文字列
Description
oObjectで指定されたオブジェクトにsVarNameという名前の整数型保管領域を確保し、sValueの値を保存する。同じオブジェクトの中に同じ名称で再度保存した場合、前の値は失われ、上書きされてしまう。
Remarks
これらの関数は一見、ローカル変数に値を代入する命令に見えるかも知れませんが、実際にはファイルの入出力に近いものと言えます。
SetLocalString(オブジェクト, ローカル変数名, 文字列)
これを
SetLocalString(記憶媒体, ファイル名, データ)
という感じで見たほうがわかりいいかも知れません。
オブジェクト(記憶媒体)が違えば、ローカル変数名(ファイル名)が同じでも別の値が保持できますし、文字列(データ)が入った変数名と、ローカル変数名(ファイル名)は一致させる必要もありません。
Known Bugs
クリエイト関数で作成された直後のSet関数はタイミングによって失敗する可能性を秘めている。クリエイト関数で作られたばかりのオブジェクト、あるいはクリーチャーにこの関数を使用する場合、
SetLocalString(object, string, string)
のかわりに
ActionDoCommand(SetLocalString(object, string, string))
を使ってアクションキュー(行動待ち行列)に入れておいたほうが確実に関数が実行される。これは恐らく、オブジェクト/クリーチャー発生開始してすぐは直接の関数を受け付けない時間が存在するか、クリエート直後に設定の初期化が行われているためと思われる。
クリエート直後はActionDoCommand(SetLocal系関数)というふうにパターン化して使用しよう。
※このバグはSetLocal系の全ての関数に存在します。
Version
1.28
Example
// 後に下のGetLocal関数で読み出すことができる文字列を // OBJECT_SELFにセットする // string sValue = GetLocalString(OBJECT_SELF, "foo"); void main() { object oThis = OBJECT_SELF; string sKey = “foo”; string sValue = “some string”; SetLocalString(oThis, sKey, sValue); } /* 以下の2つの例はnObjectType、sTemplate、lLocationが 既に設定されているものとします。 CreateObject(int, string, location, int)も参考にして下さい。 */ // 不確実 // クリエイトオブジェクトされたものに反映されない可能性がある。 object oTarget = CreateObject(nObjectType, sTemplate, lLocation, FALSE); SetLocalString(oTarget, "STRING_NAME", "This is my string value"); // 確実 // クリエイトオブジェクトされたものに確実に反映される object oTarget = CreateObject(nObjectType, sTemplate, lLocation, FALSE); action aSetString = ActionDoCommand( SetLocalString(oTarget, "STRING_NAME", "This is my string") ); AssignCommand(oTarget, aSetString);
See Also
functions: | GetLocalString | SetLocalArrayString |
categories: | Local Variables Functions |
author: Daniel Beckman, editor: Charles Feduke, additional contributor(s): Xepherys, Graziano Lenzi, JP team: ngtaicho
Send comments on this topic.