事前のお知らせ

攻略本レベル4 プラグイン応用

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

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

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

前置き

いくつかゲーム内掲示板を用意しているアツマールのゲームを見たのですが、オリジナルのプラグインを用意している方が多く、調べきれなかったので、予想で作ったら動いたようなレベルの内容です。

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

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

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

事前に決めておいたほうが分かりやすいもの(必須ではありません)

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

サンプルプロジェクト

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

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

なお、今回はサンプルプロジェクトを開いただけでは設定は完了しません。

下記の手順が必要になります。

  • アツマールにアップ
  • アツマールでAPIを設定
  • APIから各種IDを取得し、プロジェクトを修正
  • 再度アツマールにアップ

使用プラグイン

必須プラグイン

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

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

111 Input Form(神無月サスケ (原案:111、くらむぼん)様作) - 111_InputForm.js

plugin.fungamemake.com/archives/2601
ゲーム画面上にHTMLの入力フォームを表示

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

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

イベント内容の概要説明

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

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

掲示板への書き込み

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

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

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

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

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

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

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

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

掲示板の内容表示

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

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

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

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

フェードなしでマップシーンに移行するという内容です。
このスクリプトの使い方が正しいのか、少々自信がないので下記に代替案を出しておきます。

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

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

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

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

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

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

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

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

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

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

GS変数IDの確認

ここまで設定すると、それぞれのIDが発行されています。

グローバルサーバー変数ID
(この例では3346)

トリガーIDの確認

「トリガーは 1 つ設定されています」をクリックします。

トリガーIDが表示されます。
(この例では3922)

プラグインコマンドを修正し、再度アップロード

仮で決めておいたプラグインに入っている、「グローバルサーバー変数ID」と「トリガーID」を書き換えます。

今回の例では、プラグインコマンドは3箇所です。
それぞれで下記のように修正します。

VVVVVVVVを3346に変更
TTTTTTを3922に変更

イベント内容のコード

プラグインコマンド:グローバルサーバー変数取得 VVVVVVVV
選択肢の表示:掲示板に書く, 掲示板を読む, 掲示板をリセット (ウィンドウ, 右, #1, -)
掲示板に書くのとき
プラグインコマンド:InputForm v=19;max=30;
条件分岐:新規書き込み = 0
イベント処理の中断

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

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

分岐終了
プラグインコマンド:トリガー発動 TTTTTT 20

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

それ以外のとき
プラグインコマンド:SetMesRow 16
文章:なし, ウィンドウ, 上
文章\V[20]
プラグインコマンド:SetMesRow 4
スクリプト:$gamePlayer._fadeType = 2;
スクリプトSceneManager.goto(Scene_Map);

分岐終了

掲示板をリセットのとき
変数の操作:#0020 掲示板 = 0
プラグインコマンド:トリガー発動 TTTTTT 20

キャンセルのとき

分岐終了

スポンサードリンク

スポンサードリンク

-攻略本レベル4 プラグイン応用
-

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