ユーザ用ツール

サイト用ツール


vci:updatelog:1.5.4a

VirtualCast1.5.4a VCI更新

  • メッセージシステムを実装しました

vci.message.Emit

  • メッセージを送信します。
  • メッセージは、自分自身を含む全ユーザーの全VCIに送信されます。
main.lua
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引数です。
main.lua
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` とメッセージシステムを組み合わせることでほぼ同じ機能を実装できます
      • アイテム変数は、アイテムを削除して作り直すことでクリアできます
vci/updatelog/1.5.4a.txt · 最終更新: 2019/08/28 15:56 by navana

ページ用ツール