PETROOM大改造
【萌え萌えキャラクターズと遊ぼー。】

ランキング表示をもっと細かくしよう

PETROOMデフォルトのランキング表示には、

○○が一番なついている人は(好感度一番高)
○○がなついている人は(好感度高)
○○が嫌いな人は(好感度低)
それ以外の人(好感度中)

という4項目に分類されます。
このうち「一番なついている人」は、「なついている人」の中で、
もっとも好感度が高い人が表示されます。
ちなみにその人は「なついている人」の方にも表示されます。

おいらがなぜここを改造しようと思ったかというと、理由は二つ。

1.項目が好感度順ではない(嫌いな人とそれ以外の人を逆にしたい)
2.それ以外の人って言い方が・・・(^^; 好感度は上でも、ある意味「嫌いな人」よりも痛い感じ。

で、どうせいじるなら、もっと細かく分けてしまおうと思ったわけです。
ここでは、順番を並び替えて、項目を1つ増やすだけですが、
これを繰り返すだけで、簡単に項目をいくらでも増やせるはずです。
といっても、基準は好感度なので、限界がありますけどね(^^;

では、スクリプトの上の方から・・・。
ペットの設定の少し下あたりに、

$loved         = 7;  # ラブポイントを何点以上取るとペットになつかれているか。
$disliked      = 0;  # ラブポイントが何点以下だとペットに嫌われているか。

という2行があります。コメントの通りの役割を持っています。
(厳密に言うと、ちょっと違いますが・・・(^^;)
好感度(ラブポイント)が、
$laved以上なら、なついている人。
$dislikedより上で、$laved未満なら、それ以外の人。
$disliked以下なら、嫌いな人。

今回は、なついている人の次に「気になる人」を追加してみます。
まず、しきい値を決め、項目の境界線を作ります。

$loved         = 7;  # ラブポイントを何点以上取るとペットになつかれているか。
$loved_k       = 4;
$disliked      = 0;  # ラブポイントが何点以下だとペットに嫌われているか。

変数($○○)の名前は何でもいいですが、使われていないものじゃないとダメです。
そして厳密に言い直すと、好感度が
$laved以上なら、なついている人。
$loved_k以上、$loved未満なら、気になる人。
$disliked以上、$loved_k未満なら、それ以外の人。
$disliked未満なら、嫌いな人。

次にだいぶ下へ行って、飼い主ランキング(sub ownerlist)の4行目に、
気になる人用のカウンターを追加します。

$bestlove = $lovenum = $lovenum_k = $hatenum = $othernum = 0;

次に5行目で呼び出されている、ユーザーデータの読み込み(sub openinuserdata)へ行き、
27行目から始まるif文の中身を下記のように変更します。

        if ($_[0] eq 'ownerlist') {
            if ($love >= $loved) {
                @lovelist[$lovenum] = "$name";
                $lovenum++;
                if ($bestlove < $love)
                    { $bestowner = "$name"; $bestlove = $love; }
            } elsif ($love >= $loved_k) {
                @lovelist_k[$lovenum_k] = "$name";
                $lovenum_k++;
            } elsif ($love >= $disliked) {
                @otherlist[$othernum] = "$name";
                $othernum++;
            } else {
                @hatelist[$hatenum] = "$name";
                $hatenum++;
            }
        }

先程の、飼い主ランキング(sub ownerlist)に戻って、
下記のように変更します。

# ------------------------- #
# Sub Owner List
# 飼い主ランキング
# ------------------------- #
sub ownerlist {
    &header;
    &title;
    $bestlove = $lovenum = $hatenum = $othernum = 0;
    &openinuserdata('ownerlist');

    &bodytop('飼い主ランキング');
    &tabletop;

    print "$font2$petnameが一番なついている人は</font><br>";
    if ($bestlove < $loved) { print "いません<br>\n";}
    else { print "$bestownerさんです<br>\n"; }
    print "<br>\n";

    print "$font2$petnameがなついている人は</font><br>";
    if ($lovenum == 0) { print "いません<br>"; }
    else { foreach $owner (@lovelist)  { print "$ownerさん<br>\n"; } }
    print "<br>\n";

    print "$font2$petnameが気になる人は</font><br>";
    if ($lovenum_k == 0) { print "いません<br>";}
    else { foreach $owner (@lovelist_k)  { print "$ownerさん<br>\n"; } }
    print "<br>\n";

# ↓嫌いな人とそれ以外の人を入れ替える

    print "$font2それ以外の人</font><br>";
    if ($othernum == 0) { print "いません<br>"; }
    else { foreach $owner (@otherlist) { print "$ownerさん<br>\n"; } }
    print "<br>\n";

    print "$font2$petnameが嫌いな人は</font><br>";
    if ($hatenum == 0) { print "いません<br>";}
    else { foreach $owner (@hatelist)  { print "$ownerさん<br>\n"; } }

    &tablebottom;
    &bodybottom;
    &footer;
}

ランキング表示が、少し賑やかになりましたねっ。
ランキングの項目が、上から好感度が高い順になったので、
前より分かりやすいはずです・・・多分(^^;