#!/usr/bin/perl # # Super Slots # # "Super Slots" 3 reel slot machine, version 2.3 # (c) Don Dion, Feb 02 2004 # # email: Don.Dion@cox.net # Last modified: 2.13.2004 require 'domain.pl'; print "Content-Type: text/html\n\n"; $remote_addr = $ENV{'REMOTE_ADDR'}; &convert_ip; $var_score = "%score%"; $var_win = "%win%"; $var_counter = "%counter%"; $var_reel_1_1 = "%reel11%"; $var_reel_2_1 = "%reel21%"; $var_reel_3_1 = "%reel31%"; $var_reel_1_2 = "%reel12%"; $var_reel_2_2 = "%reel22%"; $var_reel_3_2 = "%reel32%"; $var_domain = "%domain%"; $dash = "-"; if($ENV{'REQUEST_METHOD'} eq 'GET'){ $oper = $ENV{'QUERY_STRING'}; } elsif($ENV{'REQUEST_METHOD'} eq 'POST'){ read(STDIN, $oper, $ENV{'CONTENT_LENGTH'}); } $operation = substr($oper,0,3); if ($operation eq ""){ &serve_frame; } if ($operation eq "min"){ &get_data_min; } if ($operation eq "max"){ &get_data_max; } if ($operation eq "new"){ &new_game; } if ($operation eq "rst"){ &serve_frame_rst; } if ($operation eq "nsd"){ &serve_frame_nsd; } &serve_html; #=================================================================== sub check_db{ open (SCORE,"< db/$number"); @data = ; close(SCORE); ($string) = (@data); ($score,$reels) = split(/-/,$string); $reels = substr($reels,0,3); ($reel_1_1,$reel_2_1,$reel_3_1) = split(//,$reels); if ($score > 99999999){ $score = 100; } } #=================================================================== sub check_counter{ open (COUNTER,"< db/counter"); ($counter) = ; close(COUNTER); if ($counter > 999999999){ $counter = 0; } } #=================================================================== sub get_data_min{ &check_db; $score = $score - 1; if ($score < 0){ $score = 0; } &check_counter; &inc_counter; $mult = 1; &check_reels; &save_data; if ($win eq "win"){ $TEMP = "slots_3"; &random; &save_data; return; } &random; if ($score == 0){ $TEMP = "slots_1"; } else{ $TEMP = "slots_2"; } &save_data; } #=================================================================== sub get_data_max{ &check_db; $score = $score - 5; if ($score < 0){ &get_data_min; return; } &check_counter; &inc_counter; $mult = 3; &check_reels; if ($win eq "win"){ $TEMP = "slots_3"; &random; &save_data; return; } &random; if ($score == 0){ $TEMP = "slots_1"; } else{ $TEMP = "slots_2"; } &save_data; } #=================================================================== sub convert_ip{ for ($digit = 0; $digit < 15; $digit++){ $num = substr($remote_addr,$digit,1); if ($num ne "."){ $number = "$number$num"; } } } #=================================================================== sub inc_counter{ open (COUNTER,"> db/counter"); $counter++; print COUNTER "$counter"; close (COUNTER); } #=================================================================== sub check_reels{ $score_old = $score; @reels = split(/1/,$reels); $temp = join('',@reels); $answer = length($temp); $answer = 3 - $answer; if ($answer eq "1"){ $score = $score + (2 * $mult); $win = "win"; } if ($answer eq "2"){ $score = $score + (5 * $mult); $win = "win"; } if ($reels eq "111"){ $win = "win"; $score = $score + (15 * $mult); } if ($reels eq "222"){ $win = "win"; $score = $score + (50 * $mult); } if ($reels eq "666"){ $win = "win"; $score = $score + (20 * $mult); } if ($reels eq "777"){ $win = "win"; $score = $score + (30 * $mult); } if ($reels eq "888"){ $win = "win"; $score = $score + (10 * $mult); } if ($reels eq "333"){ $win = "win"; $score = $score + (15 * $mult); } if ($reels eq "555"){ $win = "win"; $score = $score + (80 * $mult); } if ($reels eq "444"){ $win = "win"; $score = $score + (400 * $mult); } if ($sub_rand eq "yes"){ return; } $payout = $score - $score_old; } #=================================================================== sub random{ $sub_rand = "yes"; $swin = $win; $win = "1"; $lower = 1; $upper = 8; $random_1 = int(rand( $upper-$lower+1 ) ) + $lower; $random_2 = int(rand( $upper-$lower+1 ) ) + $lower; $random_3 = int(rand( $upper-$lower+1 ) ) + $lower; $reels = "$random_1$random_2$random_3"; &check_reels; $score = $score_old; if ($win eq "1" && $random_2 ne "2" && $random_2 ne "4" && $random_2 ne "5" ){ $odds = int(rand( $upper-$lower+1 ) ) + $lower; if ($odds == 4){ $random_1 = "$random_2"; $random_3 = "$random_2"; } } $reels = "$random_1$random_2$random_3"; ($reel_1_2,$reel_2_2,$reel_3_2) = split(//,$reels); $win = $swin; } #=================================================================== sub save_data{ if ($score > 99999999){ $TEMP = "slots_4"; } open (SCORE,"> db/$number"); print SCORE $score,$dash,$reel_1_2,$reel_2_2,$reel_3_2; close(SCORE); } #=================================================================== sub serve_html{ open (TEMP,$TEMP); @html = ; close(TEMP); foreach $data (@html){ chop($data); @temp = split(/$var_domain/,$data); $data = join($domain,@temp); @temp = split(/$var_score/,$data); $data = join($score,@temp); @temp = split(/$var_win/,$data); $data = join($payout,@temp); @temp = split(/$var_counter/,$data); $data = join($counter,@temp); @temp = split(/$var_reel_1_1/,$data); $data = join($reel_1_1,@temp); @temp = split(/$var_reel_2_1/,$data); $data = join($reel_2_1,@temp); @temp = split(/$var_reel_3_1/,$data); $data = join($reel_3_1,@temp); @temp = split(/$var_reel_1_2/,$data); $data = join($reel_1_2,@temp); @temp = split(/$var_reel_2_2/,$data); $data = join($reel_2_2,@temp); @temp = split(/$var_reel_3_2/,$data); $data = join($reel_3_2,@temp); print "$data\n"; } } #=================================================================== sub new_game{ &check_counter; &check_db; if ($score eq "" || $score eq "0"){ $reel_1_1 = 1; $reel_2_1 = 2; $reel_3_1 = 3; $score = 100; } $TEMP = "slots_2"; &random; &save_data; } #=================================================================== sub serve_frame{ open (TEMP,"frame"); @html = ; close(TEMP); foreach $data (@html){ chop($data); @temp = split(/$var_domain/,$data); $data = join($domain,@temp); print "$data\n"; } } #=================================================================== sub serve_frame_rst{ $reel_1_2 = 1; $reel_2_2 = 2; $reel_3_2 = 3; $score = 100; &save_data; open (TEMP,"frame"); @html = ; close(TEMP); foreach $data (@html){ chop($data); @temp = split(/$var_domain/,$data); $data = join($domain,@temp); print "$data\n"; } } #=================================================================== sub serve_frame_nsd{ open (TEMP,"frame_nsd"); @html = ; close(TEMP); foreach $data (@html){ chop($data); @temp = split(/$var_domain/,$data); $data = join($domain,@temp); print "$data\n"; } } #===================================================================