私設SoS2オーナー応援BBS

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

スレッド

└◇1366:
Re[5]:下の続きです [cosmos] 11/21 21:45

 └◇1367:Re[6]:下の続きです [moon] 11/21 23:20
  └◇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


1366● Re[5]:下の続きです[ cosmos ] 2006 11/21 21:45
追記で上の杖というのは賢さを追加できる杖とSOS2配布時の杖です
スレッド一覧


1367● Re[6]:下の続きです[ moon ] 2006 11/21 23:20
> はどの辺りに追加すればいいのでしょうか?

$trndを求める処理なので、$trndに代入しているif文全体を置換すれば良いです。

> あと杖でもWdのスキルにしているのですがデフォルトの杖(Wd)は変更しなくても問題ないのでしょうか?
> 追記で上の杖というのは賢さを追加できる杖とSOS2配布時の杖です

デフォルトの杖の場合にもアイテムの防御値を賢さ増加値として扱うのでしたら変更しなくても大丈夫です。
ですが、オリジナルのように防御増加値として扱う場合は別にする必要があります。
スレッド一覧


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