私設SoS2オーナー応援BBS

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

スレッド

└◇429:
Re[11]:装備をはずす [moon] 03/15 22:04

 └◇430:Re[12]:装備をはずす [masaki] 03/16 09:24
  └◇431:Re[13]:装備をはずす [moon] 03/16 10:59
   └◇432:間違い [moon] 03/16 11:11


429● Re[11]:装備をはずす[ moon ] 2003 03/15 22:04
>         if ($sts =~ /Q[swat]/) { $nomsg = 1 } else { $nomsg = 0 }
>         $sts =~ s/Q[swat]//g;
>         push(@msg,"$itemをはずしました") if($nomsg && $sts!~/Q[swat]/);
> ↑の場合、さっきの記事の状態です。。

もしかして「はずしました」の位置が上記ということはないですよね?(No.423でsub armの最後にやっていると思っていましたが・・・)

主要部分にコメントを付けて説明すると、
  if ($sts =~ /Q[swat]/) { $nomsg = 1 } else { $nomsg = 0 } # 使用前に装備中なら$nomsgが1
  $sts =~ s/Q[swat]//g; # 装備をはずした状態
  push(@msg,"$itemをはずしました") if($nomsg && $sts!~/Q[swat]/); # 使用前に装備中、かつ、使用後に装備していないならメッセージ
スレッド一覧


430● Re[12]:装備をはずす[ masaki ] 2003 03/16 09:24
sub arm の最後に追加してもどうしてもメッセージが表示されません。(;;
場所が間違っているのでしょうか?
sub arm内
    } elsif ($ch !~ /$a2/) {
            $ab += $iak; $db += $idd;
            &umsg('装') if !$nomsg;
            if ($a1 eq 'Bw') { $sp .= 'Qb' }
            if ($a1 eq 'Kt') { $sp .= 'Qk' }
            if ($a1 eq 'Ax') { $sp .= 'Qx' }
            if ($a1 eq 'Sw' && $sts =~ /Li/) { $sp .= 'Qm' }
            $ch .= $a2; $sts .= $a2;
        } else { &umsg('別') }
    } else { &umsg('職') }
push(@msg,"$itemをはずしました") if($nomsg && $sts!~/Q[swat]/);
}
最後というのがここではないのでしょうか?(^^;;
これでは表示されないので、428の記事の場所にしました。
スレッド一覧


431● Re[13]:装備をはずす[ moon ] 2003 03/16 10:59
> sub arm の最後に追加してもどうしてもメッセージが表示されません。(;;
> 場所が間違っているのでしょうか?
> sub arm内
>     } elsif ($ch !~ /$a2/) {
>             $ab += $iak; $db += $idd;
>             &umsg('装') if !$nomsg;
>             if ($a1 eq 'Bw') { $sp .= 'Qb' }
>             if ($a1 eq 'Kt') { $sp .= 'Qk' }
>             if ($a1 eq 'Ax') { $sp .= 'Qx' }
>             if ($a1 eq 'Sw' && $sts =~ /Li/) { $sp .= 'Qm' }
>             $ch .= $a2; $sts .= $a2;
>         } else { &umsg('別') }
>     } else { &umsg('職') }
> push(@msg,"$itemをはずしました") if($nomsg && $sts!~/Q[swat]/);
> }
> 最後というのがここではないのでしょうか?(^^;;
> これでは表示されないので、428の記事の場所にしました。

場所は間違っていないです。
$nomsgは変なところで初期化していないはずだし、装備後に$stsにはQ[swat]が付くはずだし、どこがうまく動作していないのだろう?
そもそも自分の考え方が間違っているということもあるので変だと思ったところは指摘してください。

とりあえず、「はずしました」の上にpush(@msg,"\$nomsg=$nomsg<br>\$sts=$sts");を追加してその時点での変数の値を確認してください。
使用前に既に装備してあるもののチェックをはずして実行した場合の正常な動作表示としては、
  $nomsg=1
  $sts='Q[swat]がないステータス'
となります。
スレッド一覧


432● 間違い[ moon ] 2003 03/16 11:11
すみません。テストしてみた結果、動きませんでした。
で、変更点はuse_after内を次のようにしてください。
  if ($Fm{$_}) {
    〜〜〜
  }
  elsif($nomsg){ # ここから追加
    push(@msg,"$itemをはずしました");
  }

これはテスト済みなので大丈夫だと思います。

# アイテムのチェックボックスにチェックが入っていないとsub armが呼び出されないことをうっかり忘れていました・・・。
スレッド一覧

CGIROOM