Gametiger script
Posted by Parasite-FT-
Sunday, March 21, 2004
Description: queries gametiger for stuff


;; Gametiger.com script

;; Text event for @gametiger
; usage: @gametiger <player|server|map|address> <query>
on *:text:@gametiger *:#: {
  inc -u30 %gametiger. [ $+ [ $nick ] ]
  if ((%gametiger. [ $+ [ $nick ] ] > 3) || ($var(%gametiger.*,0) > 4)) return
  ; To notice user instead of channel: gametiger $nick $nick $3 $2 all
  ; To search only within counterstrike: gametiger $nick $chan $3 $2 cstrike
  gametiger $nick $chan $3 $2 all
}

;; Open gametiger connection / returns information about a socket
; usage: /gametiger <nick> <target> <query> <query type> <game>
; usage: $gametiger(<socket name>,[item]).target|.query|.type|.game|.ticks
alias gametiger {
  if ($isid) {
    if ($2) return $hget($sockname,$2)
    var %proptoks = target query type game ticks
    return $gettok($sock($1).mark,$findtok(%proptoks,$prop,1,32),32)
  }
  sockclose $+(gametiger.,$1)
  sockopen $+(gametiger.,$1) www.gametiger.com 80
  ; store sockmark as <target> <query> <type> <game> <ticks>
  sockmark $+(gametiger.,$1) $2 $3 $4 $5 $ticks
}

;; Sends data to the user or channel
; usage: /gametiger.send <socket name> <text>
alias gametiger.send {
  if (#* iswm $gametiger($1).target) msg $gametiger($1).target $2-
  else notice $gametiger($1).target $2-
}

;; Closes gametiger connection
; usage :/gametiger.close <socket name>
alias gametiger.close {
  if ($1) hfree $1
  sockclose $1
}

;; Filters out html tags
; usage: $nohtml(<html text>)
alias nohtml {
  var %tmp, %ignore = $regsub($1-,/(<[^>]+>)/g,$chr(32),%tmp)
  return %tmp
}

;; [gametiger] ------- Sockopen event
on *:sockopen:gametiger.*:{
  var %url = $+(/search?sType=,$lower($gametiger($sockname).type),&,$lower($gametiger($sockname).type),=,$gametiger($sockname).query,&submitButton=,$gametiger($sockname).type,+Search&count=50&game=,$gametiger($sockname).game)
  sockwrite -n $sockname GET %url HTTP/1.1
  sockwrite -n $sockname Host: www.gametiger.com
  sockwrite -n $sockname Connection: close
  sockwrite -n $sockname User-Agent: gametiger query script
  sockwrite -n $sockname
}

;; [gametiger] ------- Sockread event
on *:sockread:gametiger.*:{
  if ($sockerr > 0) return
  var %temp
  sockread %temp
  if (*Server&nbsp;Name&nbsp;/&nbsp;Details* iswm $nohtml(%temp)) hinc -m $sockname total
  elseif ($gametiger($sockname,total)) {

    ; close if more than 3 matches
    if ($ifmatch > 3) {
      var %url = $+(www.gametiger.com/search?sType=,$lower($gametiger($sockname).type),&,$lower($gametiger($sockname).type),=,$gametiger($sockname).query,&submitButton=,$gametiger($sockname).type,+Search&count=50&game=,$gametiger($sockname).game)
      gametiger.send $sockname More than 3 matches returned (for more results: %url $+ )
      gametiger.close $sockname
    }

    ; close if less than 3 matches
    elseif ($nohtml(%temp) == $chr(9)) {
      gametiger.send $sockname $gametiger($1,total) results found
      gametiger.close $sockname
    }

    ; parse and display results
    elseif ($nohtml(%temp)) {
      hinc $sockname total
      var %regex = $regsub(%temp,/(<[^>]+>)+/g,$chr(9),%temp)
      %temp = $replace(%temp,&nbsp;,$null,&gt;,>,&lt;,<)
      if ($numtok(%temp,9) == 1) { gametiger.send $sockname No results found | gametiger.close $sockname | return }
      if ($gametiger($sockname).type == Player) var %results = [^B]Name:[^B] $gettok(%temp,1,9) [^B]Server:[^B] $gettok(%temp,2,9) $&
        [^B]IP/Port:[^B] $gettok(%temp,3,9) [^B]Game:[^B] $gettok(%temp,4,9) [^B]Map:[^B] $gettok(%temp,5,9) [^B]Clients:[^B] $gettok(%temp,6,9)
      else var %results = [^B]Server:[^B] $gettok(%temp,1,9) [^B]IP/Port:[^B] $gettok(%temp,2,9) $&
        [^B]Game:[^B] $gettok(%temp,3,9) [^B]Map:[^B] $gettok(%temp,4,9) [^B]Clients:[^B] $gettok(%temp,5,9)
      gametiger.send $sockname %results
    }
  }
}

Help
Posted by krazie
Monday, March 22, 2004 03:39pm PST
Seem not workin
Submit a comment
Oops! You need to login or register before you can post a comment!

ebaum's world