全変数の操作
skript 2.5.3 で試しました
skriptの変数は hashmap と treemap の2つのマップ変数で管理されています
変数の名前の最後にアスタリスク(*)が来るときは treemap から参照されて、来ないときは hashmap から参照されます
* はリスト変数のサブノードを取得するために予約されているので解析時にエラーが出ますが次のコードで回避できることがわかりました
グローバル変数のルートノードのリストを取得するコードです
変数の名前は内部で
*::*
として認識されます
最後に*が付く場合は指定のノードまで進むために ::
で分割されて頭から探索します
ノード名が*になると直ちに探索を中止して treemap を返すので2個目以降のノード名は処理されません
なので、最初と最後に*が来る名前は全て同じ振る舞いをします
以上の仕様を利用して全変数を削除するコードを書いてみました
delete_variables()
すべての変数を削除します
delete_nodes("a::b")
a::bとそのサブノードを削除します0 Replies