事前のお知らせ

攻略本レベル4 プラグイン応用:RPGツクールMZ

ゲームアツマールのゲーム内掲示板の作り方 #RPGツクールMZ

ゲームアツマールでプレイヤー間で共有されるデータでの、ゲーム内掲示板の作り方をまとめます。

こちらはRPGツクールMZ向けの記事です。
RPGツクールMV向けの記事もございます。

前置き

いくつかゲーム内掲示板を用意しているアツマールのゲームを見たのですが、オリジナルのプラグインを用意している方が多く、調べきれなかったので、予想で作ったら動いたようなレベルの内容です。
概ねの作り方はMZでもMVでも大差ない…かと思ったら、配布されているプラグインの仕様が違うため、注意が必要です。

グローバルサーバー変数(以降、GS変数)を使用します。

atsumaru.github.io/api-references/plugins/global-server-variable

先に設定を考えておきます。
アツマールにゲームをアップ(非公開でもOK)しないとAPIが設定できないからです。

事前に決めておくこと

  • GS変数の名前(例:掲示板)
  • GS変数のトリガーの名前(例:新規書き込み)

サンプルプロジェクト

まとめてZIPダウンロード(38KB)

新規プロジェクトを作成して、上書きして使ってください。

なお、今回はサンプルプロジェクトを開いただけでは設定は完了しません。
アツマールにアップして、APIを設定する必要があります。

使用プラグイン

必須プラグイン

WaitCommandUntilPromiseSettled.js
AtsumaruApi.js
atsumaru.github.io/api-references/plugins

快適度を上げるプラグイン

111 文字入力フォーム(111, くらむぼん様作) - 111_InputForm.js

plugin-mz.fungamemake.com/archives/754
文字入力フォームを表示して、文字を入力させます。

MPP 文章の表示拡張(木星ペンギン様作) - MPP_MessageEX.js

plugin-mz.fungamemake.com/archives/2393
文章表示の機能を拡張したり表示の演出を追加します。

イベント内容の概要説明

アツマールにある掲示板書き込みデータを読み込む

AtsumaruApi のプラグインコマンド「グローバルサーバー変数取得」で変数20に代入します。

掲示板への書き込み

サンプルでは以下の変数を使用します。

  • ツクール内変数19:新規書き込み
  • ツクール内変数20:掲示板

ツクールの仕様として、変数の初期値は数値の0です。
「変数の操作:スクリプト''」を指定しても、中身を空にすることは出来ず、0に戻ります。
この仕様を把握してイベントを組む必要があります。
(この仕様を変えるプラグインは配布されていますが、今回はちょっとした工夫で避けられるので、このプラグインは使用しません)

111_InputForm の機能で変数19に書き込みデータを入れる。
変数20が0ならば、変数19の内容を代入する。
変数20が0でなければ、改行コードを加算した後に変数19の内容を加算する。

改行コードとして一般的に使われる '\n' を追加すると、下記のような状況になります。

  • ローカルでは、正常に動作して見える。
  • アツマールで動作すると改行しない。

代わりに `\n` を追加します。
これはテンプレートリテラルというJavaScriptの機能で…よく分からんけど、とりあえず、これで改行して表示されるようになります。
シンブルクォートではなく、バッククォートと呼ばれる記号で括るので、ご注意ください。

AtsumaruApi のプラグインコマンド「グローバルサーバー変数のトリガー発動」で変数20をGS変数「掲示板」へ代入します。

掲示板の内容表示

AtsumaruApiのプラグインコマンド「グローバルサーバー変数取得」で変数20に書き込み内容を代入します。
この処理は書き込み内容が0のケースも想定してイベントの最初に入れてあります。

変数20を文章の表示コマンドで表示します。
しかし、デフォルトだと4行ずつに分かれて表示されてしまうので、MPP_MessageEXでウィンドウの大きさを大きくしています。
ツクールの仕様で、最後に表示したメッセージウィンドウの大きさと位置から、次の選択肢の表示位置が決まります。

今回は、これを回避するために、下記のスクリプトを使いました。

$gamePlayer._fadeType = 2;
SceneManager.goto(Scene_Map);

フェードなしでマップシーンに移行するという内容です。
オートセーブをONにしている場合、ここで動作します。
このスクリプトの使い方が正しいのか、少々自信がない(オートセーブの人は困るでしょう)ので下記に代替案を出しておきます。

プラグインコマンドで、通常のメッセージ行数(デフォルトは4)を指定。
「掲示板の書き込みは以上のようです」等と文章を表示する。

ゲームアツマールのAPI設定

面倒なのは、仮でも非公開でもプロジェクトを一度アツマールにアップしないとAPIの設定が出来ません。
ともあれ、サンプルプロジェクトをアツマールにアップしましょう。
非公開で問題ありません。

「投稿ゲーム管理」画面で、投稿したゲームの一覧が出ます。
このゲームの「アップデート」ボタン等の並びに「API設定」があります。
これをクリックします。

「グローバルサーバー変数」タブをクリックします。

「新しい変数を追加」ボタンをクリックします。

「新しい変数」を「文字列型」に指定します。
「名前」に「掲示板」と入力します。
「OK」ボタンを押します。

変数が作成された通知のダイアログが出ます。
ダイアログを閉じると、ボタンが増えています。

「新しいトリガーを追加」ボタンを押します。

「新しいトリガー」は初期値の「値を代入」にします。
「名前」に「新規書き込み」と入力します。
「保存」ボタンを押します。

イベント内容のコード

プラグインコマンド:AtsumaruApi, グローバルサーバー変数取得
プラグインコマンドGS変数リスト = ["{\"name\":\"掲示板\",\"variableId\":\"20\"…
プラグインコマンド*エラーメッセージ = 18
選択肢の表示:掲示板に書く, 掲示板を読む, 掲示板をリセット (ウィンドウ, 右, #1, -)
掲示板に書くのとき
プラグインコマンド:111_InputForm, 文字入力の処理
プラグインコマンド入力欄のX位置 = 224
プラグインコマンド入力欄のY位置 = 408
プラグインコマンド入力結果の代入先 = 19
プラグインコマンド最大文字数 = 30
プラグインコマンドONのとき入力を強制終了 = 
プラグインコマンド決定ボタンの相対X位置 = 0
プラグインコマンド決定ボタンの相対Y位置 = 50
プラグインコマンド文字サイズ = 24
プラグインコマンド入力欄の初期値 = 
条件分岐:新規書き込み = 0
イベント処理の中断

分岐終了
条件分岐:掲示板 = 0
変数の操作:#0020 掲示板 = 新規書き込み

それ以外のとき
変数の操作:#0020 掲示板 += `\n`
変数の操作:#0020 掲示板 += 新規書き込み

分岐終了
プラグインコマンド:AtsumaruApi, グローバルサーバー変数のトリガー発動
プラグインコマンドGS変数名 = 掲示板
プラグインコマンドトリガー名 = 新規書き込み
プラグインコマンドvalue = 20
プラグインコマンド*エラーメッセージ = 18

掲示板を読むのとき
条件分岐:掲示板 = 0
文章:なし, なし, ウィンドウ, 下
文章まだ、何も書かれていない。

それ以外のとき
プラグインコマンド:MPP_MessageEX, メッセージ行数設定
プラグインコマンドrow = 16
文章:なし, なし, ウィンドウ, 上
文章\V[20]
プラグインコマンド:MPP_MessageEX, メッセージ行数設定
プラグインコマンドrow = 4
スクリプト:$gamePlayer._fadeType = 2;
スクリプトSceneManager.goto(Scene_Map);

分岐終了

掲示板をリセットのとき
変数の操作:#0020 掲示板 = 0
プラグインコマンド:AtsumaruApi, グローバルサーバー変数のトリガー発動
プラグインコマンドGS変数名 = 掲示板
プラグインコマンドトリガー名 = 新規書き込み
プラグインコマンドvalue = 20
プラグインコマンド*エラーメッセージ = 18

キャンセルのとき

分岐終了

スポンサードリンク

スポンサードリンク

-攻略本レベル4 プラグイン応用:RPGツクールMZ
-

Copyright© RPGツクールMZ・MV初心者的備忘録 - FGMG (Fun Game Make Group) , 2023 All Rights Reserved.