▼スレッド
│
└◇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
> $trndに代入しているif文全体といのはスレッド一覧
> でしょうか?
前者です。
ありがとうございます。やってみますスレッド一覧
以下のような変更の仕方でいいのでしょうか?スレッド一覧
# 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('加') }
}
あと、追加するとエラーになってしまいました
> 以下のような変更の仕方でいいのでしょうか?スレッド一覧
>
> あと、追加するとエラーになってしまいました
必要な部分もコメントアウトされています。
そのせいで、{}のペアが合わなくなりエラーとなります。
下のようにするとエラーは消えたのですがスレッド一覧
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つ選択
> 下のようにするとエラーは消えたのですがスレッド一覧
> srand(time | $$);
> $rnd = int(rand(100)) + 1;
> もコメントアウトしないほうがいいのですか?
はい、少なくとも$rndのほうは必要な処理です。
> あと兜等を鎧として扱う場合は何もしなくていいのですか?
> 追加する場合は単にスキルを追加すればいいのでしょうか?
鎧として扱うというのは兜等を防具作成スキルで作成できるようにするということでしょうか?
それでしたら、@skillsに'As'を必要なだけ追加して、あとは追加したインデックスに対応するif文を後ろのほうにif($trnd == 値){}の形式で追加すれば良いです。
やっと意味がわかりました。ご回答ありがとうございました。スレッド一覧
また不明なところがあれば質問するかもしれませんがその時はどうかよろしくおねがいします。