CGI/Perl Guide | Learning Center | Forums | Advertise | Login
Site Search: in

  Main Index MAIN
INDEX
Search Posts SEARCH
POSTS
Who's Online WHO'S
ONLINE
Log in LOG
IN

Home: Perl Programming Help: Beginner:
Help with perl game please

 



rainbowwarrior
New User

Nov 16, 2012, 4:15 AM

Post #1 of 3 (1351 views)
Help with perl game please Can't Post

Hi,

I am having a problem with my small game, i want it when someone types !present in a channel on irc it gives them a present but when someone tries this, it keeps saying " stop hogging all the best pitches " and I am not sure how to fix this, please help and thank you, code is below :-


Code
#!/usr/bin/perl 
#
# Flashy's bloodsports. http://digdilem.org/ - "Because thems trouts ain't gonna catch themselves!"
# (Credit to the original Eggdrop TCL script by Nerfbendr)
#
# Adds silly !hunt, !fish and !trophy and !present public triggers
# Also !newmonth will clean out the trophy cupboard. (Only if you do it, or the nick in $owner_nick)
#
# Optional Configuration (Will work fine without changing these, but you can if you like)
my $owner_nick='rainbowwarrior'; # Your nick - you can only reset the scores remotely if you use this nick.
my $scale = 'kg'; # Say here whether you want to measure weights in lb or kg.
my $catch_percent=90; # How often you catch or shoot something.
my $trophy_cabinet = Xchat::get_info( 'xchatdir' ) . "\\trophies.txt"; # File to keep the trophies in.
# End user configuration
use strict;
Xchat::register( "rainbowwarrrior's Huntin' 'n Fishin' and present unwrapping", 'v.004', "Hunting", "" );
Xchat::hook_print('Channel Message', "hunting");
Xchat::hook_print('Your Message', "hunting");
Xchat::hook_print('Private Message', "hunting");
Xchat::hook_print('Private Message to Dialog', "hunting");
my $bigfish=0,my $fishman='Nobody',my $bighunt=0,my $huntman='Nobody',my $bigpresent=0,my $presenthunt='Nobody',my $present_unwrapper;
my $fishtype='Trout',my $fishplace='Pool';
my $hunttype='bear', my $huntplace='Bushes';
my $presenttype='present', my $presentplaces='xmas';
my $last_hunter;
my $last_fisher;
my $last_presenthunter;
my @hunts = ( "bear","gopher","rabbit","hunter","deer","fox","duck","moose","pokemon named Pikachu","park ranger","Yogi Bear","Boo Boo Bear","dog named Benji","cow","raccoon","koala bear","camper","channel lamer");
my @fish = ( "Salmon","Herring","Yellowfin Tuna","Pink Salmon","Chub","Barbel","Perch","Northern Pike","Brown Trout","Arctic Char","Roach","Brayling","Bleak","Cat Fish","Sun Fish","Old Tire","Rusty Tin Can","Genie Lamp","Love Message In A Bottle","Old Log","Rubber Boot","Dead Body","Loch Ness Monster","Old Fishing Lure","Piece of the Titanic","Chunk of Atlantis","Squid","Whale","Dolphin","Porpoise","Stingray","Submarine","Seal","Seahorse","Jellyfish","Starfish","Electric Eel","Great White Shark","Scuba Diver","X","Lag Monster","Virus","Soggy Pack of Smokes","Pile of Weed","Boat Anchor","Pair Of Floaties","Mermaid","Merman","Halibut","Tiddler","Sock","Trout");
my @presents = ( "a new car","cake","guitar","dvd","xbox360","playstation3","hairdryer","trampoline","dog","cat","electric shock game","a board game","a snake","tickets to a rock concert","a blowup doll","book");
my @huntplaces = ("in some bushes","in a hunting blind","in a hole","up in a tree","in a hiding place","out in the open","in the middle of a field","downtown","on a street corner","at the local mall");
my @fishplaces = ("Stream","Lake","River","Pond","Ocean","Bathtub","Kiddie's Swimming Pool","Toilet","Pile of Vomit","Pool of Urine","Kitchen Sink","Bathroom Sink","Mud Puddle","Pail of Water","Bowl of Jell-O (tm)","Wash Basin","Rain Barrel","Aquarium","SnowBank","WaterFall","Cup of Coffee","Glass of Milk");
my @presentplaces = ("in a cupboard","under a xmas tree","in the liverroom","up in a tree","in a hiding place","out in the open","upstairs","on a boat","on a street corner","at the local mall");



Xchat::print("Path=($trophy_cabinet");

if (open (DH,"<$trophy_cabinet>")) {
($bigfish,$fishman,$fishtype,$fishplace) = split(/\|/,<DH>);
chomp($fishplace);
($bighunt,$huntman,$hunttype,$huntplace) = split(/\|/,<DH>);
my ($bigpresent,$presenthunt,$presenttype,$present_unwrapper,$presentplaces) = split(/\|/,<DH>);
close (DH);
Xchat::print("Peered in the trophy cabinet: ($bigfish$scale $fishtype by $fishman) ($bighunt$scale $hunttype by $huntman) ($bigpresent$scale $presenttype by $present_unwrapper");
} else {
Xchat::print("\002Woo, looks like we've not gone hunting before. Let's make a trophy cabinet...");
save_trophy();
}

Xchat::print("\002Loaded Flash's Huntin' 'n Fishin'\002 (!hunt, !fish !present !trophy - Current records are $bigfish$scale and $bighunt$scale)");

sub hunting {
my @pubwords = split(/ /,$_[0][1]);
my $hunter = Xchat::strip_code($_[0][0]);
my $channel = Xchat::get_info('channel');
if (lc($pubwords[0]) eq '!hunt') {
if ($hunter eq $last_hunter) {
Xchat::command("say Stop hogging all the best pitches $hunter, let someone else try first!");
return Xchat::EAT_NONE;
} else {
$last_hunter = $hunter;
}
my $huntplace = @huntplaces[rand(scalar @huntplaces)];
my $hunt = @hunts[rand(scalar @hunts)];
my $weight = 1+int(rand($bighunt+10));
Xchat::command("msg $hunter You hide $huntplace and wait for something to wander by...");
Xchat::command("msg $hunter .");
Xchat::command("msg $hunter ..");
Xchat::command("msg $hunter ...");
Xchat::command("msg $hunter You think you hear something and fire wildly in that direction!");
if (rand(100)<$catch_percent) {
Xchat::command("msg $hunter Congratulations, $hunter! You just bagged yourself a $weight$scale $hunt!");
Xchat::command("msg $channel $hunter just bagged a $weight$scale $hunt.");
if ($weight > $bighunt) {
Xchat::command("msg $hunter Wow!!! That's a new record! Way to go, $hunter! Type !trophy to see it!");
Xchat::command("msg $channel Wow! That breaks the old record of a $bighunt$scale $hunttype! $hunter is amazing!");
$bighunt=$weight;
$huntman=$hunter;
$hunttype=$hunt;
save_trophy();
}
} else {
Xchat::command("msg $hunter Rats...you missed it, $hunter! Better luck next time!");
Xchat::command("msg $channel $hunter is useless, they missed by a mile!");
}
}
if (lc($pubwords[0]) eq '!fish') {
$fishplace = @fishplaces[rand(scalar @fishplaces)];
my $fishy = @fish[rand(scalar @fish)];
my $weight = 1+int(rand($bigfish+10));
if ($hunter eq $last_fisher) {
Xchat::command("say Stop hogging all the best pitches $hunter, let someone else try first!");
return Xchat::EAT_NONE;
} else {
$last_fisher = $hunter;
}
Xchat::command("msg $hunter You cast your line into a $fishplace and wait for a bite...");
Xchat::command("msg $hunter .");
Xchat::command("msg $hunter ..");
Xchat::command("msg $hunter ...");
Xchat::command("msg $hunter You feel a tug on your line and reel it in...");
if (rand(100)<$catch_percent) {
Xchat::command("msg $hunter Congratulations, $hunter! You just caught yourself a $weight$scale $fishy!");
Xchat::command("msg $channel $hunter just caught a $weight$scale $fishy");
if ($weight > $bigfish) {
Xchat::command("msg $hunter Wow!!! That's a new record! Way to go, $hunter! Type !trophy to see it!");
Xchat::command("msg $channel Brilliant! That breaks the old record of a $bigfish$scale $fishtype! $hunter is the world's best!");
$fishman=$hunter;
$bigfish=$weight;
$fishtype=$fishy;
save_trophy();
}
} else {
Xchat::command("msg $hunter Rats...it got away, $hunter! Better luck next time!");
Xchat::command("msg $channel $hunter is useless, they failed to catch anything!");
}
}
if (lc($pubwords[0]) eq '!trophy') {
Xchat::command("say $fishman holds the fishing record when they caught a $bigfish$scale $fishtype");
Xchat::command("say $huntman holds the hunting record when they bagged a $bighunt$scale $hunttype");
Xchat::command("say $presenthunt holds the present unwrapping record when they unwrapped a $bigpresent$scale $presenttype");
}
if (lc($pubwords[0]) eq '!present') {
my $presentplaces = @presentplaces[rand(scalar @presentplaces)];
my $present = $presents[int rand @presents];
my $weight = 1+int(rand($present+10));
if ($present_unwrapper eq $last_presenthunter) {
Xchat::command("say Stop hogging all the best pitches $presenthunt, let someone else try first!");
return Xchat::EAT_NONE;
} else {
"my \$last_present = ";
}
Xchat::command("msg $present_unwrapper You unwrap your present from $presentplaces and see what you get...");
Xchat::command("msg $present_unwrapper .");
Xchat::command("msg $present_unwrapper ..");
Xchat::command("msg $present_unwrapper ...");
Xchat::command("msg $present_unwrapper You unwrap and see ...");
if (rand(100)<$catch_percent) {
Xchat::command("msg $present_unwrapper Congratulations, $present_unwrapper! You just unwrapped a $weight$scale $present!");
Xchat::command("msg $channel $present_unwrapper just got a $weight$scale $present");
if ($weight > $present) {
Xchat::command("msg $present_unwrapper Wow!!! That's a new record! Way to go, $present_unwrapper! Type !trophy to see it!");
Xchat::command("msg $channel Brilliant! That breaks the old record of a $present$scale $presenttype! $present_unwrapper is the world's best!");
$present_unwrapper=$present_unwrapper;
$present=$weight;
$presenttype=$present;
save_trophy();
}
} else {
Xchat::command("msg $present_unwrapper Sorry no present this time $present_unwrapper! Better luck next time!");
Xchat::command("msg $channel $present_unwrapper is useless, they failed to get a present!");
}
}
if (lc($pubwords[0]) eq '!newmonth') {
my $curnick = Xchat::get_info('nick');
if ((lc($hunter) eq lc($owner_nick)) or ($hunter eq Xchat::get_info('nick'))) {
$bigfish=0; $fishman='Nobody'; $fishtype='Tiddler'; $fishplace='Toilet';
$bighunt=0; $huntman='Nobody'; $hunttype='Haggis'; $huntplace='Bush';
$bigpresent=0; $present_unwrapper='Nobody'; $presenttype='xmas'; $presentplaces='everywhere';
save_trophy();
Xchat::command("say It's a new month, all existing huntin' 'n fishin' and present unwrapping records are reset!");
} else { Xchat::command("say Who are you, $present_unwrapper to tell me to change the month?"); }
}
}

sub save_trophy {
open (DH, ">$trophy_cabinet") or die("Bah! Can't open the trophy cabinet to push this 'ere trophy in!");
print (DH "$bigfish|$fishman|$fishtype|$fishplace\n");
print (DH "$bighunt|$huntman|$hunttype|$huntplace");
print (DH "$bigpresent|$present_unwrapper|$presenttype|$presentplaces");
close (DH);
}



FishMonger
Veteran / Moderator

Nov 16, 2012, 7:01 AM

Post #2 of 3 (1346 views)
Re: [rainbowwarrior] Help with perl game please [In reply to] Can't Post


Quote
it keeps saying " stop hogging all the best pitches "


No it doesn't. Your script won't compile.

Fix the compilation problem and the code format issues, then post back with the updated version.


(This post was edited by FishMonger on Nov 16, 2012, 7:02 AM)


rainbowwarrior
New User

Nov 17, 2012, 6:36 AM

Post #3 of 3 (1335 views)
Re: [FishMonger] Help with perl game please [In reply to] Can't Post

Hi,

Ok i have checked the code and this one works in xchat and gives me the " stop hogging all the best pitches problem " :-

#!/usr/bin/perl
#
# Flashy's bloodsports. http://digdilem.org/ - "Because thems trouts ain't gonna catch themselves!"
# (Credit to the original Eggdrop TCL script by Nerfbendr)
#
# Adds silly !hunt, !fish and !trophy and !present public triggers
# Also !newmonth will clean out the trophy cupboard. (Only if you do it, or the nick in $owner_nick)
#
# Optional Configuration (Will work fine without changing these, but you can if you like)
my $owner_nick='rainbowwarrior'; # Your nick - you can only reset the scores remotely if you use this nick.
my $scale = 'kg'; # Say here whether you want to measure weights in lb or kg.
my $catch_percent=90; # How often you catch or shoot something.
my $trophy_cabinet = Xchat::get_info( 'xchatdir' ) . "\\trophies.txt"; # File to keep the trophies in.
# End user configuration
use strict;
Xchat::register( "rainbowwarrrior's Huntin' 'n Fishin' and present unwrapping", 'v.004', "Hunting", "" );
Xchat::hook_print('Channel Message', "hunting");
Xchat::hook_print('Your Message', "hunting");
Xchat::hook_print('Private Message', "hunting");
Xchat::hook_print('Private Message to Dialog', "hunting");
my $bigfish=0,my $fishman='Nobody',my $bighunt=0,my $huntman='Nobody',my $bigpresent=0,my $presenthunt='Nobody',my $present_unwrapper;
my $fishtype='Trout',my $fishplace='Pool';
my $hunttype='bear', my $huntplace='Bushes';
my $presenttype='present', my $presentplaces='xmas';
my $last_hunter;
my $last_fisher;
my $last_presenthunter;
my @hunts = ( "bear","gopher","rabbit","hunter","deer","fox","duck","moose","pokemon named Pikachu","park ranger","Yogi Bear","Boo Boo Bear","dog named Benji","cow","raccoon","koala bear","camper","channel lamer");
my @fish = ( "Salmon","Herring","Yellowfin Tuna","Pink Salmon","Chub","Barbel","Perch","Northern Pike","Brown Trout","Arctic Char","Roach","Brayling","Bleak","Cat Fish","Sun Fish","Old Tire","Rusty Tin Can","Genie Lamp","Love Message In A Bottle","Old Log","Rubber Boot","Dead Body","Loch Ness Monster","Old Fishing Lure","Piece of the Titanic","Chunk of Atlantis","Squid","Whale","Dolphin","Porpoise","Stingray","Submarine","Seal","Seahorse","Jellyfish","Starfish","Electric Eel","Great White Shark","Scuba Diver","X","Lag Monster","Virus","Soggy Pack of Smokes","Pile of Weed","Boat Anchor","Pair Of Floaties","Mermaid","Merman","Halibut","Tiddler","Sock","Trout");
my @presents = ( "a new car","cake","guitar","dvd","xbox360","playstation3","hairdryer","trampoline","dog","cat","electric shock game","a board game","a snake","tickets to a rock concert","a blowup doll","book");
my @huntplaces = ("in some bushes","in a hunting blind","in a hole","up in a tree","in a hiding place","out in the open","in the middle of a field","downtown","on a street corner","at the local mall");
my @fishplaces = ("Stream","Lake","River","Pond","Ocean","Bathtub","Kiddie's Swimming Pool","Toilet","Pile of Vomit","Pool of Urine","Kitchen Sink","Bathroom Sink","Mud Puddle","Pail of Water","Bowl of Jell-O (tm)","Wash Basin","Rain Barrel","Aquarium","SnowBank","WaterFall","Cup of Coffee","Glass of Milk");
my @presentplaces = ("in a cupboard","under a xmas tree","in the liverroom","up in a tree","in a hiding place","out in the open","upstairs","on a boat","on a street corner","at the local mall");



Xchat::print("Path=($trophy_cabinet");

if (open (DH,"<$trophy_cabinet>")) {
($bigfish,$fishman,$fishtype,$fishplace) = split(/\|/,<DH>);
chomp($fishplace);
($bighunt,$huntman,$hunttype,$huntplace) = split(/\|/,<DH>);
my ($bigpresent,$presenthunt,$presenttype,$present_unwrapper,$presentplaces) = split(/\|/,<DH>);
close (DH);
Xchat::print("Peered in the trophy cabinet: ($bigfish$scale $fishtype by $fishman) ($bighunt$scale $hunttype by $huntman) ($bigpresent$scale $presenttype by $present_unwrapper");
} else {
Xchat::print("\002Woo, looks like we've not gone hunting before. Let's make a trophy cabinet...");
save_trophy();
}

Xchat::print("\002Loaded Flash's Huntin' 'n Fishin'\002 (!hunt, !fish !present !trophy - Current records are $bigfish$scale and $bighunt$scale)");

sub hunting {
my @pubwords = split(/ /,$_[0][1]);
my $hunter = Xchat::strip_code($_[0][0]);
my $channel = Xchat::get_info('channel');
if (lc($pubwords[0]) eq '!hunt') {
if ($hunter eq $last_hunter) {
Xchat::command("say Stop hogging all the best pitches $hunter, let someone else try first!");
return Xchat::EAT_NONE;
} else {
$last_hunter = $hunter;
}
my $huntplace = @huntplaces[rand(scalar @huntplaces)];
my $hunt = @hunts[rand(scalar @hunts)];
my $weight = 1+int(rand($bighunt+10));
Xchat::command("msg $hunter You hide $huntplace and wait for something to wander by...");
Xchat::command("msg $hunter .");
Xchat::command("msg $hunter ..");
Xchat::command("msg $hunter ...");
Xchat::command("msg $hunter You think you hear something and fire wildly in that direction!");
if (rand(100)<$catch_percent) {
Xchat::command("msg $hunter Congratulations, $hunter! You just bagged yourself a $weight$scale $hunt!");
Xchat::command("msg $channel $hunter just bagged a $weight$scale $hunt.");
if ($weight > $bighunt) {
Xchat::command("msg $hunter Wow!!! That's a new record! Way to go, $hunter! Type !trophy to see it!");
Xchat::command("msg $channel Wow! That breaks the old record of a $bighunt$scale $hunttype! $hunter is amazing!");
$bighunt=$weight;
$huntman=$hunter;
$hunttype=$hunt;
save_trophy();
}
} else {
Xchat::command("msg $hunter Rats...you missed it, $hunter! Better luck next time!");
Xchat::command("msg $channel $hunter is useless, they missed by a mile!");
}
}
if (lc($pubwords[0]) eq '!fish') {
$fishplace = @fishplaces[rand(scalar @fishplaces)];
my $fishy = @fish[rand(scalar @fish)];
my $weight = 1+int(rand($bigfish+10));
if ($hunter eq $last_fisher) {
Xchat::command("say Stop hogging all the best pitches $hunter, let someone else try first!");
return Xchat::EAT_NONE;
} else {
$last_fisher = $hunter;
}
Xchat::command("msg $hunter You cast your line into a $fishplace and wait for a bite...");
Xchat::command("msg $hunter .");
Xchat::command("msg $hunter ..");
Xchat::command("msg $hunter ...");
Xchat::command("msg $hunter You feel a tug on your line and reel it in...");
if (rand(100)<$catch_percent) {
Xchat::command("msg $hunter Congratulations, $hunter! You just caught yourself a $weight$scale $fishy!");
Xchat::command("msg $channel $hunter just caught a $weight$scale $fishy");
if ($weight > $bigfish) {
Xchat::command("msg $hunter Wow!!! That's a new record! Way to go, $hunter! Type !trophy to see it!");
Xchat::command("msg $channel Brilliant! That breaks the old record of a $bigfish$scale $fishtype! $hunter is the world's best!");
$fishman=$hunter;
$bigfish=$weight;
$fishtype=$fishy;
save_trophy();
}
} else {
Xchat::command("msg $hunter Rats...it got away, $hunter! Better luck next time!");
Xchat::command("msg $channel $hunter is useless, they failed to catch anything!");
}
}
if (lc($pubwords[0]) eq '!trophy') {
Xchat::command("say $fishman holds the fishing record when they caught a $bigfish$scale $fishtype");
Xchat::command("say $huntman holds the hunting record when they bagged a $bighunt$scale $hunttype");
Xchat::command("say $presenthunt holds the present unwrapping record when they unwrapped a $bigpresent$scale $presenttype");
}
if (lc($pubwords[0]) eq '!present') {
my $presentplaces = @presentplaces[rand(scalar @presentplaces)];
my $present = $presents[int rand @presents];
my $weight = 1+int(rand($present+10));
if ($present_unwrapper eq $last_presenthunter) {
Xchat::command("say Stop hogging all the best pitches $presenthunt, let someone else try first!");
return Xchat::EAT_NONE;
} else {
"my \$last_present = "
}
Xchat::command("msg $present_unwrapper You unwrap your present from $presentplaces and see what you get...");
Xchat::command("msg $present_unwrapper .");
Xchat::command("msg $present_unwrapper ..");
Xchat::command("msg $present_unwrapper ...");
Xchat::command("msg $present_unwrapper You unwrap and see ...");
if (rand(100)<$catch_percent) {
Xchat::command("msg $present_unwrapper Congratulations, $present_unwrapper! You just unwrapped a $weight$scale $present!");
Xchat::command("msg $channel $present_unwrapper just got a $weight$scale $present");
if ($weight > $present) {
Xchat::command("msg $present_unwrapper Wow!!! That's a new record! Way to go, $present_unwrapper! Type !trophy to see it!");
Xchat::command("msg $channel Brilliant! That breaks the old record of a $present$scale $presenttype! $present_unwrapper is the world's best!");
$present_unwrapper=$present_unwrapper;
$present=$weight;
$presenttype=$present;
save_trophy();
}
} else {
Xchat::command("msg $present_unwrapper Sorry no present this time $present_unwrapper! Better luck next time!");
Xchat::command("msg $channel $present_unwrapper is useless, they failed to get a present!");
}
}
if (lc($pubwords[0]) eq '!newmonth') {
my $curnick = Xchat::get_info('nick');
if ((lc($hunter) eq lc($owner_nick)) or ($hunter eq Xchat::get_info('nick'))) {
$bigfish=0; $fishman='Nobody'; $fishtype='Tiddler'; $fishplace='Toilet';
$bighunt=0; $huntman='Nobody'; $hunttype='Haggis'; $huntplace='Bush';
$bigpresent=0; $present_unwrapper='Nobody'; $presenttype='xmas'; $presentplaces='everywhere';
save_trophy();
Xchat::command("say It's a new month, all existing huntin' 'n fishin' and present unwrapping records are reset!");
} else { Xchat::command("say Who are you, $present_unwrapper to tell me to change the month?"); }
}
}

sub save_trophy {
open (DH, ">$trophy_cabinet") or die("Bah! Can't open the trophy cabinet to push this 'ere trophy in!");
print (DH "$bigfish|$fishman|$fishtype|$fishplace\n");
print (DH "$bighunt|$huntman|$hunttype|$huntplace");
print (DH "$bigpresent|$present_unwrapper|$presenttype|$presentplaces");
close (DH);
}

Code



      
    

 
 


Search for (options) Powered by Gossamer Forum v.1.2.0

Web Applications & Managed Hosting Powered by Gossamer Threads
Visit our Mailing List Archives