kag-gather 1.5.7 → 1.5.8

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 ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MGVhMjVmNTgzZGI3ZTM5NmYyNzI5MTUwZmRjNmMxOTVkZTllMTU5Yg==
5
+ data.tar.gz: !binary |-
6
+ YjU4MGJhMmMzMDAyOGY5YzQzZWE2ZDY0ZTE0NGUyMzg4YWE4YjdiYw==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ MTBlZDE3YWQ4NTFkYmEzMWNjMDhkNzQyN2IxNjA2NWRjZGM5NzBhNjZmYzE3
10
+ OTUyMzU4ZTFmZTdlMWZmYzM4NzRlYjVkNDA3MDk5OTEzN2U5YzEwNzBiZmU4
11
+ MmRjYzIzMjExMWY4YmE1YzNlOTIwYTllMGM0YTc2YmJhOGFjYzI=
12
+ data.tar.gz: !binary |-
13
+ NjkyZDAxZjA0MzcxMjg3MTcwZmIxNDY3MzJkZGU0NWJiODRmNDkyNzUxZjIx
14
+ MzMyZTgwODdhOGY2OWMyYWMxMTI0YzQ1MDAwYmM3ODU0NjkzZTE5MWI2MzYy
15
+ NjY1NWVkMDdiNjA3ZGJkYTc3OTFkNWUzODBmN2JkYTlkMjdlZWQ=
@@ -48,7 +48,15 @@ module KAG
48
48
  team_list.each do |ts|
49
49
  eb = lb+players_per_team-1
50
50
  eb = self.players.length if eb > self.players.length-1
51
- ps = Hash[self.players.sort_by{|k,v| v ? v.to_s : ''}[lb..(eb)]]
51
+ x = 0
52
+ ps = {}
53
+ self.players.each do |authname,user|
54
+ if x >= lb and x <= eb
55
+ ps[authname.to_sym] = user
56
+ end
57
+ x = x + 1
58
+ end
59
+ #ps = Hash[self.players.sort_by{|k,v| v ? v.to_s : ''}[lb..(eb)]]
52
60
  lb = players_per_team
53
61
 
54
62
  self.teams << KAG::Gather::Team.new({
@@ -174,10 +182,12 @@ module KAG
174
182
  match = self.dup
175
183
  match[:server] = self.server[:key]
176
184
  ts = []
177
- match.teams.each do |team|
178
- ts << {:players => team.teammates,:color => team[:color],:name => team[:name]}
185
+ if match.teams
186
+ match.teams.each do |team|
187
+ ts << {:players => team.teammates,:color => team[:color],:name => team[:name]}
188
+ end
189
+ match[:teams] = ts
179
190
  end
180
- match[:teams] = ts
181
191
  match.delete(:players)
182
192
  match.delete(:bot) if match.key?(:bot)
183
193
 
@@ -3,7 +3,7 @@ require 'kag/common'
3
3
  require 'commands/help'
4
4
  require 'kag/bot/bot'
5
5
  require 'kag/bans/report'
6
- require 'kag/server'
6
+ require 'kag/server/instance'
7
7
  require 'kag/gather/queue'
8
8
  require 'kag/gather/match'
9
9
 
@@ -24,11 +24,7 @@ module KAG
24
24
  end
25
25
 
26
26
  def _load_servers
27
- @servers = {}
28
- KAG::Config.instance[:servers].each do |k,s|
29
- s[:key] = k
30
- @servers[k] = KAG::Server.new(s)
31
- end
27
+ @servers = KAG::Server::Instance.fetch_all
32
28
  end
33
29
 
34
30
  #listen_to :channel, method: :channel_listen
@@ -364,6 +360,7 @@ module KAG
364
360
  def kick_from_match(m,nick)
365
361
  if is_admin(m.user)
366
362
  user = User(nick.to_s)
363
+ user.refresh
367
364
  if user
368
365
  match = get_match_in(user)
369
366
  if match
@@ -48,12 +48,18 @@ module KAG
48
48
  def check_for_afk(gather)
49
49
  max_idle = (KAG::Config.instance[:idle][:max] or 1800)
50
50
  max_idle = max_idle.to_i
51
- self.players.each do |authname,user|
52
- user.refresh
53
- if user.idle > max_idle
54
- self.remove(user)
55
- gather.send_channels_msg "Removed #{user.authname} from queue (#{KAG::Gather::Match.type_as_string}) for being idle too long [#{self.length}]"
51
+ begin
52
+ self.players.each do |authname,user|
53
+ user.refresh
54
+ if user.idle > max_idle
55
+ self.remove(user)
56
+ gather.send_channels_msg "Removed #{user.authname} from queue (#{KAG::Gather::Match.type_as_string}) for being idle too long [#{self.length}]"
57
+ end
56
58
  end
59
+ rescue Exception => e
60
+ puts e.message
61
+ puts e.backtrace.join("\n")
62
+ false
57
63
  end
58
64
  end
59
65
  end
@@ -45,7 +45,11 @@ module KAG
45
45
  end
46
46
 
47
47
  def has_player?(user)
48
- self.players.keys.include?(user.authname.to_sym)
48
+ if user.authname
49
+ self.players.keys.include?(user.authname.to_sym)
50
+ else
51
+ false
52
+ end
49
53
  end
50
54
 
51
55
  def remove_player(user)
@@ -0,0 +1,198 @@
1
+ require 'cinch'
2
+ require 'symboltable'
3
+ require 'json'
4
+ require 'kagerator'
5
+ require 'kag/config'
6
+ require 'socket'
7
+
8
+ module KAG
9
+ module Server
10
+ class Instance < SymbolTable
11
+ def self.fetch_all
12
+ servers = {}
13
+ KAG::Config.instance[:servers].each do |k,s|
14
+ s[:key] = k
15
+ servers[k] = KAG::Server::Instance.new(s)
16
+ end
17
+ servers
18
+ end
19
+
20
+ def info
21
+ Kagerator.server(self[:ip],self[:port])
22
+ end
23
+
24
+ def in_use?
25
+ self.key?(:match)
26
+ end
27
+
28
+ def has_rcon?
29
+ self[:rcon_password] and !self[:rcon_password].empty?
30
+ end
31
+
32
+ def socket
33
+ unless self[:_socket]
34
+ begin
35
+ self[:_socket] = TCPSocket.new(self[:ip],self[:port])
36
+ rescue Exception => e
37
+ puts e.message
38
+ puts e.backtrace.join("\n")
39
+ end
40
+ end
41
+ puts self[:_]
42
+ self[:_socket]
43
+ end
44
+
45
+ def text_join
46
+ "Join \x0305#{self[:key]} - #{self[:ip]}:#{self[:port]} \x0306password #{self[:password]}\x0301 | Visit kag://#{self[:ip]}/#{self[:password]}"
47
+ end
48
+
49
+ def connect
50
+ return true if self.connected?
51
+ puts "[RCON] Attempting to get socket"
52
+ unless self.socket
53
+ puts "[RCON] Could not establish TCP socket to connect"
54
+ return false
55
+ end
56
+ success = false
57
+ begin
58
+ self.socket.puts self[:rcon_password]
59
+ z = self.socket.gets
60
+ puts "[RCON] "+z.to_s
61
+ z.include?("now authenticated")
62
+ self[:_connected] = true
63
+ success = true
64
+ rescue Exception => e
65
+ puts e.message
66
+ puts e.backtrace.join("\n")
67
+ end
68
+ success
69
+ end
70
+
71
+ def disconnect
72
+ if self[:_socket]
73
+ puts "[RCON] Closing socket..."
74
+ #self.socket.puts "/quit"
75
+ self[:_socket].close
76
+ self[:_connected] = false
77
+ self.delete(:_socket)
78
+ end
79
+ true
80
+ end
81
+
82
+ def connected?
83
+ self[:_connected]
84
+ end
85
+
86
+ def _is_newline?(line)
87
+ line.empty?
88
+ end
89
+
90
+ def _parse_line(line)
91
+ line.gsub!(/\r/,"")
92
+ line.gsub!(/\n/,"")
93
+ line = line.strip
94
+ ep = line.index(']')
95
+ if ep
96
+ line = line[(ep+1)..line.length].strip
97
+ else
98
+ line = line[10..line.length].strip
99
+ end
100
+ line.gsub!(/\r/,"")
101
+ line.gsub!(/\n/,"")
102
+ line
103
+ end
104
+
105
+ def _cycle
106
+ while (line = self.socket.gets)
107
+ line = _parse_line(line)
108
+ puts "[RCON] "+line
109
+ break if (_is_newline?(line) or line.empty?)
110
+ end
111
+ end
112
+
113
+ ##
114
+ # broken
115
+ #
116
+ def players
117
+ return false unless self.connect
118
+ _command "/rcon /players"
119
+
120
+ players = []
121
+ while (line = self.socket.gets)
122
+ puts "[RCONPRIOR] '"+line+"'"
123
+ line = _parse_line(line)
124
+ puts "[RCON] '"+line+"'"
125
+ break if (line.empty? or line == '' or line == "\n")
126
+
127
+ player = SymbolTable.new
128
+
129
+ # get nick
130
+ sp = line.index("[")
131
+ next if sp == nil
132
+ ep = line.index("]",sp)
133
+ player[:nick] = line[(sp+1)..(ep-1)]
134
+ line = line[ep..line.length].strip
135
+
136
+ # get id
137
+ sp = line.index("(")
138
+ ep = line.index(")",sp)
139
+ player[:id] = line[(sp+4)..(ep-1)]
140
+ line = line[ep..line.length]
141
+
142
+ # get ip
143
+ sp = line.index("(")
144
+ ep = line.index(")",sp)
145
+ player[:ip] = line[(sp+4)..(ep-1)]
146
+ line = line[ep..line.length]
147
+
148
+ # get hwid
149
+ sp = line.index("(")
150
+ ep = line.index(")",sp)
151
+ player[:hwid] = line[(sp+6)..(ep-1)]
152
+
153
+ players << player
154
+ end
155
+ players
156
+ end
157
+
158
+ def kick(nick)
159
+ return false unless self.connect
160
+ self.socket.puts "/kick #{nick}"
161
+ _cycle
162
+ end
163
+
164
+ def kick_all
165
+ return false unless self.connect
166
+ ps = self.players
167
+ if ps
168
+ ps.each do |player|
169
+ _command "/kick #{player[:nick]}"
170
+ end
171
+ else
172
+ puts "No Players found on Server #{self[:ip]}!"
173
+ end
174
+ _cycle
175
+ end
176
+
177
+ def restart_map
178
+ return false unless self.connect
179
+ _command "/restartmap"
180
+ _cycle
181
+ end
182
+
183
+ def next_map
184
+ return false unless self.connect
185
+ _command "/nextmap"
186
+ _cycle
187
+ end
188
+
189
+ protected
190
+
191
+ def _command(cmd)
192
+ return false unless self.connected?
193
+ puts "[RCON] #{cmd.to_s}"
194
+ self.socket.puts cmd
195
+ end
196
+ end
197
+ end
198
+ end
data/lib/kag/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module KAG
2
- VERSION = '1.5.7'
2
+ VERSION = '1.5.8'
3
3
  def self.version
4
4
  VERSION
5
5
  end
metadata CHANGED
@@ -1,144 +1,127 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kag-gather
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 1.5.7
4
+ version: 1.5.8
6
5
  platform: ruby
7
6
  authors:
8
7
  - Shaun McCormick
9
- autorequire:
8
+ autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
11
  date: 2013-03-26 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: cinch
16
- version_requirements: !ruby/object:Gem::Requirement
15
+ requirement: !ruby/object:Gem::Requirement
17
16
  requirements:
18
17
  - - '='
19
18
  - !ruby/object:Gem::Version
20
19
  version: 2.0.4
21
- none: false
22
- requirement: !ruby/object:Gem::Requirement
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
26
  version: 2.0.4
27
- none: false
28
- prerelease: false
29
- type: :runtime
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: cinch-identify
32
- version_requirements: !ruby/object:Gem::Requirement
29
+ requirement: !ruby/object:Gem::Requirement
33
30
  requirements:
34
31
  - - '='
35
32
  - !ruby/object:Gem::Version
36
33
  version: 1.4.1
37
- none: false
38
- requirement: !ruby/object:Gem::Requirement
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
39
37
  requirements:
40
38
  - - '='
41
39
  - !ruby/object:Gem::Version
42
40
  version: 1.4.1
43
- none: false
44
- prerelease: false
45
- type: :runtime
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: json
48
- version_requirements: !ruby/object:Gem::Requirement
43
+ requirement: !ruby/object:Gem::Requirement
49
44
  requirements:
50
45
  - - ! '>='
51
46
  - !ruby/object:Gem::Version
52
47
  version: '0'
53
- none: false
54
- requirement: !ruby/object:Gem::Requirement
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
55
51
  requirements:
56
52
  - - ! '>='
57
53
  - !ruby/object:Gem::Version
58
54
  version: '0'
59
- none: false
60
- prerelease: false
61
- type: :runtime
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: symboltable
64
- version_requirements: !ruby/object:Gem::Requirement
57
+ requirement: !ruby/object:Gem::Requirement
65
58
  requirements:
66
59
  - - '='
67
60
  - !ruby/object:Gem::Version
68
61
  version: 1.0.2
69
- none: false
70
- requirement: !ruby/object:Gem::Requirement
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
71
65
  requirements:
72
66
  - - '='
73
67
  - !ruby/object:Gem::Version
74
68
  version: 1.0.2
75
- none: false
76
- prerelease: false
77
- type: :runtime
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: kagerator
80
- version_requirements: !ruby/object:Gem::Requirement
71
+ requirement: !ruby/object:Gem::Requirement
81
72
  requirements:
82
73
  - - '='
83
74
  - !ruby/object:Gem::Version
84
75
  version: 1.0.3
85
- none: false
86
- requirement: !ruby/object:Gem::Requirement
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
87
79
  requirements:
88
80
  - - '='
89
81
  - !ruby/object:Gem::Version
90
82
  version: 1.0.3
91
- none: false
92
- prerelease: false
93
- type: :runtime
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: rake
96
- version_requirements: !ruby/object:Gem::Requirement
97
- requirements:
98
- - - ! '>='
99
- - !ruby/object:Gem::Version
100
- version: '0'
101
- none: false
102
85
  requirement: !ruby/object:Gem::Requirement
103
86
  requirements:
104
87
  - - ! '>='
105
88
  - !ruby/object:Gem::Version
106
89
  version: '0'
107
- none: false
108
- prerelease: false
109
90
  type: :development
110
- - !ruby/object:Gem::Dependency
111
- name: rspec
91
+ prerelease: false
112
92
  version_requirements: !ruby/object:Gem::Requirement
113
93
  requirements:
114
94
  - - ! '>='
115
95
  - !ruby/object:Gem::Version
116
96
  version: '0'
117
- none: false
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec
118
99
  requirement: !ruby/object:Gem::Requirement
119
100
  requirements:
120
101
  - - ! '>='
121
102
  - !ruby/object:Gem::Version
122
103
  version: '0'
123
- none: false
124
- prerelease: false
125
104
  type: :development
126
- - !ruby/object:Gem::Dependency
127
- name: guard-rspec
105
+ prerelease: false
128
106
  version_requirements: !ruby/object:Gem::Requirement
129
107
  requirements:
130
108
  - - ! '>='
131
109
  - !ruby/object:Gem::Version
132
110
  version: '0'
133
- none: false
111
+ - !ruby/object:Gem::Dependency
112
+ name: guard-rspec
134
113
  requirement: !ruby/object:Gem::Requirement
135
114
  requirements:
136
115
  - - ! '>='
137
116
  - !ruby/object:Gem::Version
138
117
  version: '0'
139
- none: false
140
- prerelease: false
141
118
  type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ! '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
142
125
  description: A bot for starting and managing KAG Gather matches
143
126
  email:
144
127
  - splittingred@gmail.com
@@ -147,20 +130,17 @@ extensions: []
147
130
  extra_rdoc_files: []
148
131
  files:
149
132
  - readme.md
150
- - lib/gather.rb
151
- - lib/patches.rb
152
133
  - lib/commands/command.rb
153
134
  - lib/commands/commands.rb
154
135
  - lib/commands/help.rb
155
- - lib/kag/common.rb
156
- - lib/kag/config.rb
157
- - lib/kag/data.rb
158
- - lib/kag/server.rb
159
- - lib/kag/version.rb
136
+ - lib/gather.rb
160
137
  - lib/kag/bans/plugin.rb
161
138
  - lib/kag/bans/report.rb
162
139
  - lib/kag/bot/bot.rb
163
140
  - lib/kag/bot/plugin.rb
141
+ - lib/kag/common.rb
142
+ - lib/kag/config.rb
143
+ - lib/kag/data.rb
164
144
  - lib/kag/gather/match.rb
165
145
  - lib/kag/gather/plugin.rb
166
146
  - lib/kag/gather/queue.rb
@@ -168,15 +148,19 @@ files:
168
148
  - lib/kag/help/book.rb
169
149
  - lib/kag/help/plugin.rb
170
150
  - lib/kag/irc/plugin.rb
151
+ - lib/kag/server/instance.rb
171
152
  - lib/kag/stats/main.rb
172
153
  - lib/kag/stats/plugin.rb
173
154
  - lib/kag/user/plugin.rb
174
155
  - lib/kag/user/user.rb
156
+ - lib/kag/version.rb
157
+ - lib/patches.rb
175
158
  - config/config.sample.json
176
159
  homepage: https://github.com/splittingred/kag-gather
177
160
  licenses:
178
161
  - GPLv2
179
- post_install_message:
162
+ metadata: {}
163
+ post_install_message:
180
164
  rdoc_options: []
181
165
  require_paths:
182
166
  - lib
@@ -185,19 +169,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
185
169
  - - ! '>='
186
170
  - !ruby/object:Gem::Version
187
171
  version: 1.9.2
188
- none: false
189
172
  required_rubygems_version: !ruby/object:Gem::Requirement
190
173
  requirements:
191
174
  - - ! '>='
192
175
  - !ruby/object:Gem::Version
193
176
  version: 1.3.6
194
- none: false
195
177
  requirements: []
196
- rubyforge_project:
197
- rubygems_version: 1.8.25
198
- signing_key:
199
- specification_version: 3
178
+ rubyforge_project:
179
+ rubygems_version: 2.0.3
180
+ signing_key:
181
+ specification_version: 4
200
182
  summary: KAG Gather IRC Bot
201
183
  test_files: []
202
- has_rdoc:
203
- ...
data/lib/kag/server.rb DELETED
@@ -1,187 +0,0 @@
1
- require 'cinch'
2
- require 'symboltable'
3
- require 'json'
4
- require 'kagerator'
5
- require 'kag/config'
6
- require 'socket'
7
-
8
- module KAG
9
- class Server < SymbolTable
10
- def info
11
- Kagerator.server(self[:ip],self[:port])
12
- end
13
-
14
- def in_use?
15
- self.key?(:match)
16
- end
17
-
18
- def has_rcon?
19
- self[:rcon_password] and !self[:rcon_password].empty?
20
- end
21
-
22
- def socket
23
- unless self[:_socket]
24
- begin
25
- self[:_socket] = TCPSocket.new(self[:ip],self[:port])
26
- rescue Exception => e
27
- puts e.message
28
- puts e.backtrace.join("\n")
29
- end
30
- end
31
- puts self[:_]
32
- self[:_socket]
33
- end
34
-
35
- def text_join
36
- "Join \x0305#{self[:key]} - #{self[:ip]}:#{self[:port]} \x0306password #{self[:password]}\x0301 | Visit kag://#{self[:ip]}/#{self[:password]}"
37
- end
38
-
39
- def connect
40
- return true if self.connected?
41
- puts "[RCON] Attempting to get socket"
42
- unless self.socket
43
- puts "[RCON] Could not establish TCP socket to connect"
44
- return false
45
- end
46
- success = false
47
- begin
48
- self.socket.puts self[:rcon_password]
49
- z = self.socket.gets
50
- puts "[RCON] "+z.to_s
51
- z.include?("now authenticated")
52
- self[:_connected] = true
53
- success = true
54
- rescue Exception => e
55
- puts e.message
56
- puts e.backtrace.join("\n")
57
- end
58
- success
59
- end
60
-
61
- def disconnect
62
- if self[:_socket]
63
- puts "[RCON] Closing socket..."
64
- #self.socket.puts "/quit"
65
- self[:_socket].close
66
- self[:_connected] = false
67
- self.delete(:_socket)
68
- end
69
- true
70
- end
71
-
72
- def connected?
73
- self[:_connected]
74
- end
75
-
76
- def _is_newline?(line)
77
- line.empty?
78
- end
79
-
80
- def _parse_line(line)
81
- line.gsub!(/\r/,"")
82
- line.gsub!(/\n/,"")
83
- line = line.strip
84
- ep = line.index(']')
85
- if ep
86
- line = line[(ep+1)..line.length].strip
87
- else
88
- line = line[10..line.length].strip
89
- end
90
- line.gsub!(/\r/,"")
91
- line.gsub!(/\n/,"")
92
- line
93
- end
94
-
95
- def _cycle
96
- while (line = self.socket.gets)
97
- line = _parse_line(line)
98
- puts "[RCON] "+line
99
- break if (_is_newline?(line) or line.empty?)
100
- end
101
- end
102
-
103
- ##
104
- # broken
105
- #
106
- def players
107
- return false unless self.connect
108
- _command "/rcon /players"
109
-
110
- players = []
111
- while (line = self.socket.gets)
112
- puts "[RCONPRIOR] '"+line+"'"
113
- line = _parse_line(line)
114
- puts "[RCON] '"+line+"'"
115
- break if (line.empty? or line == '' or line == "\n")
116
-
117
- player = SymbolTable.new
118
-
119
- # get nick
120
- sp = line.index("[")
121
- next if sp == nil
122
- ep = line.index("]",sp)
123
- player[:nick] = line[(sp+1)..(ep-1)]
124
- line = line[ep..line.length].strip
125
-
126
- # get id
127
- sp = line.index("(")
128
- ep = line.index(")",sp)
129
- player[:id] = line[(sp+4)..(ep-1)]
130
- line = line[ep..line.length]
131
-
132
- # get ip
133
- sp = line.index("(")
134
- ep = line.index(")",sp)
135
- player[:ip] = line[(sp+4)..(ep-1)]
136
- line = line[ep..line.length]
137
-
138
- # get hwid
139
- sp = line.index("(")
140
- ep = line.index(")",sp)
141
- player[:hwid] = line[(sp+6)..(ep-1)]
142
-
143
- players << player
144
- end
145
- players
146
- end
147
-
148
- def kick(nick)
149
- return false unless self.connect
150
- self.socket.puts "/kick #{nick}"
151
- _cycle
152
- end
153
-
154
- def kick_all
155
- return false unless self.connect
156
- ps = self.players
157
- if ps
158
- ps.each do |player|
159
- _command "/kick #{player[:nick]}"
160
- end
161
- else
162
- puts "No Players found on Server #{self[:ip]}!"
163
- end
164
- _cycle
165
- end
166
-
167
- def restart_map
168
- return false unless self.connect
169
- _command "/restartmap"
170
- _cycle
171
- end
172
-
173
- def next_map
174
- return false unless self.connect
175
- _command "/nextmap"
176
- _cycle
177
- end
178
-
179
- protected
180
-
181
- def _command(cmd)
182
- return false unless self.connected?
183
- puts "[RCON] #{cmd.to_s}"
184
- self.socket.puts cmd
185
- end
186
- end
187
- end