Skip to content
This repository was archived by the owner on Oct 30, 2019. It is now read-only.

Commit 62421ab

Browse files
CleversonCleverson
authored andcommitted
Fixed client_disconnected
Fix client_disconnected, added sv_visiblemaxplayers support and removed Anti-Reconnect functions duo the auto-ban feature
1 parent d4d44c8 commit 62421ab

File tree

1 file changed

+35
-65
lines changed

1 file changed

+35
-65
lines changed

addons/amxmodx/scripting/PugCore.sma

Lines changed: 35 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,8 @@ new g_pAllowOT;
4343
new g_pHandleTime;
4444
new g_pAllowSpec;
4545
new g_pAllowHLTV;
46-
new g_pReconnect;
4746
new g_pBanLeaveTime;
48-
49-
new Trie:g_tReconnect;
47+
new g_pVisibleMaxPlayers;
5048

5149
public 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

126123
public 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+
263234
public fnHandleSay(id)
264235
{
265236
new sArgs[192];
@@ -320,6 +291,7 @@ public CoreFirstHalf()
320291
public 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

Comments
 (0)