私設SoS2オーナー応援BBS

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

スレッド

└◇248:
どうしてもわからない・・・。 [ナム〜ン] 01/09 16:49

 └◇249:Re:どうしてもわからない・・・。 [moon] 01/09 19:18
  └◇252:できました〜☆ [ナム〜ン] 01/10 09:17<-last


248● どうしてもわからない・・・。[ ナム〜ン ] 2003 01/09 16:49
今、ある行動をするとスキルを覚えるというのを
作っているのですがどうしてもできないとこがあります。

@Kajb = ('鍛冶屋','名匠'); # 鍛冶技を覚える職業

foreach (@Kajb) { if ($jb eq $_) { $Kajbcheck = 1; last} }
if (!$Fhdice) {
    foreach $fhose (@fhoselines) {
        ($wnm,$wkz,$wlv,$wsk,$wwe,$wjb,$wrd) = split(/<>/,$fhose);
        if ($Kajbcheck) {
            if (!$wjb) { next }
            if ($wjb !~ /kafs/) { next }
            if ($kalv < $wlv) { next }
        }
        if ($rnd <= $wrd) {
        push(@foundfhoses,$fhose);
        $count++; if($count eq "$learn"){last}
        }
    }

これはその一部分なのですが
            if ($wjb !~ /kafs/) { next }
これを
            if ($wjb !~ /kafs/ || $jb !~ /$wjb/) { next }
というふうに例えば$wjbに名匠といれておけば
名匠しかスキルを覚えないというのを作りたいのです。
が、自分の職業($jb)を呼び出してくれません。
どうしたらいいのでしょうか?

ちなみに本体の# Sub Blacksmith #の中に
require '○○○.pl'; &○○○;
として呼び込むようになっています。

どうかご教授の方よろしくお願いします。
スレッド一覧


249● Re:どうしてもわからない・・・。[ moon ] 2003 01/09 19:18
>             if ($wjb !~ /kafs/) { next }
> これを
>             if ($wjb !~ /kafs/ || $jb !~ /$wjb/) { next }
> というふうに例えば$wjbに名匠といれておけば
> 名匠しかスキルを覚えないというのを作りたいのです。
> が、自分の職業($jb)を呼び出してくれません。
> どうしたらいいのでしょうか?

if ($wjb !~ /kafs/ || $jb !~ /$wjb/) { next }の意味は、「$wjbに'kafs'が含まれていないか、$jbに$wjbが含まれていない場合はnextを実行。(||の前が条件に一致した場合は後の部分は判定されない)」ということは分かりますよね?
よって、$wjbが'名匠'となっていても$jbは判定されずにnextが実行されます。
'kafs'が何を示しているかによりやっている内容の捉え方が変わってくるので、そのあたりの情報が欲しいところです。
スレッド一覧


252● できました〜☆[ ナム〜ン ] 2003 01/10 09:17
あまりにも混乱してて文法の意味を取り間違えていました・・・。
(||の前が条件に一致した場合は後の部分は判定されない)を
すっかり忘れて・・・。
どうもお世話になりました。またいろいろと聞きにくると思いますので
その時はまたよろしくお願いします。
スレッド一覧

CGIROOM