| ピットル |
Subject: 攻撃と回復を同時に行うスキル
Posted on: Jul 30, 2010 (Fri) 20:58 |
FSM MEMBER
Joined: Sep 23, 2009
Location:
|
敵に攻撃しておきながら、自分達も回復するという結構卑怯な技を作りたいのですが、スキル設定は攻撃か回復のどちらかしかできないので、スクリプトでやるしかないようなので、困っています。
例えば、
敵全体を眠り状態にする→自分達はHP全回復。
といったような感じです。
|
|
|
 |
| メタボ |
Subject: Re: 攻撃と回復を同時に行うスキル
Posted on: Jul 30, 2010 (Fri) 21:10 |
|
IP Code: Q9iUNi5Olcc
|
>攻撃か回復のどちらかしかできない ダメージ吸収機能は、デフォルトの状態で実装されており、 スクリプト素材は不要です。 もし、与えたダメージの n% 分のHPを回復したい、 …というのであれば、こちらの記事をご覧ください。 http://www.tekepon.net/fsm/modules/reqbb/viewtopic.php?topic_id=3565&forum=11
|
|
|
 |
| ピットル |
Subject: Re: 攻撃と回復を同時に行うスキル
Posted on: Jul 31, 2010 (Sat) 7:47 |
FSM MEMBER
Joined: Sep 23, 2009
Location:
|
確かに両方できるのでした。すいません。 少し工夫すれば眠り+回復もできそうなので、やってみます。 ありがとうございます 
Last edited by ピットル on 7/31 8:23:52; edited 1 time in total
|
|
|
 |
| ピットル |
Subject: Re: 攻撃と回復を同時に行うスキル
Posted on: Jul 31, 2010 (Sat) 8:41 |
FSM MEMBER
Joined: Sep 23, 2009
Location:
|
やってみたのですが、使用すると、
「○○○(エネミーの名前)に○○○のダメージを与えた!」 「○○○(使用者の名前)は○○○のダメージを受けた!」
と、何故かダメージを受けたになってしまいます。 それと、回復もしません。
一応↓にデータベースでの設定を載せておきます。
Last edited by ピットル on 7/31 8:47:59; edited 1 time in total
|
|
|
 |
| メタボ |
Subject: Re: 攻撃と回復を同時に行うスキル
Posted on: Jul 31, 2010 (Sat) 23:32 |
|
IP Code: Q9iUNi5Olcc
|
どこかで符号が反転してしまっているようですね。 + や - のつけ忘れなどが無いか確認してみてはどうでしょう。
|
|
|
 |
| ピットル |
Subject: Re: 攻撃と回復を同時に行うスキル
Posted on: Aug 01, 2010 (Sun) 15:38 |
FSM MEMBER
Joined: Sep 23, 2009
Location:
|
回復はするようになりましたが、まだ表示が~のダメージを受けた!~になってしまいます。
|
|
|
 |
| メタボ |
Subject: Re: 攻撃と回復を同時に行うスキル
Posted on: Aug 01, 2010 (Sun) 21:18 |
|
IP Code: Q9iUNi5Olcc
|
こちらとしては、何もわからない状況なので、あまり推測で話を進めたくはないのですが、 上の記事はデフォルトの改造を前提としているため、 他の素材で def display_damage などをいじっている素材があれば、 それに合わせて改造する必要がある可能性がないわけではありませんね。
それよりもむしろ…"どこまで改造したか"をお聞きしていませんでした。 「部分吸収」のみなのか、「回復量の表示」まで改造したのか、 それによってもまた違ってきますので。(おそらく後者だと思いますが、一応確認で)
効果は吸収なのですが、見かけ上は、どちらもあくまで"攻撃用のスキル"で、 回復効果はその追加効果であることを強調するため (→「吸収」効果と「攻撃+回復」効果の違いを強調するため)に、 吸収時のメッセージ「~奪った!」が出ないようにしています。 そのために absorbed を 無理矢理 false にして吸収用メッセージを表示しないようにしています。
もしかすると、吸収時のメッセージを表示するようにしたい …というお話でしょうか?
Last edited by メタボ on 8/1 21:20:58; edited 1 time in total
|
|
|
 |
| ピットル |
Subject: Re: 攻撃と回復を同時に行うスキル
Posted on: Aug 02, 2010 (Mon) 10:32 |
FSM MEMBER
Joined: Sep 23, 2009
Location:
|
はい、後者です。
分かりにくいかもしれませんが、こんな風にしたいのです。
「敵は○○のダメージを受けた!」 「ラルフは○○回復した!」
というような感じです。 ロレンゾさんのトピックを見ると、奪ったのセリフを回復した!にしたようだったので、敵に与えたダメージを表示するのと、回復した時のメッセージを表示したいです。
つまり、吸収時のメッセージを表示するようにしたいです。
あれこれ言ってしまってすいません。
|
|
|
 |
| メタボ |
Subject: Re: 攻撃と回復を同時に行うスキル
Posted on: Aug 03, 2010 (Tue) 4:58 |
|
IP Code: Q9iUNi5Olcc
|
えっと…結局のところ、どっちなんでしょうか。 吸収時のメッセージ、というのは「~奪った!」のほうです。
もう一度聞きます。番号でお答えください。
1:「吸収」時のメッセージ「~奪った!」を表示 2:「攻撃+回復」のメッセージ「~のダメージを与えた!」「HPが~回復した!」を表示
…混乱させてしまった上、二度手間で申し訳無い。
|
|
|
 |
| ピットル |
Subject: Re: 攻撃と回復を同時に行うスキル
Posted on: Aug 03, 2010 (Tue) 12:55 |
FSM MEMBER
Joined: Sep 23, 2009
Location:
|
こちらこそ無茶苦茶なこと言ってすいません。
番号は 2 です。
|
|
|
 |
| メタボ |
Subject: Re: 攻撃と回復を同時に行うスキル
Posted on: Aug 03, 2010 (Tue) 22:02 |
|
IP Code: Q9iUNi5Olcc
|
……?何も無茶苦茶なことは無いですよ。 多少、読みにくいのは確かですが…。 とにかく、「攻撃+回復」の表示ということで、 あちらの記事と同じようにしたいわけですね。 メッセージが1回しか出ないことを考えると、 何かしら問題があり、改造が上手く反映されていない可能性があります。 具体的には Scene_Battle の def display_damage です。 class Scene_Battle < Scene_Base def display_damage(target, obj = nil) if target.missed display_miss(target, obj) elsif target.evaded display_evasion(target, obj) else if target.absorbed_part target.absorbed = false line_number = @message_window.line_number display_hp_damage(target, obj) display_mp_damage(target, obj) wait(15) @message_window.back_to(line_number) target.absorbed = true display_hp_damage(@active_battler, obj) display_mp_damage(@active_battler, obj) else display_hp_damage(target, obj) display_mp_damage(target, obj) end end end end
青字で示したように、 "部分吸収"の場合、 display_hp_damage は2回呼ばれるはずです。 現状は1回ですので、これが反映されていないことになります。 手を加えた def display_damage よりも下に def display_damage が無いか確認してみてもらえますか。
Last edited by メタボ on 8/3 22:10:07; edited 4 times in total
|
|
|
 |
| ピットル |
Subject: Re: 攻撃と回復を同時に行うスキル
Posted on: Aug 04, 2010 (Wed) 12:08 |
FSM MEMBER
Joined: Sep 23, 2009
Location:
|
何度も聞いて申し訳ないのですが、
def display_damageと書いた行よりも下に同じdef display_damageが書かれているかと言う事ですか?
そうなのでしたら手を加えたdef display_damageの下にdef display_damageはありませんでした。
あと、役にたつかは分かりませんが、Scene_Battle の def display_damageの箇所を載せておきます。
|
|
|
 |
| メタボ |
Subject: Re: 攻撃と回復を同時に行うスキル
Posted on: Aug 04, 2010 (Wed) 22:14 |
|
IP Code: Q9iUNi5Olcc
|
説明不足ですみません。 画像を見る限り、追加自体は無事にできているようですね。
「下にあるか?」と、いうのは、 「全文検索(Ctrl + Shift + F)で def display_damage が デフォルト以外の場所でヒットするか?」 …という質問と同義です。
もしヒットすれば、そこに原因がある可能性が出てきます。
Last edited by メタボ on 8/4 22:14:57; edited 1 time in total
|
|
|
 |
| ピットル |
Subject: Re: 攻撃と回復を同時に行うスキル
Posted on: Aug 05, 2010 (Thu) 8:09 |
FSM MEMBER
Joined: Sep 23, 2009
Location:
|
検索してみたところ、KGC様の『オーバードライブ』というスクリプトにありました。
|
|
|
 |
| メタボ |
Subject: Re: 攻撃と回復を同時に行うスキル
Posted on: Aug 05, 2010 (Thu) 21:03 |
|
IP Code: Q9iUNi5Olcc
|
オーバードライブのみですか。 すると、再定義による上書きの可能性は消えましたね。
…そもそも自分の不注意のせいなので、少々申し上げにくいのですが、 あらためて画像を見たところ、 if target.absorbed_part 内の処理が、あちらのコードと違っていますね。
「回復量の表示」までの改造と、「部分吸収」のみの改造では、 改造後の処理の流れが異なっています。
詳細は省きますが、 「部分吸収」では、display_damage のタイミングで回復量を算出していますが、 「回復量の表示」では、そのとき既に計算が済んでいます。
あちらのトピックの下に「回復量の表示」にするための説明がありますので、 それを参考に直してみてください。
|
|
|
 |
| ピットル |
Subject: Re: 攻撃と回復を同時に行うスキル
Posted on: Aug 05, 2010 (Thu) 22:23 |
FSM MEMBER
Joined: Sep 23, 2009
Location:
|
すいません、スクリプトはほとんど初心者なので、ちゃんと説明通りできたかは分かりませんが、このような感じでいいのでしょうか?
|
|
|
 |
| メタボ |
Subject: Re: 攻撃と回復を同時に行うスキル
Posted on: Aug 05, 2010 (Thu) 22:47 |
|
IP Code: Q9iUNi5Olcc
|
今度は一行一行確認しました。 間違いは無いですね。
しかし、まだ何か問題があるようで… 解決していれば、「解決した」と仰るはずですよね…。
execute_damage のほうも変更しましたか?
|
|
|
 |
| ピットル |
Subject: Re: 攻撃と回復を同時に行うスキル
Posted on: Aug 06, 2010 (Fri) 9:43 |
FSM MEMBER
Joined: Sep 23, 2009
Location:
|
はい、できる限りの事はしました。でもしっかりできているかどうかは分かりませんが…。しかし、これでやってみても駄目でした。
Last edited by ピットル on 8/6 9:43:55; edited 1 time in total
|
|
|
 |
| メタボ |
Subject: Re: 攻撃と回復を同時に行うスキル
Posted on: Aug 07, 2010 (Sat) 0:11 |
|
IP Code: Q9iUNi5Olcc
|
execute_damage も全文検索してみましたか? …というより、手を加えたメソッド(def ~ end のまとまり)が 下のセクションで再定義されていると、 上書きされてしまって改造が反映されなくなってしまいます。 改造の間違い…ということも考えられなくはないですが、 ピットルさんも修正を繰り返しておられますので、それはちょっと考えにくいですね。 で、全文検索で調べる前に…、 再定義されているかどうかを調べる、簡便な方法があります。 やり方は簡単で、 …とでも、メソッド内のどこでもいいので書き足してください。 そうすると、p 1 が実行されたときに 1 が表示されます。 execute_damage の任意の場所に p 1 と書き、 テストして処理の流れを確認してみてください。 ダメージを与えたときに何も反応が無ければ、十中八九「再定義」があります。
|
|
|
 |
| ピットル |
Subject: Re: 攻撃と回復を同時に行うスキル
Posted on: Aug 07, 2010 (Sat) 14:47 |
FSM MEMBER
Joined: Sep 23, 2009
Location:
|
execute_damageを検索すると、オーバードライブと、CACAOSOFT様のcacao service packがあてはまりました。
また、p 1とやってみても反応がありませんでした。ということは再定義しているんですか。
|
|
|
 |