alchemistarkの日記

やったことのメモ

Entityについて解説したい 5

いい加減雑になってきたEntity講座にようこそ

1度書いた下書きが消えた 悲しい


今回はKeyValueについてちょっと話します

Entityのページとかで最初の方にあるKeyValueの一覧
あれは何かって話なんですが、HammerでEntityのプロパティ開いたら出るやつです。

f:id:alchemistark:20180209172101p:plain
ついでにヘルプも開いておいた

設置したEntityの名称やらオプションやら設定するとこですね
SmartEditを外した時に出てくるのが正式なプロパティ名なのでSourcePawnからはそちらを使います。
ただ、この画面では全てのプロパティは表示されていないので、一部のプロパティをSmartEditを使わずにHammerから設定するにはKeyとValueをAddする必要があります。
まぁHammerからやる場合はSmartEditでやるだろうから関係ないかな…

SourcePawnからKeyValueを設定する関数はDispatchKeyValue、DispatchKeyValueFloat、DispatchKeyValueVector
それぞれString、Float、Vectorに対応。

DispatchKeyValue · sdktools_functions · SourceMod Scripting API Reference
DispatchKeyValueFloat · sdktools_functions · SourceMod Scripting API Reference
DispatchKeyValueVector · sdktools_functions · SourceMod Scripting API Reference

プロパティの型はEntityのページやヘルプを参照。実際にHammerで値を設定してみて何が入るか確認するのもいいと思う。

new ent = CreateEntityByName("prop_physics_override");
DispatchKeyValue(ent, "targetname", "prop_1");
DispatchSpawn(ent);

使い方と言うほどのものでもないけど、こんな感じでプロパティを設定できる。
作ったEntityに名前付けておけばFindEntityByClassnameで検索した時に特定が容易
CreateEntityByNameはそのまんまEntityを作成する DispatchSpawnしないとゲーム内に出現しないので注意
プロパティの設定はスポーン前でも後でもできるけど、スポーン前だと反映されないプロパティとかあるので
スポーン後にまとめてでもいいかもしれない。

CreateEntityByName · sdktools_functions · SourceMod Scripting API Reference
DispatchSpawn · sdktools_functions · SourceMod Scripting API Reference


次はEntPropの話するよ ようやく本題感ある