tf2_line_parser 0.2.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +60 -51
- data/lib/tf2_line_parser/events/airshot.rb +24 -5
- data/lib/tf2_line_parser/events/assist.rb +4 -0
- data/lib/tf2_line_parser/events/capture_block.rb +3 -3
- data/lib/tf2_line_parser/events/charge_deployed.rb +3 -3
- data/lib/tf2_line_parser/events/chat.rb +14 -3
- data/lib/tf2_line_parser/events/connect.rb +3 -3
- data/lib/tf2_line_parser/events/damage.rb +23 -5
- data/lib/tf2_line_parser/events/disconnect.rb +3 -3
- data/lib/tf2_line_parser/events/domination.rb +4 -0
- data/lib/tf2_line_parser/events/event.rb +112 -5
- data/lib/tf2_line_parser/events/headshot_damage.rb +4 -5
- data/lib/tf2_line_parser/events/heal.rb +4 -5
- data/lib/tf2_line_parser/events/kill.rb +4 -5
- data/lib/tf2_line_parser/events/medic_death.rb +4 -5
- data/lib/tf2_line_parser/events/pickup_item.rb +4 -0
- data/lib/tf2_line_parser/events/player_action_event.rb +3 -3
- data/lib/tf2_line_parser/events/pvp_event.rb +4 -5
- data/lib/tf2_line_parser/events/rcon_command.rb +24 -0
- data/lib/tf2_line_parser/events/revenge.rb +4 -0
- data/lib/tf2_line_parser/events/role_change.rb +4 -0
- data/lib/tf2_line_parser/events/spawn.rb +4 -0
- data/lib/tf2_line_parser/events/suicide.rb +4 -0
- data/lib/tf2_line_parser/player.rb +3 -2
- data/lib/tf2_line_parser/version.rb +1 -1
- data/spec/fixtures/logs/broder_vs_epsilon.log +1 -0
- data/spec/lib/tf2_line_parser/parser_spec.rb +102 -47
- data/spec/lib/tf2_line_parser/player_spec.rb +2 -2
- data/spec/spec_helper.rb +2 -3
- data/tf2_line_parser.gemspec +4 -3
- metadata +28 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 01e322507f92ef5ebd648bf65a7412a916e3a84b118c58bb322edcee2539f85e
|
4
|
+
data.tar.gz: f1af28f6e5cc32f7579e80f73eb353cb4406c3902ae72ecb8fd13f4cf20c2a23
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2e66e19141bb1109c3c35ea0cd993f5b67c7a688f1022e31595aae187a038c2aee6618d0a2b51b5988e99eede992710ba1426730674b80bf41da9162882806a
|
7
|
+
data.tar.gz: 67d849993089b15ff95af89cabd3fe680d49afcc4640a5a8b245bd9dfdc3d7ddedbe5a24de88fae73acc27998329c41b27e66c86a45570bec0f4df1c85f328d7
|
data/Gemfile.lock
CHANGED
@@ -1,74 +1,83 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
tf2_line_parser (0.2.
|
4
|
+
tf2_line_parser (0.2.3)
|
5
5
|
activesupport
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
|
-
activesupport (
|
11
|
-
|
10
|
+
activesupport (8.0.2)
|
11
|
+
base64
|
12
|
+
benchmark (>= 0.3)
|
13
|
+
bigdecimal
|
14
|
+
concurrent-ruby (~> 1.0, >= 1.3.1)
|
15
|
+
connection_pool (>= 2.2.5)
|
16
|
+
drb
|
12
17
|
i18n (>= 1.6, < 2)
|
18
|
+
logger (>= 1.4.2)
|
13
19
|
minitest (>= 5.1)
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
20
|
+
securerandom (>= 0.3)
|
21
|
+
tzinfo (~> 2.0, >= 2.0.5)
|
22
|
+
uri (>= 0.13.1)
|
23
|
+
base64 (0.3.0)
|
24
|
+
benchmark (0.4.1)
|
25
|
+
bigdecimal (3.2.2)
|
26
|
+
concurrent-ruby (1.3.5)
|
27
|
+
connection_pool (2.5.3)
|
28
|
+
coveralls_reborn (0.29.0)
|
29
|
+
simplecov (~> 0.22.0)
|
30
|
+
term-ansicolor (~> 1.7)
|
31
|
+
thor (~> 1.2)
|
32
|
+
tins (~> 1.32)
|
33
|
+
diff-lcs (1.6.2)
|
34
|
+
docile (1.4.1)
|
35
|
+
drb (2.2.3)
|
36
|
+
i18n (1.14.7)
|
27
37
|
concurrent-ruby (~> 1.0)
|
28
|
-
json (2.
|
29
|
-
|
30
|
-
minitest (5.
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
rspec (3.5
|
38
|
-
rspec-core (~> 3.5.0)
|
39
|
-
rspec-expectations (~> 3.5.0)
|
40
|
-
rspec-mocks (~> 3.5.0)
|
41
|
-
rspec-core (3.5.4)
|
42
|
-
rspec-support (~> 3.5.0)
|
43
|
-
rspec-expectations (3.5.0)
|
38
|
+
json (2.12.2)
|
39
|
+
logger (1.7.0)
|
40
|
+
minitest (5.25.5)
|
41
|
+
rspec (3.13.1)
|
42
|
+
rspec-core (~> 3.13.0)
|
43
|
+
rspec-expectations (~> 3.13.0)
|
44
|
+
rspec-mocks (~> 3.13.0)
|
45
|
+
rspec-core (3.13.4)
|
46
|
+
rspec-support (~> 3.13.0)
|
47
|
+
rspec-expectations (3.13.5)
|
44
48
|
diff-lcs (>= 1.2.0, < 2.0)
|
45
|
-
rspec-support (~> 3.
|
46
|
-
rspec-mocks (3.5
|
49
|
+
rspec-support (~> 3.13.0)
|
50
|
+
rspec-mocks (3.13.5)
|
47
51
|
diff-lcs (>= 1.2.0, < 2.0)
|
48
|
-
rspec-support (~> 3.
|
49
|
-
rspec-support (3.
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
simplecov-html (~> 0.
|
54
|
-
|
55
|
-
|
56
|
-
|
52
|
+
rspec-support (~> 3.13.0)
|
53
|
+
rspec-support (3.13.4)
|
54
|
+
securerandom (0.4.1)
|
55
|
+
simplecov (0.22.0)
|
56
|
+
docile (~> 1.1)
|
57
|
+
simplecov-html (~> 0.11)
|
58
|
+
simplecov_json_formatter (~> 0.1)
|
59
|
+
simplecov-html (0.13.1)
|
60
|
+
simplecov_json_formatter (0.1.4)
|
61
|
+
sync (0.5.0)
|
62
|
+
term-ansicolor (1.11.2)
|
57
63
|
tins (~> 1.0)
|
58
|
-
thor (
|
59
|
-
tins (1.
|
60
|
-
|
64
|
+
thor (1.3.2)
|
65
|
+
tins (1.38.0)
|
66
|
+
bigdecimal
|
67
|
+
sync
|
68
|
+
tzinfo (2.0.6)
|
61
69
|
concurrent-ruby (~> 1.0)
|
62
|
-
|
70
|
+
uri (1.0.3)
|
63
71
|
|
64
72
|
PLATFORMS
|
65
73
|
ruby
|
66
74
|
|
67
75
|
DEPENDENCIES
|
68
|
-
|
69
|
-
|
70
|
-
rspec
|
76
|
+
coveralls_reborn
|
77
|
+
json
|
78
|
+
rspec
|
79
|
+
simplecov
|
71
80
|
tf2_line_parser!
|
72
81
|
|
73
82
|
BUNDLED WITH
|
74
|
-
|
83
|
+
2.3.16
|
@@ -12,14 +12,33 @@ module TF2LineParser
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def self.attributes
|
15
|
-
@attributes ||= %i[time
|
16
|
-
target_team value weapon airshot]
|
15
|
+
@attributes ||= %i[time player_section target_section weapon airshot]
|
17
16
|
end
|
18
17
|
|
19
|
-
def
|
18
|
+
def self.regex_results(matched_line)
|
19
|
+
time = matched_line['time']
|
20
|
+
player_section = matched_line['player_section']
|
21
|
+
target_section = matched_line['target_section']
|
22
|
+
value = matched_line['value']
|
23
|
+
weapon = matched_line['weapon']
|
24
|
+
airshot = matched_line['airshot']
|
25
|
+
|
26
|
+
# Parse player section
|
27
|
+
player_name, player_uid, player_steamid, player_team = parse_player_section(player_section)
|
28
|
+
|
29
|
+
# Parse target section if present
|
30
|
+
target_name, target_uid, target_steamid, target_team = nil, nil, nil, nil
|
31
|
+
if target_section
|
32
|
+
target_name, target_uid, target_steamid, target_team = parse_target_section(target_section)
|
33
|
+
end
|
34
|
+
|
35
|
+
[time, player_name, player_uid, player_steamid, player_team, target_name, target_uid, target_steamid, target_team, value, weapon, airshot]
|
36
|
+
end
|
37
|
+
|
38
|
+
def initialize(time, player_name, player_uid, player_steamid, player_team, target_name, target_uid, target_steamid, target_team, value, weapon, airshot)
|
20
39
|
@time = parse_time(time)
|
21
|
-
@player = Player.new(player_name, player_steamid, player_team)
|
22
|
-
@target = Player.new(target_name, target_steamid, target_team) if target_name
|
40
|
+
@player = Player.new(player_name, player_uid, player_steamid, player_team)
|
41
|
+
@target = Player.new(target_name, target_uid, target_steamid, target_team) if target_name
|
23
42
|
@value = value.to_i
|
24
43
|
@weapon = weapon
|
25
44
|
@airshot = (airshot.to_i == 1)
|
@@ -8,12 +8,12 @@ module TF2LineParser
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def self.attributes
|
11
|
-
@attributes ||= %i[time
|
11
|
+
@attributes ||= %i[time player_section cp_number cp_name]
|
12
12
|
end
|
13
13
|
|
14
|
-
def initialize(time, player_name, player_steam_id, player_team, cap_number, cap_name)
|
14
|
+
def initialize(time, player_name, player_uid, player_steam_id, player_team, cap_number, cap_name)
|
15
15
|
@time = parse_time(time)
|
16
|
-
@player = Player.new(player_name, player_steam_id, player_team)
|
16
|
+
@player = Player.new(player_name, player_uid, player_steam_id, player_team)
|
17
17
|
@cap_number = cap_number
|
18
18
|
@cap_name = cap_name
|
19
19
|
end
|
@@ -8,12 +8,12 @@ module TF2LineParser
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def self.attributes
|
11
|
-
@attributes ||= %i[time
|
11
|
+
@attributes ||= %i[time player_section]
|
12
12
|
end
|
13
13
|
|
14
|
-
def initialize(time, name, steam_id, team)
|
14
|
+
def initialize(time, name, uid, steam_id, team)
|
15
15
|
@time = parse_time(time)
|
16
|
-
@player = Player.new(name, steam_id, team)
|
16
|
+
@player = Player.new(name, uid, steam_id, team)
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
@@ -3,14 +3,25 @@
|
|
3
3
|
module TF2LineParser
|
4
4
|
module Events
|
5
5
|
class Chat < Event
|
6
|
-
def initialize(time, player_name, player_steam_id, player_team, message)
|
6
|
+
def initialize(time, player_name, player_uid, player_steam_id, player_team, message)
|
7
7
|
@time = parse_time(time)
|
8
|
-
@player = Player.new(player_name, player_steam_id, player_team)
|
8
|
+
@player = Player.new(player_name, player_uid, player_steam_id, player_team)
|
9
9
|
@message = message
|
10
10
|
end
|
11
11
|
|
12
12
|
def self.attributes
|
13
|
-
@attributes ||= %i[time
|
13
|
+
@attributes ||= %i[time player_section message]
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.regex_results(matched_line)
|
17
|
+
time = matched_line['time']
|
18
|
+
player_section = matched_line['player_section']
|
19
|
+
message = matched_line['message']
|
20
|
+
|
21
|
+
# Parse player section
|
22
|
+
player_name, player_uid, player_steamid, player_team = parse_player_section(player_section)
|
23
|
+
|
24
|
+
[time, player_name, player_uid, player_steamid, player_team, message]
|
14
25
|
end
|
15
26
|
end
|
16
27
|
|
@@ -3,14 +3,14 @@
|
|
3
3
|
module TF2LineParser
|
4
4
|
module Events
|
5
5
|
class Connect < Event
|
6
|
-
def initialize(time, player_name, player_steam_id, player_team, message)
|
6
|
+
def initialize(time, player_name, player_uid, player_steam_id, player_team, message)
|
7
7
|
@time = parse_time(time)
|
8
|
-
@player = Player.new(player_name, player_steam_id, player_team)
|
8
|
+
@player = Player.new(player_name, player_uid, player_steam_id, player_team)
|
9
9
|
@message = message
|
10
10
|
end
|
11
11
|
|
12
12
|
def self.attributes
|
13
|
-
@attributes ||= %i[time
|
13
|
+
@attributes ||= %i[time player_section message]
|
14
14
|
end
|
15
15
|
|
16
16
|
def self.regex
|
@@ -20,14 +20,32 @@ module TF2LineParser
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def self.attributes
|
23
|
-
@attributes ||= %i[time
|
24
|
-
target_team value weapon]
|
23
|
+
@attributes ||= %i[time player_section target_section value weapon]
|
25
24
|
end
|
26
25
|
|
27
|
-
def
|
26
|
+
def self.regex_results(matched_line)
|
27
|
+
time = matched_line['time']
|
28
|
+
player_section = matched_line['player_section']
|
29
|
+
target_section = matched_line['target_section']
|
30
|
+
value = matched_line['value']
|
31
|
+
weapon = matched_line['weapon']
|
32
|
+
|
33
|
+
# Parse player section
|
34
|
+
player_name, player_uid, player_steamid, player_team = parse_player_section(player_section)
|
35
|
+
|
36
|
+
# Parse target section if present
|
37
|
+
target_name, target_uid, target_steamid, target_team = nil, nil, nil, nil
|
38
|
+
if target_section
|
39
|
+
target_name, target_uid, target_steamid, target_team = parse_target_section(target_section)
|
40
|
+
end
|
41
|
+
|
42
|
+
[time, player_name, player_uid, player_steamid, player_team, target_name, target_uid, target_steamid, target_team, value, weapon]
|
43
|
+
end
|
44
|
+
|
45
|
+
def initialize(time, player_name, player_uid, player_steamid, player_team, target_name, target_uid, target_steamid, target_team, value, weapon)
|
28
46
|
@time = parse_time(time)
|
29
|
-
@player = Player.new(player_name, player_steamid, player_team)
|
30
|
-
@target = Player.new(target_name, target_steamid, target_team) if target_name
|
47
|
+
@player = Player.new(player_name, player_uid, player_steamid, player_team)
|
48
|
+
@target = Player.new(target_name, target_uid, target_steamid, target_team) if target_name
|
31
49
|
@value = value.to_i
|
32
50
|
@weapon = weapon
|
33
51
|
end
|
@@ -3,14 +3,14 @@
|
|
3
3
|
module TF2LineParser
|
4
4
|
module Events
|
5
5
|
class Disconnect < Event
|
6
|
-
def initialize(time, player_name, player_steam_id, player_team, message)
|
6
|
+
def initialize(time, player_name, player_uid, player_steam_id, player_team, message)
|
7
7
|
@time = parse_time(time)
|
8
|
-
@player = Player.new(player_name, player_steam_id, player_team)
|
8
|
+
@player = Player.new(player_name, player_uid, player_steam_id, player_team)
|
9
9
|
@message = message
|
10
10
|
end
|
11
11
|
|
12
12
|
def self.attributes
|
13
|
-
@attributes ||= %i[time
|
13
|
+
@attributes ||= %i[time player_section message]
|
14
14
|
end
|
15
15
|
|
16
16
|
def self.regex
|
@@ -15,11 +15,11 @@ module TF2LineParser
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def self.regex_player
|
18
|
-
@regex_player ||=
|
18
|
+
@regex_player ||= /"(?<player_section>.*?)"/
|
19
19
|
end
|
20
20
|
|
21
21
|
def self.regex_target
|
22
|
-
@regex_target ||=
|
22
|
+
@regex_target ||= /"(?<target_section>.*?)"/
|
23
23
|
end
|
24
24
|
|
25
25
|
def self.regex_cap
|
@@ -38,19 +38,126 @@ module TF2LineParser
|
|
38
38
|
# ordered by how common the messages are
|
39
39
|
@types ||= [Damage, Heal, PickupItem, Assist, Kill, CaptureBlock, PointCapture, ChargeDeployed,
|
40
40
|
MedicDeath, RoleChange, Spawn, Airshot, HeadshotDamage, Suicide, Say, TeamSay, Domination, Revenge, RoundWin, CurrentScore,
|
41
|
-
RoundLength, RoundStart, Connect, Disconnect, ConsoleSay, MatchEnd, FinalScore,
|
41
|
+
RoundLength, RoundStart, Connect, Disconnect, RconCommand, ConsoleSay, MatchEnd, FinalScore,
|
42
42
|
RoundStalemate, Unknown].freeze
|
43
43
|
end
|
44
44
|
|
45
45
|
def self.regex_results(matched_line)
|
46
|
-
|
47
|
-
|
46
|
+
out = []
|
47
|
+
attributes.each do |attribute|
|
48
|
+
case attribute
|
49
|
+
when :player_section
|
50
|
+
if matched_line['player_section']
|
51
|
+
out.concat(parse_player_section(matched_line['player_section']))
|
52
|
+
else
|
53
|
+
out.concat([nil, nil, nil, nil])
|
54
|
+
end
|
55
|
+
when :target_section
|
56
|
+
if matched_line['target_section']
|
57
|
+
out.concat(parse_target_section(matched_line['target_section']))
|
58
|
+
else
|
59
|
+
out.concat([nil, nil, nil, nil])
|
60
|
+
end
|
61
|
+
else
|
62
|
+
out << matched_line[attribute]
|
63
|
+
end
|
48
64
|
end
|
65
|
+
out
|
49
66
|
end
|
50
67
|
|
51
68
|
def parse_time(time_string)
|
52
69
|
Time.strptime(time_string, Event.time_format)
|
53
70
|
end
|
71
|
+
|
72
|
+
def self.parse_player_section(section)
|
73
|
+
return [nil, nil, nil, nil] unless section
|
74
|
+
|
75
|
+
# Find all <...> groups in the section
|
76
|
+
parts = section.scan(/<([^>]*)>/)
|
77
|
+
return [nil, nil, nil, nil] if parts.length < 2
|
78
|
+
|
79
|
+
# For the cheeky name tests, we need to find the last complete set of uid/steamid/team
|
80
|
+
# Look for the pattern: <uid><steamid><team> at the end
|
81
|
+
if parts.length >= 3
|
82
|
+
# Try to find the last complete set of 3 groups
|
83
|
+
# Start from the end and work backwards
|
84
|
+
last_valid_set = nil
|
85
|
+
(parts.length - 2).downto(0) do |i|
|
86
|
+
if i + 2 < parts.length
|
87
|
+
uid = parts[i][0]
|
88
|
+
steamid = parts[i + 1][0]
|
89
|
+
team = parts[i + 2][0]
|
90
|
+
|
91
|
+
# Check if this looks like a valid set (uid is numeric, steamid looks like steam id, team is valid)
|
92
|
+
if uid.match?(/^\d+$/) && (steamid.start_with?('STEAM_') || steamid.start_with?('[U:')) && ['Red', 'Blue', 'Unassigned', 'Spectator', ''].include?(team)
|
93
|
+
# This looks like a valid player info set
|
94
|
+
last_valid_set = [i, uid, steamid, team]
|
95
|
+
break # Take the last (rightmost) valid set
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
if last_valid_set
|
101
|
+
i, uid, steamid, team = last_valid_set
|
102
|
+
# The name is everything before the first <...> group of this set
|
103
|
+
uid_start = section.index("<#{uid}>")
|
104
|
+
if uid_start
|
105
|
+
name = section[0...uid_start]
|
106
|
+
return [name, uid, steamid, team]
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
# Handle cases with 2 or 3 groups (normal case)
|
112
|
+
if parts.length == 2
|
113
|
+
# Only uid and steamid, no team
|
114
|
+
uid = parts[0][0]
|
115
|
+
steamid = parts[1][0]
|
116
|
+
team = ""
|
117
|
+
else
|
118
|
+
# uid, steamid, and team
|
119
|
+
uid = parts[-3][0]
|
120
|
+
steamid = parts[-2][0]
|
121
|
+
team = parts[-1][0]
|
122
|
+
end
|
123
|
+
|
124
|
+
# The name is everything before the first <...> group
|
125
|
+
name_end = section.index("<#{uid}>")
|
126
|
+
return [nil, nil, nil, nil] unless name_end
|
127
|
+
|
128
|
+
name = section[0...name_end]
|
129
|
+
|
130
|
+
[name, uid, steamid, team]
|
131
|
+
end
|
132
|
+
|
133
|
+
def self.parse_target_section(section)
|
134
|
+
return [nil, nil, nil, nil] unless section
|
135
|
+
|
136
|
+
# Same logic as player but for targets
|
137
|
+
parts = section.scan(/<([^>]*)>/)
|
138
|
+
return [nil, nil, nil, nil] if parts.length < 2
|
139
|
+
|
140
|
+
# Handle cases with 2 or 3 groups
|
141
|
+
if parts.length == 2
|
142
|
+
# Only uid and steamid, no team
|
143
|
+
uid = parts[0][0]
|
144
|
+
steamid = parts[1][0]
|
145
|
+
team = ""
|
146
|
+
else
|
147
|
+
# uid, steamid, and team
|
148
|
+
uid = parts[-3][0]
|
149
|
+
steamid = parts[-2][0]
|
150
|
+
team = parts[-1][0]
|
151
|
+
end
|
152
|
+
|
153
|
+
# The name is everything before the first <...> group
|
154
|
+
name_end = section.index("<#{uid}>")
|
155
|
+
return [nil, nil, nil, nil] unless name_end
|
156
|
+
|
157
|
+
name = section[0...name_end]
|
158
|
+
|
159
|
+
[name, uid, steamid, team]
|
160
|
+
end
|
54
161
|
end
|
55
162
|
end
|
56
163
|
end
|
@@ -12,14 +12,13 @@ module TF2LineParser
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def self.attributes
|
15
|
-
@attributes ||= %i[time
|
16
|
-
target_team value weapon]
|
15
|
+
@attributes ||= %i[time player_section target_section value weapon]
|
17
16
|
end
|
18
17
|
|
19
|
-
def initialize(time, player_name, player_steamid, player_team, target_name, target_steamid, target_team, value, weapon)
|
18
|
+
def initialize(time, player_name, player_uid, player_steamid, player_team, target_name, target_uid, target_steamid, target_team, value, weapon)
|
20
19
|
@time = parse_time(time)
|
21
|
-
@player = Player.new(player_name, player_steamid, player_team)
|
22
|
-
@target = Player.new(target_name, target_steamid, target_team) if target_name
|
20
|
+
@player = Player.new(player_name, player_uid, player_steamid, player_team)
|
21
|
+
@target = Player.new(target_name, target_uid, target_steamid, target_team) if target_name
|
23
22
|
@value = value.to_i
|
24
23
|
@weapon = weapon
|
25
24
|
end
|
@@ -8,14 +8,13 @@ module TF2LineParser
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def self.attributes
|
11
|
-
@attributes ||= %i[time
|
12
|
-
target_team value]
|
11
|
+
@attributes ||= %i[time player_section target_section value]
|
13
12
|
end
|
14
13
|
|
15
|
-
def initialize(time, player_name, player_steam_id, player_team, target_name, target_steam_id, target_team, value)
|
14
|
+
def initialize(time, player_name, player_uid, player_steam_id, player_team, target_name, target_uid, target_steam_id, target_team, value)
|
16
15
|
@time = parse_time(time)
|
17
|
-
@player = Player.new(player_name, player_steam_id, player_team)
|
18
|
-
@target = Player.new(target_name, target_steam_id, target_team)
|
16
|
+
@player = Player.new(player_name, player_uid, player_steam_id, player_team)
|
17
|
+
@target = Player.new(target_name, target_uid, target_steam_id, target_team)
|
19
18
|
@value = value.to_i
|
20
19
|
end
|
21
20
|
end
|
@@ -16,14 +16,13 @@ module TF2LineParser
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def self.attributes
|
19
|
-
@attributes ||= %i[time
|
20
|
-
target_team weapon customkill]
|
19
|
+
@attributes ||= %i[time player_section target_section weapon customkill]
|
21
20
|
end
|
22
21
|
|
23
|
-
def initialize(time, player_name, player_steam_id, player_team, target_name, target_steam_id, target_team, weapon, customkill)
|
22
|
+
def initialize(time, player_name, player_uid, player_steam_id, player_team, target_name, target_uid, target_steam_id, target_team, weapon, customkill)
|
24
23
|
@time = parse_time(time)
|
25
|
-
@player = Player.new(player_name, player_steam_id, player_team)
|
26
|
-
@target = Player.new(target_name, target_steam_id, target_team)
|
24
|
+
@player = Player.new(player_name, player_uid, player_steam_id, player_team)
|
25
|
+
@target = Player.new(target_name, target_uid, target_steam_id, target_team)
|
27
26
|
@weapon = weapon
|
28
27
|
@customkill = customkill
|
29
28
|
end
|
@@ -12,14 +12,13 @@ module TF2LineParser
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def self.attributes
|
15
|
-
@attributes ||= %i[time
|
16
|
-
target_team healing ubercharge]
|
15
|
+
@attributes ||= %i[time player_section target_section healing ubercharge]
|
17
16
|
end
|
18
17
|
|
19
|
-
def initialize(time, player_name, player_steam_id, player_team, target_name, target_steam_id, target_team, healing, ubercharge)
|
18
|
+
def initialize(time, player_name, player_uid, player_steam_id, player_team, target_name, target_uid, target_steam_id, target_team, healing, ubercharge)
|
20
19
|
@time = parse_time(time)
|
21
|
-
@player = Player.new(player_name, player_steam_id, player_team)
|
22
|
-
@target = Player.new(target_name, target_steam_id, target_team)
|
20
|
+
@player = Player.new(player_name, player_uid, player_steam_id, player_team)
|
21
|
+
@target = Player.new(target_name, target_uid, target_steam_id, target_team)
|
23
22
|
@healing = healing.to_i
|
24
23
|
@ubercharge = (ubercharge == '1')
|
25
24
|
end
|
@@ -8,12 +8,12 @@ module TF2LineParser
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def self.attributes
|
11
|
-
@attributes ||= [:time, :
|
11
|
+
@attributes ||= [:time, :player_section, :item]
|
12
12
|
end
|
13
13
|
|
14
|
-
def initialize(time, player_name, player_steam_id, player_team, item = self.class.item)
|
14
|
+
def initialize(time, player_name, player_uid, player_steam_id, player_team, item = self.class.item)
|
15
15
|
@time = parse_time(time)
|
16
|
-
@player = Player.new(player_name, player_steam_id, player_team)
|
16
|
+
@player = Player.new(player_name, player_uid, player_steam_id, player_team)
|
17
17
|
instance_variable_set("@#{self.class.item}", item)
|
18
18
|
end
|
19
19
|
end
|
@@ -4,14 +4,13 @@ module TF2LineParser
|
|
4
4
|
module Events
|
5
5
|
class PVPEvent < Event
|
6
6
|
def self.attributes
|
7
|
-
@attributes ||= %i[time
|
8
|
-
target_team]
|
7
|
+
@attributes ||= %i[time player_section target_section]
|
9
8
|
end
|
10
9
|
|
11
|
-
def initialize(time, player_name, player_steam_id, player_team, target_name, target_steam_id, target_team)
|
10
|
+
def initialize(time, player_name, player_uid, player_steam_id, player_team, target_name, target_uid, target_steam_id, target_team)
|
12
11
|
@time = parse_time(time)
|
13
|
-
@player = Player.new(player_name, player_steam_id, player_team)
|
14
|
-
@target = Player.new(target_name, target_steam_id, target_team)
|
12
|
+
@player = Player.new(player_name, player_uid, player_steam_id, player_team)
|
13
|
+
@target = Player.new(target_name, target_uid, target_steam_id, target_team)
|
15
14
|
end
|
16
15
|
end
|
17
16
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module TF2LineParser
|
4
|
+
module Events
|
5
|
+
class RconCommand < Event
|
6
|
+
def self.regex
|
7
|
+
@regex ||= /#{regex_time} rcon from #{regex_rcon}/.freeze
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.regex_rcon
|
11
|
+
@regex_rcon ||= '(?\'message\'.*")'
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.attributes
|
15
|
+
@attributes ||= %i[time message]
|
16
|
+
end
|
17
|
+
|
18
|
+
def initialize(time, message)
|
19
|
+
@time = parse_time(time)
|
20
|
+
@message = message
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|