All pastes #948416 Raw Edit

Stuff

public text v1 · immutable
·published 2008-03-19 02:50 UTC
rendered paste body
alias findscrim {
  JOIN #calscrim
  JOIN #findscrim
  ECHO Finding scrim.
  TIMERcalscrim 0 30 MSG #calscrim 4,0[1 DGK 4·1 5v5 4·1 our 4·1 chi 4·1 de_any 4·1 CALm14/1p+ 4]
  TIMERfindscrim 0 30 MSG #findscrim 4,0[1 DGK 4·1 5v5 4·1 our 4·1 chi 4·1 de_any 4·1 CALm14/1p+ 4]
}
alias foundscrim {
  PART #calscrim
  PART #findscrim
  ECHO Scrim found.
  TIMERcalscrim off
  TIMERfindscrim off
}

alias findringer {
  JOIN #findringer
  ECHO Finding ringer.
  TIMERfindringer 0 60 MSG #invitecs 4,0[1 DGK 4·1 Need 1 chi CALm14/1p+ 4]
  TIMERteamDGK 0 120 MSG #teamDGK 4,0[1 DGK 4·1 Need 1 chi CALm14/1p+ 4]
}
alias foundringer {
  PART #findringer
  ECHO Scrim found.
  TIMERfindringer off
  TIMERteamDGK off
}

; private DGK server bot
;   by John "jayKAY" Kater @ #teamDGK (jayKAY20o6@yahoo.com) & (f1sh@live.com)
;
; - Allows users (ones with access) in-game to do RCON commands without using an RCON password
;    -> Users with access have their steamids on seperate lines in rconaccess.txt where this file is.
; - Live server logs are displayed in the window @cs_bot on your mIRC. 
;    -> You can also issue RCON commands in @cs_bot by typing /rcon cmdhere

; Can't see logs? - "It doesn't work!"
;   -> Either nothing is happening in the server, you have the wrong RCON password, 
;      or you need to open port 7131 UDP on your firewall/router.


on *:load:{
  if ($exists($scriptdirrconaccess.txt)) write -c $scriptdirrconaccess.txt
  write $scriptdirrconaccess.txt 
  echo -a Counter-Strike Server Bot (v1.7)
  echo -a $str($chr(160),2) by bunkahumpa (bobby921@gmail.com)
  echo -a $chr(160)
  echo -a - Allows users (ones with access) in-game to do RCON commands without using an RCON password
  echo -a $str($chr(160),5) -> Users with access have their steamids on seperate lines in rconaccess.txt where this file is.
  echo -a - Live server logs are displayed in the window @cs_bot on your mIRC. 
  echo -a $str($chr(160),5) -> You can also issue RCON commands in @cs_bot by typing /rcon cmdhere
  echo -a $chr(160)
  echo -a Can't see logs? - "It doesn't work!"
  echo -a $str($chr(160),5) -> Either nothing is happening in the server, you have the wrong RCON password, 
  echo -a $str($chr(160),8) or you need to open port 7131 UDP on your firewall/router.
  echo -a $chr(160)
  echo -a $chr(160)
  echo -a To get started type /csbot or right-click and select "CS Server Bot"
  if (!$dialog(cs_bot)) dialog -m cs_bot cs_bot
  else dialog -v cs_bot
}

on *:unload:{
  sockclose rconcmd
  sockclose csbot
  .timerchallenge off
  if ($window(@cs_bot)) window -c @cs_bot
  unset %csbot.*
}

menu status,channel,query {
  CS Server Bot
  .Open CS Server Bot:csbot
  .-
  .Saved Server Information:{
    if (!$dialog(cs_bot)) dialog -m cs_bot cs_bot
    else dialog -v cs_bot
  }
  .RCON SteamID Access List:if ($exists($scriptdirrconaccess.txt)) run $scriptdirrconaccess.txt
}

dialog cs_bot {
  title "Server Information"
  size -1 -1 98 49
  option dbu
  text "IP:", 1, 3 2 9 8
  text "Port:", 2, 3 14 14 8
  text "RCON:", 3, 3 26 18 8
  edit %csbot.ip, 4, 33 1 63 10, autohs
  edit %csbot.port, 5, 33 13 29 10
  edit %csbot.rcon, 6, 33 25 63 10, pass autohs
  button "Cancel", 7, 14 38 37 10, cancel
  button "Save", 8, 59 38 37 10
}

on *:dialog:cs_bot:sclick:8:{
  set %csbot.ip $did(cs_bot,4)
  set %csbot.port $did(cs_bot,5)
  set %csbot.rcon $did(cs_bot,6)
  dialog -x cs_bot
}

menu @cs_bot {
  Saved Server Information:{
    if (!$dialog(cs_bot)) dialog -m cs_bot cs_bot
    else dialog -v cs_bot
  }
  RCON SteamID Access List:if ($exists($scriptdirrconaccess.txt)) run $scriptdirrconaccess.txt
  -
  Get RCON Status:rcon status
  -
  Restart Round (1s):rcon sv_restartround 1
  Go live on 3 (lo3):liveonthree
  -
  Restart CS Server Bot:{
    window -c @cs_bot
    csbot
  }
  Close CS Server Bot:{
    sockclose rconcmd
    sockclose csbot
    .timerchallenge off
    window -c @cs_bot
  }
  -
  Clear Window:clear @cs_bot
}

alias csbot {
  if (!$window(@cs_bot)) {
    window -e @cs_bot
    if ($sock(rconcmd)) sockclose rconcmd
    if ($sock(csbot)) sockclose csbot
    if ((!%csbot.ip) || (!%csbot.port) || (!%csbot.rcon)) {
      echo @cs_bot Some required server information is missing. Please correct it in the saved server information dialog.
      if (!$dialog(cs_bot)) dialog -m cs_bot cs_bot
      else dialog -v cs_bot
    }
    else {
      if ($gettok($ipverify($+(%csbot.ip,:,%csbot.port)),1,32) == Valid) {
        set %csbot.first 1
        challengetimer
        .timertimeout -o 1 10 timeout
        echo @cs_bot Assuming your RCON password is correct for the server you can issue rcon commands by typing /rcon cmdhere
        echo @cs_bot $chr(160)
        echo @cs_bot $asctime([HH:nn:ss]) --> Starting CS Server Bot on $+(%csbot.ip,:,%csbot.port,...)
        echo @cs_bot $chr(160)
      }
      else {
        echo @cs_bot That is not a correct IP/Port. Please correct it in the saved server information dialog.
        if (!$dialog(cs_bot)) dialog -m cs_bot cs_bot
        else dialog -v cs_bot
      }
    }
  }
  else window -a @cs_bot
}

alias -l ipverify {
  var %regex = /((?:\d{1,3}\.){3}\d{1,3})((?::|\s)\d{1,5})*$/
  if ($regex(ip,$1,%regex)) {
    var %x = 1
    while (%x <= $gettok($regml(ip,1),0,46)) {
      if ($gettok($regml(ip,1),%x,46) > 255) return Invalid
      inc %x
    }
    if ($prop == ip) return Valid - $regml(ip,1)
    if ($prop == port) {
      if ($regml(ip,2)) {
        if ($right($ifmatch,-1) <= 65535) return Valid - $ifmatch
        else return Invalid
      }
    }
    else return Valid - $iif($regml(ip,2),$regml(ip,1) $+ $regml(ip,2),$regml(ip,1))
  }
  else return Invalid
}

alias -l timeout {
  if (!$sock(csbot).rcvd) {
    if ($window(@cs_bot)) {
      echo @cs_bot $asctime([HH:nn:ss]) --> Server timed out! Is your connection or the server down?
      echo @cs_bot $asctime([HH:nn:ss]) --> Close this window and try again later.
    }
    .timerchallenge off
    if ($sock(csbot)) sockclose csbot
    if ($sock(rconcmd)) sockclose rconcmd
  }
}

on *:exit:{
  nologs %csbot.ip %csbot.port %csbot.challenge %csbot.rcon
  sockclose rconcmd
  sockclose csbot
  .timerchallenge off
}

on *:close:@cs_bot:{
  nologs %csbot.ip %csbot.port %csbot.challenge %csbot.rcon
  sockclose rconcmd
  sockclose csbot
  .timerchallenge off
}

alias -l challengetimer {
  if ($timer(challenge)) .timerchallenge off
  else dochallenge
  .timerchallenge -o 0 300 dochallenge
}

alias -l dochallenge {
  challenge %csbot.ip %csbot.port
  .timerlogs 1 2 logs %csbot.ip %csbot.port %csbot.challenge %csbot.rcon
}

alias -l execcal { rcon exec cal.cfg }
alias -l execserver { rcon exec server.cfg }

alias -l liveonthree {
  execcal
  rcon say Live on three restarts
  .timerRS1 2 1 rcon sv_restartround 1
  .timerRS3 1 4 rcon sv_restartround 3
  .timerLIVE 1 8 rcon say LIVE! GL HF
  ; if you want to display each team's scores at the end of each round remove the semicolon below this comment
  ; it will keep the score for 15 rounds and then when teams switch it will switch the scores to stay accurate
  ; for the next 15 rounds.
  .timersetlive 1 8 csbotlive
}

alias -l csbotlive {
  set %csbot.live 1
  if ($calc(%csbot.ct + %csbot.t) != 15) {
    set %csbot.ct 0
    set %csbot.t 0
  }
  else {
    var %t = %csbot.t, %ct = %csbot.ct
    set %csbot.t %ct
    set %csbot.ct %t
    rcon say CT: %csbot.ct T: %csbot.t
  }
}

alias -l challenge {
  if ($sock(csbot)) sockclose csbot
  sockudp -kn csbot 7131 $1 $2 ÿÿÿÿchallenge rcon
}
alias -l logs {
  var %ip = $1, %port = $2, %challenge = $3, %password = $4-
  ; remove your address from the server in case it's already there (prevents double sending)
  sockudp -kn csbot %ip %port ÿÿÿÿrcon %challenge " $+ %password $+ " logaddress_del $ip 7131
  ; enable server log stuff
  sockudp -kn rconcmd %ip %port ÿÿÿÿrcon %challenge " $+ %password $+ " mp_logmessages 1
  sockudp -kn rconcmd %ip %port ÿÿÿÿrcon %challenge " $+ %password $+ " mp_logfile 1
  ; enable logging
  sockudp -kn rconcmd %ip %port ÿÿÿÿrcon %challenge " $+ %password $+ " log on
  ; set log address
  sockudp -kn csbot 7131 %ip %port ÿÿÿÿrcon %challenge " $+ %password $+ " logaddress_add $ip 7131
}
alias -l nologs {
  var %ip = $1, %port = $2, %challenge = $3, %password = $4-
  sockudp -kn csbot %ip %port ÿÿÿÿrcon %challenge " $+ %password $+ " logaddress_del $ip 7131
  sockclose rconcmd
  sockclose csbot
  .timerchallenge off
}

alias rcon { sockudp -kn rconcmd %csbot.ip %csbot.port ÿÿÿÿrcon %csbot.challenge " $+ %csbot.rcon $+ " $1- }

on *:udpread:rconcmd:{
  if ($sockerr > 0) return
  :nextread
  var %temp | sockread -f %temp
  if ($sockbr == 0) return
  if (%temp == $null) goto nextread
  else {
    if (ÿÿÿÿl isin %temp) var %temp = $right(%temp,-5)
    if (ÿÿÿÿ isin %temp) var %temp = $right(%temp,-4)
    if (%temp == ") var %temp = $null
    if (Log file isin %temp) var %temp = $null
    if (Server logging data to file isin %temp) var %temp = $null
    if (Logging disabled isin %temp) var %temp = $null
    if (Unable to open logfiles under isin %temp) var %temp = $null
    if (Bad challenge. isin %temp) var %temp = $null
    if (Server cvar isin %temp) var %temp = $gettok(%temp,7-,32)
    if (Server say isin %temp) var %temp = Server say $gettok(%temp,7-,32)
    if (%temp) {
      if ($window(@cs_bot)) aline -p @cs_bot $asctime([HH:nn:ss]) RCON: %temp
    }
  }
  goto nextread
}

on *:udpread:csbot:{
  if ($sockerr > 0) return
  :nextread
  var %data | sockread -f %data
  if ($sockbr == 0) return
  if (%data == $null) goto nextread
  else {
    if ($sock(csbot).saddr != %csbot.ip) return
    if (%csbot.first) {
      echo @cs_bot $asctime([HH:nn:ss]) --> CS Server Bot started on $+(%csbot.ip,:,%csbot.port)
      echo @cs_bot $chr(160)
      .timertimeout off
      unset %csbot.first
      rcon status
    }
    if (*"*from*"*"* iswm %data) var %data = $null
    if ($gettok(%data,1,32) == ÿÿÿÿchallenge) {
      set %csbot.challenge $gettok(%data,3,32)
      logs %csbot.ip %csbot.port %csbot.challenge %csbot.rcon
      var %data = $null
      goto nextread
    }
    if (Bad challenge. isin %data) var %data = $null
    if (Couldn't find address in list isin %data) var %data = $null
    if (No addresses added yet isin %data) var %data = $null
    if (ÿÿÿÿldeleting: isin %data) var %data = $null
    if (current: isin %data) var %data = $null
    if (%data == ÿÿÿÿlBad rcon_password.) {
      var %data = $null
      sockclose csbot
      sockclose rconcmd
      .timerchallenge off
      if (%csbot.first) unset %csbot.first
      if ($window(@cs_bot)) aline -p @cs_bot $asctime([HH:nn:ss]) --> Bad RCON Password.
    }
    if ($gettok(%data,1,32) == ÿÿÿÿlog) var %data = $gettok(%data,6-,32)
    if (logaddress isin $gettok(%data,1,32)) var %data = $null
    if ($gettok(%data,1,32) == L) {
      if ($window(cs_bot)) aline -p @cs_bot $asctime([HH:nn:ss]) %data
      var %data = $null
    }
    if ($gettok(%data,1,32) == $+($chr(91),ADMIN,$chr(93))) var %data = $null
    if ($gettok(%data,1,32) == $+($chr(91),META,$chr(93))) var %data = $null
    if ($gettok(%data,1,32) == $+($chr(91),STATSME,$chr(93))) var %data = $null
    if ($gettok(%data,1,32) == ERROR:) var %data = $null
    if ($regex(%data,/"(.*?)(?:<[^>]+>){2}<([^>]*)>"/g)) {
      if ($regex(playernumber,%data,/"(.*?)(?:<[^>]+>){1}<([^>]*)>"/g)) var %playernumber = $left($gettok($regml(playernumber,1),-1,60),-1)
      var %csbot.player = $regml(1)
      var %csbot.team = $regml(2)
      if ($regex(logged,%data,/".*?<\d+><STEAM_(0:[0|1]:\d+)><\w+>"/g)) {
        var %steamid = $regml(logged,1)
        var %say = $gettok(%data,3,34)
        if ($left(%say,1) == -) { 
          var %x = 1
          while (%x <= $lines($scriptdirrconaccess.txt)) {
            if (%steamid == $read($scriptdirrconaccess.txt,%x)) {
              if (%say == -commands) {
                rcon say -rs, -cal, -cevo, -server, -lo3, -notlive, -score, -say <stuff>
                rcon say -findringer/-foundringer, -findscrim/-foundscrim, -pmcs/-pmvent
                rcon say -map <map>, -time, -alltalk, $+($chr(91),1,$chr(124),0,$chr(93)) $+ , -footsteps $+($chr(91),1,$chr(124),0,$chr(93))
                rcon say -info, -steamids, -kick <#userID/name>, -kickt, -kickct
                rcon say -pregame, -voice, -money <amount>
              }
              if (%say == -time) {
                if ($asctime(z) == -4) var %timezone = atlantic
                elseif ($asctime(z) == -5) var %timezone = eastern
                elseif ($asctime(z) == -6) var %timezone = central
                elseif ($asctime(z) == -7) var %timezone = mountain
                elseif ($asctime(z) == -8) var %timezone = pacific
                else var %timezone = other ( $+ $asctime(z) GMT)
                rcon say $asctime(dddd $+ $chr(44) mmmm doo $+ $chr(44) yyyy) - $asctime(h:nn:ssTT) %timezone time
              }
              if (%say == -findringer) {
                findringer
                rcon say Joining #findringer
                rcon say Timer started in #teamDGK
                rcon say Finding Ringer.
              }
              if (%say == -foundringer) {
                foundringer
                rcon say Parting #findringer
                rcon say Timer stopped in #teamDGK
                rcon say Found Ringer.
              }              
              if (%say == -pm * iswm %say) msg $gettok(%say,2-,32) connect 216.246.49.50:27015;password scrimdgk
              if (%say == -alltalk 1) rcon sv_alltalk 1
              if (%say == -alltalk 0) rcon sv_alltalk 0
              if (%say == -findscrim) {
                findscrim
                rcon say Joining #findscrim
                rcon say Joining #calscrim
                rcon say Finding Scrim.
              }
              if (%say == -foundscrim) {
                foundscrim
                rcon say Parting #findscrim
                rcon say Parting #calscrim
                rcon say Found Scrim.
              }
              if (%say == -footsteps 1) rcon mp_footsteps 1
              if (%say == -footsteps 0) rcon mp_footsteps 0
              if (-money * iswm %say) rcon mp_startmoney $gettok(%say,2-,32)
              if (%say == -rs) rcon sv_restartround 1
              if (%say == -cal) execcal
              if (%say == -cevo) rcon exec cevo.cfg
              if (%say == -voice) {
                rcon sv_voicecodec voice_speex
                rcon sv_voicequality 5
              }
              if (%say == -server) execserver
              if (%say == -lo3) liveonthree
              if (%say == -steamids) steamiddotcom
              if (%say == -pregame) {
                rcon mp_maxrounds 0
                rcon mp_startmoney 16000
                rcon mp_footsteps 0
                rcon mp_roundtime 60
                rcon mp_freezetime 0
                rcon sv_restartround 1
                rcon say Pregame config executed
              }
              if (%say == -notlive) {
                if (%csbot.live) {
                  unset %csbot.live
                  unset %csbot.ct
                  unset %csbot.t
                  rcon say Not Live! Score - CT: 0 T: 0
                }
              }
              if (%say == -score) {
                if (%csbot.live) rcon say CT: $iif(!%csbot.ct,0,%csbot.ct) T: $iif(!%csbot.t,0,%csbot.t)
              }
              if (%say == -info) { 
                rcon say Digital Gaming Kings - #teamDGK - Idle and Support
              }
              if (-map * iswm %say) { 
                rcon say Attempting to change map to $gettok(%say,2,32) $+ ...
                rcon changelevel $gettok(%say,2,32)
              }
              if (-say * iswm %say) rcon say $gettok(%say,2-,32)
              if (%say == -kickt) {
                var %y = 1
                while (%y <= $gettok(%csbot.ts,0,255)) {
                  		  rcon say Ts Kicked
                  rcon kick $+($chr(35),$gettok(%csbot.ts,%y,255))
                  inc %y
                }
                unset %csbot.ts
              }
              if (%say == -kickct) {
                var %y = 1
                while (%y <= $gettok(%csbot.cts,0,255)) {
                  		  rcon say CTs Kicked
                  rcon kick $+($chr(35),$gettok(%csbot.cts,%y,255))
                  inc %y
                }
                unset %csbot.cts
              }
              if (-kick * iswm %say) {
                rcon kick $+(",$gettok(%say,2-,32),")
              }
            }
            inc %x
          }
        }
      }
      if (($regml(3)) && ($regml(4))) {
        var %csbot.player2 = $regml(3)
        var %csbot.team2 = $regml(4)
        if (%csbot.team2 == CT) {
          var %csbot.player2 = 12 $+ %csbot.player2
          var %csbot.team2 = 12CT
        }
        if (%csbot.team2 == TERRORIST) {
          var %csbot.player2 = 04 $+ %csbot.player2
          var %csbot.team2 = 4T
        }
      }
      if (%csbot.team == CT) {
        var %csbot.player = 12 $+ %csbot.player
        var %csbot.team = 12CT
      }
      if (%csbot.team == TERRORIST) {
        var %csbot.player = 04 $+ %csbot.player
        var %csbot.team = 4T
      }
      else {
        var %csbot.player = 03 $+ %csbot.player
        var %csbot.team = 3 $+ %csbot.team
      }
    }
  }
  if (say_team isin $gettok(%data,2,34)) var %data = $iif($gettok(%data,$gettok(%data,0,32),32) == (dead),*DEAD*) %csbot.player $+ ( $+ %csbot.team $+ ) 3says (team): $gettok(%data,3,34)
  elseif (say isin $gettok(%data,2,34)) var %data = $iif($gettok(%data,$gettok(%data,0,32),32) == (dead),*DEAD*) %csbot.player $+ ( $+ %csbot.team $+ ) 3says: $gettok(%data,3,34)
  else {
    if (Rcon: "rcon* iswm %data) var %data = $null
    if (%data == ") var %data = $null
    if (Server cvar* iswm %data) var %data = $null
    if (Server say "* iswm %data) var %data = 3Server say: $iif($right($gettok(%data,3-,32),1) != ",$gettok(%data,3-,32) $+ ",$gettok(%data,3-,32))
    if (Log file* iswm %data) var %data = $null
    if (*connected, address "*:*" iswm %data) var %data = %csbot.player 3connected
    if (*STEAM USERID validated iswm %data) var %data = $null
    if (*entered the game iswm %data) var %data = %csbot.player 3entered the game
    if (*disconnected iswm %data) {
      var %data = %csbot.player 3disconnected
      if (%csbot.team == 4T) {
        var %total = $gettok(%csbot.ts,0,255), %x = 1
        if (%total == 1) unset %csbot.ts
        else {
          while (%x <= %total) {
            if ($gettok(%csbot.ts,%x,255) == %playernumber) {
              if (%x == 1) {
                if ($gettok(%csbot.ts,0,255) == 1) unset %csbot.ts
                else set %csbot.ts $gettok(%csbot.ts,2-,255)
              }
              elseif (%x == %total) set %csbot.ts $gettok(%csbot.ts,1- $calc(%total - 1),255)
              else {
                var %low = $calc(%x - 1), %high = $calc(%x + 1)
                set %csbot.ts $gettok(%csbot.ts,1- $+ %low,255) $+ $chr(255) $+ $gettok(%csbot.ts,%high $+ -,255)
              }
              if (%csbot.ts) {
                if ($left(%csbot.ts,1) != $chr(255)) set %csbot.ts $chr(255) $+ %csbot.ts
              }
              inc %x
            }
            else inc %x
          }
        }
        if (!%csbot.ts) {
          unset %csbot.live
          unset %csbot.ct
          unset %csbot.t
        }      
      }
      if (CT isin %csbot.team) {
        var %total = $gettok(%csbot.cts,0,255), %x = 1
        if (%total == 1) unset %csbot.cts
        else {
          while (%x <= %total) {
            if ($gettok(%csbot.cts,%x,255) == %playernumber) {
              if (%x == 1) {
                if ($gettok(%csbot.cts,0,255) == 1) unset %csbot.cts
                else set %csbot.cts $gettok(%csbot.cts,2-,255)
              }
              elseif (%x == %total) set %csbot.cts $gettok(%csbot.cts,1- $calc(%total - 1),255)
              else {
                var %low = $calc(%x - 1), %high = $calc(%x + 1)
                set %csbot.cts $gettok(%csbot.cts,1- $+ %low,255) $+ $chr(255) $+ $gettok(%csbot.cts,%high $+ -,255)
              }
              if (%csbot.cts) {
                if ($left(%csbot.cts,1) != $chr(255)) set %csbot.cts $chr(255) $+ %csbot.cts
              }
              inc %x
            }
            else inc %x
          }
        }
        if (!%csbot.cts) {
          unset %csbot.live
          unset %csbot.ct
          unset %csbot.t
        }
      }
    }
    if (changed name to isin $gettok(%data,2,34)) {
      if (12 isin %csbot.player) var %data = %csbot.player 3changed name to 12 $+ $gettok(%data,3,34)
      if (04 isin %csbot.player) var %data = %csbot.player 3changed name to 04 $+ $gettok(%data,3,34)
    }
    if (%data == World triggered "Round_End") var %data = *** Round Ended ***
    if (%data == World triggered "Round_Start") var %data = *** Round Started ***
    if (Kick: " isin %data) var %data = %csbot.player was kicked by console
    if (triggered "Game_idle_kick" (auto) isin %data) var %data = %csbot.player was auto-kicked for being idle too long
    if (World triggered "Game_Commencing" isin %data) {
      var %data = *** Game Commencing! ***
      if (%csbot.live == 1) {
        unset %csbot.live
        unset %csbot.ct
        unset %csbot.t
      }
    }
    if (Loading map "*" iswm %data) var %data = 03Loading Map: $gettok(%data,3,32)
    if (Started map "*" $chr(40) $+ CRC "*" $+ $chr(41) iswm %data) var %data = 03Started Map: $gettok(%data,3,32)
    if (World triggered "Round_Draw" isin %data) {
      var %data = *** 3Round Draw! 12 $+ $remove($gettok(%data,4-5,32),") 4 $+ $remove($gettok(%data,6-7,32),")
      if (%csbot.live == 1) {
        unset %csbot.live
        unset %csbot.ct
        unset %csbot.t
      }
    }
    var %maxrounds = 15
    if (World triggered "Restart_Round_ isin %data) {
      var %seconds = $gettok($gettok(%data,3,95),1,40)
      if (%seconds == 1) var %secondsword = second
      else var %secondsword = seconds
      var %data = *** 3Restart Round:  $+ %seconds $+  %secondsword
      if (%csbot.live == 1) {
        if ($calc(%csbot.ct + %csbot.t) != %maxrounds) {
          set %csbot.ct 0
          set %csbot.t 0
        }
      }
    }
    if (triggered "Spawned_With_The_Bomb" isin %data) var %data = %csbot.player 3spawned with the Bomb
    if (Team "CT" scored isin %data) var %data = 12CT: $remove($gettok(%data,4,32),")
    if (Team "TERRORIST" scored isin %data) var %data = 4T: $remove($gettok(%data,4,32),")
    if (joined team "CT" isin %data) {
      var %data = %csbot.player 3joined team 12CT
      if (CT !isin %csbot.team) set %csbot.cts $+(%csbot.cts,$chr(255),%playernumber)
      if (%csbot.team == 4T) {
        var %total = $gettok(%csbot.ts,0,255), %x = 1
        if (%total == 1) unset %csbot.ts
        else {
          while (%x <= %total) {
            if ($gettok(%csbot.ts,%x,255) == %playernumber) {
              if (%x == 1) {
                if ($gettok(%csbot.ts,0,255) == 1) unset %csbot.ts
                else set %csbot.ts $gettok(%csbot.ts,2-,255)
              }
              elseif (%x == %total) set %csbot.ts $gettok(%csbot.ts,1- $calc(%total - 1),255)
              else {
                var %low = $calc(%x - 1), %high = $calc(%x + 1)
                set %csbot.ts $gettok(%csbot.ts,1- $+ %low,255) $+ $chr(255) $+ $gettok(%csbot.ts,%high $+ -,255)
              }
              if (%csbot.ts) {
                if ($left(%csbot.ts,1) != $chr(255)) set %csbot.ts $chr(255) $+ %csbot.ts
              }
              inc %x
            }
            else inc %x
          }
        }
      }
    }
    if (joined team "TERRORIST" isin %data) {
      var %data = %csbot.player 3joined team 4T
      if (%csbot.team != 4T) set %csbot.ts $+(%csbot.ts,$chr(255),%playernumber)
      if (CT isin %csbot.team) {
        var %total = $gettok(%csbot.cts,0,255), %x = 1
        if (%total == 1) unset %csbot.cts
        else {
          while (%x <= %total) {
            if ($gettok(%csbot.cts,%x,255) == %playernumber) {
              if (%x == 1) {
                if ($gettok(%csbot.cts,0,255) == 1) unset %csbot.cts
                else set %csbot.cts $gettok(%csbot.cts,2-,255)
              }
              elseif (%x == %total) set %csbot.cts $gettok(%csbot.cts,1- $calc(%total - 1),255)
              else {
                var %low = $calc(%x - 1), %high = $calc(%x + 1)
                set %csbot.cts $gettok(%csbot.cts,1- $+ %low,255) $+ $chr(255) $+ $gettok(%csbot.cts,%high $+ -,255)
              }
              if (%csbot.cts) {
                if ($left(%csbot.cts,1) != $chr(255)) set %csbot.cts $chr(255) $+ %csbot.cts
              }
              inc %x
            }
            else inc %x
          }
        }
      }
    }
    if (joined team "SPECTATOR" isin %data) var %data = %csbot.player joined the spectators
    if (committed suicide with "world" isin %data) var %data = %csbot.player 3typed kill in console
    if (committed suicide with "worldspawn" (world) isin %data) var %data = %csbot.player 3fell and died
    if (committed suicide with "grenade" isin %data) var %data = %csbot.player 3commited suicide with grenade
    if (triggered "Dropped_The_Bomb" isin %data) var %data = %csbot.player 3dropped the bomb
    if (triggered "Got_The_Bomb" isin %data) var %data = %csbot.player 3got the bomb
    if (triggered "Planted_The_Bomb" isin %data) var %data = %csbot.player 3planted the bomb
    if (triggered "Begin_Bomb_Defuse_Without_Kit" isin %data) var %data = %csbot.player 3started defusing the bomb without a kit
    if (triggered "Begin_Bomb_Defuse_With_Kit" isin %data) var %data = %csbot.player 3started defusing the bomb with a kit
    if (triggered "Defused_The_Bomb" isin %data) var %data = %csbot.player 3defused the bomb
    if (Team "TERRORIST" triggered "Target_Bombed" isin %data) {
      var %data = *** 4Terrorists Win: Target Bombed 12 $+ $remove($gettok(%data,5-6,32),") 4 $+ $remove($gettok(%data,7-8,32),")
      if (%csbot.live == 1) {
        inc %csbot.t
        var %rounds = $calc(%csbot.ct + %csbot.t)
        if (%rounds > %maxrounds) var %roundsleft = $calc(%maxrounds * 2 - %rounds)
        else var %roundsleft = $calc(%maxrounds - %rounds)
        if (%rounds == %maxrounds) {
          rcon say End of half score - CT: %csbot.ct T: %csbot.t
          unset %csbot.live
        }
        elseif (%roundsleft == 0) {
          rcon say End of game - Final Score: CT: %csbot.ct T: %csbot.t
          unset %csbot.live
          unset %csbot.ct
          unset %csbot.t
        }
        else rcon say $chr(91) $+ CT: %csbot.ct T: %csbot.t $+ $chr(93) - $chr(91) $+ %roundsleft $iif(%roundsleft == 1,round,rounds) left in the half $+ $chr(93)
      }
    }
    if (Team "TERRORIST" triggered "Terrorists_Win" isin %data) {
      var %data = *** 4Terrorists Win: Eliminated Opponents 12 $+ $remove($gettok(%data,5-6,32),") 4 $+ $remove($gettok(%data,7-8,32),")
      if (%csbot.live == 1) {
        inc %csbot.t
        var %rounds = $calc(%csbot.ct + %csbot.t)
        if (%rounds > %maxrounds) var %roundsleft = $calc(%maxrounds * 2 - %rounds)
        else var %roundsleft = $calc(%maxrounds - %rounds)
        if (%rounds == %maxrounds) {
          rcon say End of half score - CT: %csbot.ct T: %csbot.t
          unset %csbot.live
        }
        elseif (%roundsleft == 0) {
          rcon say End of game - Final Score: CT: %csbot.ct T: %csbot.t
          unset %csbot.live
          unset %csbot.ct
          unset %csbot.t
        }
        else rcon say $chr(91) $+ CT: %csbot.ct T: %csbot.t $+ $chr(93) - $chr(91) $+ %roundsleft $iif(%roundsleft == 1,round,rounds) left in the half $+ $chr(93)
      }
    }
    if (Team "CT" triggered "Target_Saved" isin %data) {
      var %data = *** 12Counter-Terrorists Win: Target Saved 12 $+ $remove($gettok(%data,5-6,32),") 4 $+ $remove($gettok(%data,7-8,32),")
      if (%csbot.live == 1) {
        inc %csbot.ct
        var %rounds = $calc(%csbot.ct + %csbot.t)
        if (%rounds > %maxrounds) var %roundsleft = $calc(%maxrounds * 2 - %rounds)
        else var %roundsleft = $calc(%maxrounds - %rounds)
        if (%rounds == %maxrounds) {
          rcon say End of half score - CT: %csbot.ct T: %csbot.t
          unset %csbot.live
        }
        elseif (%roundsleft == 0) {
          rcon say End of game - Final Score: CT: %csbot.ct T: %csbot.t
          unset %csbot.live
          unset %csbot.ct
          unset %csbot.t
        }
        else rcon say $chr(91) $+ CT: %csbot.ct T: %csbot.t $+ $chr(93) - $chr(91) $+ %roundsleft $iif(%roundsleft == 1,round,rounds) left in the half $+ $chr(93)
      }
    }
    if (Team "CT" triggered "Bomb_Defused" isin %data) {
      var %data = *** 12Counter-Terrorists Win: Bomb Defused 12 $+ $remove($gettok(%data,5-6,32),") 4 $+ $remove($gettok(%data,7-8,32),")
      if (%csbot.live == 1) {
        inc %csbot.ct
        var %rounds = $calc(%csbot.ct + %csbot.t)
        if (%rounds > %maxrounds) var %roundsleft = $calc(%maxrounds * 2 - %rounds)
        else var %roundsleft = $calc(%maxrounds - %rounds)
        if (%rounds == %maxrounds) {
          rcon say End of half score - CT: %csbot.ct T: %csbot.t
          unset %csbot.live
        }
        elseif (%roundsleft == 0) {
          rcon say End of game - Final Score: CT: %csbot.ct T: %csbot.t
          unset %csbot.live
          unset %csbot.ct
          unset %csbot.t
        }
        else rcon say $chr(91) $+ CT: %csbot.ct T: %csbot.t $+ $chr(93) - $chr(91) $+ %roundsleft $iif(%roundsleft == 1,round,rounds) left in the half $+ $chr(93)
      }
    }
    if (Team "CT" triggered "CTs_Win" isin %data) {
      var %data = *** 12Counter-Terrorists Win: Eliminated Opponents 12 $+ $remove($gettok(%data,5-6,32),") 4 $+ $remove($gettok(%data,7-8,32),")
      if (%csbot.live == 1) {
        inc %csbot.ct
        var %rounds = $calc(%csbot.ct + %csbot.t)
        if (%rounds > %maxrounds) var %roundsleft = $calc(%maxrounds * 2 - %rounds)
        else var %roundsleft = $calc(%maxrounds - %rounds)
        if (%rounds == %maxrounds) {
          rcon say End of half score - CT: %csbot.ct T: %csbot.t
          unset %csbot.live
        }
        elseif (%roundsleft == 0) {
          rcon say End of game - Final Score: CT: %csbot.ct T: %csbot.t
          unset %csbot.live
          unset %csbot.ct
          unset %csbot.t
        }
        else rcon say $chr(91) $+ CT: %csbot.ct T: %csbot.t $+ $chr(93) - $chr(91) $+ %roundsleft $iif(%roundsleft == 1,round,rounds) left in the half $+ $chr(93)
      }
    }
    if (triggered "Killed_A_Hostage" isin %data) var %data = %csbot.player 3killed a hostage
    if (triggered "Touched_A_Hostage" isin %data) var %data = %csbot.player 3touched a hostage
    if (triggered "Rescued_A_Hostage" isin %data) var %data = %csbot.player 3rescued a hostage
    if (Team "CT" triggered "All_Hostages_Rescued" isin %data) var %data = *** 12Counter-Terrorists Win: Hostages Rescued 12 $+ $remove($gettok(%data,5-6,32),") 4 $+ $remove($gettok(%data,7-8,32),")
    if (Team "TERRORIST" triggered "Hostages_Not_Rescued" isin %data) var %data = *** 4Terrorists Win: Hostages Not Rescued 12 $+ $remove($gettok(%data,5-6,32),") 4 $+ $remove($gettok(%data,7-8,32),")
    if (Team "TERRORIST" triggered "VIP_Not_Escaped" isin %data) var %data = *** 4Terrorists Win: VIP Didn't Escape 12 $+ $remove($gettok(%data,5-6,32),") 4 $+ $remove($gettok(%data,7-8,32),")
    if (triggered "Became_VIP" isin %data) var %data = %csbot.player 3is the VIP
    if (Team "TERRORIST" triggered "VIP_Assassinated" isin %data) var %data = *** 4Terrorists Win: VIP Assassinated 12 $+ $remove($gettok(%data,5-6,32),") 4 $+ $remove($gettok(%data,7-8,32),")
    if (triggered "Escaped_As_VIP" isin %data) var %data = %csbot.player 3escaped as the VIP
    if (Team "CT" triggered "VIP_Escaped" isin %data) var %data = *** 12Counter-Terrorists Win: VIP Escaped 12 $+ $remove($gettok(%data,5-6,32),") 4 $+ $remove($gettok(%data,7-8,32),")
    if (*attacked*with* iswm %data) var %data = $null
    if (*killed*with* iswm %data) {
      var %player1 = $replace(%csbot.player,$chr(32),$chr(255)), %player2 = $replace(%csbot.player2,$chr(32),$chr(255))
      if ($left(%player1,3) == $+($chr(3),03)) var %player1 = $remove(%player1,$left(%player1,3))
      if ($left(%player2,3) == $+($chr(3),03)) var %player2 = $remove(%player2,$left(%player2,3))
      if ($left(%player1,3) != $left(%player2,3)) var %data = %csbot.player 3killed %csbot.player2 3with $remove($gettok(%data,$numtok(%data,32),32),")
      else var %data = %csbot.player 3killed their teammate %csbot.player2 3with $remove($gettok(%data,$numtok(%data,32),32),")
    }
  }
  if (%data != $null) {
    if ($window(@cs_bot)) aline -p @cs_bot $asctime([HH:nn:ss]) %data
  }
  goto nextread
}

alias -l steamiddotcom {
  sockclose steamiddotcom
  sockopen steamiddotcom www.steamid.com 80
}

on *:sockopen:steamiddotcom:{
  var %data = $+(addr=,%csbot.ip,:,%csbot.port,&rcon=,%csbot.rcon,&announceflag=1)
  sockwrite -n $sockname POST /rcon.php HTTP/1.1
  sockwrite -n $sockname Host: www.steamid.com
  sockwrite -n $sockname User-Agent: mIRC $version
  sockwrite -n $sockname Content-Type: application/x-www-form-urlencoded
  sockwrite -n $sockname Content-Length: $len(%data)
  sockwrite -n $sockname
  sockwrite -n $sockname %data
}

alias nohtml {
  var %parsed, %regex = $regsub($1-,m~([^<]*>|<[^>]+>|<[^>]*)|(&nbsp;)~g,$chr(32),%parsed)
  return %parsed
}