kag-gather 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/kag/gather.rb +85 -41
- data/lib/kag/version.rb +1 -1
- metadata +1 -1
data/lib/kag/gather.rb
CHANGED
@@ -19,20 +19,18 @@ module KAG
|
|
19
19
|
@matches = {}
|
20
20
|
end
|
21
21
|
|
22
|
-
listen_to :channel, method: :channel_listen
|
23
|
-
def channel_listen(m)
|
22
|
+
#listen_to :channel, method: :channel_listen
|
23
|
+
#def channel_listen(m)
|
24
|
+
#end
|
24
25
|
|
26
|
+
listen_to :leaving, method: :on_leaving
|
27
|
+
def on_leaving(m,user)
|
28
|
+
remove_user_from_queue(user) if @queue.key?(user)
|
29
|
+
remove_user_from_match(user) if in_match(user)
|
25
30
|
end
|
26
31
|
|
27
|
-
listen_to :
|
28
|
-
def
|
29
|
-
if @queue.key?(m.user.nick)
|
30
|
-
remove_from_queue(m)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
listen_to :nick, method: :handle_nick_change
|
35
|
-
def handle_nick_change(m)
|
32
|
+
listen_to :nick, method: :on_nick
|
33
|
+
def on_nick(m)
|
36
34
|
if @queue.key?(m.user.last_nick)
|
37
35
|
@queue[m.user.nick] = @queue[m.user.last_nick]
|
38
36
|
@queue.delete(m.user.last_nick)
|
@@ -52,8 +50,8 @@ module KAG
|
|
52
50
|
end
|
53
51
|
end
|
54
52
|
|
55
|
-
match "add", method: :
|
56
|
-
def
|
53
|
+
match "add", method: :evt_add
|
54
|
+
def evt_add(m)
|
57
55
|
unless @queue.key?(m.user.nick) or in_match(m.user.nick)
|
58
56
|
@queue[m.user.nick] = SymbolTable.new({
|
59
57
|
:user => m.user,
|
@@ -61,55 +59,81 @@ module KAG
|
|
61
59
|
:message => m.message,
|
62
60
|
:joined_at => Time.now
|
63
61
|
})
|
64
|
-
send_channels_msg "Added #{m.user.nick} to queue (
|
62
|
+
send_channels_msg "Added #{m.user.nick} to queue (#{get_match_type_as_string}) [#{@queue.length}]"
|
65
63
|
check_for_new_match(m)
|
66
64
|
end
|
67
65
|
end
|
68
66
|
|
69
|
-
match "rem", method: :
|
70
|
-
def
|
71
|
-
|
72
|
-
|
73
|
-
send_channels_msg "Removed #{m.user.nick} from queue (5v5 CTF) [#{@queue.length}]"
|
74
|
-
end
|
67
|
+
match "rem", method: :evt_rem
|
68
|
+
def evt_rem(m)
|
69
|
+
remove_user_from_match(m.user.nick)
|
70
|
+
remove_user_from_queue(m.user.nick)
|
75
71
|
end
|
76
72
|
|
77
|
-
match "list", method: :
|
78
|
-
def
|
73
|
+
match "list", method: :evt_list
|
74
|
+
def evt_list(m)
|
79
75
|
users = []
|
80
76
|
@queue.each do |n,u|
|
81
77
|
users << n
|
82
78
|
end
|
83
|
-
m.user.send "Queue (
|
79
|
+
m.user.send "Queue (#{get_match_type_as_string}) [#{@queue.length}] #{users.join(", ")}"
|
84
80
|
end
|
85
81
|
|
86
|
-
match "status", method: :
|
87
|
-
def
|
82
|
+
match "status", method: :evt_status
|
83
|
+
def evt_status(m)
|
88
84
|
m.reply "Matches in progress: #{@matches.length.to_s}"
|
89
85
|
end
|
90
86
|
|
91
|
-
match "end", method: :
|
92
|
-
def
|
87
|
+
match "end", method: :evt_end
|
88
|
+
def evt_end(m)
|
93
89
|
@matches.each do |k,match|
|
94
90
|
info = match[:server].info
|
95
91
|
if info
|
96
92
|
players_on = info[:serverStatus][:playerList].length
|
97
93
|
if players_on > 0
|
98
|
-
m.reply "Cannot end a match for #{match[:server][:
|
94
|
+
m.reply "Cannot end a match for #{match[:server][:key]} in progress, there are #{players_on.to_s} players still playing!"
|
99
95
|
else
|
100
|
-
@matches.
|
101
|
-
send_channels_msg("Match at #{match[:server][:
|
96
|
+
@matches.delete(k)
|
97
|
+
send_channels_msg("Match at #{match[:server][:key]} finished!")
|
102
98
|
end
|
103
99
|
end
|
104
100
|
end
|
105
101
|
end
|
106
102
|
|
103
|
+
def remove_user_from_queue(nick)
|
104
|
+
if @queue.key?(nick)
|
105
|
+
@queue.delete(nick)
|
106
|
+
send_channels_msg "Removed #{nick} from queue (#{get_match_type_as_string}) [#{@queue.length}]"
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
def remove_user_from_match(nick)
|
111
|
+
match = get_match_in(nick)
|
112
|
+
if match
|
113
|
+
send_channels_msg "#{user} has left the match at #{match[:key]}! Find a sub!"
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
107
117
|
def in_match(nick)
|
108
|
-
|
109
|
-
|
110
|
-
|
118
|
+
get_match_in(nick)
|
119
|
+
end
|
120
|
+
|
121
|
+
def get_match_in(nick)
|
122
|
+
m = false
|
123
|
+
@matches.each do |k,match|
|
124
|
+
if match[:team1] and match[:team1].include?(nick)
|
125
|
+
m = match
|
126
|
+
elsif match[:team2] and match[:team2].include?(nick)
|
127
|
+
m = match
|
128
|
+
end
|
111
129
|
end
|
112
|
-
|
130
|
+
m
|
131
|
+
end
|
132
|
+
|
133
|
+
def get_match_type_as_string
|
134
|
+
ms = KAG::Config.instance[:match_size]
|
135
|
+
ts = (ms / 2).ceil
|
136
|
+
"#{ts.to_s}v#{ts.to_s} #{KAG::Config.instance[:match_type]}"
|
113
137
|
end
|
114
138
|
|
115
139
|
def check_for_new_match(m)
|
@@ -131,11 +155,9 @@ module KAG
|
|
131
155
|
match_size = KAG::Config.instance[:match_size].to_i
|
132
156
|
match_size = 2 if match_size < 2
|
133
157
|
|
134
|
-
lb = (match_size / 2).ceil.to_i
|
158
|
+
lb = (match_size / 2).ceil.to_i
|
135
159
|
lb = 1 if lb < 1
|
136
160
|
|
137
|
-
(match_size-1).times { |x| playing << "player#{(x+1).to_s}" } if KAG::Config.instance[:debug]
|
138
|
-
|
139
161
|
debug "MATCH SIZE #{match_size.to_s}"
|
140
162
|
debug "LOWER BOUND: #{lb.to_s}"
|
141
163
|
debug "PLAYERS: #{playing.join(",")}"
|
@@ -143,8 +165,8 @@ module KAG
|
|
143
165
|
team1 = playing.slice(0,lb)
|
144
166
|
team2 = playing.slice(lb,match_size)
|
145
167
|
|
146
|
-
send_channels_msg("MATCH: #{team1.join(", ")} (Blue) vs #{team2.join(", ")} (Red)")
|
147
|
-
msg = "Join
|
168
|
+
send_channels_msg("MATCH: #{get_match_type_as_string} - #{team1.join(", ")} (Blue) vs #{team2.join(", ")} (Red)")
|
169
|
+
msg = "Join #{server[:key]} - #{server[:ip]}:#{server[:port]} password #{server[:password]} | Visit kag://#{server[:ip]}/#{server[:password]} | "
|
148
170
|
team1.each do |p|
|
149
171
|
User(p).send(msg+" Blue Team #{team1.join(", ")}") unless p.include?("player")
|
150
172
|
end
|
@@ -181,6 +203,13 @@ module KAG
|
|
181
203
|
false
|
182
204
|
end
|
183
205
|
|
206
|
+
match "help", method: :evt_help
|
207
|
+
def evt_help(m)
|
208
|
+
msg = "Commands: !add, !rem, !list, !status, !help, !end"
|
209
|
+
msg = msg + ", !rem [nick], !clear, !quit" if is_admin(m.user)
|
210
|
+
User(m.user.nick).send(msg)
|
211
|
+
end
|
212
|
+
|
184
213
|
# admin methods
|
185
214
|
|
186
215
|
def debug(msg)
|
@@ -195,8 +224,23 @@ module KAG
|
|
195
224
|
o.include?(user.authname)
|
196
225
|
end
|
197
226
|
|
198
|
-
match "
|
199
|
-
def
|
227
|
+
match "clear", method: :evt_clear
|
228
|
+
def evt_clear(m)
|
229
|
+
if is_admin(m.user)
|
230
|
+
send_channels_msg "Match queue cleared."
|
231
|
+
@queue = {}
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
235
|
+
match /rem (.+)/, method: :evt_rem_admin
|
236
|
+
def evt_rem_admin(m, arg)
|
237
|
+
if is_admin(m.user)
|
238
|
+
remove_user_from_queue(arg)
|
239
|
+
end
|
240
|
+
end
|
241
|
+
|
242
|
+
match "quit", method: :evt_quit
|
243
|
+
def evt_quit(m)
|
200
244
|
if is_admin(m.user)
|
201
245
|
m.bot.quit("Shutting down...")
|
202
246
|
end
|
data/lib/kag/version.rb
CHANGED