【问题标题】:mIRC Blackjack Timeout ScriptmIRC 二十一点超时脚本
【发布时间】:2015-11-15 23:57:00
【问题描述】:

我在 mIRC 上有一堆二十一点游戏脚本的代码。 一切都运行良好,但是当用户开始玩二十一点游戏时,在该游戏结束之前没有其他人可以玩。

我想知道是否有人可以帮我编写代码,以便我可以在每个操作之间给用户一个 45 秒的计时器;如果超时,脚本将重置,打开脚本供其他用户播放。这将使正在使用的游戏失效。

游戏代码如下。

;BLACKJACK
on *:TEXT:!blackjack*:#vegas:{
  if (%bj == on) {
/msg $chan 10Blackjack is already in progress. Please wait your turn.
halt
  }
if ( %hs [ $+ [ $nick ] ] != $null ) /notice $nick 10 $+ $nick $+ , you have a game in progress!!!
if ( %hs [ $+ [ $nick ] ] == $null ) {
if ( $2 == $null ) /notice $nick 10Please enter amount you want to bet. ex. !blackjack 20
if ($readini( casino.ini, $nick, Money ) == $null ) /notice $nick 10 $+ $nick is not yet registered.  Type !atm
if ( $readini( casino.ini, $nick, Money ) < $2 ) /notice $nick 10You don't have that much money...try something lower!
if ( $readini( casino.ini, $nick, Money ) >= $2 ) {
  if ( $2 < 1 ) {
    /notice $nick 10Please bet more than 1 dollar.
    halt
  }
  if ( $2 > 0 ) {

    /set %bj on

    /set %bet [ $+ [ $nick ] ] $2

    /bjdeal

    /msg $chan 10 $+ $nick bet $2 dollars on a hand of blackjack

    /var %cch = $rand(1,4)

    if ( %cch == 1) /msg $chan 10 $+ $nick $+ 's hand: 4,0 %hcard1 [ $+ [ $nick ] ]  4,0 %hcard2 [ $+ [ $nick ] ] 

    if ( %cch == 2) /msg $chan 10 $+ $nick $+ 's hand: 4,0 %hcard1 [ $+ [ $nick ] ]  1,0 %hcard2 [ $+ [ $nick ] ] 

    if ( %cch == 3) /msg $chan 10 $+ $nick $+ 's hand: 1,0 %hcard1 [ $+ [ $nick ] ]  4,0 %hcard2 [ $+ [ $nick ] ] 

        if ( %cch == 4) /msg $chan 10 $+ $nick $+ 's hand: 1,0 %hcard1 [ $+ [ $nick ] ]  1,0 %hcard2 [ $+ [ $nick ] ] 

    if (( %hcard1 [ $+ [ $nick ] ] == A ) && ( %hcard2 [ $+ [ $nick ] ] == A )) {
      /set %addh [ $+ [ $nick ] ] 12
      /set %aceh [ $+ [ $nick ] ] 0
    }
    if (( %hcard1 [ $+ [ $nick ] ] == A ) || ( %hcard2 [ $+ [ $nick ] ] == A )) { /set %aceh [ $+ [ $nick ] ] 0 }
    /set %ccc [ $+ [ $nick ] ] $rand(1,2)
    if ( %ccc [ $+ [ $nick ] ] == 1) /msg $chan 10Dealer's hand: 4,0 %ccard1 [ $+ [ $nick ] ]  12,0 ? 
    if ( %ccc [ $+ [ $nick ] ] == 2) /msg $chan 10Dealer's hand: 1,0 %ccard1 [ $+ [ $nick ] ]  12,0 ? 
    if ( %addh [ $+ [ $nick ] ] == 21 ) {
      /set %bj [ $+ [ $nick ] ] $calc( $2 / 2 )
      /set %bj [ $+ [ $nick ] ] $calc( %bj [ $+ [ $nick ] ] + $2 )
      /msg $chan 4Blackjack!! $nick has won %bj [ $+ [ $nick ] ] dollars!!
      /set %bj.temp $calc( $readini( casino.ini, $nick, Money ) + %bj [ $+ [ $nick ] ] )
      /writeini casino.ini $nick Money %bj.temp
      /unset %bj.temp
      /unset %hs [ $+ [ $nick ] ]
      /unset %bet [ $+ [ $nick ] ]
      /unset %addh [ $+ [ $nick ] ]
      /unset %addc [ $+ [ $nick ] ]
      /unset %hcard1 [ $+ [ $nick ] ]
      /unset %hcard2 [ $+ [ $nick ] ]
      /unset %ccard1 [ $+ [ $nick ] ]
      /unset %ccard2 [ $+ [ $nick ] ]
      /unset %hcard3 [ $+ [ $nick ] ]
      /unset %ccard3 [ $+ [ $nick ] ]
      /unset %bj [ $+ [ $nick ] ]
      /unset %aceh [ $+ [ $nick ] ] 
      /unset %double [ $+ [ $nick ] ]
      /unset %bj
      /halt
    }
    if ( %addh [ $+ [ $nick ] ] != 21 ) {
      set %double [ $+ [ $nick ] ] $calc( %bet [ $+ [ $nick ] ] * 2)
      if ( $readini( casino.ini, $nick, Money ) >= %double [ $+ [ $nick ] ] ) {
        /msg $chan 10 Hit Stand or Double?
        /set %d [ $+ [ $nick ] ] 0
        /set %hs [ $+ [ $nick ] ] 0
        /halt
      }
      if ( $readini( casino.ini, $nick, Money ) < %double [ $+ [ $nick       ]     ] ) 
{
            /msg $chan 10 Hit or Stand?
        /set %hs [ $+ [ $nick ] ] 0
        /halt
      }
    }
  }
    }
  }
}

【问题讨论】:

    标签: mirc


    【解决方案1】:

    执行此操作的一种方法是启动timer,它会在 X 时间过去后取消设置您的变量。例如:

    on *:TEXT:!blackjack*:#vegas:{
     if ($timer(blackjack)) {
        ; the timer exists so a game is already in progress
      }
      else {
        ; start the timer
        startblackjacktimer        
        ; put your code here
        
      }
    }
     alias startblackjacktimer {
      ; change 45 to amount of seconds
      ; this alias will start a timer to call 'resetblackjack'
      .timerblackjack 1 45 resetblackjack
     }
    alias resetblackjack {
     ; do your variable reset here
    }
    

    对于他们可以执行的每个命令,您必须通过再次触发 startblackjack 别名来重新启动计时器。

    如果您还有其他问题,请随时提出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-19
      • 2021-05-29
      • 1970-01-01
      • 1970-01-01
      • 2014-08-23
      • 1970-01-01
      • 2012-01-03
      • 2011-11-09
      相关资源
      最近更新 更多