Code: Select all
menu channel {
   .start monitor : servermonitor $$?="Enter a server ip:" $$?="Enter the server port: (default 27910)" $$?="Enter name of Team 1: (one word)" $$?="Enter name of Team 2: (one word)"
  .stop monitor : servermonitor off
  .set channel : relaychan $$?="Enter channel where the Server Monitor has to give the scores:"
  .set autorelay on/off : autorelaytoggle
  .set trigger : monitortrigger $$?="Enter the trigger:"
}
alias monitortrigger {
  if $1 == $null {
    break
  }
  set %monitortrigger $1
}
alias relaychan {
  if %relaychan == $null {
    break
  }
  set %relaychan $1
  echo Set the Autorelay channel to: $1
}
alias autorelaytoggle {
  set %autorelay
  if %autorelay == 1 {
    set %autorelay 0
    echo Turned Autorelay Off
    break
  }
  set %autorelay 1
  echo Turned Autorelay On
}
on *:udpread:AQ2Server: {
  var %temp
  var %aq2token
  set %scorerequest 0
  sockread %temp
  if $left(%temp, 1) == \ {
    ;finding the mapname
    %aq2token = $findtok(%temp,mapname,1,92)
    inc %aq2token
    %map = $gettok(%temp,%aq2token,92)
    ;finding the hostname
    %aq2token = $findtok(%temp,hostname,1,92)
    inc %aq2token
    %svhost = $gettok(%temp,%aq2token,92)
    ; team 1 score
    %aq2token = $findtok(%temp,t1,1,92)
    inc %aq2token
    %score1 = $gettok(%temp,%aq2token,92)
    ; team 2 score
    %aq2token = $findtok(%temp,t2,1,92)
    inc %aq2token
    %score2 = $gettok(%temp,%aq2token,92)
    ; team 3 score
    %aq2token = $findtok(%temp,t3,1,92)
    inc %aq2token
    %score3 = $gettok(%temp,%aq2token,92)
    set %mapname %map
    set %hostname %svhost
    set %team1score %score1
    set %team2score %score2
    set %team3score %score3
  }
}
on 1:text:!showscores:*: {
  if %servermonitor == 1 {
    if %scorerequest == 0 {
      timerscorerequest 1 30 set %scorerequest 0
      set %scorerequest 1
      serverstatus
    }
  }
}
alias aq2socktimeout {
  timertimeout off
  sockclose AQ2Server
}
alias servermonitor {
  if $1 == $null {
    echo Usage: servermonitor [ip] [port] [team1name] [team2name] [team3name]
    break
  }
  elseif $1 == off {
    echo Shutting Server Monitor Down
    .timerservermonitor off
    set %servermonitor 0
    unset %serverip
    unset %serverport
    unset %mapname
    unset %hostname
    unset %team1score
    unset %team2score
    unset %team3score
    unset %team1name
    unset %team2name
    unset %team3name
    unset %3teams
    unset %prevmap
    unset %prevt1s
    unset %prevt2s
    unset %prevt3s
  }
  else {
    set %servermonitor 1
    set %serverip $1
    if $2 != $NULL {
      set %serverport $2
    }
    else {
      set %serverport 27910
    }
    if $3 != $NULL {
      set %team1name $3
    }
    else {
      set %team1name Team 1
    }
    if $4 != $NULL {
      set %team2name $4
    }
    else {
      set %team2name Team 2
    }
    if $5 != $NULL {
      set %team3name $3
      set %3teams 1
    }
    else {
      set %team3name Team 3
      set %3teams 0
    }
    echo Activating Server Monitor for server: %serverip $+ : $+ %serverport
    checkaq2server
    .timerservermonitor 0 5 checkaq2server
  }
}
alias checkaq2server {
  set %scorechanged 0
  sockudp -k AQ2Server %serverip %serverport ÿÿÿÿ $+ status
  .timertimeout 1 1 aq2socktimeout
  if %prevmap == %mapname {
    if %team1score != %prevt1s {
      set %prevt1s %team1score
      set %scorechanged 1
    }
    if %team2score != %prevt2s {
      set %prevt2s %team2score
      set %scorechanged 1
    }
  }
  else {
    set %prevmap %mapname
    set %prevt1s %team1score
    set %prevt2s %team2score
    set %scorechanged 1
  }
  if %autorelay == 1 {
    autorelayresults %relaychan
  }
}
alias serverstatus {
  if %servermonitor == 1 {
    if %3teams != 1 {
      msg $chan Score between %team1name and %team2name is %team1score - %team2score at %mapname
    }
    else {
      say On server %hostname ( $+ %serverip $+ : $+ %serverport $+ ), the score for the match %team1name vs %team2name vs %team3name is %team1score - %team2score - %team3score on %mapname
    }
  }
}
alias autorelayresults {
  if %relaychan == $null {
    break
  }
  if %scorechanged == 1 {
    msg %relaychan Score between %team1name and %team2name is %team1score - %team2score at %mapname
    set %scorechanged 0
  }
}
!server ip:port
!team1 name
!team2 name
!start/!stop
this scripts idea is to tell a live score from q2 server to irc
if someone could help me i will be very happy =)... and keep up the good work guys
