▼スレッド
│
└◇588:Re[2]:新アイテム [akira] 05/19 12:23
└◇589:Re[3]:新アイテム [moon] 05/19 22:33
└◇590:Re[4]:新アイテム [akira] 05/20 09:08
└◇591:Re[5]:新アイテム [moon] 05/20 19:32
├◇592:補足 [moon] 05/20 23:20
└◇593:Re[6]:新アイテム [akira] 05/21 05:31
└◇594:Re[7]:新アイテム [moon] 05/21 08:37
└◇595:Re[8]:新アイテム [akira] 05/21 09:45
└◇597:Re[9]:新アイテム [masaki] 05/21 13:14
└◇598:Re[10]:新アイテム [moon] 05/21 19:25
└◇599:できました! [akira] 05/21 22:06
└◇600:Re:できました! [masaki] 05/22 16:46<-last
> sub foodを再利用するのであれば、use_afterのelsif ($sts =~ /Fd/) { &food }をelsif ($sts =~ /Fd|Pf/) { &food }に。スレッド一覧
> そして、foodでif(index($sts, 'Pf') < 0){〜}else{〜}として通常の食料と処理をわける。
> umsgは変更しなくて良いのでfoodに直接push(@msg, "〜");を書いてメッセージを表示。
> 商品設定や鑑定は他のアイテムを参考に変更。
> といった流れかな。
>
ご解答ありがとうございます。
food内がよく分からずてこずっているところです(汗)。
> # 新しくPfというのを作るのではなく食料に'Pz'が付いていたら毒化する、というほうが自然かも。(変更も少なく済むだろうし)
Pzでもいけるんですね。
これだとPfと作業は変わるんでしょうか?
(こちらのほうが楽そうですね)
> > sub foodを再利用するのであれば、use_afterのelsif ($sts =~ /Fd/) { &food }をelsif ($sts =~ /Fd|Pf/) { &food }に。スレッド一覧
> > そして、foodでif(index($sts, 'Pf') < 0){〜}else{〜}として通常の食料と処理をわける。
> > umsgは変更しなくて良いのでfoodに直接push(@msg, "〜");を書いてメッセージを表示。
> > 商品設定や鑑定は他のアイテムを参考に変更。
> > といった流れかな。
> >
>
> ご解答ありがとうございます。
> food内がよく分からずてこずっているところです(汗)。
先に書いた分岐をもう少し詳細に書くと、
if(index($sts, 'Pf') < 0){
&umsg('摂'); # 通常のメッセージ
}
else{
push(@msg, '腐っていたようでお腹を壊しました。'); # 賞味期限切れのメッセージ
$av = 'poison';
}
# 既に毒化している状態を考慮しないと上記のようになります。(&umsg('摂');だけの置換)
> > # 新しくPfというのを作るのではなく食料に'Pz'が付いていたら毒化する、というほうが自然かも。(変更も少なく済むだろうし)
>
> Pzでもいけるんですね。
> これだとPfと作業は変わるんでしょうか?
> (こちらのほうが楽そうですね)
こちらは「賞味期限切れ」と明示的には表示されないですが、上記のsub foodへの変更においてPfをPzに変更するだけで他の箇所はデフォルトで良いはずです。
> 先に書いた分岐をもう少し詳細に書くと、スレッド一覧
> if(index($sts, 'Pf') < 0){
> &umsg('摂'); # 通常のメッセージ
> }
> else{
> push(@msg, '腐っていたようでお腹を壊しました。'); # 賞味期限切れのメッセージ
> $av = 'poison';
> }
>
> # 既に毒化している状態を考慮しないと上記のようになります。(&umsg('摂');だけの置換)
>
試してみたのですがどうもうまくいきません。
この構文はfood内のどこに書き込めばよいんでしょうか?
> 試してみたのですがどうもうまくいきません。スレッド一覧
> この構文はfood内のどこに書き込めばよいんでしょうか?
&umsg('摂');を置き換えるだけです。
# そのままコピペして全角空白の変換をしていないとか。(笑)
No.589で書いた処理では「アイテム名」や「摂取した」というメッセージが出ないので、それらのメッセージを出すためには出力を適宜変更してください。スレッド一覧
スレッド一覧
> &umsg('摂');を置き換えるだけです。
>
> # そのままコピペして全角空白の変換をしていないとか。(笑)
# Sub Food #
sub food {
if ($av eq 'dead') { &umsg('死') }
elsif ($bp =~ /Hb/) {
$item = $bn . $item; $bp =~ tr/a-zA-Z//d;
$iak *= $bp; $iak = 999 if $iak > 999; $iak = -99 if $iak < -99;
$sts = sprintf("%04d%03d%03d",0,$iak,0) . "FdWi";
&umsg('作'); $bp = $bn = '';
if(index($sts, 'Pf') < 0){
&umsg('摂'); # 通常のメッセージ
}
else{
push(@msg, '腐っていたようでお腹を壊しました。'); # 賞味期限切れのメッセージ
$av = 'poison';
}
}
文法チェックは大丈夫だったのですが、
毒状態にならないしメッセージも出ません。
上はコピペしたのでスペース加減は違って見えるかもしれないんですが。
>スレッド一覧
> > &umsg('摂');を置き換えるだけです。
> >
> > # そのままコピペして全角空白の変換をしていないとか。(笑)
>
> # Sub Food #
> sub food {
> if ($av eq 'dead') { &umsg('死') }
> elsif ($bp =~ /Hb/) {
> $item = $bn . $item; $bp =~ tr/a-zA-Z//d;
> $iak *= $bp; $iak = 999 if $iak > 999; $iak = -99 if $iak < -99;
> $sts = sprintf("%04d%03d%03d",0,$iak,0) . "FdWi";
> &umsg('作'); $bp = $bn = '';
> if(index($sts, 'Pf') < 0){
> &umsg('摂'); # 通常のメッセージ
> }
> else{
> push(@msg, '腐っていたようでお腹を壊しました。'); # 賞味期限切れのメッセージ
> $av = 'poison';
> }
> }
> 文法チェックは大丈夫だったのですが、
> 毒状態にならないしメッセージも出ません。
> 上はコピペしたのでスペース加減は違って見えるかもしれないんですが。
元の&umsg('摂');を囲んであったelse{}が無いようですが。
> > > &umsg('摂');を置き換えるだけです。スレッド一覧
> 元の&umsg('摂');を囲んであったelse{}が無いようですが。
結局のところ勉強不足というか言葉がいまいち分からず、
「置き換え」の仕方が分からないです。
置き換え、置換で探しても置換演算子あたりでヒットしてしまって。これとは別物ですよね。
何度も同じところですみませんが、
# Sub Food #
sub food {
if ($av eq 'dead') { &umsg('死') }
elsif ($bp =~ /Hb/) {
$item = $bn . $item; $bp =~ tr/a-zA-Z//d;
$iak *= $bp; $iak = 999 if $iak > 999; $iak = -99 if $iak < -99;
$sts = sprintf("%04d%03d%03d",0,$iak,0) . "FdWi";
&umsg('作'); $bp = $bn = '';
} else { &umsg('摂'); $hp = &hpcheck($hp,$xp,$iak); $gn = 1 }
if(index($sts, 'Pf') < 0){
&umsg('摂'); # 通常のメッセージ
}
else{
push(@msg, '腐っていたようでお腹を壊しました。'); # 賞味期限切れのメッセージ
$av = 'poison';
}
}
にすると当然「置き換え」の指示通りではないし
単に書き込んだだけ、文法もだめになっちゃいます。
akiraさん初めまして(^^スレッド一覧
moonさんいつもお世話になっております。m(_ _)m
ちょっと覗きに来て、思ったので一言w
>else { &umsg('摂'); $hp = &hpcheck($hp,$xp,$iak); $gn = 1 }
>if(index($sts, 'Pf') < 0){
> &umsg('摂'); # 通常のメッセージ
>}
>else{
> push(@msg, '腐っていたようでお腹を壊しました。'); # 賞味期限切れのメッセージ
> $av = 'poison';
>}
ではなく、
else {
if(index($sts, 'Pf') < 0){
&umsg('摂'); # 通常のメッセージ
}
else{
push(@msg, '腐っていたようでお腹を壊しました。'); # 賞味期限切れのメッセージ
$av = 'poison';
}
$hp = &hpcheck($hp,$xp,$iak); $gn = 1;}
ということではないでしょうか?
置き換えとはそのまま置きかえるだけですから、深く考えないほうが言いと思います(^^;
間違っているかもしれませんw
失礼しました(^^
masakiさんが書かれた通りです。スレッド一覧
変更のついでに、push(@msg, '腐っていたようでお腹を壊しました。');をpush(@msg, "$itemを摂取したら腐っていたようでお腹を壊しました。");のような感じにしたほうが良いと思います。
moonさん、いつもありがとうございます。スレッド一覧
無事できました。
masakiさん、はじめまして。
masakiさんの書き込みをみてはこういうのもできるんだ、
と思っていました。
ご指摘ありがとうございました。
無事できました♪
それでは、失礼します。
本当に助かりました。
これからもよろしくお願いします。
> moonさん、いつもありがとうございます。スレッド一覧
> 無事できました。
>
> masakiさん、はじめまして。
> masakiさんの書き込みをみてはこういうのもできるんだ、
> と思っていました。
> ご指摘ありがとうございました。
> 無事できました♪
>
> それでは、失礼します。
> 本当に助かりました。
> これからもよろしくお願いします。
僕はなにもしてないですけどねw
勉強中ですから〜(^^
これからも宜しくお願いします。