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

「飼い主ランキング」を下のバーに移動しよう

コマンド、というわけではないのですが、コマンドと同じところにある「飼い主ランキング」。
チェックボックスをチェックして、「OK」を押すので、
なんだか、1回行動してしまうような感じがしたり、チョット面倒くさかったり・・・。
「遊ぼー。」では、[終了]が表示されるところと同じ、下のバーに移設しております。

他のコマンドとは役割が違うので、別にした方が分かりやすいですし、
コマンド表示部もスッキリ(?)します。

実はこれ、おいらがPETROOMに施した、一番最初の改造でもあります(^^;


では、さっそく改造に取り掛かりましょう。
まずは、チェックボックスの「飼い主ランキング」を削除しましょう。
ペットフォーム(sub petform)の下記の部分をコメントにしましょう。
ついでに、頭も揃えます。
必要ない方は、飼い主ランキングの先頭に#を追加するだけでOKです。

    if ($noaction == 0 && $enter != 1) {
        print "<tr>\n";
        print "<td>\n";
#       &tabletop;
        print "<table width=\"100%\" border=\"0\" cellspacing=\"$f_space\" cellpadding=\"0\">\n";
        print "<tr>\n";
        print "<td valign=top>\n";
        &input('radio','mode','feed',' checked','餌をあげる<br>');
        &input('radio','mode','pat','','なでる<br>');
        &input('radio','mode','out','','外に出す');
        print "</td>\n";
        print "<td valign=top>\n";
        &input('radio','mode','play','','遊ぶ<br>');
        &input('radio','mode','hit','','しかる<br>');
#       &input('radio','mode','owner','','飼い主ランキング');
        print "</td>\n";
        print "</tr>\n";

次に、チェックボックスから無くなってしまった「飼い主ランキング」を、
下のバーに表示させたいのですが、ここでコマンドを選んだあとの画面を、
思い出してみて下さい・・・下のバーに「飼い主ランキング」のリンクがありますよね?
そうなんです、実は最初から用意されているのです!

プログラムの中で「飼い主ランキング」という単語を検索してみると・・・、
アクション(sub action)の一番下の方にありました。

    $goodbye = time - (60 * 60 * 24 * $goodbye);
    $newlove = $love;
    &openinuserdata('action');
    &openoutuserdata;
    $actionflag = 1; # 飼い主ランキングのリンクを表示
    &bodybottom;
    &footer;

これから分かるように、「飼い主ランキング」のリンクを表示したいときは、
$actionflag1にすればよいのです。

というわけで再び、最初に直したペットフォーム(sub petform)の、
一番下の方を見て下さい。
そうなんです、$actionflag1にしているところが、ここにもあるのです。

        print "<tr>\n";
        print "<td colspan=\"2\">\n"; 
        print "<div align=\"right\">\n";
        &input('hidden','name',$FORM{'name'},'','');
        &input('hidden','pass',$FORM{'pass'},'','');
        &input('hidden','good',"$scheduledsr[$timeafter]$plusfeed",'','');
        &input('hidden','bad',"$schedulednt[$timeafter]$minusfeed",'','');
        &input('submit','','OK!','','<br>');
        print "</div>\n";
        &tablebottom;
    } else { $actionflag = 1; } # ←ここですね!
    &bodybottom;
    &openoutpetdata;
    &footer;
}

elseが付いていますが、ここでの分岐は、
前回遊びに来たときから、設定した間隔(デフォは1時間)が経過しているかいないかで別れます。
$actionflag1にしているのは、経過していないとき、
つまり、コマンドの欄が表示されないときです。
なので、この条件式を外して、経過していてもいなくても、$actionflag1にすれば、
下のバーに「飼い主ランキング」が表示されるようになります。

では、ペットフォーム(sub petform)の下の方をこんなふうに改造してみましょう。

        print "<tr>\n";
        print "<td colspan=\"2\">\n"; 
        print "<div align=\"right\">\n";
        &input('hidden','name',$FORM{'name'},'','');
        &input('hidden','pass',$FORM{'pass'},'','');
        &input('hidden','good',"$scheduledsr[$timeafter]$plusfeed",'','');
        &input('hidden','bad',"$schedulednt[$timeafter]$minusfeed",'','');
        &input('submit','','OK!','','<br>');
        print "</div>\n";
        &tablebottom;
#   } else { $actionflag = 1; }
    }
    $actionflag = 1;
    &bodybottom;
    &openoutpetdata;
    &footer;
}


これで、「飼い主ランキング」が下のバーに移動しました。

個人別表示のチェックボックスも同じように移動したい場合は、
一番最初にやった「飼い主ランキング」をコメントにするのと同じように、
「飼い主個人情報」もコメントにします。

        &input('radio','mode','play','','遊ぶ<br>');
        &input('radio','mode','hit','','しかる<br>');
#       &input('radio','mode','owner','','飼い主ランキング<br>');
#       &input('radio','mode','owner1','','飼い主個人情報');
        print "</td>\n";
        print "</tr>\n";

次にバーのところへ「飼い主個人情報」へのリンクを新たに作る必要がありますので、
ボディ下部(sub bodybottom)に下記のように追記して、
さらに、横に長くなってしまうので「飼い主ランキング」などを適当な言葉に変えます。

# ------------------------- #
# Sub Body Bottom
# ボディ下部
# ------------------------- #
sub bodybottom {
    print "</td>\n";
    print "</tr>\n";
    print "<tr>\n";
    print "<td>\n";
    print "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" bgcolor=\"$barcolor\">\n";
    print "<tr>\n";
    print "<td valign=\"bottom\"><img src=\"$img$lbimg\" width=\"$ris\" height=\"$ris\"></td>\n";
    print "<td><div align=\"center\">";
    print "<a href=\"$backurl\" target=\"$backtarget\">[$backword]</a>\n" if $printback == 1;
    print " <a href=\"$cgiurl?mode=owner&name=$FORM{'name'}&pass=$FORM{'pass'}\">[飼い主全体]</a>\n" if $actionflag == 1;
    print " <a href=\"$cgiurl?mode=owner1&name=$FORM{'name'}&pass=$FORM{'pass'}\">[飼い主個人]</a>\n" if $actionflag == 1;
    if ($FORM{'mode'} eq "owner" || $FORM{'mode'} eq "owner1") {
        print " <a href=\"$cgiurl?mode=back&name=$FORM{'name'}&pass=$FORM{'pass'}\">[戻る]</a>\n";
    }
    elsif ($FORM{'mode'} ne "end") {
        print " <a href=\"$cgiurl?mode=end\">[終了]</a>\n";
    }
    print "</div></td>";
    print "<td valign=\"bottom\"><div align=\"right\"><img src=\"$img$rbimg\" width=\"$ris\" height=\"$ris\"></div></td>\n";
    print "</tr>\n";
    print "</table>\n";
    print "</td>";
    print "</tr>\n";
    print "</form>\n";
    print "</table>\n";
    print "</div>\n";
}

これで、両方のリンクが下のバーに表示されると思います。
ランキング表示へ移動すると、「戻る」のリンクが一つだけ表示されます。