【解決済】標準で実装されている強化と弱化の変換を行うスキルを作りたい

sally
記事: 119
登録日時: 2019年8月06日(火) 05:11

Re: 標準で実装されている強化と弱化の変換を行うスキルを作りたい

投稿記事 by sally »

横から失礼致します。

ecf5DTTzl6h6lJi02 さん

詳細にご説明頂きありがとうございます。
有効ターン数はbuffTurnsなのですね。
全く不明な状態でしたので、理解が進みました。

重ねて御礼申し上げます。

あのにー さん

トピックに対し、横からの発言失礼致しました。
引用、解説頂いた内容に対し御礼を申し上げたく…ご容赦頂けますと幸いです。
これ以上は混線してしまうので、発言を控えさせて頂きます。

それでは、横から失礼いたしました。
あのにー
記事: 20
登録日時: 2020年10月31日(土) 17:39

Re: 標準で実装されている強化と弱化の変換を行うスキルを作りたい

投稿記事 by あのにー »

皆様方へ
お返事等、遅れてしまい申し訳ありません。
本日12月17日、ツクールを起動する時間を作れたので、報告いたします。

ecf5DTTzl6h6lJi02様
ecf5DTTzl6h6lJi02 さんが書きました: この配列には、強化であれば正の数、弱体であれば負の数が入っているので、符号を反転してしまえば、
そのまま、逆の効果となります。
スキルとコモンイベントを作成し、スキルを実行してみたところ、うまくいきました!
ありがとうございます!

【コード書き換えの為削除】

ですが、このままでは(当然ながら)スキルのターゲットがわからず、アクターID 1のキャラクターにしかスキルがかからない状態であります。
ターゲットのアクターIDや、モンスターのインデックスを特定する方法はありますでしょうか。
重ね重ね、よろしくお願いいたします。
最後に編集したユーザー あのにー [ 2020年12月17日(木) 22:06 ], 累計 2 回
アバター
ムノクラ
記事: 2118
登録日時: 2018年2月23日(金) 11:41
連絡する:

Re: 標準で実装されている強化と弱化の変換を行うスキルを作りたい

投稿記事 by ムノクラ »

あのにー さんが書きました:皆様方へ
お返事等、遅れてしまい申し訳ありません。
本日12月17日、ツクールを起動する時間を作れたので、報告いたします。

ecf5DTTzl6h6lJi02様
ecf5DTTzl6h6lJi02 さんが書きました: この配列には、強化であれば正の数、弱体であれば負の数が入っているので、符号を反転してしまえば、
そのまま、逆の効果となります。
スキルとコモンイベントを作成し、スキルを実行してみたところ、うまくいきました!
ありがとうございます!

スクリーンショット 2020-12-17 211439.png

コード: 全て選択

for (var i = 0; i < 8; i++){
    if ($gameActors.actor(x)._buffs[i] < 0){
        $gameActors.actor(x)._buffs[i] = $gameActors.actor(1)._buffs[i] * -1
    }
}
SceneManager._scene._statusWindow.refresh()
スクリーンショット 2020-12-17 211511.png

ですが、このままでは(当然ながら)スキルのターゲットがわからず、アクターID 1のキャラクターにしかスキルがかからない状態であります。
ターゲットのアクターIDや、モンスターのインデックスを特定する方法はありますでしょうか。
重ね重ね、よろしくお願いいたします。

どこかで、対象を得るスクリプトを調べて書いた記憶はあるのですが、直ぐ出てきません…

とりあえず、下記のプラグインで変数に代入してしまってはいかがでしょうか?

▼発動前コモン(やな様作) - BeforeCommon.js
https://plugin.fungamemake.com/archives/2033
スキルやアイテムの発動前に、スキルやアイテムに設定されたコモンイベントを発生させます。

このプラグインのメインの動作は、スキル発動前にコモンイベントを実行することですが、同時に対象のIDを変数に代入してくれます。
空のコモンイベントを実行させ、今回のスキルのスクリプトに変数値を使用することが出来るんじゃないか?と思いました。

(このプラグインの中を読んだら、対象のID取得方法も分かるような気がしますが…)
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
あのにー
記事: 20
登録日時: 2020年10月31日(土) 17:39

Re: 標準で実装されている強化と弱化の変換を行うスキルを作りたい

投稿記事 by あのにー »

ムノクラ さんが書きました: どこかで、対象を得るスクリプトを調べて書いた記憶はあるのですが、直ぐ出てきません…

とりあえず、下記のプラグインで変数に代入してしまってはいかがでしょうか?

▼発動前コモン(やな様作) - BeforeCommon.js
https://plugin.fungamemake.com/archives/2033
スキルやアイテムの発動前に、スキルやアイテムに設定されたコモンイベントを発生させます。

このプラグインのメインの動作は、スキル発動前にコモンイベントを実行することですが、同時に対象のIDを変数に代入してくれます。
空のコモンイベントを実行させ、今回のスキルのスクリプトに変数値を使用することが出来るんじゃないか?と思いました。

(このプラグインの中を読んだら、対象のID取得方法も分かるような気がしますが…)
ムノクラ様
ヘルプを読んだところエネミーが今回のスキルを使うと、Indexが-1になってしまうようですね……
とりあえずは、このプラグインで動作確認してみたいと思います、ありがとうございます
(追記)
アクターを対象にスキルを発動したときに、きちんと理想通りの動きをしたので、ご報告いたします。
また、コモンイベントを書き換えたのでスクショを貼りなおします。
スクリーンショット 2020-12-17 220231.png
スクリーンショット 2020-12-17 220257.png
スクリーンショット 2020-12-17 220320.png

コード: 全て選択

for (var i = 0; i < 8; i++){
    if ($gameParty.battleMembers()[$gameVariables.value(4)]._buffs[i] < 0){
        $gameParty.battleMembers()[$gameVariables.value(4)]._buffs[i] = $gameParty.battleMembers()[$gameVariables.value(4)]._buffs[i] * -1
    }
}
SceneManager._scene._statusWindow.refresh()
スクリーンショット 2020-12-17 220328.png
ecf5DTTzl6h6lJj02
記事: 715
登録日時: 2018年12月23日(日) 13:55

Re: 標準で実装されている強化と弱化の変換を行うスキルを作りたい

投稿記事 by ecf5DTTzl6h6lJj02 »

こんばんは。
そういえば、ターゲットの取得に関して書いてませんでした…。
対象が単体であれば、ターゲットは 発動前コモンを使わずに

コード: 全て選択

BattleManager._subjdct._lastTargetIndex
を使って取得することができます。
ただし、アクター・エネミーどちらのインデックスが入っているのかは判別できないので、使用者がアクターかエネミーかを調べて、分岐する処理を書く必要があります。

コード: 全て選択

BattleManager._subject.isActor()
で、使用者がアクターかどうか調べられます。isActor を isEnemy に置き換えればエネミーかどうかを調べる処理になります。

試作して、動作しそうだと確認した、コモンイベントの内容をコードで上げます。
行数を縮めるのに、複数行のコマンドを1行にまとめて書いてたりして、読みにくく、あまり参考にならないかもしれませんが。
(強化を弱体に反転させるコモンイベントです)

コード: 全て選択

◆変数の操作:#0023 対象者ID = BattleManager._subject._lastTargetIndex
◆条件分岐:スクリプト:BattleManager._subject.isActor()
  ◆スクリプト:target = $gameTroop.members()[$gameVariables.value(23)];
  :     :logWindow = SceneManager._scene._logWindow;
  :     :if(target._buffs.some(buff => buff > 0)){
  :     :logWindow.push('addText', "%1への祝福の力が邪悪な気に侵されていく!".format(target.name()));
  :     :target._buffs.forEach(function(value,index){
  :     :if (value > 0) { target._buffs[index] *= -1;
  :     :logWindow.push('popBaseLine'); logWindow.push('pushBaseLine'); logWindow.push('addText', "%1の強化が弱体に変化した".format(TextManager.param(index))); logWindow.push('waitForNewLine'); } });
  :     :target.refresh(); logWindow.push('clear');
  :     :} else{
  :     :logWindow.push('addText', "しかし、%1には効果がなかった。".format(target.name())); logWindow.push('waitForNewLine'); logWindow.push('clear');
  :     :}
  ◆
:それ以外のとき
  ◆注釈:念のため使用者がエネミーか確認
  ◆条件分岐:スクリプト:BattleManager._subject.isEnemy()
    ◆スクリプト:target = $gameParty.battleMembers()[$gameVariables.value(23)];
    :     :logWindow = SceneManager._scene._logWindow;
    :     :if(target._buffs.some(buff => buff > 0)){
    :     :logWindow.push('addText', "%1への祝福の力が邪悪な気に侵されていく!".format(target.name()));
    :     :target._buffs.forEach(function(value,index){
    :     :if (value > 0) { target._buffs[index] *= -1;
    :     :logWindow.push('popBaseLine'); logWindow.push('pushBaseLine'); logWindow.push('addText', "%1の強化が弱体に変化した".format(TextManager.param(index))); logWindow.push('waitForNewLine'); } });
    :     :target.refresh(); logWindow.push('clear');
    :     :} else{
    :     :logWindow.push('addText', "しかし、%1には効果がなかった。".format(target.name())); logWindow.push('waitForNewLine'); logWindow.push('clear');
    :     :}
    ◆
  :分岐終了
  ◆
:分岐終了
ecf5DTTzl6h6lJj02
記事: 715
登録日時: 2018年12月23日(日) 13:55

Re: 標準で実装されている強化と弱化の変換を行うスキルを作りたい

投稿記事 by ecf5DTTzl6h6lJj02 »

こんにちは。
コモンイベントの作例とか書いておいてなんですが、
プラグインを作成して、リクエスト版(viewtopic.php?t=10465)のほうに上げましたので、お試しいただければと思います。
あのにー
記事: 20
登録日時: 2020年10月31日(土) 17:39

Re: 標準で実装されている強化と弱化の変換を行うスキルを作りたい

投稿記事 by あのにー »

ecf5DTTzl6h6lJj02 さんが書きました:こんにちは。
コモンイベントの作例とか書いておいてなんですが、
プラグインを作成して、リクエスト版(viewtopic.php?t=10465)のほうに上げましたので、お試しいただければと思います。
ecf5DTTzl6h6lJj02様のプラグインにより、今回やりたいことを実現することができました!
こちらのスレッドと、プラグイン作成依頼スレッドを解決済とさせていただきます。

皆様方のご協力、誠にありがとうございました!!
返信する

“MV:質問”に戻る