1313# define TASK_AUTO 1901
1414
1515new bool: g_bReadySystem;
16- new g_bReady[MAX_PLAYERS];
16+ new g_bReady[MAX_PLAYERS+ 1 ];
1717
1818new g_pAutoReadyTime;
1919new g_pAutoReadyKick;
@@ -40,21 +40,15 @@ public plugin_init()
4040 g_pRoundsMax = get_cvar_pointer (" pug_rounds_max" );
4141 g_pHandleTime = get_cvar_pointer (" pug_intermission_time" );
4242
43- PugRegisterCommand (" ready" ," ReadyUp " ,ADMIN_ALL," PUG_DESC_READY" );
44- PugRegisterCommand (" notready" ," ReadyDown " ,ADMIN_ALL," PUG_DESC_NOTREADY" );
43+ PugRegisterCommand (" ready" ," fnReadyUp " ,ADMIN_ALL," PUG_DESC_READY" );
44+ PugRegisterCommand (" notready" ," fnReadyDown " ,ADMIN_ALL," PUG_DESC_NOTREADY" );
4545
46- PugRegisterAdminCommand (" forceready" ," ForceReady " ,PUG_CMD_LVL," PUG_DESC_FORCEREADY" );
46+ PugRegisterAdminCommand (" forceready" ," fnForceReady " ,PUG_CMD_LVL," PUG_DESC_FORCEREADY" );
4747
48- register_event (" ResetHUD" ," KeepMenu " ," b" );
48+ register_event (" ResetHUD" ," fnKeepMenu " ," b" );
4949
50- hook_cvar_change (g_pPlayersMin," KeepMenu" );
51- hook_cvar_change (get_cvar_pointer (" amx_language" )," KeepMenu" );
52- }
53-
54- public client_putinserver (id)
55- {
56- g_bReady[id] = false ;
57- KeepMenu ();
50+ hook_cvar_change (g_pPlayersMin," fnKeepMenu" );
51+ hook_cvar_change (get_cvar_pointer (" amx_language" )," fnKeepMenu" );
5852}
5953
6054public client_disconnected (id,bool: bDrop,szMessage[],iLen)
@@ -64,42 +58,52 @@ public client_disconnected(id,bool:bDrop,szMessage[],iLen)
6458 remove_task (id + TASK_AUTO);
6559 }
6660
67- set_task (0 .1 ," KeepMenu" );
61+ if (g_bReadySystem)
62+ {
63+ set_task (0 .1 ," fnKeepMenu" );
64+ }
6865}
6966
7067public client_infochanged (id)
7168{
72- set_task (0 .1 ," KeepMenu" );
69+ if (g_bReadySystem)
70+ {
71+ set_task (0 .1 ," fnKeepMenu" );
72+ }
7373}
7474
7575public PugPlayerJoined (id,CsTeams: iTeam)
7676{
7777 if (g_bReadySystem)
7878 {
79+ g_bReady[id] = false ;
80+
7981 new Float: fReadyTime = get_pcvar_float (g_pAutoReadyTime);
8082
8183 if (fReadyTime && ! is_user_bot (id))
8284 {
83- set_task (fReadyTime," ReadyTimeOut " ,id + TASK_AUTO);
85+ set_task (fReadyTime," fnReadyTimeOut " ,id + TASK_AUTO);
8486
8587 new sTime[32 ];
8688 get_time_length (id,floatround (fReadyTime),timeunit_seconds,sTime,charsmax (sTime));
8789
8890 client_print_color (id,print_team_red," %s % L" ,g_sHead,LANG_SERVER,get_pcvar_num (g_pAutoReadyKick) ? " PUG_SAY_READY_KICK" : " PUG_SAY_READY_AUTO" ,sTime);
8991 }
92+
93+ fnKeepMenu ();
9094 }
9195}
9296
9397public PugEventWarmup ()
9498{
95- PugReadySystem (true );
99+ fnReadySystem (true );
96100}
97101
98102public PugEventStart ()
99103{
100104 if (g_bReadySystem)
101105 {
102- PugReadySystem (false );
106+ fnReadySystem (false );
103107 }
104108}
105109
@@ -108,106 +112,105 @@ public PugEventHalfTime()
108112 if (get_pcvar_num (g_pAutoStartHalf) && (PugGetPlayers (1 ) >= get_pcvar_num (g_pPlayersMin)))
109113 {
110114 arrayset (g_bReady,true ,sizeof (g_bReady));
111- set_task (get_pcvar_float (g_pHandleTime)," CheckReady " ,TASK_AUTO);
115+ set_task (get_pcvar_float (g_pHandleTime)," fnCheckReady " ,TASK_AUTO);
112116 }
113117 else
114118 {
115- PugReadySystem (true );
119+ fnReadySystem (true );
116120 }
117121}
118122
119123public PugEventSecondHalf ()
120124{
121125 if (g_bReadySystem)
122126 {
123- PugReadySystem (false );
127+ fnReadySystem (false );
124128 }
125129}
126130
127131public PugEventOvertime ()
128132{
129133 if (g_bReadySystem)
130134 {
131- PugReadySystem (false );
135+ fnReadySystem (false );
132136 }
133137}
134138
135- PugReadySystem (bool: bActive)
139+ fnReadySystem (bool: bActive)
136140{
137- switch (g_bReadySystem = bActive)
138- {
139- case true:
140- {
141- arrayset (g_bReady,0 ,sizeof (g_bReady));
142- KeepMenu ();
141+ g_bReadySystem = bActive;
143142
144- client_print_color (0 ,print_team_red," %s % L" ,g_sHead,LANG_SERVER," PUG_SAY_READY" );
145- }
146- case false:
147- {
148- PugReadyDisPlay (0 .0 );
149- arrayset (g_bReady,0 ,sizeof (g_bReady));
150-
151- client_print_color (0 ,print_team_red," %s % L" ,g_sHead,LANG_SERVER," PUG_ALL_READY" );
152- }
143+ if (g_bReadySystem)
144+ {
145+ fnKeepMenu ();
146+ arrayset (g_bReady,0 ,sizeof (g_bReady));
147+ client_print_color (0 ,print_team_red," %s % L" ,g_sHead,LANG_SERVER," PUG_SAY_READY" );
148+ }
149+ else
150+ {
151+ arrayset (g_bReady,0 ,sizeof (g_bReady));
152+ client_print_color (0 ,print_team_red," %s % L" ,g_sHead,LANG_SERVER," PUG_ALL_READY" );
153153 }
154154}
155155
156- public KeepMenu ()
156+ public fnKeepMenu ()
157157{
158158 if (g_bReadySystem)
159159 {
160- PugReadyDisPlay ( 9999 .0 );
160+ fnDisplay ( 999 .0 );
161161 }
162162}
163163
164- PugReadyDisPlay (Float: fHoldTime)
164+ fnDisplay (Float: fHoldTime)
165165{
166- new iPlayersNum,iReadys;
167- new sReady[256 ],sNotReady[256 ],sName[MAX_NAME_LENGTH];
168-
169- new iPlayers[MAX_PLAYERS],iNum,iPlayer;
170- get_players (iPlayers,iNum," ch" );
171-
172- for (new i;i < iNum;i++ )
166+ if (g_bReadySystem)
173167 {
174- iPlayer = iPlayers[i];
168+ new iPlayers[MAX_PLAYERS],iNum,iPlayer;
169+ get_players (iPlayers,iNum," ch" );
175170
176- if (! PugIsTeam (iPlayer))
171+ new iPlayersNum,iReadys;
172+ new sList[2 ][512 ],sName[MAX_NAME_LENGTH];
173+
174+ for (new i;i < iNum;i++ )
177175 {
178- continue ;
179- }
176+ iPlayer = iPlayers[i];
177+
178+ if (! PugIsTeam (iPlayer))
179+ {
180+ continue ;
181+ }
182+
183+ iPlayersNum++ ;
184+ get_user_name (iPlayer,sName,charsmax (sName));
180185
181- iPlayersNum++ ;
182- get_user_name (iPlayer,sName,charsmax (sName));
183-
184- if (g_bReady[iPlayer])
185- {
186- iReadys++ ;
187- format (sReady,charsmax (sReady)," %s%s ^n" ,sReady,sName);
188- }
189- else
190- {
191- format (sNotReady,charsmax (sNotReady)," %s%s ^n" ,sNotReady,sName);
186+ if (g_bReady[iPlayer])
187+ {
188+ iReadys++ ;
189+ formatex (sList[0 ],charsmax (sList[])," %s%s ^n" ,sList[0 ],sName);
190+ }
191+ else
192+ {
193+ formatex (sList[1 ],charsmax (sList[])," %s%s ^n" ,sList[1 ],sName);
194+ }
192195 }
193- }
196+
197+ new iMinPlayers = get_pcvar_num (g_pPlayersMin);
194198
195- new iMinPlayers = get_pcvar_num (g_pPlayersMin);
196-
197- set_hudmessage (0 ,255 ,0 ,0 .23 ,0 .02 ,0 ,0 .0 ,fHoldTime,0 .0 ,0 .0 ,1 );
198- show_hudmessage (0 ," % L" ,LANG_SERVER," PUG_HUD_UNREADY" ,(iPlayersNum - iReadys),iMinPlayers);
199-
200- set_hudmessage (0 ,255 ,0 ,0 .58 ,0 .02 ,0 ,0 .0 ,fHoldTime,0 .0 ,0 .0 ,2 );
201- show_hudmessage (0 ," % L" ,LANG_SERVER," PUG_HUD_READY" ,iReadys,iMinPlayers);
202-
203- set_hudmessage (255 ,255 ,225 ,0 .58 ,0 .02 ,0 ,0 .0 ,fHoldTime,0 .0 ,0 .0 ,3 );
204- show_hudmessage (0 ," ^n%s " ,sReady);
205-
206- set_hudmessage (255 ,255 ,225 ,0 .23 ,0 .02 ,0 ,0 .0 ,fHoldTime,0 .0 ,0 .0 ,4 );
207- show_hudmessage (0 ," ^n%s " ,sNotReady);
199+ set_hudmessage (0 ,255 ,0 ,0 .23 ,0 .02 ,0 ,0 .0 ,fHoldTime,0 .0 ,0 .0 ,1 );
200+ show_hudmessage (0 ," % L" ,LANG_SERVER," PUG_HUD_UNREADY" ,(iPlayersNum - iReadys),iMinPlayers);
201+
202+ set_hudmessage (0 ,255 ,0 ,0 .58 ,0 .02 ,0 ,0 .0 ,fHoldTime,0 .0 ,0 .0 ,2 );
203+ show_hudmessage (0 ," % L" ,LANG_SERVER," PUG_HUD_READY" ,iReadys,iMinPlayers);
204+
205+ set_hudmessage (255 ,255 ,225 ,0 .58 ,0 .02 ,0 ,0 .0 ,fHoldTime,0 .0 ,0 .0 ,3 );
206+ show_hudmessage (0 ," ^n%s " ,sList[0 ]);
207+
208+ set_hudmessage (255 ,255 ,225 ,0 .23 ,0 .02 ,0 ,0 .0 ,fHoldTime,0 .0 ,0 .0 ,4 );
209+ show_hudmessage (0 ," ^n%s " ,sList[1 ]);
210+ }
208211}
209212
210- public ReadyUp (id)
213+ public fnReadyUp (id)
211214{
212215 new iStage = GET_PUG_STAGE ();
213216
@@ -229,7 +232,7 @@ public ReadyUp(id)
229232
230233 client_print_color (0 ,print_team_red," %s % L" ,g_sHead,LANG_SERVER," PUG_PLAYER_READY" ,sName);
231234
232- CheckReady ();
235+ fnCheckReady ();
233236 }
234237 else
235238 {
@@ -249,7 +252,7 @@ public ReadyUp(id)
249252 return PLUGIN_HANDLED;
250253}
251254
252- public ReadyDown (id)
255+ public fnReadyDown (id)
253256{
254257 new iStage = GET_PUG_STAGE ();
255258
@@ -265,15 +268,15 @@ public ReadyDown(id)
265268
266269 if (fReadyTime && get_pcvar_num (g_pAutoReadyKick))
267270 {
268- set_task (fReadyTime," ReadyTimeOut " ,id + TASK_AUTO);
271+ set_task (fReadyTime," fnReadyTimeOut " ,id + TASK_AUTO);
269272 }
270273
271274 new sName[MAX_NAME_LENGTH];
272275 get_user_name (id,sName,charsmax (sName));
273276
274277 client_print_color (0 ,print_team_red," %s % L" ,g_sHead,LANG_SERVER," PUG_PLAYER_UNREADY" ,sName);
275278
276- CheckReady ();
279+ fnCheckReady ();
277280 }
278281 else
279282 {
@@ -293,7 +296,7 @@ public ReadyDown(id)
293296 return PLUGIN_HANDLED;
294297}
295298
296- public ForceReady (id,iLevel)
299+ public fnForceReady (id,iLevel)
297300{
298301 if (! access (id,PUG_CMD_LVL) && (id != 0 ))
299302 {
@@ -311,15 +314,15 @@ public ForceReady(id,iLevel)
311314 return PLUGIN_HANDLED;
312315 }
313316
314- PugAdminCommandClient (id," Force .ready" ," PUG_FORCE_READY" ,iPlayer,ReadyUp (iPlayer));
317+ PugAdminCommandClient (id," Force .ready" ," PUG_FORCE_READY" ,iPlayer,fnReadyUp (iPlayer));
315318 }
316319
317320 return PLUGIN_HANDLED;
318321}
319322
320- public CheckReady ()
323+ public fnCheckReady ()
321324{
322- KeepMenu ();
325+ fnKeepMenu ();
323326
324327 new iReady = 0 ;
325328
@@ -333,7 +336,7 @@ public CheckReady()
333336
334337 if (iReady >= get_pcvar_num (g_pPlayersMin))
335338 {
336- PugReadySystem (false );
339+ fnReadySystem (false );
337340
338341 switch (GET_PUG_STAGE ())
339342 {
@@ -356,19 +359,15 @@ public CheckReady()
356359 }
357360}
358361
359- public ReadyTimeOut (id)
362+ public fnReadyTimeOut (id)
360363{
361364 id -= TASK_AUTO;
362365
363366 if (g_bReadySystem && is_user_connected (id))
364367 {
365368 if (PugIsTeam (id))
366369 {
367- if (get_pcvar_num (g_pAutoReadyKick) <= 0 )
368- {
369- ReadyUp (id);
370- }
371- else
370+ if (get_pcvar_num (g_pAutoReadyKick) > 0 )
372371 {
373372 new iReadyTime = get_pcvar_num (g_pAutoReadyTime);
374373
@@ -381,8 +380,12 @@ public ReadyTimeOut(id)
381380 sTime,
382381 charsmax (sTime)
383382 );
384-
385- PugDisconnect (id," % L" ,LANG_SERVER," PUG_FORCE_READY_KICK" ,sTime);
383+
384+ server_cmd (" kick #%i ^" % L^ " " ,get_user_userid (id),LANG_SERVER," PUG_FORCE_READY_KICK" ,sTime);
385+ }
386+ else
387+ {
388+ fnReadyUp (id);
386389 }
387390 }
388391 }
0 commit comments