kag-gather 1.0.9 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
- ...