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 Name / 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, ,$null,>,>,<,<)
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
}
}
}