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

好感度アップダウンの矢印を追加しよう

すみません、忙殺中につき、改造方法のみですが、ご了承下さいませ。
また、特定の方のスクリプトをベースに説明していますので、
改造具合により、若干違う部分があります。
そのような場合は、お手数ですが、サポートBBSまでお問い合わせ下さいませ。

まず、この改造には、
「ユーザーデータの改造」が必要です。
まず、ユーザーデータの改造を施してください。



次に、前回の好感度を記録しておく場所を確保します。
空いているダミーを1つ使います。
例として、ダミー01を使いますね。

全ての $dummy01 を $lastlove に書き換える(6ヶ所or4ヶ所)
全ての $newdummy01 を $newlastlove に書き換える(2ヶ所)



次に、前回の好感度を保存する処理です。
「アクション」の下記のところに、追記します。
# ------------------------- #
# Sub Action
# アクション
# ------------------------- #
sub action {
    $playmsg = "$playtime時間" if $playtime != 0;
    $playmsg = "$playminute分" if $playtime == 0;

    &checkname;
    &error("まだ$playmsg経過していません") if $enter == 1;

    &header;
    &title;
    &bodytop("ペットデータ($num代目)");
    &petdata;
    srand(time);
    $rnd = int(rand(100) + 1); # Amend Ver 2.2
    $fa = $FORM{'mode'};

    $lastlove = $love;

    if ($fa eq 'play') { $lastplay = time; $playname = $name; }
#    if ($fa eq 'out')  { $out = 1; $outdate = time; $outname = $name; }    # コメントにします。



次に、ランキング表示で矢印を表示させるところと、
矢印を向きを決めるサブルーチンです。
「飼い主ランキング」の下記のところに、追記します。
# ------------------------- #
# Sub Owner List
# 飼い主ランキング
# ------------------------- #
sub ownerlist {
    &header;
    &title;
    $bestlove = $lovenum = $lovenum_k = $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" } }
     else {
        foreach $owner (@lovelist) {
            ($love,$name,$lastlove) = split(/<>/,$owner);    # ←プレイヤーの明示をしている人はここ注意!
            &lastlovecheck;
            print "$displove$nameさん…$loveポイント<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"; } }
    else {
        foreach $owner (@lovelist_k) {
            ($love,$name,$lastlove) = split(/<>/,$owner);    # ←プレイヤーの明示をしている人はここ注意!
            &lastlovecheck;
            print "$displove$nameさん…$loveポイント<br>\n";
        }
    }

    print "<br>\n";

    print "$font2それ以外の人</font><br>";
    if ($othernum == 0) { print "いません<br>" }
#   else { foreach $owner (@otherlist) { print "$ownerさん<br>\n" } }
    else {
        foreach $owner (@otherlist) {
            ($love,$name,$lastlove) = split(/<>/,$owner);    # ←プレイヤーの明示をしている人はここ注意!
            &lastlovecheck;
            print "$displove$nameさん…$loveポイント<br>\n";
        }
    }
    print "<br>\n";
    
    print "$font2$petnameが嫌いな人は</font><br>";
    if ($hatenum == 0) { print "いません<br>";}
#   else { foreach $owner (@hatelist)  { print "$ownerさん<br>\n" } }
    else {
        foreach $owner (@hatelist) {
            ($love,$name,$lastlove) = split(/<>/,$owner);    # ←プレイヤーの明示をしている人はここ注意!
            &lastlovecheck;
            print "$displove$nameさん…$loveポイント<br>\n";
        }
    }

    &tablebottom;
    &bodybottom;
    &footer;
}

# ------------------------- #
# Sub Last Love Check
# 前回の好感度と比較
# ------------------------- #
sub lastlovecheck {
    if ($love > $lastlove) {
        $displove = "<FONT color=pink><SMALL><B>↑</B></SMALL></FONT>";
    }
    elsif ($love < $lastlove) {
        $displove = "<FONT color=black><SMALL><B>↓</B></SMALL></FONT>";
    }
    else {
        $displove = "<FONT color=AQUA><SMALL><B>→</B></SMALL></FONT>";
    }
}
↑ 矢印の色は、画面に合わせて変えてくださいね。



最後に、「ユーザーデータの読みこみ」の下記のところに、追記します。

# ------------------------- #
# Sub Open In User Data
# ユーザーデータの読みこみ
# ------------------------- #
sub openinuserdata {
    if ($lockkey == 1) { &lock }
    open(IN,"$userdata") || &error("Can't open $userdata");
    @lines = <IN>;
    close(IN);
    &unlock;

    foreach $line (@lines) {
        ($name,$pass,$gdate,$love,〜ユーザーデータの改造で増えています) = split(/<>/,$line);
        if ($_[0] eq 'checkname') {
            if ($FORM{'name'} eq $name) {
                $flag = 1; # データの中にユーザーを確認
                if ($FORM{'pass'} ne $pass) { &error("パスワードが間違っています") }
                last;
            }
        }
        if ($_[0] eq 'action') {
            if ($FORM{'name'} eq $name) {
                $gdate = time;
                push(@new,"$FORM{'name'}<>$FORM{'pass'}<>$gdate<>$newlove<>〜ユーザーデータの改造で増えています\n");
            } else {
                if ($gdate >= $goodbye) { push(@new,$line) }
            }
        }
        if ($_[0] eq 'ownerlist') {
            if ($love >= $loved) {
                @lovelist[$lovenum] = "$love<>$name<>$lastlove";
                $lovenum++;
                if ($bestlove < $love)
                    { $bestowner = "$name"; $bestlove = $love }
            } elsif ($love >= $loved_k) {
                @lovelist_k[$lovenum_k] = "$love<>$name<>$lastlove";
                $lovenum_k++;
            } elsif ($love >= $disliked) {
                @otherlist[$othernum] = "$love<>$name<>$lastlove";
                $othernum++;
            } else {
                @hatelist[$hatenum] = "$love<>$name<>$lastlove";
                $hatenum++;
            }
        }
    }

    if ($_[0] eq 'checkname') {
        $toppoint = 0;
        foreach $line (@lines) {
            ($topname,$toppass,$topgdate,$toplove,$topother) = split(/<>/,$line);
            if ($toppoint < $toplove) { $toppoint = $toplove; }
        }
        if ($flag == 0) { $love = 0; }
        $toplove = $toppoint - $love;
        $loveup = int($toplove / 4) + 1;        # トップとの差の半分をアップする
        if ($toplove > 10)   { $lovedown = 1; } # 差が10より大きい場合はマイナス1
        elsif ($toplove > 3) { $lovedown = 2; } # 差が3より大きい場合はマイナス2
        else                 { $lovedown = 3; } # 差が3以内の場合は、マイナス3
    }

}

これで、矢印が出ると思います(^-^)