Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ############################################################
- ## Hi-Lo Multiplayer Version Script ( with Stats and AI Players) ##
- ## Version: 1.0 ##
- ## By: manish ##
- ## irc.lunarirc.net #LunarIRC User - manish
- ## COMMANDS ##
- !hilo - To initiate a game of Hi-Lo.
- high - Go high.
- !low - Go low
- !stats <nickname> : Shows the statistics of the specified user.
- ############################################################
- on *:TEXT:!hilo*:#: {
- if ( %hilo != on ) && (%ongoing == $null) {
- set %hilo on
- set %chan $chan
- set %o 0
- msg $chan 3 Hi-Lo game has been started. 13 cards are taken, and a random card is drawn and removed every time. You need to guess whether the next card is higher or lower than the previous card.
- msg $chan 9 Type !start Solo or !start multi to start a Solo Game or a Multiplayer Game respectively.
- }
- else {
- msg $chan 9 Type !start Solo or !start multi to start a Solo Game or a Multiplayer Game respectively.
- }
- }
- on *:TEXT:!start*:#: {
- if ( %hilo == on ) && ( %o == 0 ) && ( $2 == solo ) {
- inc %o
- set %gamemode solo
- set %nick $nick
- set %chan $chan
- msg $chan 6 Game of High-Low has been started by $nick . Current champion: %champ .
- startg
- msg %chan 4,0♥ $+ %oldcard 4,010 has been chosen! 12 cards remaining in the deck.
- msg %chan 6 $nick may choose to go !high or go !low
- timer 1 30 timeout
- }
- elseif ( %hilo == on ) && ( %o == 0 ) && ( $2 == multi ) {
- inc %o
- set %chan $chan
- set %gamemode multiplayer
- unset %game
- set %multi started
- set %cards 2.3.4.5.6.7.8.9.10.J.Q.K.A
- set %AInames ProMan LucyFir StupidTolga
- if ( $3 isnum ) && ( $3 >= 2 ) && ( $3 <= 4 ) {
- set %playing $3
- }
- else { set %playing 4 }
- msg %chan 6 A game of Hi-Lo Multiplayer has been started. Type !join to join. You have 30 seconds..
- set %joining on
- timer 1 15 msg %chan 10 15 seconds left... If enough players do not join, AI Players will be joining.
- timer 1 30 timeup
- }
- elseif ( %o == 1 ) {
- msg $chan 7 A game of High-Low %gamemode is already in progress in %chan .
- }
- else {
- msg $chan 6 Please start a game of High-Low by typing !hilo . }
- }
- alias startg {
- getinfo %nick
- inc %sgp
- makedata %nick
- set %score 0
- set %cards 2.3.4.5.6.7.8.9.10.J.Q.K.A
- set %total $numtok(%cards,46)
- set %x $rand(1,%total)
- set %oldcard $gettok(%cards,%x,46)
- %cards = $deltok(%cards,%x,46)
- }
- on *:TEXT:!stophilo*:#: {
- if ( $nick isop %chan ) {
- end
- msg %chan 14 Game has been stopped by $nick .
- }
- }
- on *:TEXT:!high*:#: {
- timers off
- if ( $nick == %tplayer ) {
- go high
- }
- elseif ( $nick == %nick) {
- ignore %nick
- timer 1 1 msg %chan 10 $nick goes for high.
- set %total $numtok(%cards,46)
- set %x $rand(1,%total)
- set %newcard $gettok(%cards,%x,46)
- %cards = $deltok(%cards,%x,46)
- set %oldval $value(%oldcard)
- set %newval $value(%newcard)
- if ( %newval > %oldval ) {
- inc %score
- timer 1 5 msg %chan 14 The next card is 4,0♥ $+ %newcard 4,0 .
- timer 1 5 msg %chan 6 $numtok(%cards,46) cards remaining in the deck.
- timer 1 5 msg %chan 6 $nick makes a correct choice and is still in the game.
- timer 1 7 msg %chan 10 Current score of $nick : %score
- timer 1 7 ignore -r %nick
- timer 1 37 timeout
- if ( %score == 12 ) {
- timer 1 8 msg %chan 9 $nick has won the game of High-Low with a top-class score of 12, and is the new champion!
- getinfo %nick
- if ( %score > %hs ) { set %hs %score }
- makedata %nick
- set %champ $nick
- unset %o
- set %hilo off
- unset %nick
- timers off
- }
- }
- else {
- timer 1 4 msg %chan 14 The next card is 4,0♥ $+ %newcard 4,0 .
- timer 1 5 msg %chan 4 Game Over! $nick loses the game with a total score of %score . Well played!
- ignore -r %nick
- getinfo %nick
- if ( %score > %hs ) { set %hs %score }
- makedata %nick
- unset %o
- set %hilo off
- unset %nick
- }
- set %oldcard %newcard
- }
- }
- on *:TEXT:!low*:#: {
- timers off
- if ( $nick == %tplayer ) {
- go low
- }
- elseif ( $nick == %nick) {
- ignore %nick
- timer 1 1 msg $chan 10 $nick goes for low.
- set %total $numtok(%cards,46)
- set %x $rand(1,%total)
- set %newcard $gettok(%cards,%x,46)
- %cards = $deltok(%cards,%x,46)
- set %oldval $value(%oldcard)
- set %newval $value(%newcard)
- if ( %newval < %oldval ) {
- inc %score
- timer 1 5 msg %chan 14 The next card is 4,0♥ $+ %newcard 4,0 .
- timer 1 5 msg %chan 6 $numtok(%cards,46) cards remaining in the deck.
- timer 1 5 msg %chan 6 $nick makes a correct choice and is still in the game.
- timer 1 7 msg %chan 10 Current score of $nick : %score
- timer 1 7 ignore -r %nick
- timer 1 37 timeout
- if ( %score == 12) {
- timer 1 8 msg %chan 9 $nick has won the game of High-Low with a top-class score of 12, and is the new champion!
- getinfo %nick
- if ( %score > %hs ) { set %hs %score }
- makedata %nick
- set %champ $nick
- unset %o
- set %hilo off
- unset %nick
- timers off
- }
- }
- else {
- timer 1 4 msg %chan 14 The next card is 4,0♥ $+ %newcard 4,0 .
- timer 1 5 msg %chan 4 Game Over! $nick loses the game with a total score of %score . Well played!
- ignore -r %nick
- getinfo %nick
- if ( %score > %hs ) { set %hs %score }
- makedata %nick
- unset %o
- set %hilo off
- unset %nick
- }
- set %oldcard %newcard
- }
- }
- alias -l value return $iif($1 isnum,$1,$+(1,$pos(JQKA,$1,1)))
- alias timeout {
- msg %chan 4 Sorry %nick , you ran out of the time-limit (30 seconds) and eventually lose the game with the score %score .
- getinfo %nick
- if ( %score > %hs ) { set %hs %score }
- makedata %nick
- unset %o
- set %hilo off
- notice %nick Please Wait 30 seconds if you want to play again.
- ignore -cu30 %nick
- unset %nick
- }
- alias go {
- timers off
- ignore %tplayer
- timer 1 1 msg %chan 10 %tplayer decides to go $1 .
- getnewcard
- set %decision $1
- set %oldval $value(%oldcard)
- set %newval $value(%newcard)
- timer 1 3 msg %chan The next card is 4,0♥ $+ %newcard 4,0 .
- if ( %decision == high ) && ( %newval > %oldval ) {
- timer 1 4 msg %chan 9 %tplayer makes a correct choice and is still in the game.
- set %mcb $gettok(%corr,%turn,46)
- inc %mcb
- set %corr $deltok(%corr,%turn,46)
- set %corr $instok(%corr,%mcb,%turn,46)
- }
- elseif ( %decision == low ) && ( %newval < %oldval ) {
- timer 1 4 msg %chan 9 %tplayer makes a correct choice and is still in the game.
- set %mcb $gettok(%corr,%turn,46)
- inc %mcb
- set %corr $deltok(%corr,%turn,46)
- set %corr $instok(%corr,%mcb,%turn,46)
- }
- else {
- timer 1 4 msg %chan 4 %tplayer makes a wrong choice and loses a life.
- %life = $gettok(%lifes,%turn,46)
- set %life $calc(%life - 1)
- set %lifes $deltok(%lifes,%turn,46)
- set %lifes $instok(%lifes,%life,%turn,46)
- }
- timer 1 6 showlifes
- timer 1 8 getout
- }
- alias -l showlifes {
- var %pk = 1
- while ( %pk <= %playing ) {
- set %display %display 6 $gettok(%players,%pk,32) $+ : $gettok(%lifes,%pk,46)
- inc %pk
- }
- msg %chan 3 Current Lives : %display
- unset %display
- }
- alias -l getout {
- if ( $istok(%lifes,0,46) ) {
- getinfo %tplayer
- set %correct $gettok(%corr,%turn,46)
- set %cg $calc(%cg + %correct)
- set %wg $calc(%wg + 3)
- set %corr $deltok(%corr,%turn,46)
- makedata %tplayer
- set %lifes $remtok(%lifes,0,0,46)
- msg %chan 4 %tplayer has lost all their lives and is now out of the game, finishing with 10 coins. Adieu!
- coins %tplayer 10
- ignore -r %tplayer
- set %players $remtok(%players,%tplayer,0,32)
- set %playing $calc(%playing - 1)
- set %turn $calc(%turn - 1)
- }
- if ( %playing == 1 ) {
- timer 1 2 winner
- }
- else { continuegame }
- }
- alias -l shuffle {
- if ( $numtok(%cards,46) == 0 ) {
- msg %chan 13 The other cards are being taken again and re-shuffled!
- set %cards 2.3.4.5.6.7.8.9.10.J.Q.K.A
- set %cards $remtok(%cards,%newcard,1,46)
- } }
- alias -l aiornot {
- if ( $1 == $gettok(%AInames,1,32) ) {
- var %highchance = 0
- var %lowchance = 0
- var %p = 1
- while ( %p <= $numtok(%cards,46) ) {
- set %curcard $gettok(%cards,%p,46)
- set %curvalue $value(%curcard)
- if ( %curvalue > $value(%newcard) ) { inc %highchance }
- else { inc %lowchance }
- inc %p
- }
- if ( %highchance > %lowchance ) {
- go high
- }
- else {
- go low
- }
- }
- elseif ( $1 == $gettok(%AInames,2,32) ) {
- set %newval $value(%newcard)
- var %highchance = 14 - %newval
- var %lowchance = %newval - 2
- if ( %highchance > %lowchance ) {
- go high
- }
- else {
- go low
- }
- }
- elseif ( $1 == $gettok(%AInames,3,32) ) {
- set %y $rand(1,2)
- if ( %y == 1 ) {
- go high
- }
- else {
- go low
- }
- }
- }
- alias -l winner {
- set %winner $gettok(%players,1,32)
- msg %chan 10 $gettok(%players,1,32) has won the game with %lifes lives remaining, earning 25 coins.
- coins %winner 25
- ignore -r %winner
- getinfo %players
- set %correct %corr
- set %cg $calc(%cg + %correct)
- set %wg $calc(3 - %lifes)
- inc %mgw
- makedata %players
- end
- }
- alias -l end {
- timers off
- ignore -r
- unset %players %ongoing %turn %tplayer %multi %playing %ai %life %lifes %m %hilo %o %corr
- set %game over
- }
- alias -l continuegame {
- if ( %game == $null ) {
- inc %turn
- if ( %turn > %playing ) {
- set %turn 1
- ignoreall
- }
- set %tplayer $gettok(%players,%turn,32)
- msg %chan 10 Its %tplayer 's turn to continue. They may choose to go !high or go !low .
- ignore -r %tplayer
- timer 1 20 gone
- aiornot %tplayer
- }
- }
- alias -l getnewcard {
- if ( $numtok(%cards,32) == 0 ) { shuffle }
- set %oldcard %newcard
- set %total $numtok(%cards,46)
- set %x $rand(1,%total)
- set %newcard $gettok(%cards,%x,46)
- %cards = $deltok(%cards,%x,46)
- }
- alias -l getai {
- var %i = 1
- while ( %i <= 3 ) {
- set %ai $gettok(%AInames,%i,32)
- set %players %players %ai
- inc %i
- }
- set %players $gettok(%players,1- $+ %playing $+ ,32)
- msg %chan 9 AI Player(s) have joined the game.
- }
- on *:TEXT:!join*:#: {
- if ( %playing != $null ) && ( %joining == on ) {
- if ( $nick isin %players ) { notice $nick You are already playing. }
- elseif ( $istok(%AInames,$nick,32) ) { notice $nick You cannot use that nickname. }
- else {
- getinfo $nick
- inc %mgp
- makedata $nick
- msg %chan 3 $nick has joined the game.
- set %players %players $nick
- if ( $numtok(%players,32) == %playing ) {
- msg %chan 13 The game may be started now.
- set %joining off
- timers off
- start
- } } } }
- alias -l timeup {
- msg %chan 10 Time is up!
- if ( $numtok(%players,32) == 0 ) {
- msg %chan 10 Nobody has joined. Game is turning off.
- unset %playing
- unset %multi
- end
- }
- else {
- getai
- set %joining off
- start
- }
- }
- alias -l start {
- set %turn 1
- set %tplayer $gettok(%players,1,32)
- set %lifes $left(3.3.3.3, $+ $calc(2 * %playing - 1))
- set %corr $replace(%lifes,3,0)
- set %total $numtok(%cards,46)
- set %x $rand(1,%total)
- set %oldcard $gettok(%cards,%x,46)
- %cards = $deltok(%cards,%x,46)
- set %newcard %oldcard
- msg %chan 4,0♥ $+ %oldcard 4,010 has been chosen! 12 cards remaining.
- msg %chan 6 Its %tplayer 's turn to start the game. They may choose to go !high or go !low .
- timer 1 20 gone
- }
- alias -l gone {
- msg %chan 4 %tplayer ran out of time to make a choice and loses a life.
- ignoreall
- %life = $gettok(%lifes,%turn,46)
- set %life $calc(%life - 1)
- set %lifes $deltok(%lifes,%turn,46)
- set %lifes $instok(%lifes,%life,%turn,46)
- showlifes
- getout
- }
- alias -l ignoreall {
- var %pq = 1
- while ( %pq <= %playing ) {
- if ( $1 == $null ) { ignore $gettok(%players,%pq,32) }
- else { ignore -r $gettok(%players,%pq,32) }
- inc %pq
- }
- }
- alias getinfo {
- if ( $istok(%AInames,$1,32) ) { return }
- elseif (!$read(hilo.txt,w,* $+ $1 $+ * ) ) { write hilo.txt $1 0 0 0 0 0 0 | getinfo $1 }
- set %info $read(hilo.txt,w,* $+ $1 $+ * )
- set %in $gettok(%info,1,32)
- set %mgp $gettok(%info,2,32)
- set %mgw $gettok(%info,3,32)
- set %cg $gettok(%info,4,32)
- set %wg $gettok(%info,5,32)
- set %sgp $gettok(%info,6,32)
- set %hs $gettok(%info,7,32)
- }
- alias -l makedata {
- if ( $istok(%AInames,$1,32) ) { return }
- set %todel $read(hilo.txt,w,* $+ $1 $+ * )
- set %no $readn $+
- write -dl $+ %no hilo.txt
- write hilo.txt $1 %mgp %mgw %cg %wg %sgp %hs
- }
- alias -l coins {
- if ( $istok(%AInames,$1,32) ) { return }
- elseif ($read(coins.txt,w,* $+ $1 $+ *)) {
- set %n $readn $+
- set %data $read(coins.txt,w,* $+ $1 $+ *)
- set %current $gettok(%data,2,32)
- set %new $calc(%current + $2)
- set %data $replace(%data,%current,%new)
- write -dl $+ %n coins.txt
- write coins.txt %data
- }
- else {
- write coins.txt $1 $2
- }
- }
- on *:TEXT:!stats*:#: {
- if ( $2 == $null) { return }
- getinfo $2
- msg $chan 6 Hi-Lo Stats for %in :
- msg $chan 10⚔Multiplayer:11 ❂Games Played:6 %mgp 11 ✬Games Won:6 %mgw 11 ☠Guesses (9☑/4☒): 6 %cg $+ / $+ %wg
- msg $chan 10☃Solo:11 ♙Games Played:6 %sgp 11 ❆Highest Score:6 %hs
- }
Add Comment
Please, Sign In to add comment