Raised This Month: $51 Target: $400
 12% 

Solved [CS:GO][SM:1.10] Ban Disconnect List ...


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Dr.Mohammad
Senior Member
Join Date: Jan 2016
Location: CSGO Servers
Old 10-23-2019 , 22:43   [CS:GO][SM:1.10] Ban Disconnect List ...
Reply With Quote #1

hi guys!!
I have a problem after updating SM:1.9 to SM:1.10.
Ban dissconnect plugin dont work on SM:1.10!!

can you help me for fix this plugin on SM:1.10??
full cod:
PHP Code:
#include <sourcemod>
#include <adminmenu>

#pragma semicolon 1
#pragma newdecls required

#define PLUGIN_VERSION "2.0"
#define TAG "[SM] "

Handle g_hTopMenu null;

ConVar gcv_iArraySize null;

ArrayList ga_Names;
ArrayList ga_SteamIds;

public 
Plugin myinfo =
{
    
name "[ANY] Ban Disconnected Player",
    
author "Headline, Original Plugin : mad_hamster",
    
description "Allows you to ban players who have disconnected from the server",
    
version PLUGIN_VERSION,
    
url "http://michaelwflaherty.com/"
};

public 
void OnPluginStart()
{
    
CreateConVar("hl_bandisconnected_version"PLUGIN_VERSION"Headline's ban disconnected plugin"FCVAR_DONTRECORD);
    
    
gcv_iArraySize CreateConVar("hl_bandisconnected_max""100""List size of ban disconnected players menu");
    
    
RegAdminCmd("sm_bandisconnected"Command_BanDisconnectedADMFLAG_BAN"Ban a player after they have disconnected!");
    
RegAdminCmd("sm_listdisconnected"Command_ListDisconnectedADMFLAG_BAN"List all disconnected players!");

    
HookEvent("player_disconnect"Event_PlayerDisconnectEventHookMode_Pre);
    
    
Handle topmenu;
    if(
LibraryExists("adminmenu") && ((topmenu GetAdminTopMenu()) != INVALID_HANDLE))
    {
        
OnAdminMenuReady(topmenu);
    }
    
LoadADTArray();
}

public 
void OnClientPostAdminCheck(int client)
{
    
char sSteamID[32];
    
GetClientAuthId(clientAuthId_Steam2sSteamIDsizeof(sSteamID));

    if (
FindStringInArray(ga_SteamIdssSteamID) != -1)
    {
        
ga_Names.Erase(ga_SteamIds.FindString(sSteamID));
        
ga_SteamIds.Erase(ga_SteamIds.FindString(sSteamID));
    }
}

public 
Action Event_PlayerDisconnect(Event hEventchar[] namebool bDontBroadcast)
{
    
int client GetClientOfUserId(hEvent.GetInt("userid"));
    if (
IsValidClient(client))
    {
        
char sName[MAX_NAME_LENGTH];
        
GetClientName(clientsNamesizeof(sName));
        
        
char sDisconnectedSteamID[32];
        
GetClientAuthId(clientAuthId_Steam2sDisconnectedSteamIDsizeof(sDisconnectedSteamID));
        
        if (
FindStringInArray(ga_SteamIdssDisconnectedSteamID) == -1)
        {
            
PushToArrays(sNamesDisconnectedSteamID);
        }
    }
}

void PushToArrays(const char[] clientName, const char[] clientSteam)
{    
    if (
ga_Names.Length == 0)
    {
        
ga_Names.PushString(clientName);
        
ga_SteamIds.PushString(clientSteam);
    }
    else
    {
        
ga_Names.ShiftUp(0);
        
ga_SteamIds.ShiftUp(0);
        
        
ga_Names.SetString(0clientName);
        
ga_SteamIds.SetString(0clientSteam);
    }
    
    
/* Trucate Arrays */
    
if (ga_Names.Length >= gcv_iArraySize.IntValue && gcv_iArraySize.IntValue 0)
    {
        
ga_Names.Resize(gcv_iArraySize.IntValue);
        
ga_SteamIds.Resize(gcv_iArraySize.IntValue);
    }
}

public 
Action Command_BanDisconnected(int clientint args)
{
    if (
args != 3)
    {
        
ReplyToCommand(client" %sUsage: sm_bandisconnected <\"steamid\"> <minutes|0> [\"reason\"]"TAG);
        return 
Plugin_Handled;
    }
    else
    {
        
char steamid[20], minutes[10], reason[256];
        
GetCmdArg(1steamidsizeof(steamid));
        
GetCmdArg(2minutessizeof(minutes));
        
GetCmdArg(3reason,  sizeof(reason));
        
CheckAndPerformBan(clientsteamidStringToInt(minutes), reason);
    }
    return 
Plugin_Handled;
}

public 
Action Command_ListDisconnected(int clientint args)
{
    if (
ga_Names.Length >= 10)
    {
        
PrintToConsole(client"************ LAST 10 DISCONNECTED PLAYERS *****************");
        for (
int i 0<= 10i++)
        {
            
char sName[MAX_TARGET_LENGTH], sSteamID[32];
            
            
ga_Names.GetString(isNamesizeof(sName));
            
ga_SteamIds.GetString(isSteamIDsizeof(sSteamID));
            
            
PrintToConsole(client"NAME : %s  STEAMID : %s"sNamesSteamID);
        }
        
PrintToConsole(client"************ LAST 10 DISCONNECTED PLAYERS *****************");
    }
    else
    {
        if (
ga_Names.Length == 0)
        {
            
PrintToConsole(client"[SM] There are no disconnected players yet!");
        }
        else
        {
            
PrintToConsole(client"************ LAST %i DISCONNECTED PLAYERS *****************"GetArraySize(ga_Names) - 1);
            for (
int i 0ga_Names.Lengthi++)
            {
                
char sName[MAX_TARGET_LENGTH], sSteamID[32];
                
                
ga_Names.GetString(isNamesizeof(sName));
                
ga_SteamIds.GetString(isSteamIDsizeof(sSteamID));
            
                
PrintToConsole(client"** %s | %s **"sNamesSteamID);
            }
            
PrintToConsole(client"************ LAST %i DISCONNECTED PLAYERS *****************"GetArraySize(ga_Names) - 1);
        }
    }
    return 
Plugin_Handled;
}

void CheckAndPerformBan(int clientchar[] steamidint minuteschar[] reason)
{
    
AdminId admClient GetUserAdmin(client);
    
AdminId admTarget;
    if ((
admTarget FindAdminByIdentity(AUTHMETHOD_STEAMsteamid)) == INVALID_ADMIN_ID || CanAdminTarget(admClientadmTarget))
    {
        
bool hasRoot GetAdminFlag(admClientAdmin_Root);
        
SetAdminFlag(admClientAdmin_Roottrue);
        
FakeClientCommand(client"sm_addban %d \"%s\" %s"minutessteamidreason);
        
SetAdminFlag(admClientAdmin_RoothasRoot);
    }
    else
    {
        
ReplyToCommand(client" %sYou can't ban an admin with higher immunity than yourself"TAG);
    }
}

public 
void OnAdminMenuReady(Handle hTopMenu)
{
    if(
hTopMenu == g_hTopMenu)
    {
        return;
    }
    
    
g_hTopMenu hTopMenu;

    
TopMenuObject MenuObject FindTopMenuCategory(hTopMenuADMINMENU_PLAYERCOMMANDS);
    if(
MenuObject == INVALID_TOPMENUOBJECT)
    {
        return;
    } 
    
AddToTopMenu(hTopMenu"sm_bandisconnected"TopMenuObject_ItemAdminMenu_BanMenuObject"sm_bandisconnected"ADMFLAG_BAN"Ban Disconnected Player");
}

public 
void AdminMenu_Ban(Handle hTopMenuTopMenuAction actionTopMenuObject object_idint paramchar[] bufferint maxlength)
{
    if (
action == TopMenuAction_DisplayOption)
    {
        
Format(buffermaxlength"Ban disconnected player");
    }
    else if (
action == TopMenuAction_SelectOption)
    {
        
DisplayTargetsMenu(param);
    }
}

public 
void DisplayTargetsMenu(int client
{
    if (
ga_SteamIds.Length == 0)
    {
        
ReplyToCommand(client"[SM] There are no disconnected players yet!");
        return;
    }
    
    
Menu MainMenu = new Menu(TargetsMenu_CallBackMenuAction_Select MenuAction_End); 
    
MainMenu.SetTitle("Select a target!"); 

    
char sDisplayBuffer[128], sSteamID[32], sName[MAX_NAME_LENGTH];
    for (
int i 0ga_SteamIds.Lengthi++)
    {
        
ga_Names.GetString(isNamesizeof(sName));
        
        
ga_SteamIds.GetString(isSteamIDsizeof(sSteamID));
        
        
Format(sDisplayBuffersizeof(sDisplayBuffer), "%s (%s)"sNamesSteamID);
        
        
MainMenu.AddItem(sSteamIDsDisplayBuffer); 
    }
    
SetMenuExitBackButton(MainMenutrue);
    
DisplayMenu(MainMenuclientMENU_TIME_FOREVER); 
}

public 
int TargetsMenu_CallBack(Menu MainMenuMenuAction actionint param1int param2
{
    switch (
action)
    {
        case 
MenuAction_Select:
        {
            
char sInfo[128];
            
GetMenuItem(MainMenuparam2sInfosizeof(sInfo));
            
            
DisplayBanTimeMenu(param1sInfo);
        }
        case 
MenuAction_Cancel:
        {
            if (
param2 == MenuCancel_ExitBack && g_hTopMenu != INVALID_HANDLE)
            {
                
DisplayTopMenu(g_hTopMenuparam1TopMenuPosition_LastCategory);
            }
        }
        case 
MenuAction_End:
        {
            
CloseHandle(MainMenu);
        }
    }
}

public 
void DisplayBanTimeMenu(int clientchar[] sInfo)
{
    
Menu BanTimeMenu = new Menu(BanTime_CallBackMenuAction_Select MenuAction_End); 
    
BanTimeMenu.SetTitle("Select A Time:"); 
    
char sInfoBuffer[128];
    
    
Format(sInfoBuffersizeof(sInfoBuffer), "%s,0"sInfo);
    
BanTimeMenu.AddItem(sInfoBuffer"Permanent");
    
    
Format(sInfoBuffersizeof(sInfoBuffer), "%s,10"sInfo);
    
BanTimeMenu.AddItem(sInfoBuffer"10 Minutes");
    
    
Format(sInfoBuffersizeof(sInfoBuffer), "%s,30"sInfo);
    
BanTimeMenu.AddItem(sInfoBuffer"30 Minutes");
    
    
Format(sInfoBuffersizeof(sInfoBuffer), "%s,60"sInfo);
    
BanTimeMenu.AddItem(sInfoBuffer"1 Hour");
    
    
Format(sInfoBuffersizeof(sInfoBuffer), "%s,240"sInfo);
    
BanTimeMenu.AddItem(sInfoBuffer"4 Hours");
    
    
Format(sInfoBuffersizeof(sInfoBuffer), "%s,1440"sInfo);
    
BanTimeMenu.AddItem(sInfoBuffer"1 Day");
    
    
Format(sInfoBuffersizeof(sInfoBuffer), "%s,10080"sInfo);
    
BanTimeMenu.AddItem(sInfoBuffer"1 Week");
    
    
Format(sInfoBuffersizeof(sInfoBuffer), "%s,20160"sInfo);
    
BanTimeMenu.AddItem(sInfoBuffer"2 Weeks");
    
    
Format(sInfoBuffersizeof(sInfoBuffer), "%s,30240"sInfo);
    
BanTimeMenu.AddItem(sInfoBuffer"3 Weeks");
    
    
Format(sInfoBuffersizeof(sInfoBuffer), "%s,43200"sInfo);
    
BanTimeMenu.AddItem(sInfoBuffer"1 Month");
    
    
Format(sInfoBuffersizeof(sInfoBuffer), "%s,129600"sInfo);
    
BanTimeMenu.AddItem(sInfoBuffer"3 Months");
    
    
SetMenuExitBackButton(BanTimeMenutrue);
    
DisplayMenu(BanTimeMenuclientMENU_TIME_FOREVER); 
}

public 
int BanTime_CallBack(Handle BanTimeMenuMenuAction actionint param1int param2)
{
    switch (
action)
    {
        case 
MenuAction_Select:
        {
            
char sInfo[128];
            
GetMenuItem(BanTimeMenuparam2sInfosizeof(sInfo));
            
            
DisplayBanReasonMenu(param1sInfo);
        }
        case 
MenuAction_Cancel:
        {
            if (
param2 == MenuCancel_ExitBack && g_hTopMenu != INVALID_HANDLE)
            {
                
DisplayTopMenu(g_hTopMenuparam1TopMenuPosition_LastCategory);
            }
        }
        case 
MenuAction_End:
        {
            
CloseHandle(BanTimeMenu);
        }
    }
}

void DisplayBanReasonMenu(int clientchar[] sInfo)
{
    
Menu BanReasonMenu = new Menu(BanReason_CallBackMenuAction_Select MenuAction_End); 
    
BanReasonMenu.SetTitle("Select A Reason:"); 
    
char sInfoBuffer[128];
        
    
Format(sInfoBuffersizeof(sInfoBuffer), "%s,Abusive"sInfo);
    
BanReasonMenu.AddItem(sInfoBuffer"Abusive");
    
    
Format(sInfoBuffersizeof(sInfoBuffer), "%s,Racism"sInfo);
    
BanReasonMenu.AddItem(sInfoBuffer"Racism");
    
    
Format(sInfoBuffersizeof(sInfoBuffer), "%s,General cheating/exploits"sInfo);
    
BanReasonMenu.AddItem(sInfoBuffer"General cheating/exploits");
    
    
Format(sInfoBuffersizeof(sInfoBuffer), "%s,Wallhack"sInfo);
    
BanReasonMenu.AddItem(sInfoBuffer"Wallhack");
    
    
Format(sInfoBuffersizeof(sInfoBuffer), "%s,Aimbot"sInfo);
    
BanReasonMenu.AddItem(sInfoBuffer"Aimbot");
    
    
Format(sInfoBuffersizeof(sInfoBuffer), "%s,Speedhacking"sInfo);
    
BanReasonMenu.AddItem(sInfoBuffer"Speedhacking");
    
    
Format(sInfoBuffersizeof(sInfoBuffer), "%s,Mic spamming"sInfo);
    
BanReasonMenu.AddItem(sInfoBuffer"Mic spamming");
    
    
Format(sInfoBuffersizeof(sInfoBuffer), "%s,Admin disrepect"sInfo);
    
BanReasonMenu.AddItem(sInfoBuffer"Admin disrepect");
    
    
Format(sInfoBuffersizeof(sInfoBuffer), "%s,Camping"sInfo);
    
BanReasonMenu.AddItem(sInfoBuffer"Camping");
    
    
Format(sInfoBuffersizeof(sInfoBuffer), "%s,Team killing"sInfo);
    
BanReasonMenu.AddItem(sInfoBuffer"Team killing");
    
    
Format(sInfoBuffersizeof(sInfoBuffer), "%s,Unacceptable Spray"sInfo);
    
BanReasonMenu.AddItem(sInfoBuffer"Unacceptable Spray");
    
    
Format(sInfoBuffersizeof(sInfoBuffer), "%s,Breaking Server Rules"sInfo);
    
BanReasonMenu.AddItem(sInfoBuffer"Breaking Server Rules");
    
    
Format(sInfoBuffersizeof(sInfoBuffer), "%s,Other"sInfo);
    
BanReasonMenu.AddItem(sInfoBuffer"Other");
    
    
SetMenuExitBackButton(BanReasonMenutrue);
    
DisplayMenu(BanReasonMenuclientMENU_TIME_FOREVER);
}

public 
int BanReason_CallBack(Handle BanReasonMenuMenuAction actionint param1int param2)
{
    switch (
action)
    {
        case 
MenuAction_Select:
        {
            
char sInfo[128], sTempArray[3][64]; // Steamid,time,reason is the format of sInfo
            
            
GetMenuItem(BanReasonMenuparam2sInfosizeof(sInfo));
            
ExplodeString(sInfo","sTempArray364);
            
CheckAndPerformBan(param1sTempArray[0], StringToInt(sTempArray[1]), sTempArray[2]);
        }
        case 
MenuAction_Cancel:
        {
            if (
param2 == MenuCancel_ExitBack && g_hTopMenu != INVALID_HANDLE)
            {
                
DisplayTopMenu(g_hTopMenuparam1TopMenuPosition_LastCategory);
            }
        }
        case 
MenuAction_End:
        {
            
CloseHandle(BanReasonMenu);
        }
    }
}

void LoadADTArray()
{
    
ga_Names = new ArrayList(MAX_TARGET_LENGTH);
    
ga_SteamIds = new ArrayList(32);
}

bool IsValidClient(int clientbool bAllowBots falsebool bAllowDead true)
{
    if(!(
<= client <= MaxClients) || !IsClientInGame(client) || (IsFakeClient(client) && !bAllowBots) || IsClientSourceTV(client) || IsClientReplay(client) || (!bAllowDead && !IsPlayerAlive(client)))
    {
        return 
false;
    }
    return 
true;
}

/* Changeslog
    1.0
        - Initial Release
    1.1
        - Fixed Invalid Client Issue
    1.2
        - Fixed reason issue where it'd fail sm_addban
    1.3
        - Implemented asherkin's suggestion
    1.4
        - Fixed list order issue
    1.5
        - Created ConVar to limit array size
        - Cleaned up lots of weird problems
        - Now using more OO methods
        - Fixed where newer Steam D's were being
        truncated.
    2.0
        - Fixed issue where player's weren't getting banned
        - Added chat message when there were no disconnected players
        - 
*/

thank you!! 

Last edited by Dr.Mohammad; 10-30-2019 at 00:40.
Dr.Mohammad is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 10:59.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode