【解決済み】プレイヤーの呼び名を複数用意する方法について

たそがれジャンボ
記事: 11
登録日時: 2020年6月14日(日) 22:56

【解決済み】プレイヤーの呼び名を複数用意する方法について

投稿記事by たそがれジャンボ » 2021年1月31日(日) 19:25

お世話になっております。
現在作成中のゲームで、自己解決が難しい部分が出てきました。
よろしければぜひ、ご教授いただきたいと存じます。

さて、具体的な内容ですが

主人公であるプレイヤーの仲間キャラからの呼び名を複数用意したいのです。

前提として実装したい内容が

1.プレイヤーの名前は任意で自由に決められる。
2.仲間は複数存在する。
3.仲間からの呼び名は複数存在しており、任意のタイミングで変更できる。

というものです。


例として主人公の名前を「ハロルド」とします。

パーティに「テレーゼ」「マーシャ」「ルキウス」という仲間がいるとします。

デフォルト状態での呼び方は

・「テレーゼ」からは「ハロルド」
・「マーシャ」からは「ハロルド君」
・「ルキウス」からは「ハロルドさん」

です。

プレイヤーが主人公の名前を変更して「アレックス」にしたとします

さらに任意のタイミングでイベントを起こして呼び名を変えます。(呼び名はそれぞれのキャラの複数の選択肢から選びます)

変更した結果で

・「テレーゼ」からは「兄弟」
・「マーシャ」からは「アレックスっち」
・「ルキウス」からは「勇者様」

となるように、それぞれの呼び名を変えたいです。

当初は名前用の変数を用意することで、制御文字を使って実現できると考えていたのですが、「〇〇さん」や「〇〇君」などのパターンに対応できないと気づきました。

一応、条件分岐を使いセリフを複数用意する方法も考えはするのですが、セリフ全てに複数の条件分岐を設定するのは現実的ではないと感じております。

理想としては制御文字のみ、もしくはプラグイン等で解決が望ましいです。
妥協案としては主人公の名前を固定することで解決できると思いますが…


説明が分かりにくかった場合は申し訳ありません。
どうぞよろしくお願いいたします。





以下はこれを実装するにあたって試行錯誤した内容です

1. まず、仲間の数と同等の「呼び名用」変数を用意しておく
2. ゲーム開始時点で主人公の名前を決める
3. 変数の操作でスクリプト $gameActors.actor(1).name() を使い決定した主人公の名前を変数に代入する
4. 実際に仲間が主人公を呼ぶ時は「\n[1]」のようにアクターネームではなく、先程代入した変数を使う「\v[1]」
5. 呼び名を「◯◯さん」から「勇者様」に変更しようと思うと「〇〇」の部分は変えられるが「~さん」の部分は変えられない。「勇者様さん」になってしまう
6. 「~さん」の部分も変数にする方法は、変数の中身を「無」にすることはできないので「0」になってしまう
7. つまりメッセージ中に表示した制御文字を表示させない方法があれば解決?
最後に編集したユーザー たそがれジャンボ on 2021年2月01日(月) 00:35 [ 編集 2 回目 ]

アバター
ムノクラ
記事: 2011
登録日時: 2018年2月23日(金) 11:41
連絡を取る:

Re: プレイヤーの呼び名を複数用意する方法について

投稿記事by ムノクラ » 2021年1月31日(日) 19:46

たそがれジャンボ さんが書きました:お世話になっております。
現在作成中のゲームで、自己解決が難しい部分が出てきました。
よろしければぜひ、ご教授いただきたいと存じます。

さて、具体的な内容ですが

主人公であるプレイヤーの仲間キャラからの呼び名を複数用意したいのです。

前提として実装したい内容が

1.プレイヤーの名前は任意で自由に決められる。
2.仲間は複数存在する。
3.仲間からの呼び名は複数存在しており、任意のタイミングで変更できる。

というものです。


例として主人公の名前を「ハロルド」とします。

パーティに「テレーゼ」「マーシャ」「ルキウス」という仲間がいるとします。

デフォルト状態での呼び方は

・「テレーゼ」からは「ハロルド」
・「マーシャ」からは「ハロルド君」
・「ルキウス」からは「ハロルドさん」

です。

プレイヤーが主人公の名前を変更して「アレックス」にしたとします

さらに任意のタイミングでイベントを起こして呼び名を変えます。(呼び名はそれぞれのキャラの複数の選択肢から選びます)

変更した結果で

・「テレーゼ」からは「兄弟」
・「マーシャ」からは「アレックスっち」
・「ルキウス」からは「勇者様」

となるように、それぞれの呼び名を変えたいです。

当初は名前用の変数を用意することで、制御文字を使って実現できると考えていたのですが、「〇〇さん」や「〇〇君」などのパターンに対応できないと気づきました。

一応、条件分岐を使いセリフを複数用意する方法も考えはするのですが、セリフ全てに複数の条件分岐を設定するのは現実的ではないと感じております。

理想としては制御文字のみ、もしくはプラグイン等で解決が望ましいです。
妥協案としては主人公の名前を固定することで解決できると思いますが…


説明が分かりにくかった場合は申し訳ありません。
どうぞよろしくお願いいたします。





以下はこれを実装するにあたって試行錯誤した内容です

1. まず、仲間の数と同等の「呼び名用」変数を用意しておく
2. ゲーム開始時点で主人公の名前を決める
3. 変数の操作でスクリプト $gameActors.actor(1).name() を使い決定した主人公の名前を変数に代入する
4. 実際に仲間が主人公を呼ぶ時は「\n[1]」のようにアクターネームではなく、先程代入した変数を使う「\v[1]」
5. 呼び名を「◯◯さん」から「勇者様」に変更しようと思うと「〇〇」の部分は変えられるが「~さん」の部分は変えられない。「勇者様さん」になってしまう
6. 「~さん」の部分も変数にする方法は、変数の中身を「無」にすることはできないので「0」になってしまう
7. つまりメッセージ中に表示した制御文字を表示させない方法があれば解決?


複数の変数にスクリプトで文字列を代入することで、実現可能に思えます。

SS01.png
SS01.png (33.1 KiB) 閲覧数: 1835 回


コード: 全て選択

◆変数の操作:#0001 V1 = '兄弟'
◆文章:なし, ウィンドウ, 下
:  :\v[1]
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
たそがれジャンボ
記事: 11
登録日時: 2020年6月14日(日) 22:56

Re: プレイヤーの呼び名を複数用意する方法について

投稿記事by たそがれジャンボ » 2021年1月31日(日) 23:36

ムノクラ様
ご連絡ありがとうございます。

理解した内容と違う場合は申し訳ありません。もう少しだけ補足をお願いしたいと思います。

「\v[1]さん、こんにちは」

というメッセージがあるとして、変数に文字列を代入すると、「~さん」の部分が残ってしまい不自然になってしまいます。
「~さん」の部分を上手く省略する方法は無いでしょうか?

PrtSc_2021131_231947.jpg

PrtSc_2021131_232025.jpg

PrtSc_2021131_231820.jpg

PrtSc_2021131_231726.jpg
アバター
ムノクラ
記事: 2011
登録日時: 2018年2月23日(金) 11:41
連絡を取る:

Re: プレイヤーの呼び名を複数用意する方法について

投稿記事by ムノクラ » 2021年2月01日(月) 00:01

たそがれジャンボ さんが書きました:ムノクラ様
ご連絡ありがとうございます。

理解した内容と違う場合は申し訳ありません。もう少しだけ補足をお願いしたいと思います。

「\v[1]さん、こんにちは」

というメッセージがあるとして、変数に文字列を代入すると、「~さん」の部分が残ってしまい不自然になってしまいます。
「~さん」の部分を上手く省略する方法は無いでしょうか?

PrtSc_2021131_231947.jpg
PrtSc_2021131_232025.jpg
PrtSc_2021131_231820.jpg
PrtSc_2021131_231726.jpg


・「テレーゼ」からは「兄弟」
・「マーシャ」からは「アレックスっち」
・「ルキウス」からは「勇者様」

というところから、変数の複数にそれぞれを代入して、発言するキャラによって表示する変数を変更するのが妥当だと思います。

「さん」を省略するのではなく、「さん」を入れた変数と、入れていない変数を個別に用意するのが妥当かと思います。

コード: 全て選択

◆変数の操作:#0001 V1 = ’兄弟’
◆変数の操作:#0002 V2 = ’アレックスっち’
◆変数の操作:#0003 V3 = ’勇者様’


微妙に、実現したいことが把握しきれていない印象がありますが、この辺りが妥当点な気がしています。

補足

こんな使い方もできます。

コード: 全て選択

◆変数の操作:#0001 V1 = $gameActors.actor(1).name()+'様'
◆文章:なし, ウィンドウ, 下
:  :\v[1]!
:  :大丈夫ですか?
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
たそがれジャンボ
記事: 11
登録日時: 2020年6月14日(日) 22:56

Re: プレイヤーの呼び名を複数用意する方法について

投稿記事by たそがれジャンボ » 2021年2月01日(月) 00:34

おお!!! なるほど!!!

とても良くわかりました!

変数に「~さん」まで入れてしまうという発想はあったのですが、その場合、任意のアクター名を代入する方法がないと思いこんでおりました。

補足

こんな使い方もできます。

コード: 全て選択

◆変数の操作:#0001 V1 = $gameActors.actor(1).name()+'様'
◆文章:なし, ウィンドウ, 下
:  :\v[1]!
:  :大丈夫ですか?



まさにこの方法を求めておりました。
アクター名を変数に代入するだけでなく追記することが出来たのですね。


ムノクラ様
素早い返信、恐れ入ります。
イマイチ要領を得ない説明となってしまい申し訳ありません。お付き合いいただきありがとうございました。
無事に解決いたしましたので、この記事は解決済みにさせていただきます!

“MV:質問” へ戻る