【解決済】レベルを1段階下げるステート

アバター
TEN
記事: 160
登録日時: 2018年9月04日(火) 14:48

【解決済】レベルを1段階下げるステート

投稿記事by TEN » 2020年8月21日(金) 12:04

お世話になっております。
ステートについて質問なのですが、レベルを1段階下げるステート(戦闘終了後も維持)の作り方を教えていただけないでしょうか?

・レベルを下げるステート(先頭終了後も永久に下げる)

また、現在のレベルから1下げるだけですので、MAXレベルが変わるわけではありません。
再びレベルを上げればきちんと上限まであがります。

そういったステートの作り方の知恵を貸していただけないでしょうか?
よろしくお願いいたします。

後、同じアクターを同時に仲間にする方法を教えていただきたいです。
デフォルトでは不可能のようですので、プラグインなどご存知でしたら教えていただきたいです。
(例)パーティー編成
アクター1、アクター1、アクター2、アクター3、アクター3...
パーティー編成シーンのプラグインを使っているので、アクターを無制限に仲間にはできます。
しかしやはり同じアクターを仲間にはできないようで。
そういったことができるプラグインを探しています。
よろしくお願いいたします。



【追記】2020.08.22
この度はスクリプトの知識がない私のために、知恵をお貸しいただきありがとうございました。
ご助力いただいた『 sally様 』『 Plasma Dark様 』本当にありがとうございました!
また配慮が足らず困惑させてしまい申し訳ございませんでした。
お二方のおかげで無事、解決する事ができました。
勉強になり、本当にありがとうございました(^▽^)/
最後に編集したユーザー TEN on 2020年8月22日(土) 14:24 [ 編集 1 回目 ]

===============================
公開ゲーム/小説ブログ
『 TEN_GAME / https://ten-game.hatenablog.com/
制作初心者が作ったゲームですので暖かい目で見てください( ̄▽ ̄;)
                        ◇◆――――
                          TEN
―――――――――――――――――――――――――――――――――――――――◆◇
sally
記事: 47
登録日時: 2019年8月06日(火) 05:11

Re: レベルを1段階下げるステート

投稿記事by sally » 2020年8月22日(土) 00:49

レベルダウンステートについて、戦闘終了後もレベルダウンは永続ということですが、
これはステート解除でもレベルは戻らないという認識でよろしいでしょうか。

該当するプラグイン等は見当たりませんでしたが、こちらであれば下記方法で再現が可能です。

① レベルダウン攻撃を受けたと判別するための、専用のステートを用意する
② ①のステートを付与するスキルを作成し、使用効果にてコモンイベントを呼び出す
③ コモンイベントの内容は下記(n = 並び順(0~) m = ステートID)
◆条件分岐:スクリプト:$gameParty.members()[n].isStateAffected(m)
◆スクリプト:$gameParty.members()[n]._level--
◆スクリプト:$gameParty.members()[n].removeState(m)

:分岐終了
※条件分岐以下の内容は、戦闘参加メンバー分だけ用意してください。

また、同一アクターを複数仲間にする方については、
▼copy id プラグイン
http://sumrndm.site/copy-actors/
がご希望の内容に沿うかと思います。

こちらが使えない場合は、同一IDのアクターを仲間にする方法はないので
アクターの能力は全て職業で管理し、アクターをパーティに入れる際にイベントで職業とグラフィックを設定し
仲間に加えるという形が良いかと思いますが、パーティから外してもレベルはリセットされないので
レベルの管理は別途イベントで組むなどの工夫が必要となります。
アバター
TEN
記事: 160
登録日時: 2018年9月04日(火) 14:48

Re: レベルを1段階下げるステート

投稿記事by TEN » 2020年8月22日(土) 03:28

sally様 返信ありがとうございます。

試してみたのですがどうもうまく作動してくれません。
確認ですが下記、
◆条件分岐:スクリプト:$gameParty.members()[1].isStateAffected(10)
◆スクリプト:$gameParty.members()[1]._level--
◆スクリプト:$gameParty.members()[1].removeState(10)

:分岐終了
これで合ってますでしょうか?
これをコモンイベントに設定して、
ステート レベルダウン
行動制約なし モーション通常 重ね合わせなし
全てのチェックを外す

このステートがID10で上記のスクリプトに入っていて、あとは作成したコモンイベントをスキルに設定するだけですよね?

一応スキルも……
レベルダウン
スキルタイプ スキル
範囲単体 スキル使用時バトル画面 命中タイプ必中
使用効果 コモンイベント「レベルダウン」

どこか間違っているでしょうか?
ちなみにこれを敵に使用させています。
しかし、敵がレベルダウンを使っても、「〇〇に効果はなかった」と出ます。
アクターのレベルを1以外にしてみても同じ現象でした。

お手数ですが、もし原因がおわかりであればご教授願いたいです。



それと、もう一つのほうの同じアクターをコピーするというプラグイン。
まさに機能的にはドンピシャなんですが、説明通りにやってもうまくいきません……
エラーがでます(下画像)
キャプチャ.PNG
キャプチャ.PNG (31.26 KiB) 閲覧数: 378 回

パラメータの内容は、上から true にし、下は変えてません(1001)

下記試した事
・イベントにてメンバーの入れ替え
・イベントにてメンバーの入れ替え後にプラグインコマンドで「CopyActor 1」を実行(順番を逆にしてもダメ)
・パラメータの上をfalseに変えてプラグインコマンドで「CopyActorMode ON」の後にメンバーの入れ替え(これでダメだったため追加で「CopyActor 1」を入れてみてもダメ)

ヘルプに書かれていることはあらかた試したのですが、画像のようなエラーが出るだけで全く機能してくれません……(;^_^A
私の使用方法が間違っているのでしょうか。
これについても、ご教授いただければと思います。

長くなり申し訳ございませんが、よろしくお願いいたします。
===============================
公開ゲーム/小説ブログ
『 TEN_GAME / https://ten-game.hatenablog.com/
制作初心者が作ったゲームですので暖かい目で見てください( ̄▽ ̄;)
                        ◇◆――――
                          TEN
―――――――――――――――――――――――――――――――――――――――◆◇
sally
記事: 47
登録日時: 2019年8月06日(火) 05:11

Re: レベルを1段階下げるステート

投稿記事by sally » 2020年8月22日(土) 04:26

内容について、言葉足らずで失礼しました。
まず端的な解決方法を申し上げますと、
スキルの使用効果のコモンイベントの上に、ID10のステート付与を入れてください。
コマンドは下記となります。
------------------------
【使用効果】
ステート付与 レベルダウン
コモンイベント レベルダウン用
------------------------
こちらの再現方法は
「スキルでステートを付与させて後、そのステートにかかっていればレベルダウンをさせる」
という形になりますので、ステートにかかっていなければ効果は発揮しません。


また、copy actorについて新規プロジェクトにて試したところ、正常に動作しました。
イベント内容は、プラグインコマンド copy actor 1 を設定しただけで、プラグイン本体はいじってません。
このコマンドを実行すると、実行の度にパーティにID1のアクターがパーティに加わります。
また、Initial copy mode がONの時にイベントコマンドのメンバー入れ替えで同一IDアクターを加入させても
同一アクターが加入することも確認しました。

jsについては素人のため憶測で恐縮ですが、何かしらのアクター関連プラグインとの競合かなと思います。
競合については僕ではお役に立てません…。
ご紹介しておきながら申し訳ありません。
アバター
Plasma Dark
記事: 325
登録日時: 2020年2月08日(土) 02:29
連絡を取る:

Re: レベルを1段階下げるステート

投稿記事by Plasma Dark » 2020年8月22日(土) 06:24

コード: 全て選択

$gameParty.members()[1]._level--


これではお望みの戦闘後も恒久的にレベルが下がった状態を作ることはできません。
恒久的にレベルを下げたい場合、 changeLevel メソッドを利用します。

コード: 全て選択

const actor = $gameParty.members()[n];
actor.changeLevel(actor.level - 1);


また、一時的にレベルを下げたい場合でも、privateを意図する_始まりの変数を直接操作すべきではないです。levelDownメソッドを利用しましょう。
アバター
Plasma Dark
記事: 325
登録日時: 2020年2月08日(土) 02:29
連絡を取る:

Re: レベルを1段階下げるステート

投稿記事by Plasma Dark » 2020年8月22日(土) 06:46

それと、もう一つのほうの同じアクターをコピーするというプラグイン。
まさに機能的にはドンピシャなんですが、説明通りにやってもうまくいきません……
エラーがでます(下画像)


一つのスレッドで複数の話題を話そうとすると質問者、回答者ともに混乱する恐れがあるので、質問が複数ある場合はそれぞれでスレッドを立ててしまうほうが良いです。
将来、別の誰かが同じ問題を検索した際にも別スレッドになっているほうがわかりやすいです。
とは言え、回答も既にスレッド内についているので今からわざわざ分けるとかえってわかりにくくなってしまいますが。

エラーメッセージはコールスタックが溢れていると言っているので、どこかで無限ループに陥っているんではないかと思われます。
軽く読んだ限り、 SRD_CopyActors 単体では起こり得ないように思われるので、何か行儀の悪いプラグインと競合してるんじゃないでしょうか。
F12を押してコンソールを開き、スタックトレースの内容を見ればあるいは何かわかるかもしれません。
sally
記事: 47
登録日時: 2019年8月06日(火) 05:11

Re: レベルを1段階下げるステート

投稿記事by sally » 2020年8月22日(土) 09:49

これではお望みの戦闘後も恒久的にレベルが下がった状態を作ることはできません。
恒久的にレベルを下げたい場合、 changeLevel メソッドを利用します。


戦闘テストでにて動作したため、問題なく動作すると勘違いしておりました。
中途半端な知識にて動作しないものをご説明して申し訳ありません。

また、Plasma Dark さんにおきましては、
ミスのご指摘・矯正だけでなく、メソッドについてのご教示を頂き、ありがとうございます。
勉強させていただきます。


TENさん、最後にこの度、間違った内容で説明差し上げ混乱を招いたこと、重ねて謝罪申し上げます。
アバター
TEN
記事: 160
登録日時: 2018年9月04日(火) 14:48

Re: レベルを1段階下げるステート

投稿記事by TEN » 2020年8月22日(土) 14:19

お返事が遅くなり申し訳ありません。

sally様 Plasma Dark様 ご教授いただきありがとうございます。

一つのスレッドで複数の話題を話そうとすると質問者、回答者ともに混乱する恐れがあるので、質問が複数ある場合はそれぞれでスレッドを立ててしまうほうが良いです。
将来、別の誰かが同じ問題を検索した際にも別スレッドになっているほうがわかりやすいです。
とは言え、回答も既にスレッド内についているので今からわざわざ分けるとかえってわかりにくくなってしまいますが。

配慮が足らず申し訳ございません。
次回からは気を付けます。

TENさん、最後にこの度、間違った内容で説明差し上げ混乱を招いたこと、重ねて謝罪申し上げます。

saly様が謝ることは何もありません。
スクリプトの知識がない私からしたらとても勉強になりますm(__)m



そしてレベルダウンのステートは無事成功しました。
ご助力いただきました sally様 Plasma Dark様 本当にありがとうございました!
勉強になります!
スキルでステートを付与し、コモンイベントで
◆条件分岐:スクリプト:$gameParty.members()[0].isStateAffected(10)
 ◆スクリプト:const actor = $gameParty.members()[0];
        actor.changeLevel(actor.level - 1);
 ◆スクリプト:$gameParty.members()[0].removeState(10)
 ◆
:分岐終了

と書いたら成功しました(^▽^)/
当方、スクリプトの知識がないため、本当に勉強になり助かりました!

そしてもう一つの同一アクターを仲間にするプラグインについては、一度プラグインを全てOFFにしたら正常に動作いたしました。
その後一つ一つONにして確認してみた所、お二人の仰る通り別プラグインとの競合が問題でした。
前衛後衛の概念を追加するプラグイン(VanguardAndRearguard.js)と同時に導入すると、あのようなエラーが出るようでした。
これは順番を逆にしても同じエラーが出るため、同時に導入は難しいようですね。
この辺は考えます。

長くなりましたが、この度ご助力いただいた sally様 Plasma Dark様 本当にありがとうございました!
いただいた助言を元に次回からは質問の仕方を気を付けます!
お二方、本当にありがとうございました(^▽^)/
===============================
公開ゲーム/小説ブログ
『 TEN_GAME / https://ten-game.hatenablog.com/
制作初心者が作ったゲームですので暖かい目で見てください( ̄▽ ̄;)
                        ◇◆――――
                          TEN
―――――――――――――――――――――――――――――――――――――――◆◇

“MV:質問” へ戻る