This is the new home of the egghelp.org community forum.
All data has been migrated (including user logins/passwords) to a new phpBB version.


For more information, see this announcement post. Click the X in the top right-corner of this box to dismiss this message.

game-monitor.com Player Search

Requests for complete scripts or modifications/fixes for scripts you didn't write. Response not guaranteed, and no thread bumping!
Post Reply
I
ICE
Voice
Posts: 2
Joined: Sun Mar 09, 2008 1:20 am

game-monitor.com Player Search

Post by ICE »

Hey guys!

Love the site it helped me a huge amount!

I have found a script that searches servers on game-monitor.com. I was wondering if someone could help me modify it to do a player search, as I'n not so good with this side of things.

For example "!player Bob" and it returns the server and names for all those players with the name bob.

The script is below :)

Code: Select all


# Settings

# Bind key? Default: !ip
set game(trigger) "!player"

# Get-url timeout. Recommed to keep this as default
set game(timeout) "60000"
	

#########################################################
## Don't edit below unless you know what you're doing. ##
#########################################################

bind pub - $::game(trigger) lookup


proc lookup {nick uhost hand chan arg} {
	global game
	# Check if $arg exists
	if {![regexp -- {^(.+?):(.+?)$} $arg]} { putmsg $chan "Right format is: $::game(trigger) IP"; return }
	# Set formdata
	set formdata [::http::formatQuery search $arg type server]
	# Going to url
	::http::config -useragent "Mozilla/4.0"
	if {[catch {set tok [::http::geturl http://www.game-monitor.com/search.php?$formdata -timeout $::game(timeout)]} error]} {
		putlog "Error trying connect to url: $error"
		return 1
	}
	if {[::http::ncode $tok] != 200} {
		putlog "Error connecting to url: [::http::code $tok]"
		::http::cleanup $tok
		return 1
	}
	# Went to url, setting data
	set data [::http::data $tok]
	# Cleaning
	::http::cleanup $tok
	# Regex time
	foreach "- title players map gamename" [regexp -all -inline -expanded -- {
		<tr\sclass="search_result.+?		# find the part where the info is
		/GameServer/.+?/GameServer/.+?>(.+?)<.+?	# server name
		<tr\sclass="search_result.+?		# jump to the next part
		color=.+?(\d+?/\d+?)[^0-9].+?			# players
		<a\shref="/MapSearch/.+?>(.+?)<.+?	# map name
		title="(.+?)"				# game name
		} $data] {
		lappend matches [list $title $players $map $gamename]
	}
	# Shout the result
	if {![info exists matches]} {
		putmsg $chan "Did not find anything for $arg"
		return 1
	} else {
		foreach match [lrange $matches 0 2] {
			foreach  "title players map gamename" $match {
				putmsg $chan "\002Title\002: [join $title] \002Map\002: [join $map] \002Players\002: [join $players]"
			}
		}
		if {[llength $matches] > 3} {
			putmsg $chan "Found [expr "[llength $matches] - 3"] more match(es) but I'm not gonna show them to you :P"
		}
	}
}
Image
Australian Strike Soldiers (A$$) clan-ass.com
User avatar
speechles
Revered One
Posts: 1398
Joined: Sat Aug 26, 2006 10:19 pm
Location: emerald triangle, california (coastal redwoods)

Post by speechles »

simply change this part of the script

Code: Select all

set formdata [::http::formatQuery search $arg type server] 
to look like this

Code: Select all

set formdata [::http::formatQuery search $arg type player] 
and remove this line completely or comment it out with #

Code: Select all

   if {![regexp -- {^(.+?):(.+?)$} $arg]} { putmsg $chan "Right format is: $::game(trigger) IP"; return } 
that big ol long inline regexp and the foreach giving the output need to be adjusted as well.. this is just some help to get you going in the right direction.
I
ICE
Voice
Posts: 2
Joined: Sun Mar 09, 2008 1:20 am

Post by ICE »

Ah thanks ! :)
Image
Australian Strike Soldiers (A$$) clan-ass.com
Post Reply