This is the first piece of IRC code I've made without any help. It needs improvement (i.e. preventing somebody from jumping in at the last second to win), but I'm still just learning. If you have any ideas that would help this script out, please tell. :)
Commands:
!number [number]
Replace [number] with a number, preferrably one that you could reach by counting by 2s and 3s. (don't make it much higher than 100, unless you plan on playinb for a long time.)
!stopnumber
The game starter (whoever said !number) may say this to stop the game and unset the variables.
The idea of this number game is to reach the number stated at the beginning of the game (!number [this one]). Going over the number counts as a win.
Once the game is started, anybody on the channel may say 2 or 3 to add that value to the number. Enjoy!
on *:TEXT:!number *:#: {
if (%numgame == 1) { msg $chan 12Game already in progress. }
if (%numgame != 1) {
msg $chan $nick has started the Number Game. Anybody on the channel may play.
msg $chan 4RULES: You may not take two consecutive turns. Say either 2 or 3 to add that much to the current value. Numbers other than 2 and 3 aren't accepted.
msg $chan If the game seems to be stuck, the game starter must type !stopnumber. The winner is the one that says the highest number, which in this case is4 $2 . Going over is acceptable.
msg $chan 12 The current number is 40
set %end $2
set %numgame 1
set %currentnum 0
set %ender $nick
}
}
on *:TEXT:2:#: {
if (%numgame == 1) && (%lastnick == $nick) { msg $chan 4You may not take 2 turns in a row!! }
if (%numgame == 1) && (%lastnick != $nick) {
set %currentnum %currentnum + 2
set %lastnick $nick
if (%currentnum < %end) { msg $chan 12The number is now4 %currentnum }
if (%currentnum >= %end) {
msg $chan 12 $nick has won!!
unset %end
unset %currentnum
unset %lastnick
unset %ender
set %numgame 0
}
}
}
on *:TEXT:3:#: {
if (%numgame == 1) && (%lastnick == $nick) { msg $chan 4You may not take 2 turns in a row!! }
if (%numgame == 1) && (%lastnick != $nick) {
set %currentnum %currentnum + 3
set %lastnick $nick
if (%currentnum < %end) { msg $chan 12The number is now4 %currentnum }
if (%currentnum >= %end) {
msg $chan 12 $nick has won!!
unset %end
unset %currentnum
unset %lastnick
unset %ender
set %numgame 0
}
}
}
ON *:PART:#: {
if ( $nick == %ender ) {
msg $chan 12The number game has been ended. (Game starter left)
unset %end
unset %currentnum
unset %lastnick
unset %ender
set %numgame 0
}
}
on *:TEXT:!stopnumber:#: {
if ( %numgame == 1 ) && ( $nick == %ender ) {
msg $chan 12The number game has been ended.
unset %end
unset %currentnum
unset %lastnick
unset %ender
set %numgame 0
}
}
Oh, and I forgot to say, you should probably take out those two big blocks of code and put this:
on *:TEXT:*:#: {
if ($1- != 2) && ($1- != 3) { halt }
if (%numgame == 1) && (%lastnick == $nick) { msg $chan 4You may not take 2 turns in a row!! }
if (%numgame == 1) && (%lastnick != $nick) {
set %currentnum %currentnum + $1-
set %lastnick $nick
if (%currentnum < %end) { msg $chan 12The number is now4 %currentnum }
if (%currentnum >= %end) {
msg $chan 12 $nick has won!!
unset %end
unset %currentnum
unset %lastnick
unset %ender
set %numgame 0
}
}
}
There\'s always little sill things you could do to shorten the script. I\'d review it and see if it works, but it seems you need 2 people to play, and nobody else is on right now ;P
if (%numgame == 1) { msg $chan 12Game already in progress. }
if (%numgame != 1) {
can simply be
if (%numgame == 1) { msg $chan 12Game already in progress. | HALT }
and
if (%currentnum < %end) { msg $chan 12The number is now4 %currentnum }
if (%currentnum >= %end) {
could simply be
if (%currentnum < %end) { msg $chan 12The number is now4 %currentnum | HALT }