▼スレッド
│
└◇444:解呪について(;; [masaki] 03/22 12:58
└◇445:Re:解呪について(;; [masaki] 03/22 13:41
└◇446:Re[2]:解呪について(;; [moon] 03/22 16:36
└◇448:Re[3]:解呪について(;; [masaki] 03/22 17:59
└◇450:Re[4]:解呪について(;; [moon] 03/22 21:27
└◇451:Re[5]:解呪について(;; [masaki] 03/22 22:43<-last
先日、呪いについておしえてもらい、呪いまでは出来たのですが(^^;スレッド一覧
こんどは解呪で動かない場所があるので質問させていただきます。
(わからないことだらけなので、初歩的なミスをしているかもしれません(;;)
やったのは、次の通りです(^^;
main programに
if ($Fm{'mode'} eq 'kaizyu') { &contact_form }
を追加。
sub contact_formに
&cure_revive if $Fm{'mode'} eq 'kaizyu';
を追加。(もう、ここでまちがているかも(;;)
解呪スキルをKiとして
&input('radio','mode','kaizyu','',"解呪してもらう<br>\n") if $psp =~ /Ki/;
↑一応テストのため、Kiがあるだけで表示させてます。
sub fee_beforeに
print qq|アイテムの解呪料:HP $judg_hp 使用\n| if $sp =~ /Ki/;
&input('text','kaizyu',"$kaizyu",' size=10',' G<br>') if $sp =~ /Ki/;
を追加。
sub fee_afterに
if (($Fm{'kaizyu'} =~ /[^0-9]/ || !$Fm{'kaizyu'}) && $sp =~ /Ki/) {
push (@msg,"解呪の価格が設定されていません"); $Fm{'kaizyu'} = 0;
追加。
sub cure_reviveに
if ($def_hr >= $php && $Fm{'mode'} eq 'kaizyu') {
push (@msg,"$pnmは解呪できる体力がありません");return }
と
if ($psp=~ /Ki/) {
if ($av ne 'dead') { return }
if (!$kaizyu) { push (@msg,"$pnmは解呪を行っていません");return }
if ($mn < $kaizyu) { push (@msg,"解呪費を払うお金がありません");return }
$mn -= $kaizyu; $pmn += $kaizyu; $php -= $def_hr;if($sts =~ /No/ && $sts =~ /Q[swat]/){$sts =~ s/No//g;}
&add_record("[$id] $nmを$kl\Gで解呪しました");
}
を追加しました。
長いうえに、見づらくてすみません(;;
それで、テストしてみたところやっぱり動きませんでした(;;
(解呪しました。のメッセージが表示されず、何も変かなしです)
色々やってみて、「解呪できる体力がありません」は表示されたので、
if ($psp=~ /Ki/) {
if ($av ne 'dead') { return }
if (!$kaizyu) { push (@msg,"$pnmは解呪を行っていません");return }
if ($mn < $kaizyu) { push (@msg,"解呪費を払うお金がありません");return }
$mn -= $kaizyu; $pmn += $kaizyu; $php -= $def_hr;if($sts =~ /No/ && $sts =~ /Q[swat]/){$sts =~ s/No//g;}
&add_record("[$id] $nmを$kl\Gで解呪しました");
}
の部分が動いてないのだと思うのですが、どこが違っているのでしょう(^^;
お忙しいところすみません。m(_ _)m
> if ($psp=~ /Ki/) {スレッド一覧
間違えましたすみません。
if ($Fm{'mode'} eq 'kaiyzu')です。
あと、
>if($sts =~ /No/ && $sts =~ /Q[swat]/){$sts =~ s/No//g;}
も、よくわからないのでかなり適当です。(jДj
if ($av ne 'dead') { return }スレッド一覧
これは、「自分が死んでいなかったら何もしない」ということなので不要です。
代わりに、
return if($bg eq '');
my $num = -1;
&splititem('i');
foreach(0..$#items){
($item,$sts) = split(/△/,$items[$_]);
if(index($sts,'No')>=0 && $sts=~/Q[swat]/){
$num = $_;
last;
}
}
if($num<0){
push(@msg,'あなたは呪われていません');
return;
}
のようにして呪われた品を装備中であるかを判断します。
$mn -= $kaizyu; $pmn += $kaizyu; $php -= $def_hr;if($sts =~ /No/ && $sts =~ /Q[swat]/){$sts =~ s/No//g;}
&add_record("[$id] $nmを$kl\Gで解呪しました");
を上記に関連して、
$mn -= $kaizyu;
$pmn += $kaizyu;
$php -= $def_hr;
$sts =~ s/No//g; # 上記で$stsは呪われたアイテムのステータスを指しているはずなので改めてsplitをしない
$items[$num] = "$item△$sts";
&joinitem('i');
&add_record("[$id] $nmを${kaizyu}Gで解呪しました");
と変更します。
# 文法チェックなし & 未テスト
ありがとうございます!スレッド一覧
でも、問題発生です(;;
moonさんに教えていただいた場所はちゃんと動いたのですが、ユーザーデータへの書きこみがされてないらしいです(^^;
sub fee_beforeの
print qq|アイテムの解呪料:HP $judg_hp 使用\n| if $sp =~ /Ki/;
&input('text','kaizyu',"$kaizyu",' size=10',' G<br>') if $sp =~ /Ki/;
の部分が怪しいのですが(^^
自分でユーザーデータへ直接書きこめば出来るのですが(笑
sub fee_beforeで$kaizyuの値を取得していますか?スレッド一覧
解毒料とかと同じフラグ$feに記録している場合は、($cr,$rv,$kaizyu) = split(/△/,$fe);というように。
また、sub fee_afterで$fe = "$Fm{'cr'}△$Fm{'rv'}△$Fm{'kaizyu'}";としていますか?
以上2点を確認してみてください。
ありがとうございます!スレッド一覧
やっとできました(^^;
いろいろ改造してあると、複雑で(ぉ
いつもこんな初歩的な質問に答えていただき、ありがとうございます!