【解決済み】プレイヤーの呼び名を複数用意する方法について
Posted: 2021年1月31日(日) 19:25
お世話になっております。
現在作成中のゲームで、自己解決が難しい部分が出てきました。
よろしければぜひ、ご教授いただきたいと存じます。
さて、具体的な内容ですが
主人公であるプレイヤーの仲間キャラからの呼び名を複数用意したいのです。
前提として実装したい内容が
1.プレイヤーの名前は任意で自由に決められる。
2.仲間は複数存在する。
3.仲間からの呼び名は複数存在しており、任意のタイミングで変更できる。
というものです。
例として主人公の名前を「ハロルド」とします。
パーティに「テレーゼ」「マーシャ」「ルキウス」という仲間がいるとします。
デフォルト状態での呼び方は
・「テレーゼ」からは「ハロルド」
・「マーシャ」からは「ハロルド君」
・「ルキウス」からは「ハロルドさん」
です。
プレイヤーが主人公の名前を変更して「アレックス」にしたとします
さらに任意のタイミングでイベントを起こして呼び名を変えます。(呼び名はそれぞれのキャラの複数の選択肢から選びます)
変更した結果で
・「テレーゼ」からは「兄弟」
・「マーシャ」からは「アレックスっち」
・「ルキウス」からは「勇者様」
となるように、それぞれの呼び名を変えたいです。
当初は名前用の変数を用意することで、制御文字を使って実現できると考えていたのですが、「〇〇さん」や「〇〇君」などのパターンに対応できないと気づきました。
一応、条件分岐を使いセリフを複数用意する方法も考えはするのですが、セリフ全てに複数の条件分岐を設定するのは現実的ではないと感じております。
理想としては制御文字のみ、もしくはプラグイン等で解決が望ましいです。
妥協案としては主人公の名前を固定することで解決できると思いますが…
説明が分かりにくかった場合は申し訳ありません。
どうぞよろしくお願いいたします。
以下はこれを実装するにあたって試行錯誤した内容です
1. まず、仲間の数と同等の「呼び名用」変数を用意しておく
2. ゲーム開始時点で主人公の名前を決める
3. 変数の操作でスクリプト $gameActors.actor(1).name() を使い決定した主人公の名前を変数に代入する
4. 実際に仲間が主人公を呼ぶ時は「\n[1]」のようにアクターネームではなく、先程代入した変数を使う「\v[1]」
5. 呼び名を「◯◯さん」から「勇者様」に変更しようと思うと「〇〇」の部分は変えられるが「~さん」の部分は変えられない。「勇者様さん」になってしまう
6. 「~さん」の部分も変数にする方法は、変数の中身を「無」にすることはできないので「0」になってしまう
7. つまりメッセージ中に表示した制御文字を表示させない方法があれば解決?
現在作成中のゲームで、自己解決が難しい部分が出てきました。
よろしければぜひ、ご教授いただきたいと存じます。
さて、具体的な内容ですが
主人公であるプレイヤーの仲間キャラからの呼び名を複数用意したいのです。
前提として実装したい内容が
1.プレイヤーの名前は任意で自由に決められる。
2.仲間は複数存在する。
3.仲間からの呼び名は複数存在しており、任意のタイミングで変更できる。
というものです。
例として主人公の名前を「ハロルド」とします。
パーティに「テレーゼ」「マーシャ」「ルキウス」という仲間がいるとします。
デフォルト状態での呼び方は
・「テレーゼ」からは「ハロルド」
・「マーシャ」からは「ハロルド君」
・「ルキウス」からは「ハロルドさん」
です。
プレイヤーが主人公の名前を変更して「アレックス」にしたとします
さらに任意のタイミングでイベントを起こして呼び名を変えます。(呼び名はそれぞれのキャラの複数の選択肢から選びます)
変更した結果で
・「テレーゼ」からは「兄弟」
・「マーシャ」からは「アレックスっち」
・「ルキウス」からは「勇者様」
となるように、それぞれの呼び名を変えたいです。
当初は名前用の変数を用意することで、制御文字を使って実現できると考えていたのですが、「〇〇さん」や「〇〇君」などのパターンに対応できないと気づきました。
一応、条件分岐を使いセリフを複数用意する方法も考えはするのですが、セリフ全てに複数の条件分岐を設定するのは現実的ではないと感じております。
理想としては制御文字のみ、もしくはプラグイン等で解決が望ましいです。
妥協案としては主人公の名前を固定することで解決できると思いますが…
説明が分かりにくかった場合は申し訳ありません。
どうぞよろしくお願いいたします。
以下はこれを実装するにあたって試行錯誤した内容です
1. まず、仲間の数と同等の「呼び名用」変数を用意しておく
2. ゲーム開始時点で主人公の名前を決める
3. 変数の操作でスクリプト $gameActors.actor(1).name() を使い決定した主人公の名前を変数に代入する
4. 実際に仲間が主人公を呼ぶ時は「\n[1]」のようにアクターネームではなく、先程代入した変数を使う「\v[1]」
5. 呼び名を「◯◯さん」から「勇者様」に変更しようと思うと「〇〇」の部分は変えられるが「~さん」の部分は変えられない。「勇者様さん」になってしまう
6. 「~さん」の部分も変数にする方法は、変数の中身を「無」にすることはできないので「0」になってしまう
7. つまりメッセージ中に表示した制御文字を表示させない方法があれば解決?