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

かなた様専用:クリア【簡易版】+クリアした人は別表示

まず、その前に、1回きりのイベント→キャラ一致ですが、
かたなさんのプログラムでも、特に問題はありませんでした。
エラーが出ていたのは、別の場所でした。

下記の所を修正してください。
キャラ一致の改造をしてあるスクリプトの・・・、

947行目
rnd_img2       = 'keikai2.gif'; # その時の画像
を、
$rnd_img2       = 'keikai2.gif'; # その時の画像


1041行目
    if ($rnd <= $rnd_border) {
を、
    elsif ($rnd <= $rnd_border) {

キャラ一致のプログラムは、そのままでもイイですし、
改造ページのように直してしまっても、どちらでもOKです。


ではでは、本編へ入りましょう。
まず、ゲームのクリア【簡易版】の改造を施してください。
送っていただいたスクリプト、改造してありませんでした(^^;

次に、クリアした人を別の項目で表示できるようにします。
クリアの条件は、サンプルと同じく好感度が50以上の人とします。

飼い主ランキングと飼い主個人情報に下記のように追記します。

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

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

    print "$font2$petnameが一番なついている人は</font><br>";
    if ($bestlove < $loved) { print "いません<br>\n";}
#    else { print "$bestownerさんです<br>\n"; }
    else {
        if ($ownername eq $bestowner) {
            print "<FONT color=white><B>$bestowner</B></FONT>さんです<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) = split(/<>/,$owner);
            if ($name eq $ownername) {
                print "<FONT color=white><B>$name</B></FONT>さん<br>\n";
            }
            else {
                print "$nameさん<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) = split(/<>/,$owner);
            if ($name eq $ownername) {
                print "<FONT color=white><B>$name</B></FONT>さん<br>\n";
            }
            else {
                print "$nameさん<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) = split(/<>/,$owner);
            if ($name eq $ownername) {
                print "<FONT color=white><B>$name</B></FONT>さん<br>\n";
            }
            else {
                print "$nameさん<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) = split(/<>/,$owner);
            if ($name eq $ownername) {
                print "<FONT color=white><B>$name</B></FONT>さん<br>\n";
            }
            else {
                print "$nameさん<br>\n";
            }
        }
    }
    
    print "<br>\n";
    print "$font2クリアした人は</font><br>";
    if ($clearnum == 0) { print "いません<br>";}
    else {
        foreach $owner (@clearlist) {
            ($love,$name) = split(/<>/,$owner);
            if ($name eq $ownername) {
                print "<FONT color=white><B>$name</B></FONT>さん<br>\n";
            }
            else {
                print "$nameさん<br>\n";
            }
        }
    }

    &tablebottom;
    &bodybottom;
    &footer;
}

# ------------------------- #
# Sub Owner Disp
# 飼い主個人情報
# ------------------------- #
sub ownerdisp {
    &header;
    &title;
    $bestlove = $lovenum = $lovenum_k = $othernum = $hatenum = $clearnum = 0;
    &openinuserdata('ownerlist');
    
    &bodytop('飼い主個人情報');
    &tabletop;

    if ($bestowner eq $ownername) {
        $ownerrank = '一番なついてる人';
    }
    
    print "$ownernameさん<br>";
    print "$ownerrank<br>";
    print "$ownerloveポイント<br>";

    if ($ownercnt != 0) {
$allnum = $lovenum + $hatenum + $othernum;
    print "あなたの順位は$allnum人中 第$ownercnt位です。<br>";
    }

   &tablebottom;
   &bodybottom;
   &footer;
}

ランキング表示の一番下に、クリアした人の項目を作りました。
また、個人表示の時に、クリアしている人は順位を表示しない+順位に含めないようにしています。

では次にクリアした人を分ける所を改造しましょう。
ユーザーデータの読みこみ(sub openinuserdata)に下記のように追記して下さい。

        if ($_[0] eq 'action') {
            if ($FORM{'name'} eq $name) {
                $gdate = time;
                push(@new,"$FORM{'name'}<>$FORM{'pass'}<>$gdate<>$newlove<>$newvisitcnt<>$newevent01<>$newevent02<>$newdummy04<>$newdummy05<>\n");
            } else {
                if ($gdate >= $goodbye) { push(@new,$line); }
            }
        }
        if ($_[0] eq 'ownerlist') {
            if ($love >= 50) {
                @clearlist[$clearnum] = "$love<>$name";
                $clearnum++;
                if ($FORM{'name'} eq $name) {
                    $ownername = $name;
                    $ownerrank = 'クリアしました';
                    $ownerlove = $love;
                }
            }

            elsif ($love >= $loved) {
                @lovelist[$lovenum] = "$love<>$name";
                $lovenum++;
            if ($FORM{'name'} eq $name) {
                $ownername = $name;
                $ownerrank = 'なついている人';
                    $ownerlove = $love;
                
            }

                
                if ($bestlove < $love)
                    { $bestowner = "$name"; $bestlove = $love; }
                
                } elsif ($love >= $loved_k) {
                    @lovelist_k[$lovenum_k] = "$love<>$name";
                    $lovenum_k++;
                if ($FORM{'name'} eq $name) {
                $ownername = $name;
                $ownerrank = '気になるヒト';
                    $ownerlove = $love;
                
            }

                } elsif ($love >= $disliked) {
                    @otherlist[$othernum] = "$love<>$name";
                    $othernum++;
                if ($FORM{'name'} eq $name) {
                $ownername = $name;
                $ownerrank = 'どっちでもないヒト';
                    $ownerlove = $love;
                
            }
                    
                } else { 
                    @hatelist[$hatenum] = "$love<>$name";
                    $hatenum++;
                     if ($FORM{'name'} eq $name) {
                $ownername = $name;
                $ownerrank = '嫌いなヒト';
                    $ownerlove = $love;
                
            }
                    
             }
        }
    }

#
    if ($_[0] eq 'ownerlist') {
        &user_sort_r(@lovelist);
        @lovelist = @newtxt;

        &user_sort_r(@loved_klist);
        @loved_klist = @newtxt;

        &user_sort_r(@hatelist);
        @hatelist = @newtxt;

        &user_sort_r(@otherlist);
        @otherlist = @newtxt;


        @alllist = @lovelist;
        push(@alllist,@otherlist,@hatelist);

        $ownercnt = 1;
        $chkflg = 0;
        foreach $allcnt (@alllist) {
            ($love,$name) = split(/<>/,$allcnt);
            if ($FORM{'name'} eq $name) {
                $chkflg = 1;
                last;
            }
            $ownercnt++;
        }
        if ($chkflg == 0) { $ownercnt = 0;}

    }
#
}

クリアした人は配列clearlistに保存されます。
これは、順位などの計算には含めないようにします。