This is a (less) simple (by now) DICE game made by koekbliq and also my first big and more difficult script.
Commands for DICE are !dice, !dice , !points, !points , !status, !commands.
You can set it on for multiple channels and off when you want!
I've used Typo's trigger protection for the flood protection. (http://www.hawkee.com/snippet/4664/)
-I have changed it to v2.0-
updates:
-added duell-mode
-added watching someone else's points
-added !status displaying channels DICE active in and if DICE is on or off
-added a timer to set it off automatically after a certain period
Enjoy!
;########################################################################################
;########################################################################################
;####| DICE: the simple |###| made by |###| Use !dice, !dice <nick>, !commands |####
;####| !trigger GAME V3.0 |###| koekbliq |###| and !points, !points <nick>, !status |####
;########################################################################################
;########################################################################################
; OPEN THE MENU ON RIGHT-CLICK IN A CHANNEL BEFORE USE !!
;;;;;;;;;;;;;
;;;[!DICE];;;
;;;;;;;;;;;;;
on *:TEXT:!dice*:#:{
if (%DICEon == 1) && ($2 ison $chan) && ($2 != $nick) && ($TriggerPro($nick,$v2) == $true) && ($chan isin %DICEchan) {
set %yt1 $rand(1,6)
set %yt2 $rand(1,6)
set %yt3 $rand(1,6)
set %bt1 $rand(1,6)
set %bt2 $rand(1,6)
set %bt3 $rand(1,6)
set %yTOT $calc((%yt1) + (%yt2) + (%yt3))
set %bTOT $calc((%bt1) + (%bt2) + (%bt3))
set %player2 $2
timerplay1 1 1 notice $nick (Your throw) $chr(91) $+ %yt1 $+ $chr(93) $chr(91) $+ %yt2 $+ $chr(93) $chr(91) $+ %yt3 $+ $chr(93) = $chr(91) $+ %yTOT $+ $chr(93)
timerplay2 1 2 notice $nick ( $+ $2 $+ $chr(39) $+ s throw) $chr(91) $+ %bt1 $+ $chr(93) $chr(91) $+ %bt2 $+ $chr(93) $chr(91) $+ %bt3 $+ $chr(93) = $chr(91) $+ %bTOT $+ $chr(93)
timerplay3 1 1 notice $2 (Your throw) $chr(91) $+ %bt1 $+ $chr(93) $chr(91) $+ %bt2 $+ $chr(93) $chr(91) $+ %bt3 $+ $chr(93) = $chr(91) $+ %bTOT $+ $chr(93)
timerplay4 1 2 notice $2 ( $+ $+ $nick $+ $chr(39) $+ s throw) $chr(91) $+ %yt1 $+ $chr(93) $chr(91) $+ %yt2 $+ $chr(93) $chr(91) $+ %yt3 $+ $chr(93) = $chr(91) $+ %yTOT $+ $chr(93)
winner2
}
elseif (%DICEon == 1) && ($2 == $null) && ($2 != $nick) && ($TriggerPro($nick,$v2) == $true) && ($chan isin %DICEchan) {
set %yt1 $rand(1,6)
set %yt2 $rand(1,6)
set %yt3 $rand(1,6)
set %bt1 $rand(1,6)
set %bt2 $rand(1,6)
set %bt3 $rand(1,6)
set %yTOT $calc((%yt1) + (%yt2) + (%yt3))
set %bTOT $calc((%bt1) + (%bt2) + (%bt3))
timerplay11 1 1 notice $nick (Your throw) $chr(91) $+ %yt1 $+ $chr(93) $chr(91) $+ %yt2 $+ $chr(93) $chr(91) $+ %yt3 $+ $chr(93) = $chr(91) $+ %yTOT $+ $chr(93)
timerplay12 1 2 notice $nick (Comp's throw) $chr(91) $+ %bt1 $+ $chr(93) $chr(91) $+ %bt2 $+ $chr(93) $chr(91) $+ %bt3 $+ $chr(93) = $chr(91) $+ %bTOT $+ $chr(93)
winner1
}
elseif (%DICEon == 1) && ($2 == $nick) && ($TriggerPro($nick,$v2) == $true) && ($chan isin %DICEchan) {
set %yt1 $rand(1,6)
set %yt2 $rand(1,6)
set %yt3 $rand(1,6)
set %bt1 $rand(1,6)
set %bt2 $rand(1,6)
set %bt3 $rand(1,6)
set %yTOT $calc((%yt1) + (%yt2) + (%yt3))
set %bTOT $calc((%bt1) + (%bt2) + (%bt3))
timerplay11 1 1 notice $nick (Your throw) $chr(91) $+ %yt1 $+ $chr(93) $chr(91) $+ %yt2 $+ $chr(93) $chr(91) $+ %yt3 $+ $chr(93) = $chr(91) $+ %yTOT $+ $chr(93)
timerplay12 1 2 notice $nick (Comp's throw) $chr(91) $+ %bt1 $+ $chr(93) $chr(91) $+ %bt2 $+ $chr(93) $chr(91) $+ %bt3 $+ $chr(93) = $chr(91) $+ %bTOT $+ $chr(93)
winner1
}
else {
halt
}
}
;;;;;;;;;;;;;;;;;;;;;;;
;;;[WINNER ALIASSES];;;
;;;;;;;;;;;;;;;;;;;;;;;
alias winner1 {
if (%yTOT == %bTOT) {
timerplay13 1 3 notice $nick (Draw! 0 points)
set %. $+ $nick $calc((%. [ $+ [ $nick ] ] ) + 0)
unset %yt1 %yt2 %yt3 %bt1 %bt2 %bt3 %yTOT %bTOT
halt
}
if (%yTOT < %bTOT) && (%bTOT != 18) {
timerplay13 1 3 notice $nick (You lose! -1 points)
set %. $+ $nick $calc((%. [ $+ [ $nick ] ] ) - 1)
unset %yt1 %yt2 %yt3 %bt1 %bt2 %bt3 %yTOT %bTOT
halt
}
if (%yTOT > %bTOT) && (%yTOT != 18) {
timerplay13 1 3 notice $nick (You win! +1 points)
set %. $+ $nick $calc((%. [ $+ [ $nick ] ] ) + 1)
unset %yt1 %yt2 %yt3 %bt1 %bt2 %bt3 %yTOT %bTOT
halt
}
if (%yTOT == 18) && (%bTOT != 18) {
timerplay13 1 3 notice $nick (You win the jackpot for the highest throw possible! +4 points)
set %. $+ $nick $calc((%. [ $+ [ $nick ] ] ) + 4)
unset %yt1 %yt2 %yt3 %bt1 %bt2 %bt3 %yTOT %bTOT
halt
}
}
alias winner2 {
if (%yTOT == %bTOT) {
timerplay11 1 5 notice $nick (Draw! 0 points)
timerplay12 1 5 notice %player2 (Draw! 0 points)
set %. $+ $nick $calc((%. [ $+ [ $nick ] ] ) + 0)
set %. $+ %player2 $calc((%. [ $+ [ %player2 ] ] ) + 0)
unset %yt1 %yt2 %yt3 %bt1 %bt2 %bt3 %yTOT %bTOT %player2
halt
}
if (%yTOT < %bTOT) && (%bTOT != 18) {
timerplay13 1 5 notice $nick (You lose! -1 points)
timerplay14 1 5 notice %player2 (You win! +1 points)
set %. $+ $nick $calc((%. [ $+ [ $nick ] ] ) - 1)
set %. $+ %player2 $calc((%. [ $+ [ %player2 ] ] ) + 1)
unset %yt1 %yt2 %yt3 %bt1 %bt2 %bt3 %yTOT %bTOT %player2
halt
}
if (%yTOT > %bTOT) && (%yTOT != 18) {
timerplay15 1 5 notice $nick (You win! +1 points)
timerplay16 1 5 notice %player2 (You lose! -1 points)
set %. $+ $nick $calc((%. [ $+ [ $nick ] ] ) + 1)
set %. $+ %player2 $calc((%. [ $+ [ %player2 ] ] ) - 1)
unset %yt1 %yt2 %yt3 %bt1 %bt2 %bt3 %yTOT %bTOT %player2
halt
}
if (%yTOT == 18) && (%bTOT != 18) {
timerplay17 1 5 notice $nick (You win the jackpot with the highest throw possible! +4 points)
timerplay18 1 5 notice %player2 (You lose! -1 points)
set %. $+ $nick $calc((%. [ $+ [ $nick ] ] ) + 4)
set %. $+ %player2 $calc((%. [ $+ [ %player2 ] ] ) - 1)
unset %yt1 %yt2 %yt3 %bt1 %bt2 %bt3 %yTOT %bTOT %player2
halt
}
if (%bTOT == 18) && (%yTOT != 18) {
timerplay19 1 5 notice $nick (You lose! -1 points)
timerplay20 1 5 notice %player2 (You win the jackpot with the highest throw possible! +4 points)
set %. $+ %player2 $calc((%. [ $+ [ %player2 ] ] ) + 4)
set %. $+ $nick $calc((%. [ $+ [ $nick ] ] ) - 1)
unset %yt1 %yt2 %yt3 %bt1 %bt2 %bt3 %yTOT %bTOT %player2
halt
}
}
;;;;;;;;;;;;;;;
;;;[!STATUS];;;
;;;;;;;;;;;;;;;
on *:TEXT:!status*:#:{
if (%DICEon == 1) && ($TriggerPro($nick,$v2) == $true) && ($chan isin %DICEchan) {
notice $nick (DICE made by koekbliq) (Status:) %DICEstatus (Channels:) ( $+ %DICEchan $+ )
}
elseif (%DICEon == 0) && ($TriggerPro($nick,$v2) == $true) && ($chan isin %DICEchan) {
notice $nick (DICE made by koekbliq) (Status:) %DICEstatus
}
else {
halt
}
}
;;;;;;;;;;;;;;;;;
;;;[!COMMANDS];;;
;;;;;;;;;;;;;;;;;
on *:TEXT:!commands*:#:{
if (%DICEon == 1) && ($TriggerPro($nick,$v2) == $true) && ($chan isin %DICEchan) {
notice $nick (Commands for DICE are !dice, !dice <nickname>, !points, !points <nickname>, !status, !commands)
}
elseif (%DICEon == 0) && ($TriggerPro($nick,$v2) == $true) && ($chan isin %DICEchan) {
notice $nick (Status:) %DICEstatus (Commands for DICE are !dice, !dice <nickname>, !points, !points <nickname>, !status, !commands)
}
else {
halt
}
}
;;;;;;;;;;;;;;;
;;;[!POINTS];;;
;;;;;;;;;;;;;;;
on *:TEXT:!points*:#:{
if (%DICEon == 1) && ($2 ison $chan) && ($TriggerPro($nick,$v2) == $true) && ($chan isin %DICEchan) {
goto points2
}
elseif (%DICEon == 1) && ($TriggerPro($nick,$v2) == $true) && ($chan isin %DICEchan) {
if ($2 == $null) {
goto points1
}
elseif ($2 == $nick) {
goto points1
}
else {
goto huh
}
:points1
timerpoints1 1 1 notice $nick $+ $chr(40) $+ $+ You have %. [ $+ [ $nick ] ] point $+ $chr(40) $+ s $+ $chr(41) $+ ! $+ $+ $chr(41) $+
halt
:points2
timerpoints2 1 1 notice $nick $+ $chr(40) $+ $+ $2 has %. [ $+ [ $2 ] ] point $+ $chr(40) $+ s $+ $chr(41) $+ ! $+ $+ $chr(41) $+
halt
:huh
halt
}
}
;;;;;;;;;;;;;;
;;;;[MENU];;;;
;;;;;;;;;;;;;;
menu channel {
[DICE]
.control:
..on: {
set %DICEon 1
set %dicestatus (3ON)
timerdiceON1 off
timerdiceON2 off
timerdiceON3 off
unset %.diceminu %.dicetimer
DICEchans
}
..on with timer: {
set %DICEon 1
set %dicestatus (3ON)
set %.diceminu $?="How many minutes do you want DICE to be on?"
set %.dicetimer $calc((%. [ $+ [ diceminu ] ] ) * 60)
echo (DICE is now:) %dicestatus (For the next %.diceminu minutes)
timerdiceON1 1 %.dicetimer set %dicestatus (4OFF)
timerdiceON2 1 %.dicetimer echo (DICE is now:) (4OFF) (After %.diceminu minutes of being ON)
timerdiceON4 1 %.dicetimer set %DICEon 0
timerdiceON3 1 %.dicetimer unset %.diceminu %.dicetimer
}
..off: {
set %DICEon 0
set %dicestatus (4OFF)
timerdiceON1 off
timerdiceON2 off
timerdiceON3 off
unset %.diceminu %.dicetimer
DICEchans
}
.channel:
..set: {
set %DICEchan $?="Channel(s)? i.e.: #chan1 #chan2 #chan3 etc:"
DICEchans
}
..set active: {
set %DICEchan $active
DICEchans
}
..unset: {
unset %DICEchan
echo (Channel(s) are now unset) (DICE status:) %dicestatus
}
..show current: {
DICEchans
}
}
;;;;;;;;;;;;;;;;
;;;[ALIASSES];;;
;;;;;;;;;;;;;;;;
alias DICEchans {
if (%DICEchan == $null) {
echo (There are no channels set) (DICE status:) %dicestatus
}
else {
echo (Channel(s): %DICEchan $+ $+ ) (DICE status:) %dicestatus
halt
}
}
alias triggerpro {
if (%triggerpro. [ $+ [ $nick ] $+ . $+ [ $address($1,4) ] $+ . $+ [ $cid ] ] >= 1) || (%trigger. [ $+ [ $nick ] ] == yes) {
$iif(%triggerpro. [ $+ [ $nick ] $+ . $+ [ $address($1,4) ] $+ . $+ [ $cid ] ] isnum 1,notice $nick $+ $chr(40) $+ Flood protection $+ $chr(41) $+ $+ $chr(40) $+ Try again in about 30 seconds $+ $chr(41) $+ $iif(%triggerpro. [ $+ [ $nick ] $+ . $+ [ $address($1,4) ] $+ . $+ [ $cid ] ] == 2, $+ $chr(40) $+ Ignoring !triggers $+ $chr(41) $+ $+ $chr(40) $+ Until you wait for the 30 second period to end $+ $chr(41) $+ ))
inc -u30 %triggerpro. $+ $nick $+ . $+ $address($1,4) $+ . $+ $cid
return $false
}
inc -u30 %triggerpro. $+ $nick $+ . $+ $address($1,4) $+ . $+ $cid
set -u3 %trigger. $+ $nick yes
return $true
}
;END;
Hi koekbliq
This is a wonderful little dice game, I have added to my Bot
Just one thing I was curious about tho, Is there any reason why the whole game system is conducted via private msgs?
I have played the game and looked at the code, and reslise in some instances a private messege would make more sence as to avoid confusion, but the game itself in theory has no need for privacy, its not like its a game that uses cards where you might not want other ppl seeing.
Great dice script tho, definatly one of the most interesting ive used over the years, good one :)
regards
pan
very nice, i had some problems with other dice games like the diceoff commands not working or 2 ppl would ingage a game and not finish and even after unloading the script and taking compleatly out of my bot still said a game was in progress i like this version much much more and the fact that it's not as spammy as the other. Very nice
This is incredibly nice =) The right click commands work, although the ! commands do not. (It is enabled) I have a few other things in remote also, is their a limit to what you have in their? (Somewhat noobish to mirc scripting) Even more noobish question, could those have something to do with it not working properly? I wonder if i do not have the right type of "reader" for that, could mean nothing.