▼スレッド
│
└◇1692:Re[8]:行動値システム [rien] 04/15 11:32
└◇1693:Re[9]:行動値システム [moon] 04/15 22:51
└◇1694:Re[10]:行動値システム [rien] 04/16 00:19
└◇1696:Re[11]:行動値システム [moon] 04/16 22:04
└◇1697:Re[12]:行動値システム [rien] 04/17 00:31<-last
スレッド一覧
> はい、そのようになっています。
> 行動値と同時に体力も減るようにする、ということでしたので。
>
> ダメージを受けた場合は行動値と一緒の体力を減らさない、ということなのでしょうか?
> この場合は、厳密に行うとアイテムによる回復も考えないといけなくなり若干面倒なので「戦闘後の体力が戦闘前以上の場合に体力を減らす」というようにしたほうが良いです。
> この場合は以下のようにします。
> 1. 「if ($result == 1) {」の上に「my $old_hp = $hp;」を追加。
> 2. 「if (!$php) { $kl++ };」の上に「$hp-- if($hp >= $old_hp && $hp > 1);」を追加。
> ※ $hp > 1の条件は必要無いはずですが念の為残してあります。
すみません・・説明不足というか理解不足でご迷惑をおかけして・・
行動値と体力を一緒に減らすようにと思ったのは漠然と探索のイメージでした。
今思うと戦闘とか探索とか記述しないとわかりませんよね・・申し訳ありません。
戦闘の場合はダメージだけ減らすというようにはできますか?
例えば1回の戦闘を行いBダメージを受けて敗北した場合だと
行動値が1回行動分減り体力が3減るようにしたいのです。
ダメージを受けない場合は体力は減らず、行動値のみ減るという感じなのですが・・
> 引き分けは$result == 0の時ですが、通常はこのifブロックの中で$hp--として体力を1減らしています。
> おそらくはこのあたりが変わっているのだと思いますので、(マシマロさんの分割版の)オリジナルと見比べたほうが良いと思います。
こちらで、マシマロさんのオリジナルと見比べたところ
どちらも
Sub Fight内
if ($result == 0) { &fmsg('引'); $hp-- }
と記述されてたのですが・・見るべきところはココではないのでしょうか・・
なんどもすみません・・よろしくお願いします。
> すみません・・説明不足というか理解不足でご迷惑をおかけして・・スレッド一覧
> 行動値と体力を一緒に減らすようにと思ったのは漠然と探索のイメージでした。
> 今思うと戦闘とか探索とか記述しないとわかりませんよね・・申し訳ありません。
> 戦闘の場合はダメージだけ減らすというようにはできますか?
> 例えば1回の戦闘を行いBダメージを受けて敗北した場合だと
> 行動値が1回行動分減り体力が3減るようにしたいのです。
> ダメージを受けない場合は体力は減らず、行動値のみ減るという感じなのですが・・
1. 1回の戦闘を行いBダメージを受けて敗北した場合だと行動値が1回行動分減り体力が3減る
2. ダメージを受けない場合は体力は減らず、行動値のみ減る
以下の意味であっていますか?
1.は合計6の体力が減るということではなくダメージによる3だけ減り行動値も減る、ということ。
2.は1.で0ダメージの場合のため行動値だけ減る、ということ。
そうすると両方とも行動値の改造を行った直後の動作のはずです。(ただし、引き分け時は除く。)
どのような動作にしたいのかがいまいち掴めないので、以下のようなかんじで行動の前後で体力と行動値がどのようになっているのかをまとめていただけると助かります。
なお、とりあえず戦闘前の体力は10、行動値は20、戦闘に必要な行動値は5としてください。
・勝利、ダメージ0 → 戦闘後の体力?、行動値?
・勝利、ダメージ3 → 戦闘後の体力?、行動値?
・敗北、ダメージ0 → 戦闘後の体力?、行動値?
・敗北、ダメージ3 → 戦闘後の体力?、行動値?
・引き分け、ダメージ1 → 戦闘後の体力?、行動値?
> > 引き分けは$result == 0の時ですが、通常はこのifブロックの中で$hp--として体力を1減らしています。
> > おそらくはこのあたりが変わっているのだと思いますので、(マシマロさんの分割版の)オリジナルと見比べたほうが良いと思います。
>
> こちらで、マシマロさんのオリジナルと見比べたところ
> どちらも
> Sub Fight内
> if ($result == 0) { &fmsg('引'); $hp-- }
> と記述されてたのですが・・見るべきところはココではないのでしょうか・・
>
> なんどもすみません・・よろしくお願いします。
他に$result==0として判断している箇所がありましたらそこも確認する必要があります。
これが見付からない場合はfight.pl内を$hpで検索して$result==0以外で$hpを減らしている箇所を探してみてください。
それでも原因箇所が特定できない場合はsub fightの各所に「push(@msg, "(1)$hp");」((1)と書いた部分は適宜変更)を書いて動作させ、どこで余計な減少処理を行っているのかを特定してください。
スレッド一覧
> 1. 1回の戦闘を行いBダメージを受けて敗北した場合だと行動値が1回行動分減り体力が3減る
> 2. ダメージを受けない場合は体力は減らず、行動値のみ減る
> 以下の意味であっていますか?
> 1.は合計6の体力が減るということではなくダメージによる3だけ減り行動値も減る、ということ。
> 2.は1.で0ダメージの場合のため行動値だけ減る、ということ。
> そうすると両方とも行動値の改造を行った直後の動作のはずです。(ただし、引き分け時は除く。)
す、すみません・・・
そういえばそうでした・・戦闘においては以前の状態に戻せばよかったのですよね
お手数おかけしてすみません・・。
> 他に$result==0として判断している箇所がありましたらそこも確認する必要があります。
> これが見付からない場合はfight.pl内を$hpで検索して$result==0以外で$hpを減らしている箇所を探してみてください。
> それでも原因箇所が特定できない場合はsub fightの各所に「push(@msg, "(1)$hp");」((1)と書いた部分は適宜変更)を書いて動作させ、どこで余計な減少処理を行っているのかを特定してください。
ありがとうございます。
ファイトマネーのところで減っていたようです。
今は正常に動いています。ありがとうございました!
もう1つ追加の質問があるのですがよろしいでしょうか?
複数回探索の改造のことですが(マシマロさんだったかと思います
今の状態だとプルダウンで一番上が1回→一番下が探索回数最大値
となっているのですが、これをmoonさんのsosのように
一番上を全力で探索というようにしたいのですが、この場合はどう直せばいいのでしょうか??
何度もすみませんが、よろしくお願いします
> もう1つ追加の質問があるのですがよろしいでしょうか?スレッド一覧
> 複数回探索の改造のことですが(マシマロさんだったかと思います
> 今の状態だとプルダウンで一番上が1回→一番下が探索回数最大値
> となっているのですが、これをmoonさんのsosのように
> 一番上を全力で探索というようにしたいのですが、この場合はどう直せばいいのでしょうか??
>
> 何度もすみませんが、よろしくお願いします
全力は体力-1回の探索で良いでしょうか?
おそらく以下のようにすれば良いと思います。
1. sub normal_actionの以下を変更します。
$hpcheck = 2;
print qq|<option value="1" SELECTED>1回\n|;
↓
$hpcheck = 1;
print qq|<option value="0" SELECTED>全力\n|;
2. sub find_item_sub_oriの「$f_max = $Fm{'t_max'};」の下に以下を追加します。
$f_max = $hp - 1 if($f_max == 0);
3. ついでに、体力が1の時でも探索できてしまいそうなので「while ($t_max < $f_max){」の上に以下を追加しておいたほうが良いと思います。
$f_max = $hp - 1 if($f_max >= $hp);
スレッド一覧
> 全力は体力-1回の探索で良いでしょうか?
> おそらく以下のようにすれば良いと思います。
> 1. sub normal_actionの以下を変更します。
> $hpcheck = 2;
> print qq|<option value="1" SELECTED>1回\n|;
> ↓
> $hpcheck = 1;
> print qq|<option value="0" SELECTED>全力\n|;
> 2. sub find_item_sub_oriの「$f_max = $Fm{'t_max'};」の下に以下を追加します。
> $f_max = $hp - 1 if($f_max == 0);
> 3. ついでに、体力が1の時でも探索できてしまいそうなので「while ($t_max < $f_max){」の上に以下を追加しておいたほうが良いと思います。
> $f_max = $hp - 1 if($f_max >= $hp);
いつもありがとうございます。
おかげさまでうまく出来ました!
ありがとうございます。
分からないことばかりで、またお世話になると思いますが、よろしくお願いします。