kag-gather 1.0.9 → 1.1.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.
- data/config/config.sample.json +1 -0
- data/lib/kag/gather.rb +95 -12
- data/lib/kag/server.rb +32 -10
- data/lib/kag/version.rb +1 -1
- metadata +44 -46
data/config/config.sample.json
CHANGED
data/lib/kag/gather.rb
CHANGED
@@ -116,7 +116,12 @@ module KAG
|
|
116
116
|
def end_match(match)
|
117
117
|
if match[:server].has_rcon?
|
118
118
|
begin
|
119
|
-
match[:
|
119
|
+
match[:team1].each do |p|
|
120
|
+
match[:server].kick(p)
|
121
|
+
end
|
122
|
+
match[:team2].each do |p|
|
123
|
+
match[:server].kick(p)
|
124
|
+
end
|
120
125
|
rescue Exception => e
|
121
126
|
debug e.message
|
122
127
|
debug e.backtrace.join("\n")
|
@@ -124,14 +129,15 @@ module KAG
|
|
124
129
|
else
|
125
130
|
debug "NO RCON, so could not kick!"
|
126
131
|
end
|
132
|
+
match[:server].disconnect
|
127
133
|
@matches.delete(match[:server][:key])
|
128
134
|
send_channels_msg("Match at #{match[:server][:key]} finished!")
|
129
135
|
end
|
130
136
|
|
131
|
-
def remove_user_from_match(nick)
|
137
|
+
def remove_user_from_match(nick,send_msg = true)
|
132
138
|
match = get_match_in(nick)
|
133
|
-
if match
|
134
|
-
send_channels_msg "#{
|
139
|
+
if match and send_msg
|
140
|
+
send_channels_msg "#{nick} has left the match at #{match[:server][:key]}! Find a sub!"
|
135
141
|
end
|
136
142
|
end
|
137
143
|
|
@@ -197,7 +203,10 @@ module KAG
|
|
197
203
|
|
198
204
|
team1.each do |p|
|
199
205
|
player_msg = msg.clone
|
200
|
-
|
206
|
+
if KAG::Config.instance[:pick_classes]
|
207
|
+
cls = classes_t1.shift
|
208
|
+
player_msg = player_msg+cls if cls and !cls.empty?
|
209
|
+
end
|
201
210
|
player_msg = player_msg+" \x0312Blue Team with: #{team1.join(", ")}"
|
202
211
|
User(p).send(player_msg) unless p.include?("player")
|
203
212
|
debug "Sent to #{p.to_s}: "+player_msg
|
@@ -205,7 +214,10 @@ module KAG
|
|
205
214
|
end
|
206
215
|
team2.each do |p|
|
207
216
|
player_msg = msg.clone
|
208
|
-
|
217
|
+
if KAG::Config.instance[:pick_classes]
|
218
|
+
cls = classes_t2.shift
|
219
|
+
player_msg = player_msg+cls if cls and !cls.empty?
|
220
|
+
end
|
209
221
|
player_msg = player_msg+" \x0304Red Team with: #{team2.join(", ")}"
|
210
222
|
User(p).send(player_msg) unless p.include?("player")
|
211
223
|
debug "Sent to #{p.to_s}: "+player_msg
|
@@ -291,17 +303,23 @@ module KAG
|
|
291
303
|
match /rem (.+)/, method: :evt_rem_admin
|
292
304
|
def evt_rem_admin(m, arg)
|
293
305
|
if is_admin(m.user)
|
294
|
-
|
306
|
+
arg = arg.split(" ")
|
307
|
+
arg.each do |nick|
|
308
|
+
remove_user_from_queue(nick)
|
309
|
+
end
|
295
310
|
end
|
296
311
|
end
|
297
312
|
|
298
313
|
match /add (.+)/, method: :evt_add_admin
|
299
314
|
def evt_add_admin(m, arg)
|
300
315
|
if is_admin(m.user)
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
316
|
+
arg = arg.split(" ")
|
317
|
+
arg.each do |nick|
|
318
|
+
if m.channel.has_user?(nick)
|
319
|
+
add_user_to_queue(m,nick)
|
320
|
+
else
|
321
|
+
reply m,"User #{nick} is not in this channel!"
|
322
|
+
end
|
305
323
|
end
|
306
324
|
end
|
307
325
|
end
|
@@ -335,6 +353,71 @@ module KAG
|
|
335
353
|
end
|
336
354
|
end
|
337
355
|
|
356
|
+
match "restart_map", method: :evt_restart_map
|
357
|
+
def evt_restart_map(m)
|
358
|
+
if is_admin(m.user)
|
359
|
+
match = get_match_in(m.user.nick)
|
360
|
+
if match
|
361
|
+
match[:server].restart_map
|
362
|
+
end
|
363
|
+
end
|
364
|
+
end
|
365
|
+
|
366
|
+
match /restart_map (.+)/, method: :evt_restart_map_specify
|
367
|
+
def evt_restart_map_specify(m,arg)
|
368
|
+
if is_admin(m.user)
|
369
|
+
server = get_server(arg)
|
370
|
+
if server
|
371
|
+
server.next_map
|
372
|
+
else
|
373
|
+
m.reply "No server found with key #{arg}"
|
374
|
+
end
|
375
|
+
end
|
376
|
+
end
|
377
|
+
|
378
|
+
match "next_map", method: :evt_next_map
|
379
|
+
def evt_next_map(m)
|
380
|
+
if is_admin(m.user)
|
381
|
+
match = get_match_in(m.user.nick)
|
382
|
+
if match
|
383
|
+
match[:server].restart_map
|
384
|
+
end
|
385
|
+
end
|
386
|
+
end
|
387
|
+
|
388
|
+
match /next_map (.+)/, method: :evt_next_map_specify
|
389
|
+
def evt_next_map_specify(m,arg)
|
390
|
+
if is_admin(m.user)
|
391
|
+
server = get_server(arg)
|
392
|
+
if server
|
393
|
+
server.next_map
|
394
|
+
else
|
395
|
+
m.reply "No server found with key #{arg}"
|
396
|
+
end
|
397
|
+
end
|
398
|
+
end
|
399
|
+
|
400
|
+
match /kick_from_match (.+)/, method: :evt_kick_from_match
|
401
|
+
def evt_kick_from_match(m,nick)
|
402
|
+
if is_admin(m.user)
|
403
|
+
match = get_match_in(nick)
|
404
|
+
if match[:server]
|
405
|
+
match[:server].kick(nick)
|
406
|
+
remove_user_from_match(nick,false)
|
407
|
+
m.reply "#{nick} has been kicked from the match"
|
408
|
+
else
|
409
|
+
m.reply "#{nick} is not in a match!"
|
410
|
+
end
|
411
|
+
end
|
412
|
+
end
|
413
|
+
|
414
|
+
def get_server(key)
|
415
|
+
@matches.each do |k,m|
|
416
|
+
return m[:server] if k.to_s == key
|
417
|
+
end
|
418
|
+
false
|
419
|
+
end
|
420
|
+
|
338
421
|
match "reload_config", method: :evt_reload_config
|
339
422
|
def evt_reload_config(m)
|
340
423
|
if is_admin(m.user)
|
@@ -346,7 +429,7 @@ module KAG
|
|
346
429
|
def get_team_classes(team)
|
347
430
|
classes = KAG::Config.instance[:classes]
|
348
431
|
classes.shuffle!
|
349
|
-
classes
|
432
|
+
classes.clone
|
350
433
|
end
|
351
434
|
end
|
352
435
|
end
|
data/lib/kag/server.rb
CHANGED
@@ -19,17 +19,20 @@ module KAG
|
|
19
19
|
unless self[:_socket]
|
20
20
|
self[:_socket] = TCPSocket.new(self[:ip],self[:port])
|
21
21
|
end
|
22
|
+
puts self[:_]
|
22
23
|
self[:_socket]
|
23
24
|
end
|
24
25
|
|
25
26
|
def connect
|
26
27
|
return true if self.connected?
|
28
|
+
puts "[RCON] Attempting to get socket"
|
27
29
|
unless self.socket
|
28
|
-
puts "Could not establish TCP socket to connect"
|
30
|
+
puts "[RCON] Could not establish TCP socket to connect"
|
29
31
|
return false
|
30
32
|
end
|
31
33
|
self.socket.puts self[:rcon_password]
|
32
34
|
z = self.socket.gets
|
35
|
+
puts "[RCON] "+z.to_s
|
33
36
|
z.include?("now authenticated")
|
34
37
|
self[:_connected] = true
|
35
38
|
true
|
@@ -38,7 +41,7 @@ module KAG
|
|
38
41
|
def disconnect
|
39
42
|
if self[:_socket]
|
40
43
|
puts "[RCON] Closing socket..."
|
41
|
-
self.socket.puts "/quit"
|
44
|
+
#self.socket.puts "/quit"
|
42
45
|
self[:_socket].close
|
43
46
|
self[:_connected] = false
|
44
47
|
self.delete(:_socket)
|
@@ -51,27 +54,47 @@ module KAG
|
|
51
54
|
end
|
52
55
|
|
53
56
|
def _is_newline?(line)
|
54
|
-
line
|
57
|
+
line.empty?
|
58
|
+
end
|
59
|
+
|
60
|
+
def _parse_line(line)
|
61
|
+
line.gsub!(/\r/,"")
|
62
|
+
line.gsub!(/\n/,"")
|
63
|
+
line = line.strip
|
64
|
+
ep = line.index(']')
|
65
|
+
if ep
|
66
|
+
line = line[(ep+1)..line.length].strip
|
67
|
+
else
|
68
|
+
line = line[10..line.length].strip
|
69
|
+
end
|
70
|
+
line.gsub!(/\r/,"")
|
71
|
+
line.gsub!(/\n/,"")
|
72
|
+
line
|
55
73
|
end
|
56
74
|
|
57
75
|
def _cycle
|
58
76
|
while (line = self.socket.gets)
|
59
|
-
|
60
|
-
|
77
|
+
line = _parse_line(line)
|
78
|
+
puts "[RCON] "+line
|
79
|
+
break if (_is_newline?(line) or line.empty?)
|
61
80
|
end
|
62
81
|
end
|
63
82
|
|
83
|
+
##
|
84
|
+
# broken
|
85
|
+
#
|
64
86
|
def players
|
65
87
|
return false unless self.connect
|
66
|
-
_command "/players"
|
88
|
+
_command "/rcon /players"
|
67
89
|
|
68
90
|
players = []
|
69
91
|
while (line = self.socket.gets)
|
70
|
-
puts line
|
71
|
-
|
92
|
+
puts "[RCONPRIOR] '"+line+"'"
|
93
|
+
line = _parse_line(line)
|
94
|
+
puts "[RCON] '"+line+"'"
|
95
|
+
break if (line.empty? or line == '' or line == "\n")
|
72
96
|
|
73
97
|
player = SymbolTable.new
|
74
|
-
line = line[10..line.length].strip
|
75
98
|
|
76
99
|
# get nick
|
77
100
|
sp = line.index("[")
|
@@ -99,7 +122,6 @@ module KAG
|
|
99
122
|
|
100
123
|
players << player
|
101
124
|
end
|
102
|
-
_cycle
|
103
125
|
players
|
104
126
|
end
|
105
127
|
|
data/lib/kag/version.rb
CHANGED
metadata
CHANGED
@@ -1,128 +1,128 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kag-gather
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
4
|
+
version: 1.1.0
|
5
|
+
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Shaun McCormick
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
date: 2013-03-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: cinch
|
16
|
-
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
17
18
|
requirements:
|
18
19
|
- - '='
|
19
20
|
- !ruby/object:Gem::Version
|
20
21
|
version: 2.0.4
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
21
25
|
none: false
|
22
|
-
requirement: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
27
|
- - '='
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: 2.0.4
|
27
|
-
none: false
|
28
|
-
prerelease: false
|
29
|
-
type: :runtime
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: json
|
32
|
-
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
33
34
|
requirements:
|
34
35
|
- - ! '>='
|
35
36
|
- !ruby/object:Gem::Version
|
36
37
|
version: '0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
41
|
none: false
|
38
|
-
requirement: !ruby/object:Gem::Requirement
|
39
42
|
requirements:
|
40
43
|
- - ! '>='
|
41
44
|
- !ruby/object:Gem::Version
|
42
45
|
version: '0'
|
43
|
-
none: false
|
44
|
-
prerelease: false
|
45
|
-
type: :runtime
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
47
|
name: symboltable
|
48
|
-
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
49
50
|
requirements:
|
50
51
|
- - '='
|
51
52
|
- !ruby/object:Gem::Version
|
52
53
|
version: 1.0.2
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
53
57
|
none: false
|
54
|
-
requirement: !ruby/object:Gem::Requirement
|
55
58
|
requirements:
|
56
59
|
- - '='
|
57
60
|
- !ruby/object:Gem::Version
|
58
61
|
version: 1.0.2
|
59
|
-
none: false
|
60
|
-
prerelease: false
|
61
|
-
type: :runtime
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
63
|
name: kagerator
|
64
|
-
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
65
66
|
requirements:
|
66
67
|
- - '='
|
67
68
|
- !ruby/object:Gem::Version
|
68
69
|
version: 1.0.3
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
69
73
|
none: false
|
70
|
-
requirement: !ruby/object:Gem::Requirement
|
71
74
|
requirements:
|
72
75
|
- - '='
|
73
76
|
- !ruby/object:Gem::Version
|
74
77
|
version: 1.0.3
|
75
|
-
none: false
|
76
|
-
prerelease: false
|
77
|
-
type: :runtime
|
78
78
|
- !ruby/object:Gem::Dependency
|
79
79
|
name: rake
|
80
|
-
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
81
82
|
requirements:
|
82
83
|
- - ! '>='
|
83
84
|
- !ruby/object:Gem::Version
|
84
85
|
version: '0'
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
89
|
none: false
|
86
|
-
requirement: !ruby/object:Gem::Requirement
|
87
90
|
requirements:
|
88
91
|
- - ! '>='
|
89
92
|
- !ruby/object:Gem::Version
|
90
93
|
version: '0'
|
91
|
-
none: false
|
92
|
-
prerelease: false
|
93
|
-
type: :development
|
94
94
|
- !ruby/object:Gem::Dependency
|
95
95
|
name: rspec
|
96
|
-
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
97
98
|
requirements:
|
98
99
|
- - ! '>='
|
99
100
|
- !ruby/object:Gem::Version
|
100
101
|
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
101
105
|
none: false
|
102
|
-
requirement: !ruby/object:Gem::Requirement
|
103
106
|
requirements:
|
104
107
|
- - ! '>='
|
105
108
|
- !ruby/object:Gem::Version
|
106
109
|
version: '0'
|
107
|
-
none: false
|
108
|
-
prerelease: false
|
109
|
-
type: :development
|
110
110
|
- !ruby/object:Gem::Dependency
|
111
111
|
name: guard-rspec
|
112
|
-
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
113
114
|
requirements:
|
114
115
|
- - ! '>='
|
115
116
|
- !ruby/object:Gem::Version
|
116
117
|
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
117
121
|
none: false
|
118
|
-
requirement: !ruby/object:Gem::Requirement
|
119
122
|
requirements:
|
120
123
|
- - ! '>='
|
121
124
|
- !ruby/object:Gem::Version
|
122
125
|
version: '0'
|
123
|
-
none: false
|
124
|
-
prerelease: false
|
125
|
-
type: :development
|
126
126
|
description: ''
|
127
127
|
email:
|
128
128
|
- splittingred@gmail.com
|
@@ -141,28 +141,26 @@ files:
|
|
141
141
|
homepage: https://github.com/splittingred/kag-gather
|
142
142
|
licenses:
|
143
143
|
- GPLv2
|
144
|
-
post_install_message:
|
144
|
+
post_install_message:
|
145
145
|
rdoc_options: []
|
146
146
|
require_paths:
|
147
147
|
- lib
|
148
148
|
required_ruby_version: !ruby/object:Gem::Requirement
|
149
|
+
none: false
|
149
150
|
requirements:
|
150
151
|
- - ! '>='
|
151
152
|
- !ruby/object:Gem::Version
|
152
153
|
version: 1.9.2
|
153
|
-
none: false
|
154
154
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
155
|
+
none: false
|
155
156
|
requirements:
|
156
157
|
- - ! '>='
|
157
158
|
- !ruby/object:Gem::Version
|
158
159
|
version: 1.3.6
|
159
|
-
none: false
|
160
160
|
requirements: []
|
161
|
-
rubyforge_project:
|
162
|
-
rubygems_version: 1.8.
|
163
|
-
signing_key:
|
161
|
+
rubyforge_project:
|
162
|
+
rubygems_version: 1.8.24
|
163
|
+
signing_key:
|
164
164
|
specification_version: 3
|
165
165
|
summary: KAG Gather IRC Bot
|
166
166
|
test_files: []
|
167
|
-
has_rdoc:
|
168
|
-
...
|