私設SoS2オーナー応援BBS

新規発言一覧最新記事過去一覧検索ダウンロードページHOME

スレッド

└◇444:
解呪について(;; [masaki] 03/22 12:58

 └◇445:Re:解呪について(;; [masaki] 03/22 13:41
  └◇446:Re[2]:解呪について(;; [moon] 03/22 16:36
   └◇448:Re[3]:解呪について(;; [masaki] 03/22 17:59
    └◇450:Re[4]:解呪について(;; [moon] 03/22 21:27
     └◇451:Re[5]:解呪について(;; [masaki] 03/22 22:43<-last


444● 解呪について(;;[ masaki ] 2003 03/22 12:58
先日、呪いについておしえてもらい、呪いまでは出来たのですが(^^;
こんどは解呪で動かない場所があるので質問させていただきます。
(わからないことだらけなので、初歩的なミスをしているかもしれません(;;)
やったのは、次の通りです(^^;
main programに
if ($Fm{'mode'} eq 'kaizyu')    { &contact_form }
を追加。
sub contact_formに
    &cure_revive    if $Fm{'mode'} eq 'kaizyu';
を追加。(もう、ここでまちがているかも(;;)
解呪スキルをKiとして
    &input('radio','mode','kaizyu','',"解呪してもらう<br>\n") if $psp =~ /Ki/;
↑一応テストのため、Kiがあるだけで表示させてます。
sub fee_beforeに
print qq|アイテムの解呪料:HP $judg_hp 使用\n| if $sp =~ /Ki/;
    &input('text','kaizyu',"$kaizyu",' size=10',' G<br>') if $sp =~ /Ki/;
を追加。
sub fee_afterに
if (($Fm{'kaizyu'} =~ /[^0-9]/ || !$Fm{'kaizyu'}) && $sp =~ /Ki/) {
    push (@msg,"解呪の価格が設定されていません"); $Fm{'kaizyu'} = 0;
追加。
sub cure_reviveに
if ($def_hr >= $php && $Fm{'mode'} eq 'kaizyu') {
        push (@msg,"$pnmは解呪できる体力がありません");return }

if ($psp=~ /Ki/) {
        if ($av ne 'dead') { return }
        if (!$kaizyu) { push (@msg,"$pnmは解呪を行っていません");return }
        if ($mn < $kaizyu) { push (@msg,"解呪費を払うお金がありません");return }
        $mn -= $kaizyu; $pmn += $kaizyu; $php -= $def_hr;if($sts =~ /No/ && $sts =~ /Q[swat]/){$sts =~ s/No//g;}
        &add_record("[$id] $nmを$kl\Gで解呪しました");
    }
を追加しました。
長いうえに、見づらくてすみません(;;
それで、テストしてみたところやっぱり動きませんでした(;;
(解呪しました。のメッセージが表示されず、何も変かなしです)
色々やってみて、「解呪できる体力がありません」は表示されたので、
if ($psp=~ /Ki/) {
        if ($av ne 'dead') { return }
        if (!$kaizyu) { push (@msg,"$pnmは解呪を行っていません");return }
        if ($mn < $kaizyu) { push (@msg,"解呪費を払うお金がありません");return }
        $mn -= $kaizyu; $pmn += $kaizyu; $php -= $def_hr;if($sts =~ /No/ && $sts =~ /Q[swat]/){$sts =~ s/No//g;}
        &add_record("[$id] $nmを$kl\Gで解呪しました");
}
の部分が動いてないのだと思うのですが、どこが違っているのでしょう(^^;
お忙しいところすみません。m(_ _)m
スレッド一覧


445● Re:解呪について(;;[ masaki ] 2003 03/22 13:41
> if ($psp=~ /Ki/) {
間違えましたすみません。
if ($Fm{'mode'} eq 'kaiyzu')です。
あと、
>if($sts =~ /No/ && $sts =~ /Q[swat]/){$sts =~ s/No//g;}
も、よくわからないのでかなり適当です。(jДj
スレッド一覧


446● Re[2]:解呪について(;;[ moon ] 2003 03/22 16:36
  if ($av ne 'dead') { return }
これは、「自分が死んでいなかったら何もしない」ということなので不要です。
代わりに、
  return if($bg eq '');
  my $num = -1;
  &splititem('i');
  foreach(0..$#items){
    ($item,$sts) = split(/△/,$items[$_]);
    if(index($sts,'No')>=0 && $sts=~/Q[swat]/){
      $num = $_;
      last;
    }
  }
  if($num<0){
    push(@msg,'あなたは呪われていません');
    return;
  }
のようにして呪われた品を装備中であるかを判断します。

  $mn -= $kaizyu; $pmn += $kaizyu; $php -= $def_hr;if($sts =~ /No/ && $sts =~ /Q[swat]/){$sts =~ s/No//g;}
  &add_record("[$id] $nmを$kl\Gで解呪しました");
を上記に関連して、
  $mn -= $kaizyu;
  $pmn += $kaizyu;
  $php -= $def_hr;
  $sts =~ s/No//g; # 上記で$stsは呪われたアイテムのステータスを指しているはずなので改めてsplitをしない
  $items[$num] = "$item△$sts";
  &joinitem('i');
  &add_record("[$id] $nmを${kaizyu}Gで解呪しました");
と変更します。

# 文法チェックなし & 未テスト
スレッド一覧


448● Re[3]:解呪について(;;[ masaki ] 2003 03/22 17:59
ありがとうございます!
でも、問題発生です(;;
moonさんに教えていただいた場所はちゃんと動いたのですが、ユーザーデータへの書きこみがされてないらしいです(^^;
sub fee_beforeの
print qq|アイテムの解呪料:HP $judg_hp 使用\n| if $sp =~ /Ki/;
    &input('text','kaizyu',"$kaizyu",' size=10',' G<br>') if $sp =~ /Ki/;
の部分が怪しいのですが(^^
自分でユーザーデータへ直接書きこめば出来るのですが(笑
スレッド一覧


450● Re[4]:解呪について(;;[ moon ] 2003 03/22 21:27
sub fee_beforeで$kaizyuの値を取得していますか?
解毒料とかと同じフラグ$feに記録している場合は、($cr,$rv,$kaizyu) = split(/△/,$fe);というように。

また、sub fee_afterで$fe = "$Fm{'cr'}△$Fm{'rv'}△$Fm{'kaizyu'}";としていますか?

以上2点を確認してみてください。
スレッド一覧


451● Re[5]:解呪について(;;[ masaki ] 2003 03/22 22:43
ありがとうございます!
やっとできました(^^;
いろいろ改造してあると、複雑で(ぉ
いつもこんな初歩的な質問に答えていただき、ありがとうございます!
スレッド一覧

CGIROOM