▼スレッド
│
└◇1376:二刀流にならない [cosmos] 11/24 11:42
├◇1379:Re:二刀流にならない [moon] 11/24 18:45
│└◇1380:Re[2]:二刀流にならない [cosmos] 11/24 21:36
│ └◇1383:Re[3]:二刀流にならない [moon] 11/25 01:19
│ ├◇1384:Re[4]:二刀流にならない [moon] 11/25 01:28
│ └◇1386:Re[4]:二刀流にならない [cosmos] 11/25 14:50
│ └◇1387:Re[5]:二刀流にならない [moon] 11/25 15:22
│ └◇1388:Re[6]:二刀流にならない [cosmos] 11/25 15:40
│ └◇1389:Re[7]:二刀流にならない [moon] 11/25 18:59
│ └◇1390:Re[8]:二刀流にならない [cosmos] 11/25 19:28
│ └◇1391:Re[9]:二刀流にならない [moon] 11/25 23:02
│ └◇1392:Re[10]:二刀流にならない [cosmos] 11/26 00:18
│ └◇1393:Re[11]:二刀流にならない [moon] 11/26 12:15
│ └◇1394:Re[12]:二刀流にならない [moon] 11/26 12:18
│ └◇1395:Re[13]:二刀流にならない [cosmos] 11/26 13:21
│ └◇1396:Re[14]:二刀流にならない [cosmos] 11/26 13:22
├◇1397:Re:二刀流にならない [moon] 11/26 15:59
│└◇1398:Re[2]:二刀流にならない [cosmos] 11/26 16:35
│ └◇1399:Re[3]:二刀流にならない [moon] 11/26 19:07
│ └◇1400:Re[4]:二刀流にならない [cosmos] 11/26 20:31
│ └◇1401:Re[5]:二刀流にならない [moon] 11/26 23:49
└◇1403:Re:二刀流にならない [ククロ] 11/27 07:33
└◇1404:Re[2]:二刀流にならない [moon] 11/27 20:06<-last
この前はどうもありがとうございました。まだ完全に改造しきれていないのですがなんとか新装備も戦闘にも影響できるようになりました。それで最近二刀流の改造をしだしたのですがどうも、二刀流になりません。刀(Kt)と剣(Sw)とナイフのみ二刀流になるようにしたいのですがどの辺りがおかしいのかご口授いただけませんか?スレッド一覧
# Sub Arm #
sub arm {
local($a1,$a2) = @_;
if ($sts =~ /Li/ && $sp !~ /Li/) { &umsg('レ') }
elsif ($sp =~ /$a1/) {
if ($sts =~ /Dh/ && $sp !~ /Oh/) {
if ($ch !~ /Q[sw]/) {
# $ab += $iak; $db += $idd;
#-------新装備
if($a1 eq 'Rp' || $a1 eq 'Yr' || $a1 eq 'Sa' || $a1 eq 'Ya' ||$a1 eq 'Hr' || $a1 eq 'Yh'){
$eit += $iak;
$db += $idd;
}
elsif($a1 eq 'He' || $a1 eq 'Ye' || $a1 eq 'Mt' || $a1 eq 'Yt' ){
$esd += $iak;
$db += $idd;
}
elsif($a1 eq 'Wd' || $a1 eq 'Yd'){
$ab += $iak;
$eit += $idd;
}
else{
$ab += $iak;
$db += $idd;
}
#-------END
&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' }
elsif ($ch =~ /Qw/ && $ch !~ /Qs/ && $ch !~ /Qn/ && $sp =~/Bh/ && $sts !~ /(Ar|Ya|Jw|Yt|Sh|Ys)/){
$ab += $iak; $db += $idd;
&umsg('左') if !$nomsg;
if ($a1 eq 'Kt') { $sp .= 'Qk' }
if ($a1 eq 'Ax') { $sp .= 'Qx' }
if ($a1 eq 'As') { $sp .= 'Ua' }
$ch .= 'QnQs'; $sts .= 'Qs';
}
foreach (@ele_ak) { if ($sts =~ /$_([0-9])/) { $sp .= $_; $sp .= $1 } }
foreach (@ele_df) { if ($sts =~ /$_([0-9])/) { $sp .= $_; $sp .= $1 } }
$ch .= 'QwQs'; $sts .= 'QwQs';
} else { &umsg('両') }
} elsif ($ch !~ /$a2/) {
# $ab += $iak; $db += $idd;
#-------新装備
if($a1 eq 'Rp' || $a1 eq 'Yr' || $a1 eq 'Sa' || $a1 eq 'Ya' ||$a1 eq 'Hr' || $a1 eq 'Yh'){
$eit += $iak;
$db += $idd;
}
elsif($a1 eq 'He' || $a1 eq 'Ye' || $a1 eq 'Mt' || $a1 eq 'Yt' ){
$esd += $iak;
$db += $idd;
}
elsif($a1 eq 'Wd' || $a1 eq 'Yd'){
$ab += $iak;
$eit += $idd;
}
else{
$ab += $iak;
$db += $idd;
}
#-------END
&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' }
foreach (@ele_ak) { if ($sts =~ /$_([0-9])/) { $sp .= $_; $sp .= $1 } }
foreach (@ele_df) { if ($sts =~ /$_([0-9])/) { $sp .= $_; $sp .= $1 } }
$ch .= $a2; $sts .= $a2;
} else { &umsg('別') }
} else { &umsg('職') }
}
サブルーチン全体を書かれると見るだけでもかなりの手間なのですが。スレッド一覧
> この前はどうもありがとうございました。まだ完全に改造しきれていないのですがなんとか新装備も戦闘にも影響できるようになりました。それで最近二刀流の改造をしだしたのですがどうも、二刀流になりません。刀(Kt)と剣(Sw)とナイフのみ二刀流になるようにしたいのですがどの辺りがおかしいのかご口授いただけませんか?
以下のブロックが上記の処理であるのなら、記述場所と判定条件と処理内容がおかしいです。
elsif ($ch =~ /Qw/ && $ch !~ /Qs/ && $ch !~ /Qn/ && $sp =~/Bh/ && $sts !~ /(Ar|Ya|Jw|Yt|Sh|Ys)/){〜}
これは無かったものとして考えたほうが良いと思います。
仕様自体が曖昧なように感じますので、まずは仕様を明確にしましょう。
例えば、以下のことが不明です。
・片手持ちスキルがない場合
1つ目: 両手用属性なし
2つ目: 両手用属性なし → 装備できるか?
・片手持ちスキルがない場合
1つ目: 両手用属性なし
2つ目: 両手用属性あり → 装備できるか?
・片手持ちスキルがない場合
1つ目: 両手用属性あり
2つ目: 両手用属性なし → 装備できるか?
・片手持ちスキルがない場合
1つ目: 両手用属性あり
2つ目: 両手用属性あり → 装備できるか?
・片手持ちスキルがある場合
1つ目: 両手用属性なし
2つ目: 両手用属性あり → 装備できるか?
・片手持ちスキルがない場合
1つ目: 両手用属性あり
2つ目: 両手用属性なし → 装備できるか?
・片手持ちスキルがない場合
1つ目: 両手用属性あり
2つ目: 両手用属性あり → 装備できるか?
・盾との同時装備
同時装備は1つの武器と1つの盾に限定するのか、2つの武器と1つの盾を許容するのか?
仕様が決まりましたら、次はスクリプトを修正します。
以下のブロック内の修正で事足りると思います。
・if ($sts =~ /Dh/ && $sp !~ /Oh/) {〜}
両手用属性あり、かつ片手持ちスキルがない場合の処理
・} elsif ($ch !~ /$a2/) {〜}
両手用属性なし、または片手持ちスキルがある場合の処理
あと、1つ目が装備されているかどうかは、1つ目の装備時に$chに$a1を追加しておき、2つ目の判定時に'Kt'、'Sw'、'Kn'のどれかが含まれているかで判断すれば良いです。
すいません。少し混乱してます。剣やナイフや刀を持つことができる職業に片手持ち用スキルを入れて、左手、右手両方とも両手用属性があるものだけ二刀流にすることができるようになればと思います。スレッド一覧
二刀流+盾は現実的に考えられないので考えていません。
この場合は盾+二刀流用の剣一丁で装備することができなくなりますが私は上記の仕様が望ましいです。片手持ちスキルがない場合は二刀流ができない仕様ですね
なので
> ・片手持ちスキルがある場合
> 1つ目: 両手用属性あり
> 2つ目: 両手用属性あり
の場合二刀流が可能にしたいです
>
以下の説明から混乱しているのですが
> ・if ($sts =~ /Dh/ && $sp !~ /Oh/) {〜}
> 両手用属性あり、かつ片手持ちスキルがない場合の処理
この場合は単に両腕には一つの武具又は盾しか装備できなくていいようにしたいです。なんか少し勘違いしているような・・
> ・} elsif ($ch !~ /$a2/) {〜}
> 両手用属性なし、または片手持ちスキルがある場合の処理
両手用属性があって片手持ちスキルがある場合に二刀流は可能というかたちにしたいのですが、それ以外なデフォルトの仕様でいいとです。
> あと、1つ目が装備されているかどうかは、1つ目の装備時に$chに$a1を追加しておき、2つ目の判定時に'Kt'、'Sw'、'Kn'のどれかが含まれているかで判断すれば良いです。
すいません。途中からわからなくなってしまいました;
> すいません。少し混乱してます。剣やナイフや刀を持つことができる職業に片手持ち用スキルを入れて、左手、右手両方とも両手用属性があるものだけ二刀流にすることができるようになればと思います。スレッド一覧
> 二刀流+盾は現実的に考えられないので考えていません。
> この場合は盾+二刀流用の剣一丁で装備することができなくなりますが私は上記の仕様が望ましいです。片手持ちスキルがない場合は二刀流ができない仕様ですね
> なので
> > ・片手持ちスキルがある場合
> > 1つ目: 両手用属性あり
> > 2つ目: 両手用属性あり
> の場合二刀流が可能にしたいです
仕様としては以下のようにするということですか?
・片手持ちスキルありの場合
両手用武器だけは二刀流ができる。
武器2つ+盾の組み合わせはできない。
両手用武器+盾は装備できる。(「この場合は盾+二刀流用の剣一丁〜」というのは片手持ちスキルがない場合ですよね?)
・片手持ちスキルなしの場合
二刀流はできない。
> > ・} elsif ($ch !~ /$a2/) {〜}
> > 両手用属性なし、または片手持ちスキルがある場合の処理
> 両手用属性があって片手持ちスキルがある場合に二刀流は可能というかたちにしたいのですが、それ以外なデフォルトの仕様でいいとです。
上記の仕様にするのでしたらこのif文の判定条件と内容を修正することになります。
概要としては「} elsif ($ch !~ /$a2/) {」を変更して以下を実現すれば良いです。
・判定条件を以下のように変更する。
「$chに$a2が含まれない && (カウントが1以下 || $a2が'Qs'以外)」 || 「$a2が'Qw' && $chに'Qs'が含まれない && 両手用属性 && 片手持ちスキルあり && カウントが1」
※ 前の条件が1つ目の装備の条件、後ろが2つ目の武器の装備条件です。
・内容に以下の処理を追加する。
「$2が'Qw' && 両手用属性」ならカウントアップ。
※ いくつの両手用武器を装備しているかがわかるようにするためです。
刀と剣とナイフだけが二刀流可能でしたね。スレッド一覧
条件を訂正します。
> 「$chに$a2が含まれない && (カウントが1以下 || $a2が'Qs'以外)」 || 「$a2が'Qw' && $chに'Qs'が含まれない && 両手用属性 && 片手持ちスキルあり && カウントが1」
「$chに$a2が含まれない && (カウントが1以下 || $a2が'Qs'以外)」 || 「$a2が'Qw' && $chに'Qs'が含まれない && 両手用属性あり && 片手持ちスキルあり && ($a1が'Kt' || 'Sw' || 'Kn') && カウントが1」
> 「$2が'Qw' && 両手用属性」ならカウントアップ。
「$2が'Qw' && 両手用属性あり && ($a1が'Kt' || 'Sw' || 'Kn')」ならカウントアップ。
> 仕様としては以下のようにするということですか?スレッド一覧
> ・片手持ちスキルありの場合
> 両手用武器だけは二刀流ができる。
> 武器2つ+盾の組み合わせはできない。
> 両手用武器+盾は装備できる。(「この場合は盾+二刀流用の剣一丁〜」というのは片手持ちスキルがない場合ですよね?)
ですね。一定の職しか二刀流にできないようにしたいので、剣を扱える職でも片手用スキルがなければできないという感じです。
指摘してくださった内容をまとめてみましたがどうでしょうか?
以下を「} elsif ($ch !~ /$a2/) {」と書き換えれば二刀流ができるということですよね?
>>「$chに$a2が含まれない && (カウントが1以下 || $a2が'Qs'以外)」 || 「$a2が'Qw' && $chに'Qs'が含まれない && 両手用属性あり && 片手持ちスキルあり && ($a1が'Kt' || 'Sw' || 'Kn') && カウントが1」
($ch !~ /$a2/) && ($1 <= 1 || $a2 !~/Qs/) || ($a2 =~/Qw/) && ($ch !~/Qs/) && ($sts =~/Dh/) && ($sp =~ /Oh/) && ($a1=~Kt || Sw || Kn) && ($1 = 1)
>>「$2が'Qw' && 両手用属性あり && ($a1が'Kt' || 'Sw' || 'Kn')」ならカウントアップ。
($2 = Qw) && ($sts =~/Dh/) && ($a1 = Kt || Sw || Kn); $1++;
> 指摘してくださった内容をまとめてみましたがどうでしょうか?スレッド一覧
> 以下を「} elsif ($ch !~ /$a2/) {」と書き換えれば二刀流ができるということですよね?
前者は判定条件なのでelsifの条件部分の置換ですが、後者は処理なのでifブロックの内容に追加します。
> >>「$chに$a2が含まれない && (カウントが1以下 || $a2が'Qs'以外)」 || 「$a2が'Qw' && $chに'Qs'が含まれない && 両手用属性あり && 片手持ちスキルあり && ($a1が'Kt' || 'Sw' || 'Kn') && カウントが1」
> ($ch !~ /$a2/) && ($1 <= 1 || $a2 !~/Qs/) || ($a2 =~/Qw/) && ($ch !~/Qs/) && ($sts =~/Dh/) && ($sp =~ /Oh/) && ($a1=~Kt || Sw || Kn) && ($1 = 1)
・$1はperlで使われるのでカウント用変数として使用できません。(代入しようとするとエラーになります。)
・「$a2が'Qs'以外」の条件は動作的には問題無いですがふさわしくありません。 → neで比較したほうが良いです。
・「$a2が'Qw'」も同様です。 → eqで比較したほうが良いです。
・「$a1が'Kt' || 'Sw' || 'Kn'」はそれぞれを$a1と比較するという意味です。
・=は代入演算子であり比較演算子ではありません。
> >>「$2が'Qw' && 両手用属性あり && ($a1が'Kt' || 'Sw' || 'Kn')」ならカウントアップ。
> ($2 = Qw) && ($sts =~/Dh/) && ($a1 = Kt || Sw || Kn); $1++;
・上記と似たような間違いです。
・$2は$a2の書き間違いでした。
・カウントアップするのは条件を満たした場合のみです。
変更して、perl.exe -wc sos2.cgiで文法チェックを行ったり、動作させてみればおかしいとわかると思うのですが・・・。
Perl CHECKERを使って修正しました。スレッド一覧
> > >>「$chに$a2が含まれない && (カウントが1以下 || $a2が'Qs'以外)」 || 「$a2が'Qw' && $chに'Qs'が含まれない && 両手用属性あり && 片手持ちスキルあり && ($a1が'Kt' || 'Sw' || 'Kn') && カウントが1」
($ch !~ /$a2/) && ($count <= 1 || $a2 ne /Qs/) || ($a2 eq /Qw/) && ($ch !~/Qs/) && ($sts =~/Dh/) && ($sp =~ /Oh/) && ($a1 <=> Kt || Sw || Kn) && ($count = 1)
>
> > >>「$2が'Qw' && 両手用属性あり && ($a1が'Kt' || 'Sw' || 'Kn')」ならカウントアップ。
if (($count eq /Qw/) && ($sts eq /Dh/) && ($a2 = Kt || Sw || Kn)) { $count++ };
少し混乱しているのですけれどもカウントというのは新しく定義された変数ですか?
・カウントアップするのは条件を満たした場合のみです。
はif文にしてみたのですがどうでしょうか?
> Perl CHECKERを使って修正しました。スレッド一覧
これはCGIですよね?
そうだとすると通常のものはエラーしか表示されないため、今回のは警告が重要なのであまり意味がありません。
> > > >>「$chに$a2が含まれない && (カウントが1以下 || $a2が'Qs'以外)」 || 「$a2が'Qw' && $chに'Qs'が含まれない && 両手用属性あり && 片手持ちスキルあり && ($a1が'Kt' || 'Sw' || 'Kn') && カウントが1」
>
> ($ch !~ /$a2/) && ($count <= 1 || $a2 ne /Qs/) || ($a2 eq /Qw/) && ($ch !~/Qs/) && ($sts =~/Dh/) && ($sp =~ /Oh/) && ($a1 <=> Kt || Sw || Kn) && ($count = 1)
$a2 ne /Qs/ → 変数 ne '値'
$a2 eq /Qw/ → 変数 eq '値'
$a1 <=> Kt || Sw || Kn → 変数 eq '値1' || 変数 eq '値2' || 変数 eq '値3'
$count = 1 → 変数 == 値
> > > >>「$2が'Qw' && 両手用属性あり && ($a1が'Kt' || 'Sw' || 'Kn')」ならカウントアップ。
>
> if (($count eq /Qw/) && ($sts eq /Dh/) && ($a2 = Kt || Sw || Kn)) { $count++ };
$count eq /Qw/ → $a2 eq '値'
$sts eq /Dh/ → 変数 =~ /値/
$a2 = Kt || Sw || Kn → 変数 eq '値1' || 変数 eq '値2' || 変数 eq '値3'
> 少し混乱しているのですけれどもカウントというのは新しく定義された変数ですか?
はい、そうです。
> ・カウントアップするのは条件を満たした場合のみです。
> はif文にしてみたのですがどうでしょうか?
if文にすること自体は正しいので、あとは上記の修正をperlの正しい文法で表現すれば良いです。
判定条件は若干難しいですが、1つ1つ何をしているのかを考えていけば何をしようとしているのかが分かると思いますので頑張ってください。
また、No.1383から1384に訂正したことで冗長な判定条件が含まれましたので、余裕がありましたら取り除いてください。
>前者は判定条件なのでelsifの条件部分の置換ですが、スレッド一覧
まず最初にelsifの部分をsub armに修正をしてみました
↓
} else { &umsg('両') }
} elsif ($ch !~ /$a2/) && ($count <= 1 || $a2 ne 'Qs') || ($a2 eq 'Qw') && ($ch !~/Qs/) && ($sts =~/Dh/) && ($sp =~ /Oh/) && ($a1 eq 'Kt' || $a1 eq 'Sw' || $a1 eq 'Kn') && ($count == 1) {
# $ab += $iak; $db += $idd;
#-------新装備
↓以降続く
#-------END
これでいいのですよね
>後者は処理なのでifブロックの内容に追加します。
がまだよくわからないんですが
if (($a2 eq 'Qw') && ($sts =~ /Dh/) && ($a2 eq 'Kt' ||$a2 eq 'Sw' ||$a2 eq 'Kn')) { $count++ };
をブロック内に入れるということは実行文になるのですよね?
そのための判定条件が若干難しいというのは・・・どの辺りにいれるのかすらわからないのです;
> >前者は判定条件なのでelsifの条件部分の置換ですが、スレッド一覧
>
> まず最初にelsifの部分をsub armに修正をしてみました
> これでいいのですよね
括弧で囲っていないこと以外は問題無いです。
最低限、文法チェックは行うようにしましょう。
> >後者は処理なのでifブロックの内容に追加します。
>
> がまだよくわからないんですが
> if (($a2 eq 'Qw') && ($sts =~ /Dh/) && ($a2 eq 'Kt' ||$a2 eq 'Sw' ||$a2 eq 'Kn')) { $count++ };
> をブロック内に入れるということは実行文になるのですよね?
> そのための判定条件が若干難しいというのは・・・どの辺りにいれるのかすらわからないのです;
判定条件というのは変更したelsif文の中身のことです。(難しく無かったですか?)
なので、elsif(変更した条件){〜}の「〜」部分に追加すれば良いです。
どうやた勘違いていたようです。スレッド一覧
} else { &umsg('両') }
} elsif (($ch !~ /$a2/) && ($count <= 1 || $a2 ne 'Qs') || ($a2 eq 'Qw') && ($ch !~/Qs/) && ($sts =~/Dh/) && ($sp =~ /Oh/) && ($a1 eq 'Kt' || $a1 eq 'Sw' || $a1 eq 'Kn') && ($count == 1)) {
if (($a2 eq 'Qw') && ($sts =~ /Dh/) && ($a2 eq 'Kt' ||$a2 eq 'Sw' ||$a2 eq 'Kn')) { $count++ };
# $ab += $iak; $db += $idd;
#-------新装備
if($a1 eq 'Rp' || $a1 eq 'Yr' || $a1 eq 'Sa' || $a1 eq 'Ya' ||$a1 eq 'Hr' || $a1 eq 'Yh'){
$eit += $iak;
$db += $idd;
}
elsif($a1 eq 'He' || $a1 eq 'Ye' || $a1 eq 'Mt' || $a1 eq 'Yt' ){
$esd += $iak;
$db += $idd;
}
elsif($a1 eq 'Wd' || $a1 eq 'Yd'){
$ab += $iak;
$eit += $idd;
}
else{
$ab += $iak;
$db += $idd;
}
#-------END ↓以降続く
#-------END
こんな感じでしょうか?ですがifの下にifはおかしいような・・
新装備の直後のif文はelsifにしたほうがいいのでしょうか?
それとも実行文のifのブロックでまた新装備の部分を囲むってことなのですか?
> こんな感じでしょうか?ですがifの下にifはおかしいような・・スレッド一覧
> 新装備の直後のif文はelsifにしたほうがいいのでしょうか?
> それとも実行文のifのブロックでまた新装備の部分を囲むってことなのですか?
ifはブロックで完結しているので問題ありません。
つまり、if(){}で1つのまとまり、次のif(){}elsif(){}〜で1つのまとまりとなります。
なので、新装備の直後のifをelsifにするとカウントの判定条件を満たさないときだけ処理されるようになってしまいます。
> なので、新装備の直後のifをelsifにするとカウントの判定条件を満たさないときだけ処理されるようになってしまいます。スレッド一覧
これは間違いでした。
通常はこれで正しいのですが、今回はif文の末尾に余分な「;」があるのでelsifにすると文法エラーになってしまいます。
ということは記事1392の変更で問題ないのでしょうか?スレッド一覧
すいません言い方間違えましたスレッド一覧
> ということは記事1392で問題ないのでしょうか?
です
> すいません言い方間違えましたスレッド一覧
> > ということは記事1392で問題ないのでしょうか?
> です
テストしてみれば問題無いかどうかが分かりますよね?
1パターンだけだと他のパターンで動作がおかしいということがある可能性がありますので、装備する順番を変えたり、片手持ちスキルが無い状態にしたり、などのようにいろいろなパターンを試してください。
> テストしてみれば問題無いかどうかが分かりますよね?スレッド一覧
> 1パターンだけだと他のパターンで動作がおかしいということがある可能性がありますので、装備する順番を変えたり、片手持ちスキルが無い状態にしたり、などのようにいろいろなパターンを試してください。
テストしようと思って追加すると今度はCGIエラーになってしまいました。原因は
elsif ($ch =~ /Qw/ && $ch !~ /Qs/ && $ch !~ /Qn/ && $sp =~/Bh/ && $sts !~ /(Ar|Ya|Jw|Yt|Sh|Ys)/){
$ab += $iak; $db += $idd;
&umsg('左') if !$nomsg;
if ($a1 eq 'Kt') { $sp .= 'Qk' }
if ($a1 eq 'Ax') { $sp .= 'Qx' }
if ($a1 eq 'As') { $sp .= 'Ua' }
$ch .= 'QnQs'; $sts .= 'Qs';
}
の部分で最初の方のレスで
elsif ($ch =~ /Qw/ && $ch !~ /Qs/ && $ch !~ /Qn/ && $sp =~/Bh/ && $sts !~ /(Ar|Ya|Jw|Yt|Sh|Ys)/){
はないものと見たほうがいいと書かれていましたのでコメントアウトしたらエラーになりました。ブロックが不足しているのが原因であるのはわかるのですが
@
$ab += $iak; $db += $idd;
&umsg('左') if !$nomsg;
if ($a1 eq 'Kt') { $sp .= 'Qk' }
if ($a1 eq 'Ax') { $sp .= 'Qx' }
if ($a1 eq 'As') { $sp .= 'Ua' }
$ch .= 'QnQs'; $sts .= 'Qs';
}
の部分の条件文は消去してしまっていいのでしょうか?
前レスでは
($ch !~ /$a2/) {
の箇所を変更すればいいという感じだったので@の部分はそのままでいいのかどうか気になります
> elsif ($ch =~ /Qw/ && $ch !~ /Qs/ && $ch !~ /Qn/ && $sp =~/Bh/ && $sts !~ /(Ar|Ya|Jw|Yt|Sh|Ys)/){スレッド一覧
> はないものと見たほうがいいと書かれていましたのでコメントアウトしたらエラーになりました。ブロックが不足しているのが原因であるのはわかるのですが
>
> @
> の部分の条件文は消去してしまっていいのでしょうか?
この部分が二刀流用に追加した部分でしたら、elsifブロック全体が必要無いです。
なんというか、インデントされていないせいでブロックが分かりにくくなっているのではないでしょうか?
インデントの仕方は人それぞれですが、例えば以下のような形式でインデントするようにしてみてはどうでしょう。
sub example{
if(条件){
if(条件){
if(条件){
}
}
else{
}
}
if(条件){
}
elsif(条件){
}
else{
}
}
Tera Padを使ってオートインテンドしました。早速二刀流ができるか動作を確認してみましたができませんでしたスレッド一覧
} elsif
#($ch !~ /$a2/)
{
(($ch !~ /$a2/) && ($count <= 1 || $a2 ne 'Qs') || ($a2 eq 'Qw') && ($ch !~/Qs/) && ($sts =~/Dh/) && ($sp =~ /Oh/) && ($a1 eq 'Kt' || $a1 eq 'Sw' || $a1 eq 'Kn') && ($count == 1)) {
if (($a2 eq 'Qw') && ($sts =~ /Dh/) && ($a2 eq 'Kt' ||$a2 eq 'Sw' ||$a2 eq 'Kn')) { $count++ };
# $ab += $iak; $db += $idd;
#-------新装備
#以降続く
変な不具合は起こりませんでしたが剣とナイフと刀も条件文で指定しているのにも関わらずなぜかよくわからないです。
両武器にDh、スキルにもOhを加えたのですが・・
> } elsifスレッド一覧
> #($ch !~ /$a2/)
> {
ここの{がコメントアウトされていないのは、ここに書き込む時のミスなのですよね?
> if (($a2 eq 'Qw') && ($sts =~ /Dh/) && ($a2 eq 'Kt' ||$a2 eq 'Sw' ||$a2 eq 'Kn')) { $count++ };
$a2は1つ目以外すべて$a1です。(No.1389での指摘漏れです。)
というか、正常に動かないなら動かないで自分でデバッグしてください。
push(@msg, "\$a1=$a1");などを実行すればその時の変数の内容はわかるのですし。
どうやらこれは私が公開しているものを使用したみたいですね。スレッド一覧
URL http://kukuro.sakura.ne.jp/
できるなら私のサイトで質問してもらいたかったです。
そこで改造スクリプトを見直したところ,
if ($sts =~ /Dh/) { 〜〜〜 }とelsif ($ch !~ /$a2/) {
の間
と私は記述していましたが,上記if ($sts =~ /Dh/) { 〜〜〜 }
正しくは
if ($sts =~ /Dh/ && $sp !~ /Oh/) { 〜〜〜 }とelsif($ch !~ /$a2/){ 〜〜〜 }の間ですね。
つまり
} else { &umsg('両') }
}
の下です。
さらに書き忘れをひとつ。スキルに「Bh」がある人のみ二刀流が可能になってます。
moonさん
この場を借りて説明したことをお詫びします。
> moonさんスレッド一覧
> この場を借りて説明したことをお詫びします。
いえいえ、出展元がわかりましたし、かえって助かりました。
わざわざ、ありがとうございます。