#!/usr/bin/perl -w # highscore.pl is used to display and update Top 3 high scores in different Shockwave # and Java games. This script is located at # (password protected). The output can be seen at . # Copyright 2002-2005 by Susanna Winter & Humppa.CS # Version history: # v0.1 - 2002: initial version # v0.1.1 - March 2005: updated page footer use strict; use CGI qw(:standard); use File::stat; use Time::localtime; my $filename = "highscore.pl"; ### sub's sub fix_day { my $fixed_day = $_[0]; if ($fixed_day < 10) { $fixed_day = "0" . $fixed_day; } return $fixed_day; } #end of fix_day sub fix_month { my $fixed_month = $_[0]; $fixed_month =~ s/Jan/01/; $fixed_month =~ s/Feb/02/; $fixed_month =~ s/Mar/03/; $fixed_month =~ s/Apr/04/; $fixed_month =~ s/May/05/; $fixed_month =~ s/Jun/06/; $fixed_month =~ s/Jul/07/; $fixed_month =~ s/Aug/08/; $fixed_month =~ s/Sep/09/; $fixed_month =~ s/Oct/10/; $fixed_month =~ s/Nov/11/; $fixed_month =~ s/Dec/12/; return $fixed_month; } #end of fix_month #print header(); print "Content-type:text/html\n\n"; print "\n\n"; print "\n\n\tHumppa dot CS - High score -listan päivitys\n\t"; print "\n\n\n"; print "\n\n"; print "\"Humppa.cs\"\n
\n\n
\n"; print "\"Etusivu\" \n\"Uutiset\" \n\"Humppaajat\" \n\"Matsit\" \n\"Muuta\" \n\"#humppa.cs\"\n
\n
\n\n"; if ( !(param()) ) { print "

High score -listan päivitys

\n
\n\n"; print "\n\n\t"; print "\n\n
\n\t\n\t\t\n\t\t\n\t\n\n\t"; print "\n\t\t\n\t\t\n\t\n\n\t"; print "\n\t\t\n\t\t\n\t\n\n\t"; print "\n\t\t\n\t\t\n\t\n\n\t
Peli:\n\t\t
Nick:
Pisteet:
Level:
\n\n\t"; print "\n\t\n\t\t\n\t\t\n\t\n\t"; print "
\n
\n\n"; } else { my $game = ""; if (param("game")) { $game = param("game"); } my $nick = "?"; if (param("nick")) { $nick = param("nick"); } my $points = "0"; if (param("points")) { $points = param("points"); } my $level = "0"; if (param("level")) { $level = param("level"); } if ($level eq "?") { $level = "0"; } my $gametitle = ""; if ($game eq "bounceout") { $gametitle = "Bounce Out!"; } elsif ($game eq "collapse") { $gametitle = "Collapse"; } elsif ($game eq "tetris") { $gametitle = "Tetris"; } elsif ($game eq "gemdrop") { $gametitle = "Gem Drop"; } elsif ($game eq "diamond") { $gametitle = "Diamond Mine
(bonus = level)"; } elsif ($game eq "alchemy") { $gametitle = "Alchemy
(vaikeustaso = level)"; } elsif ($game eq "bounce2") { $gametitle = "Bounce Out!
(exe, easy)"; } elsif ($game eq "nisqually") { $gametitle = "Nisqually"; } elsif ($game eq "zoo") { $gametitle = "Zookeeper"; } else { $gametitle = "?"; } my $color = ""; if ($game eq "bounceout") { $color = "gray"; } elsif ($game eq "collapse") { $color = "blue"; } elsif ($game eq "tetris") { $color = "gray"; } elsif ($game eq "gemdrop") { $color = "blue"; } elsif ($game eq "diamond") { $color = "gray"; } elsif ($game eq "alchemy") { $color = "blue"; } elsif ($game eq "bounce2") { $color = "gray"; } elsif ($game eq "nisqually") { $color = "blue"; } elsif ($game eq "zoo") { $color = "gray"; } else { $color = "none"; } $nick =~ s/ä/ä\;/g; $nick =~ s/ö/ö\;/g; $nick =~ s/å/å\;/g; # read the score file for the right game my @top3; if ($game ne "") { if (-e "$game.txt") { open(INF, "$game.txt") or print "

Tiedostoa $game.txt ei voitu avata.

\n"; @top3 = ; close(INF); } else { print "

Tiedostoa $game.txt ei löytynyt.

\n"; } } else { print "

Valitse päivitettävä peli. Yritä uudelleen.

"; } my ($list_rank1, $list_nick1, $list_points1, $list_level1); my ($list_rank2, $list_nick2, $list_points2, $list_level2); my ($list_rank3, $list_nick3, $list_points3, $list_level3); if (scalar(@top3) != 0) { foreach my $line (@top3) { chomp($line); } ($list_rank1, $list_nick1, $list_points1, $list_level1) = split(/\t/, $top3[0]); ($list_rank2, $list_nick2, $list_points2, $list_level2) = split(/\t/, $top3[1]); ($list_rank3, $list_nick3, $list_points3, $list_level3) = split(/\t/, $top3[2]); if ( ($points > $list_points1) || ( ($points == $list_points1) && ($level < $list_level1) && ($level != 0) && ($level ne "") ) ) { $list_nick3 = $list_nick2; $list_points3 = $list_points2; $list_level3 = $list_level2; $list_nick2 = $list_nick1; $list_points2 = $list_points1; $list_level2 = $list_level1; $list_nick1 = $nick; $list_points1 = $points; $list_level1 = $level; } elsif ( ($points > $list_points2) || ( ($points == $list_points2) && ($level < $list_level2) && ($level != 0) && ($level ne "") ) ) { $list_nick3 = $list_nick2; $list_points3 = $list_points2; $list_level3 = $list_level2; $list_nick2 = $nick; $list_points2 = $points; $list_level2 = $level; } elsif ( ($points > $list_points3) || ( ($points == $list_points3) && ($level < $list_level3) && ($level != 0) && ($level ne "") ) ) { $list_nick3 = $nick; $list_points3 = $points; $list_level3 = $level; } } else { } if ($game ne "") { # print the top 3 list to a txt file open(OUTF, ">$game.txt") or print "

Tiedostoa $game.txt ei voitu avata.

\n"; flock(OUTF, 2); print OUTF "$list_rank1\t$list_nick1\t$list_points1\t$list_level1\n"; print OUTF "$list_rank2\t$list_nick2\t$list_points2\t$list_level2\n"; print OUTF "$list_rank3\t$list_nick3\t$list_points3\t$list_level3\n"; flock(OUTF, 8); close(OUTF); # print the top 3 list in html format open(OUTF, ">$game.table.txt") or print "

Tiedostoa $game.table.txt ei voitu avata.

\n"; flock(OUTF, 2); print OUTF "\n\t$gametitle\n\t"; print OUTF "$list_rank1\n\t$list_nick1\n\t$list_points1\n\t$list_level1 lvl\n\n"; print OUTF"\n\t$list_rank2\n\t$list_nick2\n\t$list_points2\n\t$list_level2 lvl\n\n"; print OUTF "\n\t$list_rank3\n\t$list_nick3\n\t$list_points3\n\t$list_level3 lvl\n\n"; flock(OUTF, 8); close(OUTF); print "

Uusi high score -taulu

\n\n"; print "\n\n\t"; print "\n\t\n\t\n\t\n\t\n\n"; print "\n\t\n\t"; print "\n\t\n\t\n\t\n\n"; print "\n\t\n\t\n\t\n\t\n\n"; print "\n\t\n\t\n\t\n\t\n\n"; print "
 #NickPisteetLevel
$gametitle$list_rank1$list_nick1$list_points1$list_level1 lvl
$list_rank2$list_nick2$list_points2$list_level2 lvl
$list_rank3$list_nick3$list_points3$list_level3 lvl
\n\n"; print "

[Päivitä listaa uudelleen | Takaisin matseihin]

\n\n"; } } # print the rest of the page print "
\n"; my $last_modified = (ctime(stat($filename)->mtime)); my ($day_of_week, $month, $day, $time, $year) = split(" ", $last_modified, 5); print "$filename viimeksi päivitetty: " . fix_day($day) . "." . fix_month($month) . ".$year.
© 2002-$year by Susanna Winter & Humppa.CS.
\n\n\n\n";