All pastes #993910 Raw Edit

Cod4 Server Query

public text v1 · immutable
#993910 ·published 2008-04-22 23:10 UTC
rendered paste body
alias abcd { echo -b asd: $readini($shortfn($scriptdir $+ replace.ini),n,maps,mp_shipment) }

;// Text Event //
on *:text:*:#:{

  ;// If Found An Ip:Port //
  if ($regex($1-,\b(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,6})\b) > 0) {
    ;--Check If sock still in use
    if ($sock(cod_q) != $null) { halt }
    else {
      ;--Set up Socket
      .timercod 1 3 sockclose cod_q
      sockudp -k cod_q $gettok($regml(1),1,58) $gettok($regml(1),2,58) $chr(255) $+ $chr(255) $+ $chr(255) $+ $chr(255) $+ getstatus
      sockmark cod_q $chan
    }
  }
}

;// Replace Colors //
alias -l cod_rc { return $replace($1,^1,4,^2,3,^3,8,^4,12,^5,11,^6,13,^7,15,^0,1) }


;// Tokenize //
alias -l cod_t { return $gettok($1, $calc($findtok($1, $2, 1, 92) + 1), 92) }


;// Read Response For Server //
on *:udpread:cod_q:{

  ;// Check for Socket Error //
  if ($sockerr > 0) { sockclose cod_g | halt }

  ;// Set Vars for read and line number //
  var %temp, %line

  ;// Read Socket //
  :nextread
  sockread %temp
  %temp = $cod_rc(%temp)

  ;// Stop after Reading //
  if ($sockbr == 0) { 
    var %cc = %line - 2, %ch = $sock($sockname).mark, %ip = $sock($sockname).ip, %pt = $sock($sockname).port
    sockmark $sockname
    sockclose $sockname
    var %msg = 7 $+ %gn $+ 2(10 $+ %vr $+ 2) 12Server1: " $+ %sn $+ 1" (14 $+ %ip $+ : $+ %pt $+ 1) 12Map1: $&
      "5 $+ %mp $+ 1(3 $+ %gt $+ 1)" 2Players1:7 %cc $+ / $+ %mc $+ 1(14 $+ %pc $+ 1) 2PunkBuster1:7 %pb $&
      2Voice Chat1:7 %vo 2Password1:7 %pw 2Modded1:7 %md  

    if (c isincs $chan(%ch).mode) { msg %ch $strip(%msg) }
    else { msg %ch %msg }
    ;echo %msg
    halt 
  }
  inc %line 1

  ;// Skip the status response //
  if (%line == 1) { goto nextread }

  ;// Get Server Info //
  if (%line == 2) {
    var %gt = $cod_t(%temp,g_gametype)
    %gt = $iif($readini($shortfn($scriptdir $+ replace.ini),n,gametypes,%gt) != $null, $v1, %gt)
    var %gn = $cod_t(%temp,gamename)
    if (%gn != Call of Duty 4) { sockclose $sockname | halt }
    var %mp = $cod_t(%temp,mapname)
    %mp = $iif($readini($shortfn($scriptdir $+ replace.ini),n,maps,%mp) != $null, $v1, %mp)
    var %vr = $cod_t(%temp,shortversion), %sn = $cod_t(%temp,sv_hostname), %mc = $cod_t(%temp,sv_maxclients)
    var %pc = $cod_t(%temp,sv_privateClients), %pb = $iif($cod_t(%temp,sv_punkbuster) == 1, On, Off)
    var %vo = $iif($cod_t(%temp,sv_voice) == 1, On, Off), %pw = $iif($cod_t(%temp,pswrd) == 1, On, Off), %md = $iif($cod_t(%temp,mod) == 1, Yes, No)
  }
  ;echo %temp
  goto nextread
}