私設SoS2オーナー応援BBS

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

No.1022  Re[2]:アイテムの破壊判定
発言者: まいる
発言日: 2004 05/01 18:07
> まず、基本的なことから確認してみましょうか。
> その新しい装備品を装備したときにアイテムステータスにQiまたはQuがちゃんと追加されていますか?


全てのQ[swat]の部分をQ[swatui]に置き換えしたのと、use afterに
elsif ($sts =~ /(Eg|Eh|Yi)/)               { &arm($1,'Qu') }
elsif ($sts =~ /(Ek|Yu)/)      { &arm($1,'Qi') }
を追加してありますので、装備そのものについては問題無いと思います

機能していないという表現がまずかったかもしれません
全く機能していないわけではなく、壊れる順番がおかしかったので書き方に問題があるのかと思いました

> if ($result == 1 && $sts =~ /Qw/ && $sts !~ /Ie/) { $breakitem = 1 }
> elsif ($result == 1 && $sts =~ /Qt/ && $sts !~ /Ie/) { $breakitem = 1 }
> elsif ($result == 1 && $sts =~ /Qi/ && $sts !~ /Ie/) { $breakitem = 1 }

例えばこの部分、勝利時に最初にQwを装備しているか調べて、装備してなければQtを装備しているか調べる
Qwを装備していればQtは壊れることは無い と理解していたのですが、何故か先にQtが壊れたり敗北時に壊れるはずのQuが壊れたりと・・・


> このif文の前後に対して間違った変更をしていませんか?(オリジナルVer.1.10のスクリプトだと誤解しやすいような書き方がされているので・・・。)

戦闘後のアイテム破壊部分については、これを追加した以外には特にいじった記憶はありませんが、一応こんな感じです

    &splititem('i');
    if (!$Bidice) {
        foreach (0 .. $#items) {
            ($item,$sts,$price) = split(/△/,$items[$_]);
            if ($sts =~ /Li/ && $Bldice) { next }
            if ($result == 1 && $sts =~ /Qw/ && $sts !~ /Ie/) { $breakitem = 1 }
            elsif ($result == 1 && $sts =~ /Qt/ && $sts !~ /Ie/) { $breakitem = 1 }
            elsif ($result == 1 && $sts =~ /Qi/ && $sts !~ /Ie/) { $breakitem = 1 }
            if ($result == -1 && $sts =~ /Qs/ && $sts !~ /Qw/ && $sts !~ /Ie/)
                                                             { $breakitem = 1 }
         elsif ($result == -1 && $sts =~ /Qa/ && $sts !~ /Ie/) { $breakitem = 1 }
            elsif ($result == -1 && $sts =~ /Qu/ && $sts !~ /Ie/) { $breakitem = 1 }
            if ($result == 0 && $sts =~ /Qz/ && $sts !~ /Ie/) { $breakitem = 1 }
            if ($breakitem) {
                $ab -= substr($sts,4,2); $db -= substr($sts,6,2);
                splice(@items,$_,1); &joinitem('i');
                $sp =~ s/Qb//g if $sts =~ /Bw/;
                $sp =~ s/Qk//g if $sts =~ /Kt/;
                $sp =~ s/Qx//g if $sts =~ /Ax/;
                $sp =~ s/Qm//g if $sts =~ /Sw/;
                push (@msg,"装備が壊れました"); last;
            }
        }
    }


push (@msg,"$itemが壊れました")をpush (@msg,"装備が壊れました")に変更したくらいです
引き分け部分については先に書いた記事では割愛しました
elsifを使ってませんので特に関係無いと思いましたが、実際はQ[swatuiz]でuse afterにも修正を加えてあります

▼関連発言

1020:アイテムの破壊判定 [まいる] 05/01 16:06
 └1021:Re:アイテムの破壊判定 [moon] 05/01 16:49
  └1022:Re[2]:アイテムの破壊判定 [まいる] 05/01 18:07
   └1023:Re[3]:アイテムの破壊判定 [moon] 05/01 18:55
    └1024:Re[4]:アイテムの破壊判定 [まいる] 05/01 20:26
     └1025:Re[5]:アイテムの破壊判定 [moon] 05/01 21:34
      └1026:Re[6]:アイテムの破壊判定 [まいる] 05/01 23:10<-last

Pass 保存


CGIROOM