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.
@@ -13,6 +13,7 @@
13
13
  ,"debug": true
14
14
  ,"end_vote_threshold": 3
15
15
  ,"restart_method": "nohup sh gather.sh &"
16
+ ,"ignore_list": ["JTG","ColbyCheez"]
16
17
  ,"servers":{
17
18
  "server1": {
18
19
  "ip":"5.39.93.105"
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[:server].kick_all
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 "#{user} has left the match at #{match[:key]}! Find a sub!"
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
- player_msg = player_msg+classes_t1.shift if KAG::Config.instance[:pick_classes]
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
- player_msg = player_msg+classes_t2.shift if KAG::Config.instance[:pick_classes]
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
- remove_user_from_queue(arg)
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
- if m.channel.has_user?(arg)
302
- add_user_to_queue(m,arg)
303
- else
304
- reply m,"User is not in this channel!"
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[10..line.length].rstrip.empty?
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
- puts line
60
- break if _is_newline?(line)
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
- break if _is_newline?(line)
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
@@ -1,5 +1,5 @@
1
1
  module KAG
2
- VERSION = '1.0.9'
2
+ VERSION = '1.1.0'
3
3
  def self.version
4
4
  VERSION
5
5
  end
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
- prerelease:
5
- version: 1.0.9
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
- version_requirements: !ruby/object:Gem::Requirement
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
- version_requirements: !ruby/object:Gem::Requirement
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
- version_requirements: !ruby/object:Gem::Requirement
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
- version_requirements: !ruby/object:Gem::Requirement
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
- version_requirements: !ruby/object:Gem::Requirement
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
- version_requirements: !ruby/object:Gem::Requirement
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
- version_requirements: !ruby/object:Gem::Requirement
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.25
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
- ...