@@ -43,10 +43,8 @@ new g_pAllowOT;
4343new g_pHandleTime;
4444new g_pAllowSpec;
4545new g_pAllowHLTV;
46- new g_pReconnect;
4746new g_pBanLeaveTime;
48-
49- new Trie: g_tReconnect;
47+ new g_pVisibleMaxPlayers;
5048
5149public plugin_init ()
5250{
@@ -73,13 +71,14 @@ public plugin_init()
7371 g_pAllowSpec = create_cvar (" pug_allow_spectators" ," 1" ,FCVAR_NONE," Allow Spectators to join in server" );
7472 g_pAllowHLTV = create_cvar (" pug_allow_hltv" ," 1" ,FCVAR_NONE," Allow HLTV in pug" );
7573
76- g_pReconnect = create_cvar (" pug_retry_time" ," 20.0" ,FCVAR_NONE," Time to player wait before retry in server (0.0 disabled)" );
77- g_pBanLeaveTime = create_cvar (" pug_ban_leaver_time" ," 0" ,FCVAR_NONE," Time to ban player if he leaves on a live match (0 disabled)" );
74+ g_pBanLeaveTime = create_cvar (" pug_ban_leaver_time" ," 5" ,FCVAR_NONE," Time to ban player if he leaves on a live match (0 disabled)" );
75+
76+ g_pVisibleMaxPlayers = get_cvar_pointer (" sv_visiblemaxplayers" );
7877
79- g_tReconnect = TrieCreate ( );
78+ hook_cvar_change (g_pPlayersMax, " fnPlayersMaxChange " );
8079
81- register_concmd (" say" ," fnHandleSay" );
82- register_concmd (" say_team" ," fnHandleSay" );
80+ register_clcmd (" say" ," fnHandleSay" );
81+ register_clcmd (" say_team" ," fnHandleSay" );
8382
8483 PugRegisterCommand (" help" ," fnHelp" ,ADMIN_ALL," PUG_DESC_HELP" );
8584 PugRegisterAdminCommand (" help" ," fnAdminHelp" ,PUG_CMD_LVL," PUG_DESC_HELP" );
@@ -119,8 +118,6 @@ public plugin_end()
119118 {
120119 PugEnd (fnGetWinner ());
121120 }
122-
123- TrieDestroy (g_tReconnect);
124121}
125122
126123public plugin_natives ()
@@ -183,58 +180,12 @@ public client_authorized(id)
183180 return PLUGIN_CONTINUE;
184181 }
185182
186- new iReconnectTime = get_pcvar_num (g_pReconnect);
187-
188- if (iReconnectTime && ! is_user_bot (id) && ! iHLTV && ! access (id,PUG_CMD_LVL))
189- {
190- new sSteam[35 ],iTime;
191- get_user_authid (id,sSteam,charsmax (sSteam));
192-
193- if (TrieGetCell (g_tReconnect,sSteam,iTime))
194- {
195- if ((get_systime () - iTime) < iReconnectTime)
196- {
197- new sTime[32 ];
198- get_time_length
199- (
200- id,
201- (iReconnectTime + iTime - get_systime ()),
202- timeunit_seconds,
203- sTime,
204- charsmax (sTime)
205- );
206-
207- server_cmd (" kick #%i ^" % L^ " " ,get_user_userid (id),LANG_SERVER," PUG_KICK_RETRY" ,sTime);
208- }
209- }
210- }
211-
212183 return PLUGIN_CONTINUE;
213184}
214185
215- public client_disconnected (id,bool: bDrop,szMessage [],iLen)
186+ public client_disconnected (id,bool: bDrop,szMsg [],iLen)
216187{
217- new bool: bSendDrop = false ;
218-
219- if (equali (szMessage," Client sent 'drop'" ) || equali (szMessage," Timed out" ) /* ALT+F4 user too*/ )
220- {
221- bSendDrop = true ;
222- }
223-
224- new isAdmin = access (id,PUG_CMD_LVL);
225-
226- if (bSendDrop)
227- {
228- if (get_pcvar_num (g_pReconnect) && ! isAdmin)
229- {
230- new sSteam[35 ];
231- get_user_authid (id,sSteam,charsmax (sSteam));
232-
233- TrieSetCell (g_tReconnect,sSteam,get_systime ());
234- }
235- }
236-
237- if (STAGE_FIRSTHALF <= g_iStage <= STAGE_OVERTIME)
188+ if (STAGE_START <= g_iStage <= STAGE_OVERTIME)
238189 {
239190 new iPlayersMin = get_pcvar_num (g_pPlayersMin);
240191
@@ -245,21 +196,41 @@ public client_disconnected(id,bool:bDrop,szMessage[],iLen)
245196 return PLUGIN_CONTINUE;
246197 }
247198
248- if (bSendDrop && ! isAdmin)
199+ new iBanTime = get_pcvar_num (g_pBanLeaveTime);
200+
201+ if (iBanTime > 0 )
249202 {
250- new iBanTime = get_pcvar_num (g_pBanLeaveTime);
251-
252- if (iBanTime > 0 )
203+ if (equali (szMsg," Client sent 'drop'" ) && ! access (id,PUG_CMD_LVL))
253204 {
254205 server_cmd (" banid %i #%d ;writeid" ,iBanTime,get_user_userid (id));
255206 server_exec ();
207+
208+ new szName[MAX_NAME_LENGTH];
209+ get_user_name (id,szName,charsmax (szName));
210+
211+ new szTime[64 ];
212+ get_time_length
213+ (
214+ id,
215+ iBanTime,
216+ timeunit_minutes,
217+ szTime,
218+ charsmax (szTime)
219+ );
220+
221+ client_print_color (0 ,print_team_red," %s % L" ,g_sHead,LANG_SERVER," PUG_KICK_LEAVER" ,szName,szTime,szMsg);
256222 }
257223 }
258224 }
259225
260226 return PLUGIN_CONTINUE;
261227}
262228
229+ public fnPlayersMaxChange ()
230+ {
231+ set_pcvar_num (g_pVisibleMaxPlayers,get_pcvar_num (g_pPlayersMax));
232+ }
233+
263234public fnHandleSay (id)
264235{
265236 new sArgs[192 ];
@@ -320,6 +291,7 @@ public CoreFirstHalf()
320291public PugEventFirstHalf ()
321292{
322293 g_iRound = 1 ;
294+
323295 client_print_color (0 ,print_team_red," %s % L" ,g_sHead,LANG_SERVER," PUG_HALFLIVE" ,g_sStage[g_iStage]);
324296}
325297
@@ -535,18 +507,16 @@ public PugEventRoundWinner(iWinner)
535507 if (iWinner)
536508 {
537509 g_iRoundWinner = iWinner;
538-
539510 console_print (0 ," * % L" ,LANG_SERVER," PUG_ROUND_END" ,g_iRound,g_sTeams[iWinner]);
540511 }
541512 else
542513 {
543514 g_iRoundWinner = 0 ;
544-
545515 console_print (0 ," * % L" ,LANG_SERVER," PUG_ROUND_END_FAILED" ,g_iRound);
546516 }
547517}
548518
549- public PugEventRoundEnd (iStage) /* THIS IS A FIX FOR LAST ROUND PROBLEM */
519+ public PugEventRoundEnd (iStage)
550520{
551521 if (g_iRoundWinner)
552522 {
0 commit comments