Class: S2A_INFO2_Packet
- Inherits:
-
Object
- Object
- S2A_INFO2_Packet
- Includes:
- S2A_INFO_BasePacket
- Defined in:
- lib/steam/packets/s2a_info2_packet.rb
Overview
This class represents a S2A_INFO_DETAILED response packet sent by a Source or GoldSrc server
Out-of-date (before 10/24/2008) GoldSrc servers use an older format (see S2A_INFO_DETAILED_Packet).
Constant Summary collapse
- EDF_GAME_ID =
0x01
- EDF_GAME_PORT =
0x80
- EDF_SERVER_ID =
0x10
- EDF_SERVER_TAGS =
0x20
- EDF_SOURCE_TV =
0x40
Constants included from SteamPacket
SteamPacket::A2M_GET_SERVERS_BATCH2_HEADER, SteamPacket::A2S_INFO_HEADER, SteamPacket::A2S_PLAYER_HEADER, SteamPacket::A2S_RULES_HEADER, SteamPacket::A2S_SERVERQUERY_GETCHALLENGE_HEADER, SteamPacket::C2M_CHECKMD5_HEADER, SteamPacket::M2A_SERVER_BATCH_HEADER, SteamPacket::M2C_ISVALIDMD5_HEADER, SteamPacket::M2S_REQUESTRESTART_HEADER, SteamPacket::RCON_GOLDSRC_CHALLENGE_HEADER, SteamPacket::RCON_GOLDSRC_NO_CHALLENGE_HEADER, SteamPacket::RCON_GOLDSRC_RESPONSE_HEADER, SteamPacket::S2A_INFO2_HEADER, SteamPacket::S2A_INFO_DETAILED_HEADER, SteamPacket::S2A_LOGSTRING_HEADER, SteamPacket::S2A_PLAYER_HEADER, SteamPacket::S2A_RULES_HEADER, SteamPacket::S2C_CHALLENGE_HEADER, SteamPacket::S2C_CONNREJECT_HEADER, SteamPacket::S2M_HEARTBEAT2_HEADER
Instance Method Summary collapse
-
#initialize(data) ⇒ S2A_INFO2_Packet
constructor
Creates a new S2A_INFO2 response object based on the given data.
Methods included from S2A_INFO_BasePacket
Methods included from SteamPacket
Constructor Details
#initialize(data) ⇒ S2A_INFO2_Packet
Creates a new S2A_INFO2 response object based on the given data
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/steam/packets/s2a_info2_packet.rb', line 30 def initialize(data) super S2A_INFO2_HEADER, data info.merge!({ :protocol_version => @content_data.byte, :server_name => @content_data.cstring, :map_name => @content_data.cstring, :game_directory => @content_data.cstring, :game_description => @content_data.cstring, :app_id => @content_data.short, :number_of_players => @content_data.byte, :max_players => @content_data.byte, :number_of_bots => @content_data.byte, :dedicated => @content_data.byte.chr, :operating_system => @content_data.byte.chr, :password_needed => @content_data.byte == 1, :secure => @content_data.byte == 1, :game_version => @content_data.cstring }) if @content_data.remaining > 0 extra_data_flag = @content_data.byte if extra_data_flag & EDF_GAME_PORT != 0 info[:server_port] = @content_data.short end if extra_data_flag & EDF_SERVER_ID != 0 info[:server_id] = @content_data.long | (@content_data.long << 32) end if extra_data_flag & EDF_SOURCE_TV != 0 info[:tv_port] = @content_data.short info[:tv_name] = @content_data.cstring end if extra_data_flag & EDF_SERVER_TAGS != 0 info[:server_tags] = @content_data.cstring end if extra_data_flag & EDF_GAME_ID != 0 info[:game_id] = @content_data.long | (@content_data.long << 32) end end end |