APIでの利用方法

コメント

編集

目次

APIでの利用方法

シーン設定API

メソッドwindow.RPGAtsumaru.comment.changeScene(sceneName: string)
説明
  • コメントシステムのシーンを設定する。
  • シーンが切り替わると、そのシーンのコメント空間に切り替わる。
  • ツクールでは基本的にマップID=シーン名となる。
  • サーバーアクセスが発生する。(ただし直近5つのsceneはキャッシュされ、再アクセスには発生しない)
  • シーン名は64文字までのascii限定。

※なお、アンダースコア2つで始まるシーン名は特殊用途として予約されています。
予約されている中で現在利用可能なシーン名は __title__gameover の2つで、 __title は内部状態の初期値になっています。
引数シーン名を表す文字列
戻り値なし

シーン切り替えAPI

メソッドwindow.RPGAtsumaru.comment.resetAndChangeScene(sceneName: string)
説明
  • changeSceneと違い、context(contextfactorとminorcontext)による内部状態をリセットしつつシーンを切り替える
  • サーバーアクセスが発生する。(ただし直近5つのsceneはキャッシュされ、再アクセスには発生しない)
  • ツクール製ゲームではタイトルとゲームオーバーで全員同じコメントが流れる機能のために使用しています。
引数シーン名を表す文字列
戻り値なし

コンテキストファクターAPI

メソッドwindow.RPGAtsumaru.comment.pushContextFactor(factor: string)
説明
  • コメントシステムにContextFactorとなる値(ツクールでいうセリフと選択肢)をpushして、contextを更新する。
  • contextが更新されることでgposが更新され、文脈にあわせたコメントが流れる。
  • また、minorcontextを初期化する。
  • gpos v1以外では無効なため、利用非推奨
引数コメントシステムにpushするコンテキストを表す文字列
戻り値なし

マイナーコンテキストAPI

メソッドwindow.RPGAtsumaru.comment.pushMinorContext()
説明
  • コメントシステムのgposを更新する。
  • contextが更新されることでgposKeyが更新され、文脈にあわせたコメントが流れる。
  • 内部的にminorcontext値を持っており、それを+1することでgposを更新している。pushContextFactorを使うと、minorcontext値は初期値に戻される。
  • MinorContextは「ContextFactorのさらに細かい状態」を想定している。
  • ツクールではエンジンにwaitがかかるような命令で使用している。
  • gpos v1以外では無効なため、利用非推奨
引数なし
戻り値なし

コンテキストAPI

メソッドwindow.RPGAtsumaru.comment.setContext(context: string)
説明
  • pushContextFactorと違い、contextを引数に渡した値で直接書き換える。
  • 特定のScene内でまったく同じゲーム状態を厳密に作りたい場合に使う。
  • このときの context の値は、ascii 64文字以下推奨。
引数コンテキスト値を表す文字列
戻り値なし

表示コメント取得API

メソッドwindow.RPGAtsumaru.comment.cameOut.subscribe(next: (comment: CameoutComments) => void)
説明
  • ゲーム画面に今まさに流れるコメントをリアルタイムで取得できるAPIです。
  • 表示前のコメントは取得できません。
  • このAPIではギフトについてもコメントの一種として取り扱うため、一緒くたに取得できます。
引数ゲームアツマールのコメント情報( CameoutComments )を受け取るコールバック関数
戻り値subscription .unsubscribe(); 呼び出しにより、コールバック関数を解除できます

コメントの型 CameoutComments について

取得できる CameoutComments は以下のような型です。

type CameoutComments = ({
    type: "comment"
    command: string
    comment: string
    createdAt: number
} | {
    type: "gift"
    command: string
    comment: string
    createdAt: number
    userName: string
    point: number
    thanks: boolean
    reply: string
})[]

プロパティの内容は次のようになっています。

プロパティ内容
(this)array現在のシーンに表示されたコメントのリスト
lengthnumberコメントの件数
[n].typestring通常のコメントの場合 comment 、ギフトの場合 gift
[n].commandstringn+1番目のコメントのコマンド
[n].commentstringn+1番目のコメントの内容
[n].createdAtnumbern+1番目のコメントの投稿時刻(unix time sec)
[n].userNamestring?n+1番目のギフトのユーザー名(※匿名でないギフトの場合のみ)
[n].pointnumber?n+1番目のギフトのポイント(※ギフトの場合のみ)
[n].thanksboolean?n+1番目のギフトに作者からの感謝(ハートマーク)が送られているか(※ギフトの場合のみ)
[n].replystring?n+1番目のギフトへの作者からの返信(※ギフトの場合のみ)

使い方の例

// まずsubscribeにより「画面上にコメントが表示されたらどうするか」を関数として登録する
var subscription = window.RPGAtsumaru.comment.cameOut.subscribe(function(comments) {
    // この関数は「ゲームの場面(gpos)が切り替わるたびに」実行され、
    // 引数のcommentsにはこの画面上に流れるコメントの情報が入っている
    console.log(comments);
});

// console.logの結果の例
[
    {
        // コメントの場合はcommand, comment, createdAtだけが取得でき、残りはundefined
        type: "comment",
        command: "",
        comment: "1ゲット",
        createdAt: 1534567890,
        userName: undefined,
        point: undefined,
        reply: undefined,
        thanks: undefined,
    },
    {
        // ギフトの場合はすべての項目が存在する。ただしcommentやreplyが空欄だったり、匿名のためuserNameが空欄なことはありうる
        type: "gift",
        command: "red shita big",
        comment: "ゲーム開発、がんばライオン!",
        createdAt: 1534567890,
        userName: "アツマライオン",
        point: 1000,
        reply: "ありがライオン!!!!!",
        thanks: true,
    }
]

// 登録を解除したい場合はunsubscribe
subscription.unsubscribe();

投稿コメント取得API

メソッドwindow.RPGAtsumaru.comment.posted.subscribe(next: (comment: PostedComment) => void)
説明
  • このユーザーが今まさに投稿したコメント情報をリアルタイムで取得できるAPIです。
  • あくまで投稿時(コメントが黄色い枠で囲まれているとき)に取得できるAPIです。本人の投稿であっても、後に同じシーンに再訪した際は前述の表示コメントAPIの方に流れます。
  • このAPIではギフトについてもコメントの一種として取り扱うため、一緒くたに取得できます。
引数ゲームアツマールのコメント情報( PostedComment )を受け取るコールバック関数
戻り値subscription .unsubscribe(); 呼び出しにより、コールバック関数を解除できます

コメントの型 PostedComments について

取得できる PostedComment は以下のような型です。

type PostedComment = {
    type: "comment"
    command: string
    comment: string
} | {
    type: "gift"
    command: string
    comment: string
    point: number
}

プロパティの内容は次のようになっています。

プロパティ内容
typestring通常のコメントの場合 comment 、ギフトの場合 gift
commandstring投稿したコメントのコマンド
commentstring投稿したコメントの内容
pointnumber?投稿したギフトのポイント(※ギフトの場合のみ)

使い方の例

// まずsubscribeにより「このユーザーがコメントを投稿したらどうするか」を関数として登録する
var subscription = window.RPGAtsumaru.comment.posted.subscribe(function(comment) {
    // この関数は「このユーザーがコメントまたはギフトを投稿するたび」実行され、
    // 引数のcommentには投稿されるコメントの情報が入っている
    console.log(comment);
});

// console.logの結果の例(コメントの場合)
{
    type: "comment",
    command: "",
    comment: "1ゲット",
    point: undefined, // コメントの場合はpointはundefined
}

// console.logの結果の例(ギフトの場合)
{
    type: "gift",
    command: "red shita big",
    comment: "ゲーム開発、がんばライオン!",
    point: 1000, // ギフトの場合はpointにギフトの価格(消費ポイント)が入る。無料なら0
}

// 登録を解除したい場合はunsubscribe
subscription.unsubscribe();

verboseモードAPI

変数window.RPGAtsumaru.comment.verbose
説明trueを代入すると、コメントのgpos(game position)計算の内部情報をコンソールに出力します
代入値boolean

verboseモードAPIのコンソールの出力例

gpos v1の場合

gamePos updated.
    texts: hoge/fuga/piyo
    increment: 1

gpos v2の場合

gpos v2 updated.
    scene: map1
    context: v2/MapEvent1/page1/%E3%81%93%E3%81%AF
    context(decoded): v2/MapEvent1/page1/こは

gpos v3の場合

gpos v3 updated.
    scene: map1
    context: v3/%E3%82%84%E3%83%89%E3%81%AF%E3%81%A0%E3%82%93%E3%81%BC%5D%E3%82%A4%5B%E3%81%BF%E3%83%BC%E3%81%A6
    context(decoded): v3/やドはだんぼ]イ[みーて

シーンコメント取得API

メソッドwindow.RPGAtsumaru.comment.getSceneComments(sceneName: string)
説明シーン名を指定してそのシーンのコメントをまるごと取得します。このAPIには、ギフトは含まれません
引数シーン名を表す文字列
戻り値Promise<{ command: string, comment: string, context: string }>

gposモード設定API

メソッドwindow.RPGAtsumaru.comment.changeAutoGposMode(mode: string)
説明v1 v2 v3 を指定するとgpos v1, v2, v3に変更します。 none でgposの自動設定自体を無効にできます
引数モードを表す文字列。 v1 v2 v3 none のどれか一つ
戻り値

関連ドキュメント

ドキュメントリンク備考
機能解説コメント機能概要や全般的な解説
プラグインでの利用方法プラグインでの利用方法RPGツクールシリーズユーザー向け

最終更新日

  • 2021/02/09