▼特徴・機能の説明
Missing Linkで配布されている「People」というゲームに、ランキング機能をつけるCGIです。
ただし、配布しているのはランキング表示用のスクリプトですので、people.cgi本体に少し改造が必要になります。
▼サンプル・ダウンロード
▼設定
■ ランキングを記録する部分の改造(people.cgi)
people.cgiに
# Sub Dead Check #
sub dead_check {
・・・・(中略)・・・
}
という部分があると思いますので、
# Sub Dead Check #
sub dead_check {
# -----ランキング記録用の設定項目-------------------------------
# People本体のバージョンは?(←重要!!)
# ver1.7以上→0 ver1.6以前→1
$usever = 0;
# ランキングファイル(http://〜の指定は不可。パーミッションは666にする)
$rankfile = "./rank.dat";
# 何歳以上まで生きたらランキングに記録する?
#(一見さんは登録したくない時に使用。0にすると全員記録します)
$rank_age = 25;
# -------------------------------------------------------------
$addflag = 0;
&get_all_users;
$number = $def_oa - $def_ya + 1; # 最高年齢から最低年齢を引く
foreach (@alllines) {
$dead = $count = 0; undef $dice;
($aid,$anm,$aps,$aag,$abl,$at1) = (split(/<>/))[0,1,2,9,14,31];
next if &get_crypt($adps,$aps);
srand($$ | time - $aag);
next if $id eq $aid;
local($age) = &get_age($aag);
local($chr) = &get_age($at1);
$dice = int(rand($number)) + $age;
if ($chr >= $def_dd) { $dead = 1 } # 励ます期限超過
elsif ($age > $def_oa) { $dead = 2 } # 最高死亡年齢以上
elsif ($age < $def_ya) { next } # 最低死亡年齢未満
elsif ($dice > $def_oa) { $dead = 2 } # ランダムで寿命を設定
if ($dead) {
$count = split(/△/,$abl);
&add_news("$anmが死亡しました。弔問客=$count人") if $dead == 1;
&add_news("$anmが天寿を全うしました。弔問客=$count人") if $dead == 2;
# ランキングデータ取得
@rank = (split(/<>/))[0,1,2,3,4,5,9,10,14,15,16,17,35];
$rank[6] = &get_age($rank[6]); # 年齢取得
$rank[8] = split(/△/,$rank[8]); # 友人の数を取得
$rank[9] = split(/,/,$rank[9]); # 子供の数を取得
$rank[13] = $rank[7] + $rank[12]; # 総財産=所持金+財産(買った物)
$time = time; # 記録日を取得
if(!$rank_age || $rank_age < $rank[6]){
$rankdata = "";
foreach(@rank){
$rankdata .= "$_<>";
}
unshift(@temp,"$rankdata$time<>\n");
$addflag = 1;
}
if(!$usever){ unlink("$usrdir/$aid\.cgi"); }
else { unlink("$usrdir/$aid\.dat"); }
}
}
# ランキング記録
if($addflag){
open (IN,"$rankfile");
while(<IN>){
push(@temp,$_);
}
close (IN);
open (OUT,">$rankfile");
print OUT (@temp);
close (OUT);
}
$elsline = join(',',$day,$month);
&write_dat("$elsdat",$elsline);
}
上記のように変更します。
赤字が変更部分ですが、全体をそのままコピー&ペーストでも問題ないと思います。
mppl.cgiを利用している方は、同様に変更します。
設定項目については、1つ目の「$usever」を確認してください。
バージョン指定が違うと、死亡した住人のデータが削除されないという不具合が発生します。
■ ランキングへのリンクを表示する部分の改造
これは好みの位置があると思いますが、
当サイトのPeople
と同じ位置にリンクを表示するのであれば、people.cgiの「sub new_regist_button」というサブルーチンを
以下のように変更してください。
# Sub New Regist Button #
sub new_regist_button {
print qq|<a href=$cgiurl?mode=new_regist>新規登録</a><br>\n|;
print qq|<br><a href="show.cgi" target="_blank">ランキング</a><br><br>\n|;
}
■ ランキング閲覧用CGIの設置
ダウンロードしたファイルを解凍し、中身をpeople.cgiがあるフォルダと
同じ場所にアップロードします。そして、パーミッションを次のように設定してください。
[CGIが使えるフォルダ]
├ people (フォルダ) [755] … スクリプト全体を格納するフォルダ
│ ├ people.cgi等 …オリジナルのpeopleに含まれていたファイル
│ │
│ ├ show.cgi [755] … ランキングを閲覧するためのCGIファイル
│ ├ rank.dat [666] … ランキングを保存しているデータファイル
│ └ style.css [644] … デザイン設定するスタイルシート
│
└ (他のCGIやHTML)
特にミスがなければ、show.cgiにアクセスすることでランキングが閲覧できると思います。
▼更新履歴
■2005年 | |
ver 1.01 (5/24) | ・ランキング表示の際、「名前」と「長寿王」で正しくソートされないバグを修正 |
■2004年 | |
ver 1.00 (12/20) | ・公開開始 |
▼その他