オンラインチャットを実装させたい

返信する
かなりあ
記事: 13
登録日時: 2018年7月27日(金) 21:34
連絡する:

オンラインチャットを実装させたい

投稿記事 by かなりあ »

行き詰ってしまったので質問させてください。

くらむおぼん様のオンライン通信で他のプレイヤーを表示するプラグイン(https://tm.yumineko.com/viewtopic.php?f=5&t=1618)を使って、チャットを実装したいと考えております。

上記の説明の中でNamePopをチャット表示場所として出力させていたのですが、私はこちらには『ゲーム開始時にプレイヤー名を入力させた名前』を表示させたいと思い、

◆プラグインコマンド:InputForm x=250;y=300;v=3;max=8;
◆スクリプト:$gameActors.actor(1).setName($gameVariables.value(3))

として、使われてなかった変数3に代入するようにしました。

実際のチャットは、送受信したメッセージを、Tomoaky様のTMLogWindow.jsを使って表示させるようにしたかったので、入力したメッセージを変数4に代入し、それをログウインドウに出力させようとしました。
発言者の名前:発言者のメッセージ
としたかったので、\V[3]:\V[4]とログウインドウに記述するようにしました。

OnlineAvatarを動かすために必要なコモンイベントは以下のように記述しました。
※タイマー、ジャンプを消去しています。

【アバター】
◆プラグインコマンド:online 3 from chat
◆条件分岐:#03プレイヤー名 ≠ 0
◆プラグインコマンド:namePop 0 \V[3]

:それ以外のとき
◆プラグインコマンド:namePop 0

:分岐終了
◆プラグインコマンド:online 4 from chat
◆条件分岐:#04発言 ≠ 0
◆プラグインコマンド:addLog \V[3]:\V[4]

:それ以外のとき

:分岐終了

【システム】
◆条件分岐:ボタン[キャンセル]が押されている
◆プラグインコマンド:hideLogWindow
◆スイッチの操作:#0002 チャット自動実行 = OFF
◆スイッチの操作:#0001 システム起動 = ON

:それ以外のとき
◆条件分岐:スクリプト:TouchInput.isCancelled();
◆プラグインコマンド:hideLogWindow
◆スイッチの操作:#0002 チャット自動実行 = OFF
◆スイッチの操作:#0001 システム起動 = ON

:分岐終了

:分岐終了

【チャット】
◆プラグインコマンド:showLogWindow
◆プラグインコマンド:InputForm x=250;y=300;v=4;max=50;
◆条件分岐:#04発言 = 0
◆スイッチの操作:#0001 システム起動 = ON
◆スイッチの操作:#0002 チャット自動実行 = OFF
◆イベント処理の中断

:分岐終了
◆変数の操作:#0003 #03プレイヤー名 = $gameParty.allMembers()[0] ? $gameParty.allMembers()[0].name() : 'いない';
◆プラグインコマンド:addLog \V[3]:\V[4]
◆プラグインコマンド:online 3 to chat
◆プラグインコマンド:online 4 to chat
◆スイッチの操作:#0001 システム起動 = ON
◆スイッチの操作:#0002 チャット自動実行 = OFF

このような設定にしたのですが、ネームポップには名前が表示されず、変更した名前もログウインドウには反映されず、ログウインドウには永遠に変数4の内容が流れ続けるという事態になってしまいます。
ローカルの一人プレイならうまく動作するのですが、二人同時にアクセスすると途端にこうなってしまいます。

どなたか解決方法をご存じの方はいらっしゃいませんでしょうか。
よろしくお願いします。
添付ファイル
無題.png
論理イヌ
記事: 205
登録日時: 2020年3月13日(金) 13:05

Re: オンラインチャットを実装させたい

投稿記事 by 論理イヌ »

私は初心者なのでお力になれないですが、問題の切り分けのお手伝いはできるかなと思います。

※(1)~(4)は、TMLogWindow.jsがOFFの状態で行ってください。

(1)プラグインを何も変更していない状態で、アバターの表示はできていますか?
※この機能がこのプラグインの最もオーソドックスな機能であると思っています。
 まずはプラグインが正しく導入できているかを確認します。

(2)プラグインを何も変更していない状態で、チャット機能はできていますか?
※変更前のチャット機能が動作することを確認します。
 変更前が動作しないなら、変更後も動作しないからです。「どこまでできているか」を1つずつ確認します。

(3)『ゲーム開始時にプレイヤー名を入力させた名前』を変数に入れていますが、ちゃんと変数に入っていますか?
※そもそも変数に入っているかを、console.log() 等で確認します。余裕があれば文字列型であるかも確認したいですね。

(4)チャット機能で、固定の文字列(あいう、等)を、名前を表示させたいところに入れてみて表示できますか?
※表示の変更が期待通りにできているかを確認します。


(5)TMLogWindow.jsをONにしてから、(4)が実行できているか確認してください。
※ONにするだけで、その他は変更しないでください。
 プラグインはONにしただけで競合して変な動作をする場合があります。競合していなどうかを確認します。
 (4)ができない場合は(1)~(3)を順に試してください。


思いつくのは以上です。
どこでどのようにつまづいているのかを具体的に示していただけると、他の有識者も回答しやすいと思います。


あと、このプラグインを理解している人は少ないので、現在の質問内容ですと回答が付きづらいかもしれません。
どこまでが「①プラグインの標準機能だけれど出来ない」で、どこまでが「②プラグインを改変して使いたいが出来ない」なのかがわかりづらいです。

①の場合は「プラグインのヘルプに○○と書かれていたので○○とやったができない」等、できるだけ具体的に書くといいと思います。

②の場合は、(1)~(4)の切り分けを行ったあと「標準機能の△△まではできるが、□□の部分ができない」と具体的に書くといいかもしれません。


他の方の回答を約束するものではありませんが、上記を意識していただくと、少しだけ状況が好転するかもしれません。
参考にしていただけますと幸いです。
かなりあ
記事: 13
登録日時: 2018年7月27日(金) 21:34
連絡する:

Re: オンラインチャットを実装させたい

投稿記事 by かなりあ »

論理イヌ 様

詳しくご説明いただき、ありがとうございます。
ご参考にさせていただきながら補足として回答させていただきます。

(1)プラグインを何も変更していない状態で、アバターの表示はできていますか?
→問題なし。アバターの見た目を変更しても反映されます。

(2)プラグインを何も変更していない状態で、チャット機能はできていますか?
→チャットとして入力したテキストを反映される先がログウインドウなので、オフにした状態で反映されるかという質問についてはそもそも不可能と言わざるを得ません。
ただ、ローカルな一人プレイであればログウインドウに問題なく反映しています。
今回私が行き詰っているのが、オンラインでプレイヤーが複数になった際に、ログウインドウに反映されるテキストがおかしくなってしまう問題です。

(3)『ゲーム開始時にプレイヤー名を入力させた名前』を変数に入れていますが、ちゃんと変数に入っていますか?
→上記でも申し上げた通り、ローカルな一人プレイであれば反映しています。
無知で申し訳ないですが、console.log() はどこで何をするためのものでしょうか。使い方がわかりません。


(4)チャット機能で、固定の文字列(あいう、等)を、名前を表示させたいところに入れてみて表示できますか?
→上記の通り、テキスト表示先がログウインドウなので、ログウインドウをオフにした状態では確認できません。

(5)TMLogWindow.jsをONにしてから、(4)が実行できているか確認してください。
→オンにし、ローカルな一人プレイであれば反映します。
複数人になった途端に、変数3(プレイヤー名を代入)と変数4(テキストを代入)がすべて入力したテキストに変わってしまいます。

オンライン通信で他のプレイヤーを表示するプラグイン(https://tm.yumineko.com/viewtopic.php?f=5&t=1618)では、サンプルの中にチャット機能もございました。
しかし、こちらは専用プラグインや専用プラグインコマンドではなく、コモンイベントとテキスト出力先としてネームポップを利用したものでした。

私はそのサンプルから少し改変をし、
ネームポップ→プレイヤー名表示
テキスト表示先→ログウインドウ
としたかった為、コモンイベントでそのような表示になるように組んだのですがどうやらうまくいきません。
コモンイベントの組み方が悪いのかもしれないと思ったので前回はその内容をすべて記述させていだきました。

前回の参考画像ではわかりにくかったかもしれませんので、補足説明を入れた画像を再アップいたします。
無題.png
お分かりになる方がいらっしゃればどうかよろしくお願いします。
論理イヌ
記事: 205
登録日時: 2020年3月13日(金) 13:05

Re: オンラインチャットを実装させたい

投稿記事 by 論理イヌ »

console.log() はスクリプトに記入して使います。

console.log("文字")
このように書くと、F8やF12を押したときに現れるコンソール画面に「文字」が表示されます。

スクリプトが使えますので、例えば下記のように変数を表示するスクリプトで変数の中身を表示させることができます。
$gameVariables.value(変数ID)

console.log("変数1の中身:"+$gameVariables.value(1))
添付ファイル
スクリーンショット 2024-06-01 062304.png
スクリーンショット 2024-06-01 062304.png (30.87 KiB) 閲覧された回数 1059 回
スクリーンショット 2024-06-01 062318.png
返信する

“MV:質問”に戻る