私設SoS2オーナー応援BBS

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

スレッド

└◇1368:
Re[7]:下の続きです [cosmos] 11/21 23:38

 └◇1369:Re[8]:下の続きです [moon] 11/22 00:10
  ├◇1370:Re[9]:下の続きです [cosmos] 11/22 00:26
  └◇1371:Re[9]:下の続きです [cosmos] 11/22 14:05
   └◇1372:Re[10]:下の続きです [moon] 11/22 23:23
    └◇1373:Re[11]:下の続きです [cosmos] 11/23 00:12
     └◇1374:Re[12]:下の続きです [moon] 11/23 01:12
      └◇1375:Re[13]:下の続きです [cosmos] 11/23 08:23<-last


1368● Re[7]:下の続きです[ cosmos ] 2006 11/21 23:38
    if ($sp =~ /Ws|As|Sc/) {
        srand(time | $$);
        $rnd = int(rand(100)) + 1;
if ($sp =~ /Ws/ && $sp =~ /As/ && $sp =~ /Sc/) {
$trndに代入しているif文全体といのは

$trnd = int(rand(8)) }
elsif ($sp =~ /Ws/ && $sp =~ /As/) { $trnd = int(rand(3)) }
elsif ($sp =~ /Ws/ && $sp =~ /Sc/) { $trnd = (0,3)[int(rand(2))] }
elsif ($sp =~ /As/ && $sp =~ /Sc/) { $trnd = int(rand(3)) + 1 }
elsif ($sp =~ /Ws/) { $trnd = int(rand(1)) }
elsif ($sp =~ /As/) { $trnd = int(rand(2)) + 1 }
elsif ($sp =~ /Sc/) { $trnd = 3 }

でしょうか?それとも
        $rnd = 0 if $sp =~ /Bp/;
        if ($rnd <= $def_pr) {
            if ($trnd == 0) {
                $sts = sprintf("%04d%04d",$def_pc1,$def_bn1);
$sts .= 'Yw'; $item = $def_yw;
            }
            if ($trnd == 1) {
                $sts = sprintf("%04d%04d",$def_pc2,$def_bn2);
$sts .= 'Ys'; $item = $def_ys;
            }
            if ($trnd == 2) {
                $sts = sprintf("%04d%04d",$def_pc3,$def_bn3);
$sts .= 'Ya'; $item = $def_ya;
            }
            if ($trnd == 3) {
                $sts = sprintf("%04d%04d",$def_pc4,$def_bn4);
$sts .= 'Yt'; $item = $def_yt;
            }
        if ($trnd == 4) {
            $sts = sprintf("%04d%04d",$def_pc5,$def_bn5);
            $sts .= 'Yh'; $item = $def_yh;
            }
        if ($trnd == 5) {
            $sts = sprintf("%04d%04d",$def_pc6,$def_bn6);
            $sts .= 'Yr'; $item = $def_yr;
            }
        if ($trnd == 6) {
            $sts = sprintf("%04d%04d",$def_pc7,$def_bn7);
            $sts .= 'Ya'; $item = $def_ya;
            }
        if ($trnd == 7) {
            $sts = sprintf("%04d%04d",$def_pc8,$def_bn8);
            $sts .= 'Yt'; $item = $def_ym;
            }
        if ($trnd == 8) {
        $sts = sprintf("%04d%04d",$def_pc9,$def_bn9);
        $sts .= 'Ye'; $item = $def_ye;
            }
        $item =~ s/○○/$nm/;
            &umsg('作');
        }
        else { $gn = 1; &umsg('失') }
    } else { &umsg('加') }
}
でしょうか?
スレッド一覧


1369● Re[8]:下の続きです[ moon ] 2006 11/22 00:10
> $trndに代入しているif文全体といのは
> でしょうか?

前者です。
スレッド一覧


1370● Re[9]:下の続きです[ cosmos ] 2006 11/22 00:26
ありがとうございます。やってみます
スレッド一覧


1371● Re[9]:下の続きです[ cosmos ] 2006 11/22 14:05
以下のような変更の仕方でいいのでしょうか?

# Sub Blacksmith #
sub blacksmith {
#    if ($sp =~ /Ws|As|Sc/) {
#        srand(time | $$);
#        $rnd = int(rand(100)) + 1;
# if ($sp =~ /Ws/ && $sp =~ /As/ && $sp =~ /Sc/) { $trnd = int(rand(8)) }
# elsif ($sp =~ /Ws/ && $sp =~ /As/) { $trnd = int(rand(3)) }
# elsif ($sp =~ /Ws/ && $sp =~ /Sc/) { $trnd = (0,3)[int(rand(2))] }
# elsif ($sp =~ /As/ && $sp =~ /Sc/) { $trnd = int(rand(3)) + 1 }
# elsif ($sp =~ /Ws/) { $trnd = int(rand(1)) }
# elsif ($sp =~ /As/) { $trnd = int(rand(2)) + 1 }
# elsif ($sp =~ /Sc/) { $trnd = 3 }
my @skills = ('Ws', 'As', 'As', 'Sc');
# 0:武器、1:盾、2:鎧、3:銀細工、4以降:追加分
my $max = scalar(@skills);
# @skillsの要素数
my @types = ();
for(my $i = 0; $i < $max; $i++){
push(@types, $i) if(index($sp, $skills[$i]) != -1);
# 作成スキルを習得している場合はインデックスをリストに追加
}
if(!@types){
# 作成スキルがない場合
push(@msg, '作成スキルを習得していません。');
return;
}
my $trnd = $types[int(rand(@types))];
# リストから1つ選択


        $rnd = 0 if $sp =~ /Bp/;
        if ($rnd <= $def_pr) {
            if ($trnd == 0) {
                $sts = sprintf("%04d%04d",$def_pc1,$def_bn1);
$sts .= 'Yw'; $item = $def_yw;
            }
            if ($trnd == 1) {
                $sts = sprintf("%04d%04d",$def_pc2,$def_bn2);
$sts .= 'Ys'; $item = $def_ys;
            }
            if ($trnd == 2) {
                $sts = sprintf("%04d%04d",$def_pc3,$def_bn3);
$sts .= 'Ya'; $item = $def_ya;
            }
            if ($trnd == 3) {
                $sts = sprintf("%04d%04d",$def_pc4,$def_bn4);
$sts .= 'Yt'; $item = $def_yt;
            }
        if ($trnd == 4) {
            $sts = sprintf("%04d%04d",$def_pc5,$def_bn5);
            $sts .= 'Yh'; $item = $def_yh;
            }
        if ($trnd == 5) {
            $sts = sprintf("%04d%04d",$def_pc6,$def_bn6);
            $sts .= 'Yr'; $item = $def_yr;
            }
        if ($trnd == 6) {
            $sts = sprintf("%04d%04d",$def_pc7,$def_bn7);
            $sts .= 'Ya'; $item = $def_ya;
            }
        if ($trnd == 7) {
            $sts = sprintf("%04d%04d",$def_pc8,$def_bn8);
            $sts .= 'Yt'; $item = $def_ym;
            }
        if ($trnd == 8) {
        $sts = sprintf("%04d%04d",$def_pc9,$def_bn9);
        $sts .= 'Ye'; $item = $def_ye;
            }
        $item =~ s/○○/$nm/;
            &umsg('作');
        }
        else { $gn = 1; &umsg('失') }
    } else { &umsg('加') }
}

あと、追加するとエラーになってしまいました
スレッド一覧


1372● Re[10]:下の続きです[ moon ] 2006 11/22 23:23
> 以下のような変更の仕方でいいのでしょうか?
>
> あと、追加するとエラーになってしまいました

必要な部分もコメントアウトされています。
そのせいで、{}のペアが合わなくなりエラーとなります。
スレッド一覧


1373● Re[11]:下の続きです[ cosmos ] 2006 11/23 00:12
下のようにするとエラーは消えたのですが
        srand(time | $$);
        $rnd = int(rand(100)) + 1;
もコメントアウトしないほうがいいのですか?
あと兜等を鎧として扱う場合は何もしなくていいのですか?
追加する場合は単にスキルを追加すればいいのでしょうか?
# Sub Blacksmith #
sub blacksmith {
    if ($sp =~ /Ws|As|Sc/) {
        srand(time | $$);
        $rnd = int(rand(100)) + 1;
# if ($sp =~ /Ws/ && $sp =~ /As/ && $sp =~ /Sc/) { $trnd = int(rand(8)) }
# elsif ($sp =~ /Ws/ && $sp =~ /As/) { $trnd = int(rand(3)) }
# elsif ($sp =~ /Ws/ && $sp =~ /Sc/) { $trnd = (0,3)[int(rand(2))] }
# elsif ($sp =~ /As/ && $sp =~ /Sc/) { $trnd = int(rand(3)) + 1 }
# elsif ($sp =~ /Ws/) { $trnd = int(rand(1)) }
# elsif ($sp =~ /As/) { $trnd = int(rand(2)) + 1 }
# elsif ($sp =~ /Sc/) { $trnd = 3 }
my @skills = ('Ws', 'As', 'As', 'Sc');
# 0:武器、1:盾、2:鎧、3:銀細工、4以降:追加分
my $max = scalar(@skills);
# @skillsの要素数
my @types = ();
for(my $i = 0; $i < $max; $i++){
push(@types, $i) if(index($sp, $skills[$i]) != -1);
# 作成スキルを習得している場合はインデックスをリストに追加
}
if(!@types){
# 作成スキルがない場合
push(@msg, '作成スキルを習得していません。');
return;
}
my $trnd = $types[int(rand(@types))];
# リストから1つ選択
スレッド一覧


1374● Re[12]:下の続きです[ moon ] 2006 11/23 01:12
> 下のようにするとエラーは消えたのですが
>         srand(time | $$);
>         $rnd = int(rand(100)) + 1;
> もコメントアウトしないほうがいいのですか?

はい、少なくとも$rndのほうは必要な処理です。

> あと兜等を鎧として扱う場合は何もしなくていいのですか?
> 追加する場合は単にスキルを追加すればいいのでしょうか?

鎧として扱うというのは兜等を防具作成スキルで作成できるようにするということでしょうか?
それでしたら、@skillsに'As'を必要なだけ追加して、あとは追加したインデックスに対応するif文を後ろのほうにif($trnd == 値){}の形式で追加すれば良いです。
スレッド一覧


1375● Re[13]:下の続きです[ cosmos ] 2006 11/23 08:23
やっと意味がわかりました。ご回答ありがとうございました。
また不明なところがあれば質問するかもしれませんがその時はどうかよろしくおねがいします。
スレッド一覧

CGIROOM