# ########################設定はここから############################ # このCGIの名前 $cgiurl = './pet.cgi'; # jcodeパールのパス require './jcode.pl'; # データファイル名 $userdata = './user.dat'; # 来客者情報が入ってるデータ $petdata = './pet.dat'; # ペットの情報が入ってるデータ #$lockkey = 1; # ファイルのロック(0=使用しない 1=使用する) #$lockfile = './pet.lock'; # ロックファイル名 $lockkey = 1; # ファイルのロック(0=no 1=mkdir 2=symlink) Amend Ver 2.2 $lockfile = './petlock'; # ロックファイル名 $method = 'POST'; # POSTかGETを選択 # イメージ画像が入ってるフォルダの相対パス # CGIと同じ場所にフォルダを置く場合は'./フォルダ名/'; 上の階層は'../フォルダ名/'; # swfファイルと角画像もこのフォルダの中に格納します $img = ''; |
# ↓ペットは時に予想もつかない行動を取ります。 #$rnd_border = 1; # 何割かの確率で違う(マイナス)アクションを起こさせます。(0.1〜3) $rnd_border = 5; # 何%かの確率で違う(マイナス)アクションを起こさせます。 $rnd_img = 'keikai.gif'; # その時の画像 $rnd_msg = '今日はいつもと違って様子が変です'; # その時のメッセージ |
# 終了時に画像を表示する(yes = 1,no = 0) $ending = 1; # 終了画像 $endimg = 'neteru.gif'; # 終了時のメッセージ $endmsg = 'お疲れ様でした'; # Ver2.2 追加分 $namefixed = ''; # ペットの名前を固定する(yes=名前を入力) $sexfixed = ''; # ペットの性別を固定する(yes='オス'か'メス'を入力) # ########################設定はここまで############################ # ここから先を変更する場合はご自分の責任において変更してください。 |
# ------------------------- #
# Sub Title Check
# タイトルチェック
# ------------------------- #
sub titlecheck {
if ($FORM{'mode'} eq "nopet") { $title = "$nopet" } # Add Ver 2.2
elsif ($FORM{'petname'} ne "") { $title = "$FORM{'petname'}$titlesub" } # Amend Ver 2.2
elsif ($petname ne "") { $title = "$petname$titlesub" }
else { $title = "$nopet" }
}
|
# 新規ユーザーを登録
if ($flag == 0) {
$gdate = time - $dayhour[$playtime + 1];
@new = @lines;
push(@new,"$FORM{'name'}<>$FORM{'pass'}<>$gdate<>0<>\n");
&openoutuserdata;
$love = 0; # Add Ver 2.2
}
|
# ゲストが何日ぶりの来訪かをチェックし、ラブ数を減らす
# $love-- if &checkday($gdate) > 1; # 簡単モード
$love = $love - &checkday($gdate);
|
&bar('','新しいペットの情報を登録してください');
print "<tr>\n";
print "<td>\n";
&tabletop;
print "名前:";
# &input('text','petname','',' maxlength="10"','');
# Amend Ver 2.2 #
if ($namefixed) { print "$namefixed\n"; &input('hidden','petname',$namefixed,'','') }
else { &input('text','petname','',' maxlength="10"','') }
# End Amend #
print "</td>\n";
print "</tr>\n";
print "<tr>\n";
print "<td>\n";
print "性別:";
# &input('radio','sex','0',' checked','オス');
# &input('radio','sex','1','','メス');
# Amend Ver 2.2 #
if ($sexfixed) { print "$sexfixed" }
else {
&input('radio','sex','0',' checked','オス');
&input('radio','sex','1','','メス');
}
# End Amend #
print "</td>\n";
print "</tr>\n";
|
# ------------------------- #
# Sub New Pet
# 新規ペット登場
# ------------------------- #
sub newpet {
$deadname = $petname;
$petname = $FORM{'petname'};
&error("不正があります") if time < $lastfeed + $daysec * $deadline; # Add Ver 2.2
if ($namefixed) { $petname = $namefixed; $deadname = '' } # Add Ver 2.2
if ($petname eq "") { &error("ペットに名前をつけてください") }
if ($petname eq $deadname && $samename == 0) { &error("前と同じ名前はつけられません") }
if ( $FORM{'sex'} == 1 ) { $sex = 'メス' } else { $sex = 'オス' }
$sex = $sexfixed if $sexfixed; # Add Ver 2.2
$godfather = $FORM{'name'};
$birth = time;
$dead = 0;
$lastfeed = time;
$lastplay = time;
$good = 0;
$bad = 0;
$out = 0;
$outdate = 0;
$num++;
&openoutpetdata;
$gdate = time - $dayhour[$playtime + 1];
@new = "$FORM{'name'}<>$FORM{'pass'}<>$gdate<>$loved<>\n";
&openoutuserdata;
&petform;
}
|
# ------------------------- #
# 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(10) + 1);
$rnd = int(rand(100) + 1); # Amend Ver 2.2
$fa = $FORM{'mode'};
|
# ------------------------- #
# Sub Error
# エラー
# ------------------------- #
sub error {
# &unlock;
$_[1] || &unlock; # Amend Ver 2.2
if ($headflag == 0) { &header }
print "<center><hr width='80%'><P>\n";
if ($FORM{'mode'} eq 'end' && $ending == 1) {
print "<center>\n";
# print "<img src=\"$img$endimg\">\n";
# print "</center>\n";
print "<img src=\"$img$endimg\"><br><br>\n"; # Amend Ver2.2
print "<a href=$backurl target=\"$backtarget\">$backword</a></center>\n"; # Amend Ver2.2
}
print "<P>$font2<B>$_[0]</B></font>\n";
print "<P><hr width='80%'></center>\n";
&footer;
exit;
}
|
# ------------------------- #
# Sub Lock
# ロック
# Amend for Ver 2.2
# ------------------------- #
sub lock {
# local($flag) = 0;
# foreach (1 .. 5) {
# if (-e $lockfile) { sleep(1); }
# else {
# open(LOCK,">$lockfile");
# close(LOCK);
# $flag = 1;
# last;
# }
# }
# if ($flag == 0) { &error("現在、他の人が使用しています"); }
return if !$lockkey;
if ($lockkey == 1) {
local($flag) = 10;
rmdir($lockfile) if (time - (stat($lockfile))[9] > 60);
while (!mkdir($lockfile, 606)) {
--$flag or &error("現在、他の人が使用しています", 1);
select(undef, undef, undef, 1);
}
}
elsif ($lockkey == 2) {
unlink($lockfile) if (time - (stat($lockfile))[9] > 60);
while (!symlink(".", $lockfile)) {
if (--$retry <= 0) { &error('現在、他の人が使用しています') }
sleep(1);
}
}
}
# ------------------------- #
# Sub Unlock
# アンロック
# Amend for Ver 2.2
# ------------------------- #
sub unlock {
# if (-e $lockfile) { unlink($lockfile); }
if ($lockkey == 1) { rmdir($lockfile) }
elsif ($lockkey == 2) { unlink($lockfile) }
}
|