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.