Skip to content
TG007 community snippet #141

Dice Game with Stats by newklear

2 Player Dice Roll Game Commands: !dice !ds or !ds nickname

By Snippets Added Dec 6, 2023
General IRC All snippets
mIRC script 102 lines
About this snippet

Overview

2 Player Dice Roll Game

Commands:
!dice
!ds or !ds nickname
Source code

mIRC script

102 lines · 5,237 characters
on *:TEXT:!ds*:#: {
  if (%dicestats. [ $+ [ $address($nick,2) ] ] >= 10) { halt }
  if (%dicestats. [ $+ [ $address($nick,2) ] ] == 8) { notice $nick You have one more !ds use within a 5 minute period }
  inc -u300 %dicestats. [ $+ [ $address($nick,2) ] ] 1
  if (!$2) {
    if ($readini($mircdir $+ $chan $+ .ini,DiceRolls, $nick)) {
      var %dicerolls $readini($mircdir $+ $chan $+ .ini,DiceRolls, $nick)
      var %dicewins $readini($mircdir $+ $chan $+ .ini,DiceWins, $nick)
      var %diceave $round($calc(%dicewins / %dicerolls * 100),2)
      .msg $chan $nick $+ 's Win Average is: %diceave $+ % with $iif(!%dicewins,0,%dicewins) wins out of %dicerolls dice rolls.
      halt
    }
    else { .msg $chan No Dice Roll record for you $nick $+ , type !dice | halt }
  }
  if ($readini($mircdir $+ $chan $+ .ini,DiceRolls, $2)) {
    var %dicerolls $readini($mircdir $+ $chan $+ .ini,DiceRolls, $2)
    var %dicewins $readini($mircdir $+ $chan $+ .ini,DiceWins, $2)
    var %diceave $round($calc(%dicewins / %dicerolls * 100),2)
    .msg $chan $2 $+ 's Win Average is: %diceave $+ % with $iif(!%dicewins,0,%dicewins) wins out of %dicerolls dice rolls.
  }
  else { .msg $chan No Dice Roll record for $2 $+ , $nick maybe ask $2 to use !dice ? }
}

on *:TEXT:!dice*:#: {
  if (%dice. [ $+ [ $address($nick,2) ] ] == 1) { .msg $chan $nick I am still waiting for your Arch Enemy too roll | inc -u30 %dice. [ $+ [ $address($nick,2) ] ] 1 | halt }
  if (%firstroll == yes) { goto secondroll }
  if (%floodd. [ $+ [ $address($nick,2) ] ] >= 10) { halt }
  if (%floodd. [ $+ [ $address($nick,2) ] ] == 8) { .notice $nick You have one more !dice roll within a 5 minute period }
  set -u30 %dice. [ $+ [ $address($nick,2) ] ] 1
  inc -u300 %floodd. [ $+ [ $address($nick,2) ] ] 1
  set -u30 %firstroll yes
  set -u30 %1st.nick $nick
  set -u30 %1stroll.1st.nick $r(1,6)
  set -u30 %2ndroll.1st.nick $r(1,6)
  set -u30 %1st.nick.result $calc(%1stroll.1st.nick + %2ndroll.1st.nick)
  .msg $chan %1st.nick rolls a %1stroll.1st.nick + %2ndroll.1st.nick == %1st.nick.result
  .timerroll 1 1 msg $chan Who is up to challenge %1st.nick $+ 's Dice roll of %1st.nick.result ? You have 30 seconds!
  .timerdiceend 1 30 msg $chan No one wanted too challenge $nick :/
  .timerrollend1 1 30 unset %firstroll | .timerrollend2 1 30 unset %dice*
  halt
  :secondroll
  set -u30 %2nd.nick $nick
  set -u30 %1stroll.2nd.nick $r(1,6)
  set -u30 %2ndroll.2nd.nick $r(1,6)
  set -u30 %2nd.nick.result $calc(%1stroll.2nd.nick + %2ndroll.2nd.nick)
  .msg $chan %2nd.nick rolls a %1stroll.2nd.nick + %2ndroll.2nd.nick == %2nd.nick.result

  if (%1st.nick.result == %2nd.nick.result) { 
    set %dicerolls1 $readini($mircdir $+ $chan $+ .ini,DiceRolls, %1st.nick)
    set %dicerolls2 $readini($mircdir $+ $chan $+ .ini,DiceRolls, %2nd.nick)
    if (%dicerolls1 >= 1) && (%dicerolls2 >= 1) {
      inc %dicerolls1 1
      inc %dicerolls2 1
      writeini -n $mircdir $+ $chan $+ .ini DiceRolls %1st.nick %dicerolls1
      .msg $chan It is a DRAW!, try again ;) 
      writeini -n $mircdir $+ $chan $+ .ini DiceRolls %2nd.nick %dicerolls2
      goto finishroll 
    }
  }
  .timerrolll 1 1 msg $chan $iif(%1st.nick.result > %2nd.nick.result,%1st.nick wins with %1st.nick.result against %2nd.nick.result,%2nd.nick wins with %2nd.nick.result against %1st.nick.result)
  if (%1st.nick.result > %2nd.nick.result) {
    set %dicerolls1 $readini($mircdir $+ $chan $+ .ini,DiceRolls, %1st.nick)
    if (%dicerolls1 >= 1) {
      set %dicewins $readini($mircdir $+ $chan $+ .ini,DiceWins, %1st.nick)
      set %dicerolls2 $readini($mircdir $+ $chan $+ .ini,DiceRolls, %2nd.nick)
      inc %dicewins 1
      inc %dicerolls1 1
      inc %dicerolls2 1
      writeini -n $mircdir $+ $chan $+ .ini DiceWins %1st.nick %dicewins
      writeini -n $mircdir $+ $chan $+ .ini DiceRolls %1st.nick %dicerolls1
      writeini -n $mircdir $+ $chan $+ .ini DiceRolls %2nd.nick %dicerolls2
      goto finishroll
    }
    writeini -n $mircdir $+ $chan $+ .ini DiceWins %1st.nick 1
    writeini -n $mircdir $+ $chan $+ .ini DiceRolls %1st.nick 1
    writeini -n $mircdir $+ $chan $+ .ini DiceRolls %2nd.nick 1
    goto finishroll
  }
  if (%2nd.nick.result > %1st.nick.result) {
    set %dicerolls1 $readini($mircdir $+ $chan $+ .ini,DiceRolls, %2nd.nick)
    if (%dicerolls1 >= 1) {
      set %dicewins $readini($mircdir $+ $chan $+ .ini,DiceWins, %2nd.nick)
      set %dicerolls2 $readini($mircdir $+ $chan $+ .ini,DiceRolls, %1st.nick)
      inc %dicewins 1
      inc %dicerolls1 1
      inc %dicerolls2 1
      writeini -n $mircdir $+ $chan $+ .ini DiceWins %2nd.nick %dicewins
      writeini -n $mircdir $+ $chan $+ .ini DiceRolls %2nd.nick %dicerolls1
      writeini -n $mircdir $+ $chan $+ .ini DiceRolls %1st.nick %dicerolls2
      goto finishroll
    }
    writeini -n $mircdir $+ $chan $+ .ini DiceWins %2nd.nick 1
    writeini -n $mircdir $+ $chan $+ .ini DiceRolls %2nd.nick 1
    writeini -n $mircdir $+ $chan $+ .ini DiceRolls %1st.nick 1
    goto finishroll
  }
  :finishroll
  .msg $chan Dice roll challenge has ended!
  .timerdiceend off
  unset %firstroll
  unset %dice*
}
Community

Comments

Want to join the discussion? Sign in to TG007.
No comments yet. Start the discussion.