1 # Plugin for the Ruby IRC bot (http://linuxbrit.co.uk/rbot/)
\r
3 # Simple Half-Life 2 (Source Engine) plugin to query online
\r
4 # servers to see if its online and kicking and how many users.
\r
6 # Added 2 seconds timeout to the response. And sockets are now
\r
9 # (c) 2006 Ole Christian Rynning <oc@rynning.no>
\r
10 # Licensed under GPL V2.
\r
14 class HL2Plugin < Plugin
\r
16 A2S_INFO = "\xFF\xFF\xFF\xFF\x54\x53\x6F\x75\x72\x63\x65\x20\x45\x6E\x67\x69\x6E\x65\x20\x51\x75\x65\x72\x79\x00"
\r
20 def a2s_info(addr, port)
\r
21 socket = UDPSocket.new()
\r
22 socket.send(A2S_INFO, 0, addr, port.to_i)
\r
27 response = socket.recvfrom(1400,0)
\r
33 response ? response.first.unpack("iACZ*Z*Z*Z*sCCCaaCCZ*") : nil
\r
36 def help(plugin, topic="")
\r
37 "hl2 'server:port' => show basic information about the given server"
\r
41 addr, port = params[:conn_str].split(':')
\r
43 info = a2s_info(addr, port)
\r
45 m.reply "#{info[3]} is online with #{info[8]}/#{info[9]} players."
\r
47 m.reply "Couldn't connect to #{params[:conn_str]}"
\r
53 plugin = HL2Plugin.new
\r
54 plugin.map 'hl2 :conn_str'
\r