====== VirtualCast1.5.4a VCI更新 ====== * メッセージシステムを実装しました ---- ===== vci.message.Emit ===== * メッセージを送信します。 * メッセージは、自分自身を含む全ユーザーの全VCIに送信されます。 function onUse(self) -- メッセージ名: MSG_NAME -- メッセージの内容: 1 vci.message.Emit('MSG_NAME', 1) end ===== vci.message.On ===== * メッセージを受信します。 * メッセージを送信したのと同じVCIでも、別のVCIでもOK。 * Onの第1引数と Emitの第1引数 が一致したものを受け取ることができます。 受信関数は3つの引数を受けます。 * sender: 送信者情報(システムが設定します) * name: メッセージの名前。Emit 関数の第1引数です。 * message: メッセージの内容。Emit 関数の第2引数です。 function onMessage(sender, name, message) -- senderはテーブルになっています。vci.message.Emit関数を実行したvciの情報 -- { -- type: "vci" -- name: "vciの名前" -- } -- 今後の更新で sender が違うメッセージを実装予定です for k, v in pairs(sender) do print(k .. ":" .. v) end print(name) print(message) end vci.message.On('MSG_NAME', onMessage) ===== 機能について ===== * 主にあるVCIから別のVCIにメッセージを送ることを想定しています * スイッチのVCIと、爆発のVCIを分けて作るなど * システムからのメッセージをVCIで受け取ることを想定しています(今後のバージョンアップで実装予定) 共有変数との違い。 * 共有変数は値をすべてクリアする方法を実装していませんでした。 * 変数の持ち主がわからないので全部消していいのかどうか。 * アイテム固有の変数の名前を付けるのが難しい * 同じアイテムを複数のユーザーが出したときにどうしよう? * メッセージは、投げっぱなしで値を保存しません(途中で凸した場合には過去のメッセージは来ない) * アイテム変数 `vci.state` とメッセージシステムを組み合わせることでほぼ同じ機能を実装できます * アイテム変数は、アイテムを削除して作り直すことでクリアできます