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

[CSGO] Local Bans


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
PorcusorulMagic
Member
Join Date: Dec 2018
Location: Romania
Old 03-26-2019 , 07:56   [CSGO] Local Bans
Reply With Quote #1

Hello. I tried to edit the bans plugin to stock his bans , but i failed. So i found this surse but i cant compile it. What i need to modify? I know sourcebans is better than what i want to make here..
PHP Code:
//// LocalBans.sp
//
// LocalBans/util.sp(271) : warning 203: symbol is never used: "iClient"
// LocalBans/cmds.sp(44) : error 029: invalid expression, assumed zero
// LocalBans/cmds.sp(50) : warning 225: unreachable code 
util.sp
PHP Code:
void UTIL_OfflineBan(int iAdminint iID, const char[] szReason)
{
    
DebugMessage("%N (%i) UTIL_OfflineBan -> %i (%s)"iAdminiAdminiIDszReason)
    
DataPack hPack CreateDataPack();
    
hPack.WriteCell(UID(iAdmin));
    
hPack.WriteCell(iID);
    
hPack.WriteString(szReason);

    
char szQuery[256];
    
FormatEx(szQuerysizeof(szQuery), "SELECT `name`, `auth`, `ip` FROM `table_offline` WHERE `id` = %i;"iID);
    
g_hDatabase.Query(SQL_Callback_OfflineBanSelectInfoszQueryhPack);
}

public 
void SQL_Callback_OfflineBanSelectInfo(Database hDatabaseDBResultSet results, const char[] sErrorany hDataPack)
{
    if(
sError[0])
    {
        
LogError("SQL_Callback_OfflineBanSelectInfo: %s"sError);
        return;
    }
    
    
ResetPack(hDataPack);
    
int iClient CID(ReadPackCell(hDataPack));
    if(
iClient && results.FetchRow())
    {
        
char szQuery[256], szReason[128], szName[MAX_NAME_LENGTH], szAuth[32], szIp[16];
        
FormatEx(szQuerysizeof(szQuery), "DELETE FROM `table_offline` WHERE `id` = '%i';"ReadPackCell(hDataPack));
        
g_hDatabase.Query(SQL_Callback_CheckErrorszQuery);

        
ReadPackString(hDataPackszReasonsizeof(szReason));

        
results.FetchString(0szNamesizeof(szName));
        
results.FetchString(1szAuthsizeof(szAuth));
        
results.FetchString(2szIpsizeof(szIp));
        
        
DebugMessage("SQL_Callback_OfflineBanSelectInfo -> '%s', '%s', '%s'"szNameszAuthszIp)
        
UTIL_CreateBan(iClient_szAuthszNameszIpg_iBanTime[iClient], szReason);
    }

    
CloseHandle(hDataPack);
}

void UTIL_CreateBan(int iAdmin 0int iTarget 0, const char[] szSourceAuth "", const char[] szSourceName "", const char[] szSourceIp ""int iLength, const char[] szSourceReasonint iType 0)
{
    
DebugMessage("%N (%i) UTIL_CreateBan -> %i (%s), (%s)"iAdminiAdminiTargetszSourceAuthszSourceName)

    
char szName[MAX_NAME_LENGTH*2+1], szIp[16], szQuery[512], szAuth[32], szAdminName[MAX_NAME_LENGTH*2+1], szAdminAuth[32];
    
int iAdminUserID strlen(szSourceReason)*2+1;
    
char[] szReason = new char[iAdminUserID];
    
g_hDatabase.Escape(szSourceReasonszReasoniAdminUserID);

    
int iTargetUserID;
    if(
iAdmin)
    {
        
iAdminUserID UID(iAdmin);
        
GetClientName(iAdminszQueryMAX_NAME_LENGTH);
        
g_hDatabase.Escape(szQueryszAdminNamesizeof(szAdminName));
        
GetClientAuthId(iAdminAuthId_EngineszAdminAuthsizeof(szAdminAuth));
    }
    else
    {
        
iAdminUserID 0;
        
strcopy(szAdminNamesizeof(szAdminName), "CONSOLE");
        
strcopy(szAdminAuthsizeof(szAdminAuth), "STEAM_ID_SERVER");
    }

    if(
iTarget)
    {
        
iTargetUserID UID(iTarget);
        
GetClientAuthId(iTargetAuthId_EngineszAuthsizeof(szAuth));
        
GetClientName(iTargetszQueryMAX_NAME_LENGTH);
        
g_hDatabase.Escape(szQueryszNamesizeof(szName));
        
GetClientIP(iTargetszIpsizeof(szIp));
    }
    else
    {
        
iTargetUserID 0;
        if(
szSourceAuth[0])
        {
            
strcopy(szAuthsizeof(szAuth), szSourceAuth);
        }
        else
        {
            
strcopy(szAuthsizeof(szAuth), "unknown");
        }
        
g_hDatabase.Escape(szSourceNameszNamesizeof(szName));
        if(
szSourceIp[0])
        {
            
strcopy(szIpsizeof(szIp), szSourceIp);
        }
        else
        {
            
strcopy(szIpsizeof(szIp), "unknown");
        }
    }
    
    
Handle hDataPack CreateDataPack();
    
WritePackCell(hDataPackiAdminUserID);
    
WritePackCell(hDataPackiTargetUserID);

    
FormatEx(szQuerysizeof(szQuery), "INSERT INTO `table_bans` (`auth`, `ip`, `name`, `ban_time`, `length`, `reason`, `admin_auth`, `admin_name`, `ban_type`) VALUES ( '%s', '%s', '%s', %i, %i, '%s', '%s', '%s', '%i');"szAuthszIpszNameGetTime(), iLengthszReasonszAdminAuthszAdminNameiType);
    
DebugMessage("szQuery: '%s'"szQuery)
    
g_hDatabase.Query(SQL_Callback_InsertBanszQueryhDataPack);
}

public 
void SQL_Callback_InsertBan(Database hDatabaseDBResultSet results, const char[] sErrorany hDataPack)
{
    if(
sError[0])
    {
        
LogError("SQL_Callback_InsertBan: %s"sError);
        
CloseHandle(hDataPack);
        return;
    }
    
    
ResetPack(hDataPack);
    
    
int iClient CID(ReadPackCell(hDataPack));
    if(
iClient)
    {
        
PrintToChat(iClient"Ban successfully added!");
    }
    
iClient CID(ReadPackCell(hDataPack));
    if(
iClient)
    {
        
UTIL_SearchBan(iClient);
    }
    
CloseHandle(hDataPack);
}

void UTIL_SearchBan(int iClient)
{
    
char szQuery[256], szAuth[32], szIp[16];
    
GetClientAuthId(iClientAuthId_EngineszAuthsizeof(szAuth));
    
GetClientIP(iClientszIpsizeof(szIp));
    if(
g_bCheckBanMode)
    {
        
FormatEx(szQuerysizeof(szQuery), "SELECT `id`, `ban_time`, `length`, `reason`, `admin_name`, `admin_auth` FROM `table_bans` WHERE `remove_type` = '0' AND (`auth` = '%s' OR `ip` = '%s');"szAuthszIp);
    }
    else
    {
        
FormatEx(szQuerysizeof(szQuery), "SELECT `id`, `ban_time`, `length`, `reason`, `admin_name`, `admin_auth` FROM `table_bans` WHERE `remove_type` = '0' AND ((`auth` = '%s' AND `ban_type` = 0) OR (`ip` = '%s' AND `ban_type` = 1));"szAuthszIp);
    }
    
DebugMessage("szQuery: '%s'"szQuery)
    
g_hDatabase.Query(SQL_Callback_SearchClientBanszQueryUID(iClient));
}

public 
void SQL_Callback_SearchClientBan(Database hDatabaseDBResultSet results, const char[] sErrorany iUserID)
{
    if(
sError[0])
    {
        
LogError("SQL_Callback_SearchClientBan: %s"sError);
        return;
    }
    
    
int iClient GetClientOfUserId(iUserID);
    if(
iClient)
    {
        if(
results.FetchRow())
        {
            
DebugMessage("FetchRow")
    
            
int iBanTime results.FetchInt(1);
            
int iLength results.FetchInt(2);
            
int iTime GetTime();
            if(
iLength && iTime iBanTime+iLength)
            {
                
DebugMessage("UTIL_UnBan")
                
UTIL_UnBan(results.FetchInt(0));
                return;
            }
            
            
char szAuth[32], szBanReason[256], szAdminName[MAX_NAME_LENGTH], szAdminAuth[32], szBanTime[64], szDuration[64], szExp[64];
            
GetClientAuthId(iClientAuthId_EngineszAuthsizeof(szAuth));
            
FormatTime(szBanTimesizeof(szBanTime), g_szTimeFormatiBanTime);    
            if(!
GetDuration(iLengthszDurationsizeof(szDuration)))
            {
                
FormatEx(szDurationsizeof(szDuration), "%i min."iLength/60);
            }
            
            if(
iLength)
            {
                
UTIL_GetTimeFromStamp(szExpsizeof(szExp), ((iBanTime+iLength)-iTime), iClient);
                
Format(szExpsizeof(szExp), "Expires %s"szExp);
            }
            else
            {
                
strcopy(szExpsizeof(szExp), "Never");
            }

            
results.FetchString(3szBanReasonsizeof(szBanReason));
            
results.FetchString(4szAdminNamesizeof(szAdminName));
            
results.FetchString(5szAdminAuthsizeof(szAdminAuth));
        
            
PrintToConsole(iClient"####################################################################");
            
PrintToConsole(iClient"####################################################################");
            
PrintToConsole(iClient"####################################################################");
            
            
PrintToConsole(iClient"###\t \t You are banned on this server.");
            
PrintToConsole(iClient"###\t \t Your SteamID: %s"szAuth);
            
PrintToConsole(iClient"###\t \t Who banned you: %s (%s)"szAdminNameszAdminAuth);
            
PrintToConsole(iClient"###\t \t Reason: %s"szBanReason);
            
PrintToConsole(iClient"###\t \t Ban time: %s"szBanTime);
            
PrintToConsole(iClient"###\t \t Duration: %s"szDuration);
            
PrintToConsole(iClient"###\t \t Expires: %s"szExp);
            
PrintToConsole(iClient"###\t \t %s"g_szBanInfo);

            
PrintToConsole(iClient"####################################################################");
            
PrintToConsole(iClient"####################################################################");
            
PrintToConsole(iClient"####################################################################");
            
            
char szBuffer[256];
            
strcopy(szBuffersizeof(szBuffer), g_szBanInfoPanel);
            
ReplaceString(szBuffersizeof(szBuffer), "\\n""\n");
            
ReplaceString(szBuffersizeof(szBuffer), "{AUTH}"szAuth);
            
ReplaceString(szBuffersizeof(szBuffer), "{ADMIN_NAME}"szAdminName);
            
ReplaceString(szBuffersizeof(szBuffer), "{ADMIN_AUTH}"szAdminAuth);
            
ReplaceString(szBuffersizeof(szBuffer), "{REASON}"szBanReason);
            
ReplaceString(szBuffersizeof(szBuffer), "{BAN_TIME}"szBanTime);
            
ReplaceString(szBuffersizeof(szBuffer), "{DURATION}"szDuration);
            
ReplaceString(szBuffersizeof(szBuffer), "{EXPIRES}"szExp);
            
ReplaceString(szBuffersizeof(szBuffer), "{BAN_INFO}"g_szBanInfo);
            
            
DebugMessage("Banned")
            
DataPack hPack;
            
CreateDataTimer(KICK_DELAYTimer_KickDelayhPack);
            
hPack.WriteCell(UID(iClient));
            
hPack.WriteString(szBuffer);
        }
    }
}

bool GetDuration(int iDurationchar[] szBufferint iMaxLen)
{
    
g_hKeyValues.Rewind();
    
char szKey[64];
    
FormatEx(szKeysizeof(szKey), "ban_times/%i"iDuration/60);
    
g_hKeyValues.GetString(szKeyszBufferiMaxLen);
    return (
szBuffer[0]);
}

public 
Action Timer_KickDelay(Handle hTimerHandle hDataPack)
{
    
ResetPack(hDataPack);
    
int iClient CID(ReadPackCell(hDataPack));
    
DebugMessage("Timer_KickDelay: %i"iClient)
    if(
iClient)
    {
        
char szMessage[512];
        
ReadPackString(hDataPackszMessagesizeof(szMessage));
        
KickClient(iClientszMessage);
    }

    return 
Plugin_Stop;
}

void UTIL_UnBan(int iBanIDint iType 1)
{
    
char szQuery[256];
    
FormatEx(szQuerysizeof(szQuery), "UPDATE `table_bans` SET `remove_type` = %i WHERE `id` = '%i';"iTypeiBanID);
    
g_hDatabase.Query(SQL_Callback_CheckErrorszQuery);
}

void UTIL_RemoveBan(int iBanID)
{
    
char szQuery[256];
    
FormatEx(szQuerysizeof(szQuery), "DELETE FROM `table_bans` WHERE `id` = '%i';"iBanID);
    
g_hDatabase.Query(SQL_Callback_CheckErrorszQuery);
}

void UTIL_GetTimeFromStamp(char[] szBufferint iMaxLenint iTimeStampint iClient LANG_SERVER)
{
    if (
iTimeStamp 31536000)
    {
        
int years iTimeStamp 31536000;
        
int days iTimeStamp 86400 365;
        if (
days 0)
        {
            
FormatEx(szBufferiMaxLen"%d y. %d d."yearsdays);
        }
        else
        {
            
FormatEx(szBufferiMaxLen"%d y."years);
        }
        return;
    }
    if (
iTimeStamp 86400)
    {
        
int days iTimeStamp 86400 365;
        
int hours = (iTimeStamp 3600) % 24;
        if (
hours 0)
        {
            
FormatEx(szBufferiMaxLen"%d d. %d h."dayshours);
        }
        else
        {
            
FormatEx(szBufferiMaxLen"%d d."days);
        }
        return;
    }
    else
    {
        
int Hours = (iTimeStamp 3600);
        
int Mins = (iTimeStamp 60) % 60;
        
int Secs iTimeStamp 60;
        
        if (
Hours 0)
        {
            
FormatEx(szBufferiMaxLen"%02d:%02d:%02d"HoursMinsSecs);
        }
        else
        {
            
FormatEx(szBufferiMaxLen"%02d:%02d"MinsSecs);
        }
    }

cmds.sp
PHP Code:
public Action Command_Ban(int iClientint iArgs)
{
    if (
iArgs 2)
    {
        
ReplyToCommand(iClient"[SM] Usage: sm_ban <#userid|name> <minutes|0> [reason]");
        return 
Plugin_Handled;
    }

    
char szArg[64];
    
GetCmdArg(1szArgsizeof(szArg));
    
    
int iTarget FindTarget(iClientszArgtrue);
    if (
iTarget == -1)
    {
        
ReplyToCommand(iClient"[SM] Игрок не найден!");
        return 
Plugin_Handled;
    }

    
GetCmdArg(2szArgsizeof(szArg));

    
char szReason[128];
    if (
iArgs == 3)
    {
        
GetCmdArg(3szReasonsizeof(szReason));
    }

    
UTIL_CreateBan(iClientiTarget___,  S2I(szArg)*60szReason);

    return 
Plugin_Handled;
}

public 
Action Command_AddBan(int iClientint iArgs)
{
    if (
iArgs 2)
    {
        
ReplyToCommand(iClient"[SM] Usage: sm_addban <steamid> <time> [reason] [name]");
        return 
Plugin_Handled;
    }
    
    
char szAuth[32];
    
GetCmdArg(1szAuthsizeof(szAuth));

    if (!(!
strncmp(szAuth"STEAM_"6) && szAuth[7] == ':') && strncmp(szAuth"[U:"3)))
    {
        
ReplyToCommand(iClient"[SM] %t""Invalid SteamID specified");
        return 
Plugin_Handled;
    }

    
char szTime[16];
    
GetCmdArg(2szTimesizeof(szTime));

    
char szReason[128], szName[MAX_NAME_LENGTH];
    if (
iArgs == 3)
    {
        
GetCmdArg(3szReasonsizeof(szReason));
    }
    if (
iArgs == 4)
    {
        
GetCmdArg(4szNamesizeof(szName));
    }

    
UTIL_CreateBan(iClient_szAuthszName_S2I(szTime)*60szReason);

    return 
Plugin_Handled;
}

public 
Action Command_BanIp(int iClientint iArgs)
{
    if (
iArgs 2)
    {
        
ReplyToCommand(iClient"[SM] Usage: sm_banip <ip|#userid|name> <time> [reason]");
        return 
Plugin_Handled;
    }

    
char szArg[64];
    
GetCmdArg(1szArgsizeof(szArg));
    
    
int iTarget FindTarget(iClientszArgtrue);
    if (
iTarget == -1)
    {
        
ReplyToCommand(iClient"[SM] Player not found!");
        return 
Plugin_Handled;
    }

    
GetCmdArg(2szArgsizeof(szArg));

    
char szReason[128];
    if (
iArgs == 3)
    {
        
GetCmdArg(3szReasonsizeof(szReason));
    }

    
UTIL_CreateBan(iClientiTarget___,  S2I(szArg)*60szReason1);

    return 
Plugin_Handled;
}

public 
Action Command_Unban(int iClientint iArgs)
{
    if (
iArgs 1)
    {
        
ReplyToCommand(iClient"[SM] Usage: sm_unban <steamid|ip>");
        return 
Plugin_Handled;
    }

    
char szQuery[256], szAuth[32], szPart[128];
    
GetCmdArg(1szAuthsizeof(szAuth));

    if(
g_bUnBanMode && !(GetUserFlagBits(iClient) & ADMFLAG_ROOT))
    {
        
char szAdminAuth[32];
        
GetClientAuthId(iClientAuthId_EngineszAdminAuthsizeof(szAdminAuth));
        
FormatEx(szPartsizeof(szPart), " AND (`admin_auth` = '%s');"szAdminAuth);
    }
    else
    {
        
szPart[0] = 0;
    }

    
FormatEx(szQuerysizeof(szQuery), "UPDATE `table_bans` SET `remove_type` = 1 WHERE `remove_type` = '0' AND (`auth` = '%s' OR `ip` = '%s')%s;"szAuthszAuthszPart);
    
g_hDatabase.Query(SQL_Callback_UnBanszQueryiClient UID(iClient):0);

    return 
Plugin_Handled;
}

public 
void SQL_Callback_UnBan(Database hDatabaseDBResultSet results, const char[] sErrorany iClient)
{
    if(
sError[0])
    {
        
LogError("SQL_Callback_UnBan: %s"sError);
        return;
    }
    
    if(
iClient)
    {
        
iClient GetClientOfUserId(iClient);
        if(!
iClient)
        {
            return;
        }
    }
    
    if(
results.AffectedRows)
    {
        
ReplyToCommand(iClient"[SM] The player is broken!");
    }
    else
    {
        
ReplyToCommand(iClient"[SM] Ban not found!");
    }

__________________
Steam - https://steamcommunity.com/id/porcusorulmagic
Discord - PorcusorulMagic#4908
PorcusorulMagic is offline
Cruze
Veteran Member
Join Date: May 2017
Old 03-26-2019 , 09:22   Re: [CSGO] Local Bans
Reply With Quote #2

Try this:

util.sp
PHP Code:
void UTIL_OfflineBan(int iAdminint iID, const char[] szReason

    
DebugMessage("%N (%i) UTIL_OfflineBan -> %i (%s)"iAdminiAdminiIDszReason
    
DataPack hPack CreateDataPack(); 
    
hPack.WriteCell(UID(iAdmin)); 
    
hPack.WriteCell(iID); 
    
hPack.WriteString(szReason); 

    
char szQuery[256]; 
    
FormatEx(szQuerysizeof(szQuery), "SELECT `name`, `auth`, `ip` FROM `table_offline` WHERE `id` = %i;"iID); 
    
g_hDatabase.Query(SQL_Callback_OfflineBanSelectInfoszQueryhPack); 


public 
void SQL_Callback_OfflineBanSelectInfo(Database hDatabaseDBResultSet results, const char[] sErrorany hDataPack

    if(
sError[0]) 
    { 
        
LogError("SQL_Callback_OfflineBanSelectInfo: %s"sError); 
        return; 
    } 
     
    
ResetPack(hDataPack); 
    
int iClient CID(ReadPackCell(hDataPack)); 
    if(
iClient && results.FetchRow()) 
    { 
        
char szQuery[256], szReason[128], szName[MAX_NAME_LENGTH], szAuth[32], szIp[16]; 
        
FormatEx(szQuerysizeof(szQuery), "DELETE FROM `table_offline` WHERE `id` = '%i';"ReadPackCell(hDataPack)); 
        
g_hDatabase.Query(SQL_Callback_CheckErrorszQuery); 

        
ReadPackString(hDataPackszReasonsizeof(szReason)); 

        
results.FetchString(0szNamesizeof(szName)); 
        
results.FetchString(1szAuthsizeof(szAuth)); 
        
results.FetchString(2szIpsizeof(szIp)); 
         
        
DebugMessage("SQL_Callback_OfflineBanSelectInfo -> '%s', '%s', '%s'"szNameszAuthszIp
        
UTIL_CreateBan(iClient_szAuthszNameszIpg_iBanTime[iClient], szReason); 
    } 

    
CloseHandle(hDataPack); 


void UTIL_CreateBan(int iAdmin 0int iTarget 0, const char[] szSourceAuth "", const char[] szSourceName "", const char[] szSourceIp ""int iLength, const char[] szSourceReasonint iType 0

    
DebugMessage("%N (%i) UTIL_CreateBan -> %i (%s), (%s)"iAdminiAdminiTargetszSourceAuthszSourceName

    
char szName[MAX_NAME_LENGTH*2+1], szIp[16], szQuery[512], szAuth[32], szAdminName[MAX_NAME_LENGTH*2+1], szAdminAuth[32]; 
    
int iAdminUserID strlen(szSourceReason)*2+1
    
char[] szReason = new char[iAdminUserID]; 
    
g_hDatabase.Escape(szSourceReasonszReasoniAdminUserID); 

    
int iTargetUserID
    if(
iAdmin
    { 
        
iAdminUserID UID(iAdmin); 
        
GetClientName(iAdminszQueryMAX_NAME_LENGTH); 
        
g_hDatabase.Escape(szQueryszAdminNamesizeof(szAdminName)); 
        
GetClientAuthId(iAdminAuthId_EngineszAdminAuthsizeof(szAdminAuth)); 
    } 
    else 
    { 
        
iAdminUserID 0
        
strcopy(szAdminNamesizeof(szAdminName), "CONSOLE"); 
        
strcopy(szAdminAuthsizeof(szAdminAuth), "STEAM_ID_SERVER"); 
    } 

    if(
iTarget
    { 
        
iTargetUserID UID(iTarget); 
        
GetClientAuthId(iTargetAuthId_EngineszAuthsizeof(szAuth)); 
        
GetClientName(iTargetszQueryMAX_NAME_LENGTH); 
        
g_hDatabase.Escape(szQueryszNamesizeof(szName)); 
        
GetClientIP(iTargetszIpsizeof(szIp)); 
    } 
    else 
    { 
        
iTargetUserID 0
        if(
szSourceAuth[0]) 
        { 
            
strcopy(szAuthsizeof(szAuth), szSourceAuth); 
        } 
        else 
        { 
            
strcopy(szAuthsizeof(szAuth), "unknown"); 
        } 
        
g_hDatabase.Escape(szSourceNameszNamesizeof(szName)); 
        if(
szSourceIp[0]) 
        { 
            
strcopy(szIpsizeof(szIp), szSourceIp); 
        } 
        else 
        { 
            
strcopy(szIpsizeof(szIp), "unknown"); 
        } 
    } 
     
    
Handle hDataPack CreateDataPack(); 
    
WritePackCell(hDataPackiAdminUserID); 
    
WritePackCell(hDataPackiTargetUserID); 

    
FormatEx(szQuerysizeof(szQuery), "INSERT INTO `table_bans` (`auth`, `ip`, `name`, `ban_time`, `length`, `reason`, `admin_auth`, `admin_name`, `ban_type`) VALUES ( '%s', '%s', '%s', %i, %i, '%s', '%s', '%s', '%i');"szAuthszIpszNameGetTime(), iLengthszReasonszAdminAuthszAdminNameiType); 
    
DebugMessage("szQuery: '%s'"szQuery
    
g_hDatabase.Query(SQL_Callback_InsertBanszQueryhDataPack); 


public 
void SQL_Callback_InsertBan(Database hDatabaseDBResultSet results, const char[] sErrorany hDataPack

    if(
sError[0]) 
    { 
        
LogError("SQL_Callback_InsertBan: %s"sError); 
        
CloseHandle(hDataPack); 
        return; 
    } 
     
    
ResetPack(hDataPack); 
     
    
int iClient CID(ReadPackCell(hDataPack)); 
    if(
iClient
    { 
        
PrintToChat(iClient"Ban successfully added!"); 
    } 
    
iClient CID(ReadPackCell(hDataPack)); 
    if(
iClient
    { 
        
UTIL_SearchBan(iClient); 
    } 
    
CloseHandle(hDataPack); 


void UTIL_SearchBan(int iClient

    
char szQuery[256], szAuth[32], szIp[16]; 
    
GetClientAuthId(iClientAuthId_EngineszAuthsizeof(szAuth)); 
    
GetClientIP(iClientszIpsizeof(szIp)); 
    if(
g_bCheckBanMode
    { 
        
FormatEx(szQuerysizeof(szQuery), "SELECT `id`, `ban_time`, `length`, `reason`, `admin_name`, `admin_auth` FROM `table_bans` WHERE `remove_type` = '0' AND (`auth` = '%s' OR `ip` = '%s');"szAuthszIp); 
    } 
    else 
    { 
        
FormatEx(szQuerysizeof(szQuery), "SELECT `id`, `ban_time`, `length`, `reason`, `admin_name`, `admin_auth` FROM `table_bans` WHERE `remove_type` = '0' AND ((`auth` = '%s' AND `ban_type` = 0) OR (`ip` = '%s' AND `ban_type` = 1));"szAuthszIp); 
    } 
    
DebugMessage("szQuery: '%s'"szQuery
    
g_hDatabase.Query(SQL_Callback_SearchClientBanszQueryUID(iClient)); 


public 
void SQL_Callback_SearchClientBan(Database hDatabaseDBResultSet results, const char[] sErrorany iUserID

    if(
sError[0]) 
    { 
        
LogError("SQL_Callback_SearchClientBan: %s"sError); 
        return; 
    } 
     
    
int iClient GetClientOfUserId(iUserID); 
    if(
iClient
    { 
        if(
results.FetchRow()) 
        { 
            
DebugMessage("FetchRow"
     
            
int iBanTime results.FetchInt(1); 
            
int iLength results.FetchInt(2); 
            
int iTime GetTime(); 
            if(
iLength && iTime iBanTime+iLength
            { 
                
DebugMessage("UTIL_UnBan"
                
UTIL_UnBan(results.FetchInt(0)); 
                return; 
            } 
             
            
char szAuth[32], szBanReason[256], szAdminName[MAX_NAME_LENGTH], szAdminAuth[32], szBanTime[64], szDuration[64], szExp[64]; 
            
GetClientAuthId(iClientAuthId_EngineszAuthsizeof(szAuth)); 
            
FormatTime(szBanTimesizeof(szBanTime), g_szTimeFormatiBanTime);     
            if(!
GetDuration(iLengthszDurationsizeof(szDuration))) 
            { 
                
FormatEx(szDurationsizeof(szDuration), "%i min."iLength/60); 
            } 
             
            if(
iLength
            { 
                
UTIL_GetTimeFromStamp(szExpsizeof(szExp), ((iBanTime+iLength)-iTime), iClient); 
                
Format(szExpsizeof(szExp), "Expires %s"szExp); 
            } 
            else 
            { 
                
strcopy(szExpsizeof(szExp), "Never"); 
            } 

            
results.FetchString(3szBanReasonsizeof(szBanReason)); 
            
results.FetchString(4szAdminNamesizeof(szAdminName)); 
            
results.FetchString(5szAdminAuthsizeof(szAdminAuth)); 
         
            
PrintToConsole(iClient"####################################################################"); 
            
PrintToConsole(iClient"####################################################################"); 
            
PrintToConsole(iClient"####################################################################"); 
             
            
PrintToConsole(iClient"###\t \t You are banned on this server."); 
            
PrintToConsole(iClient"###\t \t Your SteamID: %s"szAuth); 
            
PrintToConsole(iClient"###\t \t Who banned you: %s (%s)"szAdminNameszAdminAuth); 
            
PrintToConsole(iClient"###\t \t Reason: %s"szBanReason); 
            
PrintToConsole(iClient"###\t \t Ban time: %s"szBanTime); 
            
PrintToConsole(iClient"###\t \t Duration: %s"szDuration); 
            
PrintToConsole(iClient"###\t \t Expires: %s"szExp); 
            
PrintToConsole(iClient"###\t \t %s"g_szBanInfo); 

            
PrintToConsole(iClient"####################################################################"); 
            
PrintToConsole(iClient"####################################################################"); 
            
PrintToConsole(iClient"####################################################################"); 
             
            
char szBuffer[256]; 
            
strcopy(szBuffersizeof(szBuffer), g_szBanInfoPanel); 
            
ReplaceString(szBuffersizeof(szBuffer), "\\n""\n"); 
            
ReplaceString(szBuffersizeof(szBuffer), "{AUTH}"szAuth); 
            
ReplaceString(szBuffersizeof(szBuffer), "{ADMIN_NAME}"szAdminName); 
            
ReplaceString(szBuffersizeof(szBuffer), "{ADMIN_AUTH}"szAdminAuth); 
            
ReplaceString(szBuffersizeof(szBuffer), "{REASON}"szBanReason); 
            
ReplaceString(szBuffersizeof(szBuffer), "{BAN_TIME}"szBanTime); 
            
ReplaceString(szBuffersizeof(szBuffer), "{DURATION}"szDuration); 
            
ReplaceString(szBuffersizeof(szBuffer), "{EXPIRES}"szExp); 
            
ReplaceString(szBuffersizeof(szBuffer), "{BAN_INFO}"g_szBanInfo); 
             
            
DebugMessage("Banned"
            
DataPack hPack
            
CreateDataTimer(KICK_DELAYTimer_KickDelayhPack); 
            
hPack.WriteCell(UID(iClient)); 
            
hPack.WriteString(szBuffer); 
        } 
    } 


bool GetDuration(int iDurationchar[] szBufferint iMaxLen

    
g_hKeyValues.Rewind(); 
    
char szKey[64]; 
    
FormatEx(szKeysizeof(szKey), "ban_times/%i"iDuration/60); 
    
g_hKeyValues.GetString(szKeyszBufferiMaxLen); 
    return (
szBuffer[0]); 


public 
Action Timer_KickDelay(Handle hTimerHandle hDataPack

    
ResetPack(hDataPack); 
    
int iClient CID(ReadPackCell(hDataPack)); 
    
DebugMessage("Timer_KickDelay: %i"iClient
    if(
iClient
    { 
        
char szMessage[512]; 
        
ReadPackString(hDataPackszMessagesizeof(szMessage)); 
        
KickClient(iClientszMessage); 
    } 

    return 
Plugin_Stop


void UTIL_UnBan(int iBanIDint iType 1

    
char szQuery[256]; 
    
FormatEx(szQuerysizeof(szQuery), "UPDATE `table_bans` SET `remove_type` = %i WHERE `id` = '%i';"iTypeiBanID); 
    
g_hDatabase.Query(SQL_Callback_CheckErrorszQuery); 


void UTIL_RemoveBan(int iBanID

    
char szQuery[256]; 
    
FormatEx(szQuerysizeof(szQuery), "DELETE FROM `table_bans` WHERE `id` = '%i';"iBanID); 
    
g_hDatabase.Query(SQL_Callback_CheckErrorszQuery); 


void UTIL_GetTimeFromStamp(char[] szBufferint iMaxLenint iTimeStamp

    if (
iTimeStamp 31536000
    { 
        
int years iTimeStamp 31536000
        
int days iTimeStamp 86400 365
        if (
days 0
        { 
            
FormatEx(szBufferiMaxLen"%d y. %d d."yearsdays); 
        } 
        else 
        { 
            
FormatEx(szBufferiMaxLen"%d y."years); 
        } 
        return; 
    } 
    if (
iTimeStamp 86400
    { 
        
int days iTimeStamp 86400 365
        
int hours = (iTimeStamp 3600) % 24
        if (
hours 0
        { 
            
FormatEx(szBufferiMaxLen"%d d. %d h."dayshours); 
        } 
        else 
        { 
            
FormatEx(szBufferiMaxLen"%d d."days); 
        } 
        return; 
    } 
    else 
    { 
        
int Hours = (iTimeStamp 3600); 
        
int Mins = (iTimeStamp 60) % 60
        
int Secs iTimeStamp 60
         
        if (
Hours 0
        { 
            
FormatEx(szBufferiMaxLen"%02d:%02d:%02d"HoursMinsSecs); 
        } 
        else 
        { 
            
FormatEx(szBufferiMaxLen"%02d:%02d"MinsSecs); 
        } 
    } 

cmds.sp
PHP Code:
public Action Command_Ban(int iClientint iArgs

    if (
iArgs 2
    { 
        
ReplyToCommand(iClient"[SM] Usage: sm_ban <#userid|name> <minutes|0> [reason]"); 
        return 
Plugin_Handled
    } 

    
char szArg[64]; 
    
GetCmdArg(1szArgsizeof(szArg)); 
     
    
int iTarget FindTarget(iClientszArgtrue); 
    if (
iTarget == -1
    { 
        
ReplyToCommand(iClient"[SM] Игрок не найден!"); 
        return 
Plugin_Handled
    } 

    
GetCmdArg(2szArgsizeof(szArg)); 

    
char szReason[128]; 
    if (
iArgs == 3
    { 
        
GetCmdArg(3szReasonsizeof(szReason)); 
    } 

    
UTIL_CreateBan(iClientiTarget___,  S2I(szArg)*60szReason); 

    return 
Plugin_Handled


public 
Action Command_AddBan(int iClientint iArgs

    if (
iArgs 2
    { 
        
ReplyToCommand(iClient"[SM] Usage: sm_addban <steamid> <time> [reason] [name]"); 
        return 
Plugin_Handled
    } 
     
    
char szAuth[32]; 
    
GetCmdArg(1szAuthsizeof(szAuth)); 

    if (!(!
strncmp(szAuth"STEAM_"6) && szAuth[7] == ':') && strncmp(szAuth"[U:"3)) 
    { 
        
ReplyToCommand(iClient"[SM] %t""Invalid SteamID specified"); 
        return 
Plugin_Handled
    } 

    
char szTime[16]; 
    
GetCmdArg(2szTimesizeof(szTime)); 

    
char szReason[128], szName[MAX_NAME_LENGTH]; 
    if (
iArgs == 3
    { 
        
GetCmdArg(3szReasonsizeof(szReason)); 
    } 
    if (
iArgs == 4
    { 
        
GetCmdArg(4szNamesizeof(szName)); 
    } 

    
UTIL_CreateBan(iClient_szAuthszName_S2I(szTime)*60szReason); 

    return 
Plugin_Handled


public 
Action Command_BanIp(int iClientint iArgs

    if (
iArgs 2
    { 
        
ReplyToCommand(iClient"[SM] Usage: sm_banip <ip|#userid|name> <time> [reason]"); 
        return 
Plugin_Handled
    } 

    
char szArg[64]; 
    
GetCmdArg(1szArgsizeof(szArg)); 
     
    
int iTarget FindTarget(iClientszArgtrue); 
    if (
iTarget == -1
    { 
        
ReplyToCommand(iClient"[SM] Player not found!"); 
        return 
Plugin_Handled
    } 

    
GetCmdArg(2szArgsizeof(szArg)); 

    
char szReason[128]; 
    if (
iArgs == 3
    { 
        
GetCmdArg(3szReasonsizeof(szReason)); 
    } 

    
UTIL_CreateBan(iClientiTarget___,  S2I(szArg)*60szReason1); 

    return 
Plugin_Handled


public 
Action Command_Unban(int iClientint iArgs

    if (
iArgs 1
    { 
        
ReplyToCommand(iClient"[SM] Usage: sm_unban <steamid|ip>"); 
        return 
Plugin_Handled
    } 

    
char szQuery[256], szAuth[32], szPart[128]; 
    
GetCmdArg(1szAuthsizeof(szAuth)); 

    if(
g_bUnBanMode && !(GetUserFlagBits(iClient) & ADMFLAG_ROOT)) 
    { 
        
char szAdminAuth[32]; 
        
GetClientAuthId(iClientAuthId_EngineszAdminAuthsizeof(szAdminAuth)); 
        
FormatEx(szPartsizeof(szPart), " AND (`admin_auth` = '%s');"szAdminAuth); 
    } 
    else 
    { 
        
szPart[0] = 0
    } 

    
FormatEx(szQuerysizeof(szQuery), "UPDATE `table_bans` SET `remove_type` = 1 WHERE `remove_type` = '0' AND (`auth` = '%s' OR `ip` = '%s')%s;"szAuthszAuthszPart); 
    
g_hDatabase.Query(SQL_Callback_UnBanszQueryiClient UID(iClient):0); 

    return 
Plugin_Handled


public 
void SQL_Callback_UnBan(Database hDatabaseDBResultSet results, const char[] sErrorany iClient

    if(
sError[0]) 
    { 
        
LogError("SQL_Callback_UnBan: %s"sError); 
        return; 
    } 
     
    if(
iClient
    { 
        
iClient GetClientOfUserId(iClient); 
        if(!
iClient
        { 
            return; 
        } 
    } 
     
    if(
results.AffectedRows
    { 
        
ReplyToCommand(iClient"[SM] The player is broken!"); 
    } 
    else 
    { 
        
ReplyToCommand(iClient"[SM] Ban not found!"); 
    } 

__________________
Taking paid private requests! Contact me

Last edited by Cruze; 03-26-2019 at 09:23.
Cruze is offline
PorcusorulMagic
Member
Join Date: Dec 2018
Location: Romania
Old 03-26-2019 , 09:34   Re: [CSGO] Local Bans
Reply With Quote #3

Quote:
Originally Posted by Cruze View Post
Try this:

util.sp
PHP Code:
void UTIL_OfflineBan(int iAdminint iID, const char[] szReason

    
DebugMessage("%N (%i) UTIL_OfflineBan -> %i (%s)"iAdminiAdminiIDszReason
    
DataPack hPack CreateDataPack(); 
    
hPack.WriteCell(UID(iAdmin)); 
    
hPack.WriteCell(iID); 
    
hPack.WriteString(szReason); 

    
char szQuery[256]; 
    
FormatEx(szQuerysizeof(szQuery), "SELECT `name`, `auth`, `ip` FROM `table_offline` WHERE `id` = %i;"iID); 
    
g_hDatabase.Query(SQL_Callback_OfflineBanSelectInfoszQueryhPack); 


public 
void SQL_Callback_OfflineBanSelectInfo(Database hDatabaseDBResultSet results, const char[] sErrorany hDataPack

    if(
sError[0]) 
    { 
        
LogError("SQL_Callback_OfflineBanSelectInfo: %s"sError); 
        return; 
    } 
     
    
ResetPack(hDataPack); 
    
int iClient CID(ReadPackCell(hDataPack)); 
    if(
iClient && results.FetchRow()) 
    { 
        
char szQuery[256], szReason[128], szName[MAX_NAME_LENGTH], szAuth[32], szIp[16]; 
        
FormatEx(szQuerysizeof(szQuery), "DELETE FROM `table_offline` WHERE `id` = '%i';"ReadPackCell(hDataPack)); 
        
g_hDatabase.Query(SQL_Callback_CheckErrorszQuery); 

        
ReadPackString(hDataPackszReasonsizeof(szReason)); 

        
results.FetchString(0szNamesizeof(szName)); 
        
results.FetchString(1szAuthsizeof(szAuth)); 
        
results.FetchString(2szIpsizeof(szIp)); 
         
        
DebugMessage("SQL_Callback_OfflineBanSelectInfo -> '%s', '%s', '%s'"szNameszAuthszIp
        
UTIL_CreateBan(iClient_szAuthszNameszIpg_iBanTime[iClient], szReason); 
    } 

    
CloseHandle(hDataPack); 


void UTIL_CreateBan(int iAdmin 0int iTarget 0, const char[] szSourceAuth "", const char[] szSourceName "", const char[] szSourceIp ""int iLength, const char[] szSourceReasonint iType 0

    
DebugMessage("%N (%i) UTIL_CreateBan -> %i (%s), (%s)"iAdminiAdminiTargetszSourceAuthszSourceName

    
char szName[MAX_NAME_LENGTH*2+1], szIp[16], szQuery[512], szAuth[32], szAdminName[MAX_NAME_LENGTH*2+1], szAdminAuth[32]; 
    
int iAdminUserID strlen(szSourceReason)*2+1
    
char[] szReason = new char[iAdminUserID]; 
    
g_hDatabase.Escape(szSourceReasonszReasoniAdminUserID); 

    
int iTargetUserID
    if(
iAdmin
    { 
        
iAdminUserID UID(iAdmin); 
        
GetClientName(iAdminszQueryMAX_NAME_LENGTH); 
        
g_hDatabase.Escape(szQueryszAdminNamesizeof(szAdminName)); 
        
GetClientAuthId(iAdminAuthId_EngineszAdminAuthsizeof(szAdminAuth)); 
    } 
    else 
    { 
        
iAdminUserID 0
        
strcopy(szAdminNamesizeof(szAdminName), "CONSOLE"); 
        
strcopy(szAdminAuthsizeof(szAdminAuth), "STEAM_ID_SERVER"); 
    } 

    if(
iTarget
    { 
        
iTargetUserID UID(iTarget); 
        
GetClientAuthId(iTargetAuthId_EngineszAuthsizeof(szAuth)); 
        
GetClientName(iTargetszQueryMAX_NAME_LENGTH); 
        
g_hDatabase.Escape(szQueryszNamesizeof(szName)); 
        
GetClientIP(iTargetszIpsizeof(szIp)); 
    } 
    else 
    { 
        
iTargetUserID 0
        if(
szSourceAuth[0]) 
        { 
            
strcopy(szAuthsizeof(szAuth), szSourceAuth); 
        } 
        else 
        { 
            
strcopy(szAuthsizeof(szAuth), "unknown"); 
        } 
        
g_hDatabase.Escape(szSourceNameszNamesizeof(szName)); 
        if(
szSourceIp[0]) 
        { 
            
strcopy(szIpsizeof(szIp), szSourceIp); 
        } 
        else 
        { 
            
strcopy(szIpsizeof(szIp), "unknown"); 
        } 
    } 
     
    
Handle hDataPack CreateDataPack(); 
    
WritePackCell(hDataPackiAdminUserID); 
    
WritePackCell(hDataPackiTargetUserID); 

    
FormatEx(szQuerysizeof(szQuery), "INSERT INTO `table_bans` (`auth`, `ip`, `name`, `ban_time`, `length`, `reason`, `admin_auth`, `admin_name`, `ban_type`) VALUES ( '%s', '%s', '%s', %i, %i, '%s', '%s', '%s', '%i');"szAuthszIpszNameGetTime(), iLengthszReasonszAdminAuthszAdminNameiType); 
    
DebugMessage("szQuery: '%s'"szQuery
    
g_hDatabase.Query(SQL_Callback_InsertBanszQueryhDataPack); 


public 
void SQL_Callback_InsertBan(Database hDatabaseDBResultSet results, const char[] sErrorany hDataPack

    if(
sError[0]) 
    { 
        
LogError("SQL_Callback_InsertBan: %s"sError); 
        
CloseHandle(hDataPack); 
        return; 
    } 
     
    
ResetPack(hDataPack); 
     
    
int iClient CID(ReadPackCell(hDataPack)); 
    if(
iClient
    { 
        
PrintToChat(iClient"Ban successfully added!"); 
    } 
    
iClient CID(ReadPackCell(hDataPack)); 
    if(
iClient
    { 
        
UTIL_SearchBan(iClient); 
    } 
    
CloseHandle(hDataPack); 


void UTIL_SearchBan(int iClient

    
char szQuery[256], szAuth[32], szIp[16]; 
    
GetClientAuthId(iClientAuthId_EngineszAuthsizeof(szAuth)); 
    
GetClientIP(iClientszIpsizeof(szIp)); 
    if(
g_bCheckBanMode
    { 
        
FormatEx(szQuerysizeof(szQuery), "SELECT `id`, `ban_time`, `length`, `reason`, `admin_name`, `admin_auth` FROM `table_bans` WHERE `remove_type` = '0' AND (`auth` = '%s' OR `ip` = '%s');"szAuthszIp); 
    } 
    else 
    { 
        
FormatEx(szQuerysizeof(szQuery), "SELECT `id`, `ban_time`, `length`, `reason`, `admin_name`, `admin_auth` FROM `table_bans` WHERE `remove_type` = '0' AND ((`auth` = '%s' AND `ban_type` = 0) OR (`ip` = '%s' AND `ban_type` = 1));"szAuthszIp); 
    } 
    
DebugMessage("szQuery: '%s'"szQuery
    
g_hDatabase.Query(SQL_Callback_SearchClientBanszQueryUID(iClient)); 


public 
void SQL_Callback_SearchClientBan(Database hDatabaseDBResultSet results, const char[] sErrorany iUserID

    if(
sError[0]) 
    { 
        
LogError("SQL_Callback_SearchClientBan: %s"sError); 
        return; 
    } 
     
    
int iClient GetClientOfUserId(iUserID); 
    if(
iClient
    { 
        if(
results.FetchRow()) 
        { 
            
DebugMessage("FetchRow"
     
            
int iBanTime results.FetchInt(1); 
            
int iLength results.FetchInt(2); 
            
int iTime GetTime(); 
            if(
iLength && iTime iBanTime+iLength
            { 
                
DebugMessage("UTIL_UnBan"
                
UTIL_UnBan(results.FetchInt(0)); 
                return; 
            } 
             
            
char szAuth[32], szBanReason[256], szAdminName[MAX_NAME_LENGTH], szAdminAuth[32], szBanTime[64], szDuration[64], szExp[64]; 
            
GetClientAuthId(iClientAuthId_EngineszAuthsizeof(szAuth)); 
            
FormatTime(szBanTimesizeof(szBanTime), g_szTimeFormatiBanTime);     
            if(!
GetDuration(iLengthszDurationsizeof(szDuration))) 
            { 
                
FormatEx(szDurationsizeof(szDuration), "%i min."iLength/60); 
            } 
             
            if(
iLength
            { 
                
UTIL_GetTimeFromStamp(szExpsizeof(szExp), ((iBanTime+iLength)-iTime), iClient); 
                
Format(szExpsizeof(szExp), "Expires %s"szExp); 
            } 
            else 
            { 
                
strcopy(szExpsizeof(szExp), "Never"); 
            } 

            
results.FetchString(3szBanReasonsizeof(szBanReason)); 
            
results.FetchString(4szAdminNamesizeof(szAdminName)); 
            
results.FetchString(5szAdminAuthsizeof(szAdminAuth)); 
         
            
PrintToConsole(iClient"####################################################################"); 
            
PrintToConsole(iClient"####################################################################"); 
            
PrintToConsole(iClient"####################################################################"); 
             
            
PrintToConsole(iClient"###\t \t You are banned on this server."); 
            
PrintToConsole(iClient"###\t \t Your SteamID: %s"szAuth); 
            
PrintToConsole(iClient"###\t \t Who banned you: %s (%s)"szAdminNameszAdminAuth); 
            
PrintToConsole(iClient"###\t \t Reason: %s"szBanReason); 
            
PrintToConsole(iClient"###\t \t Ban time: %s"szBanTime); 
            
PrintToConsole(iClient"###\t \t Duration: %s"szDuration); 
            
PrintToConsole(iClient"###\t \t Expires: %s"szExp); 
            
PrintToConsole(iClient"###\t \t %s"g_szBanInfo); 

            
PrintToConsole(iClient"####################################################################"); 
            
PrintToConsole(iClient"####################################################################"); 
            
PrintToConsole(iClient"####################################################################"); 
             
            
char szBuffer[256]; 
            
strcopy(szBuffersizeof(szBuffer), g_szBanInfoPanel); 
            
ReplaceString(szBuffersizeof(szBuffer), "\\n""\n"); 
            
ReplaceString(szBuffersizeof(szBuffer), "{AUTH}"szAuth); 
            
ReplaceString(szBuffersizeof(szBuffer), "{ADMIN_NAME}"szAdminName); 
            
ReplaceString(szBuffersizeof(szBuffer), "{ADMIN_AUTH}"szAdminAuth); 
            
ReplaceString(szBuffersizeof(szBuffer), "{REASON}"szBanReason); 
            
ReplaceString(szBuffersizeof(szBuffer), "{BAN_TIME}"szBanTime); 
            
ReplaceString(szBuffersizeof(szBuffer), "{DURATION}"szDuration); 
            
ReplaceString(szBuffersizeof(szBuffer), "{EXPIRES}"szExp); 
            
ReplaceString(szBuffersizeof(szBuffer), "{BAN_INFO}"g_szBanInfo); 
             
            
DebugMessage("Banned"
            
DataPack hPack
            
CreateDataTimer(KICK_DELAYTimer_KickDelayhPack); 
            
hPack.WriteCell(UID(iClient)); 
            
hPack.WriteString(szBuffer); 
        } 
    } 


bool GetDuration(int iDurationchar[] szBufferint iMaxLen

    
g_hKeyValues.Rewind(); 
    
char szKey[64]; 
    
FormatEx(szKeysizeof(szKey), "ban_times/%i"iDuration/60); 
    
g_hKeyValues.GetString(szKeyszBufferiMaxLen); 
    return (
szBuffer[0]); 


public 
Action Timer_KickDelay(Handle hTimerHandle hDataPack

    
ResetPack(hDataPack); 
    
int iClient CID(ReadPackCell(hDataPack)); 
    
DebugMessage("Timer_KickDelay: %i"iClient
    if(
iClient
    { 
        
char szMessage[512]; 
        
ReadPackString(hDataPackszMessagesizeof(szMessage)); 
        
KickClient(iClientszMessage); 
    } 

    return 
Plugin_Stop


void UTIL_UnBan(int iBanIDint iType 1

    
char szQuery[256]; 
    
FormatEx(szQuerysizeof(szQuery), "UPDATE `table_bans` SET `remove_type` = %i WHERE `id` = '%i';"iTypeiBanID); 
    
g_hDatabase.Query(SQL_Callback_CheckErrorszQuery); 


void UTIL_RemoveBan(int iBanID

    
char szQuery[256]; 
    
FormatEx(szQuerysizeof(szQuery), "DELETE FROM `table_bans` WHERE `id` = '%i';"iBanID); 
    
g_hDatabase.Query(SQL_Callback_CheckErrorszQuery); 


void UTIL_GetTimeFromStamp(char[] szBufferint iMaxLenint iTimeStamp

    if (
iTimeStamp 31536000
    { 
        
int years iTimeStamp 31536000
        
int days iTimeStamp 86400 365
        if (
days 0
        { 
            
FormatEx(szBufferiMaxLen"%d y. %d d."yearsdays); 
        } 
        else 
        { 
            
FormatEx(szBufferiMaxLen"%d y."years); 
        } 
        return; 
    } 
    if (
iTimeStamp 86400
    { 
        
int days iTimeStamp 86400 365
        
int hours = (iTimeStamp 3600) % 24
        if (
hours 0
        { 
            
FormatEx(szBufferiMaxLen"%d d. %d h."dayshours); 
        } 
        else 
        { 
            
FormatEx(szBufferiMaxLen"%d d."days); 
        } 
        return; 
    } 
    else 
    { 
        
int Hours = (iTimeStamp 3600); 
        
int Mins = (iTimeStamp 60) % 60
        
int Secs iTimeStamp 60
         
        if (
Hours 0
        { 
            
FormatEx(szBufferiMaxLen"%02d:%02d:%02d"HoursMinsSecs); 
        } 
        else 
        { 
            
FormatEx(szBufferiMaxLen"%02d:%02d"MinsSecs); 
        } 
    } 

cmds.sp
PHP Code:
public Action Command_Ban(int iClientint iArgs

    if (
iArgs 2
    { 
        
ReplyToCommand(iClient"[SM] Usage: sm_ban <#userid|name> <minutes|0> [reason]"); 
        return 
Plugin_Handled
    } 

    
char szArg[64]; 
    
GetCmdArg(1szArgsizeof(szArg)); 
     
    
int iTarget FindTarget(iClientszArgtrue); 
    if (
iTarget == -1
    { 
        
ReplyToCommand(iClient"[SM] Игрок не найден!"); 
        return 
Plugin_Handled
    } 

    
GetCmdArg(2szArgsizeof(szArg)); 

    
char szReason[128]; 
    if (
iArgs == 3
    { 
        
GetCmdArg(3szReasonsizeof(szReason)); 
    } 

    
UTIL_CreateBan(iClientiTarget___,  S2I(szArg)*60szReason); 

    return 
Plugin_Handled


public 
Action Command_AddBan(int iClientint iArgs

    if (
iArgs 2
    { 
        
ReplyToCommand(iClient"[SM] Usage: sm_addban <steamid> <time> [reason] [name]"); 
        return 
Plugin_Handled
    } 
     
    
char szAuth[32]; 
    
GetCmdArg(1szAuthsizeof(szAuth)); 

    if (!(!
strncmp(szAuth"STEAM_"6) && szAuth[7] == ':') && strncmp(szAuth"[U:"3)) 
    { 
        
ReplyToCommand(iClient"[SM] %t""Invalid SteamID specified"); 
        return 
Plugin_Handled
    } 

    
char szTime[16]; 
    
GetCmdArg(2szTimesizeof(szTime)); 

    
char szReason[128], szName[MAX_NAME_LENGTH]; 
    if (
iArgs == 3
    { 
        
GetCmdArg(3szReasonsizeof(szReason)); 
    } 
    if (
iArgs == 4
    { 
        
GetCmdArg(4szNamesizeof(szName)); 
    } 

    
UTIL_CreateBan(iClient_szAuthszName_S2I(szTime)*60szReason); 

    return 
Plugin_Handled


public 
Action Command_BanIp(int iClientint iArgs

    if (
iArgs 2
    { 
        
ReplyToCommand(iClient"[SM] Usage: sm_banip <ip|#userid|name> <time> [reason]"); 
        return 
Plugin_Handled
    } 

    
char szArg[64]; 
    
GetCmdArg(1szArgsizeof(szArg)); 
     
    
int iTarget FindTarget(iClientszArgtrue); 
    if (
iTarget == -1
    { 
        
ReplyToCommand(iClient"[SM] Player not found!"); 
        return 
Plugin_Handled
    } 

    
GetCmdArg(2szArgsizeof(szArg)); 

    
char szReason[128]; 
    if (
iArgs == 3
    { 
        
GetCmdArg(3szReasonsizeof(szReason)); 
    } 

    
UTIL_CreateBan(iClientiTarget___,  S2I(szArg)*60szReason1); 

    return 
Plugin_Handled


public 
Action Command_Unban(int iClientint iArgs

    if (
iArgs 1
    { 
        
ReplyToCommand(iClient"[SM] Usage: sm_unban <steamid|ip>"); 
        return 
Plugin_Handled
    } 

    
char szQuery[256], szAuth[32], szPart[128]; 
    
GetCmdArg(1szAuthsizeof(szAuth)); 

    if(
g_bUnBanMode && !(GetUserFlagBits(iClient) & ADMFLAG_ROOT)) 
    { 
        
char szAdminAuth[32]; 
        
GetClientAuthId(iClientAuthId_EngineszAdminAuthsizeof(szAdminAuth)); 
        
FormatEx(szPartsizeof(szPart), " AND (`admin_auth` = '%s');"szAdminAuth); 
    } 
    else 
    { 
        
szPart[0] = 0
    } 

    
FormatEx(szQuerysizeof(szQuery), "UPDATE `table_bans` SET `remove_type` = 1 WHERE `remove_type` = '0' AND (`auth` = '%s' OR `ip` = '%s')%s;"szAuthszAuthszPart); 
    
g_hDatabase.Query(SQL_Callback_UnBanszQueryiClient UID(iClient):0); 

    return 
Plugin_Handled


public 
void SQL_Callback_UnBan(Database hDatabaseDBResultSet results, const char[] sErrorany iClient

    if(
sError[0]) 
    { 
        
LogError("SQL_Callback_UnBan: %s"sError); 
        return; 
    } 
     
    if(
iClient
    { 
        
iClient GetClientOfUserId(iClient); 
        if(!
iClient
        { 
            return; 
        } 
    } 
     
    if(
results.AffectedRows
    { 
        
ReplyToCommand(iClient"[SM] The player is broken!"); 
    } 
    else 
    { 
        
ReplyToCommand(iClient"[SM] Ban not found!"); 
    } 

Now i got other error
PHP Code:
//// LocalBans.sp
//
// LocalBans/util.sp(182) : error 092: number of arguments does not match definition
// LocalBans/banlist.sp(164) : error 092: number of arguments does not match definition 
banlist.sp
PHP Code:
public void AdminMenu_BanList(Handle hTopMenuTopMenuAction actionTopMenuObject topobj_idint iClientchar[] szBufferint iMaxLength)
{
    if (
action == TopMenuAction_DisplayOption)
    {
        
FormatEx(szBufferiMaxLength"BanList");
    }
    else if (
action == TopMenuAction_SelectOption)
    {
        
g_iClientOffset[iClient] = 0;
        
DisplayBanListMenu(iClient);
    }
}

void DisplayBanListMenu(int iClient)
{
    
char szQuery[256];
    if(
g_bShowBansMode)
    {
        
FormatEx(szQuerysizeof(szQuery), "SELECT `id`, `name`, `remove_type` FROM `table_bans` LIMIT %i, %i;"g_iClientOffset[iClient], g_iClientOffset[iClient]+g_iShowBansCount);
    }
    else
    {
        
FormatEx(szQuerysizeof(szQuery), "SELECT `id`, `name` FROM `table_bans` WHERE `remove_type` = '0' LIMIT %i, %i;"g_iClientOffset[iClient], g_iClientOffset[iClient]+g_iShowBansCount);
    }
    
    
g_hDatabase.Query(SQL_Callback_SelectBanListszQueryUID(iClient));
}

public 
void SQL_Callback_SelectBanList(Database hDatabaseDBResultSet results, const char[] sErrorany iUserID)
{
    if(
sError[0])
    {
        
LogError("SQL_Callback_SelectBanList: %s"sError);
        return;
    }
    
    
int iClient GetClientOfUserId(iUserID);
    if(
iClient)
    {
        
Menu hMenu CreateMenu(MenuHandler_BanList);

        
hMenu.SetTitle("Ban list:\n ");
        
hMenu.ExitBackButton true;

        if(
results.RowCount)
        {
            
hMenu.AddItem("search""Search\n ");

            
char szName[MAX_NAME_LENGTH*2], szID[16];
            
int i 0;
            while(
results.FetchRow())
            {
                
results.FetchString(0szIDsizeof(szID));
                
results.FetchString(1szNamesizeof(szName));
                
hMenu.AddItem(szIDszName);
                if(
g_bShowBansMode)
                {
                    switch(
results.FetchInt(2))
                    {
                        case 
1:    StrCat(szNamesizeof(szName), " (Has expired)");
                        case 
2:    StrCat(szNamesizeof(szName), " (Banned)");
                    }
                }
                ++
i;
            }
            
            if(
== g_iShowBansCount)
            {
                
hMenu.AddItem("more""Show more bans");
            }
        }
        else
        {
            
hMenu.AddItem("""No ban available"ITEMDRAW_DISABLED);
        }

        
hMenu.Display(iClientMENU_TIME_FOREVER);
    }
}

public 
int MenuHandler_BanList(Menu hMenuMenuAction actionint iClientint Item)
{
    switch(
action)
    {
    case 
MenuAction_End:
        {
            
delete hMenu;
        }
    case 
MenuAction_Cancel:
        {
            if (
Item == MenuCancel_ExitBack && g_hTopMenu)
            {
                
g_hTopMenu.Display(iClientTopMenuPosition_LastCategory);
            }
        }
    case 
MenuAction_Select:
        {
            
char szID[16];
            
hMenu.GetItem(ItemszIDsizeof(szID));
            if(
strcmp(szID"more") == 0)
            {
                
g_iClientOffset[iClient] += g_iShowBansCount;
                
DisplayBanListMenu(iClient);
                return 
0;
            }
            if(
strcmp(szID"search") == 0)
            {
                
g_bWaitChat[iClient] = true;
                
g_bSearch[iClient] = true;
                
g_bOffBan[iClient] = false;
                
DisplayWaitChatMenu(iClient);
                return 
0;
            }

            
DisplayBanInfoMenu(iClientS2I(szID));
        }
    }
    
    return 
0;
}

void DisplayBanInfoMenu(int iClientint iID)
{
    
char szQuery[256];
    
FormatEx(szQuerysizeof(szQuery), "SELECT `id`, `name`, `admin_name`, `admin_auth`, `ban_time`, `length`, `reason`, `remove_type` FROM `table_bans` WHERE `id` = '%i';"iID);

    
g_hDatabase.Query(SQL_Callback_SelectBanInfoszQueryUID(iClient));
}

public 
void SQL_Callback_SelectBanInfo(Database hDatabaseDBResultSet results, const char[] sErrorany iUserID)
{
    if(
sError[0])
    {
        
LogError("SQL_Callback_SelectBanInfo: %s"sError);
        return;
    }
    
    
int iClient GetClientOfUserId(iUserID);
    if(
iClient && results.FetchRow())
    {
        
Menu hMenu CreateMenu(MenuHandler_BanInfo);
        
hMenu.ExitBackButton true;
        
        
int iID results.FetchInt(0);
        
int iBanTime results.FetchInt(4);
        
int iLength results.FetchInt(5);
        
int iTime GetTime();
        
        
char szID[16], szAuth[32], szName[MAX_NAME_LENGTH], szBanReason[256], szAdminName[MAX_NAME_LENGTH], szAdminAuth[32], szAdminAuth2[32], szBanTime[64], szDuration[64], szExp[64];
        
results.FetchString(1szNamesizeof(szName));
        
results.FetchString(2szAdminNamesizeof(szAdminName));
        
results.FetchString(3szAdminAuthsizeof(szAdminAuth));
        
results.FetchString(6szBanReasonsizeof(szBanReason));
        
GetClientAuthId(iClientAuthId_EngineszAdminAuth2sizeof(szAdminAuth2));
        
FormatTime(szBanTimesizeof(szBanTime), g_szTimeFormatiBanTime);    
        if(!
GetDuration(iLengthszDurationsizeof(szDuration)))
        {
            
FormatEx(szDurationsizeof(szDuration), "%i min."iLength/60);
        }
        
        if(
iLength)
        {
            
UTIL_GetTimeFromStamp(szExpsizeof(szExp), ((iBanTime+iLength)-iTime), iClient);
            
Format(szExpsizeof(szExp), "Expires %s"szExp);
        }
        else
        {
            
strcopy(szExpsizeof(szExp), "Никогда");
        }

        if(
g_bShowBansMode)
        {
            
char szBuffer[64];
            
            switch(
results.FetchInt(7))
            {
                case 
0:    FormatEx(szBuffersizeof(szBuffer), "Active\nExpires: %s"szExp);
                case 
1:    strcopy(szBuffersizeof(szBuffer), "Has expired");
                case 
2:    strcopy(szBuffersizeof(szBuffer), "Banned");
            }

            
hMenu.SetTitle("SteamID: %s\n\
                        Name: %s\n\
                        Admin who banned you: %s\n\
                        Reason: %s\n\
                        Ban issued: %s\n\
                        Duration: %s\n\
                        Other: %s"
,
                        
szAuth,
                        
szName,
                        
szAdminName,
                        
szBanReason,
                        
szBanTime,
                        
szDuration,
                        
szBuffer);
        }
        else
        {
            
hMenu.SetTitle("SteamID: %s\n\
                        Name: %s\n\
                        Admin who banned you: %s\n\
                        Reason: %s\n\
                        Ban issued: %s\n\
                        Duration: %s\n\
                        Expires: %s"
,
                        
szAuth,
                        
szName,
                        
szAdminName,
                        
szBanReason,
                        
szBanTime,
                        
szDuration,
                        
szExp);
        }
/*
        bool bRemoveBanAccess = CheckCommandAccess(iClient, "sm_remove_ban", ADMFLAG_UNBAN);
        bool bUnBanAccess = CheckCommandAccess(iClient, "sm_unban", ADMFLAG_UNBAN);
        */
        
bool bIsRoot = (GetUserFlagBits(iClient) & ADMFLAG_ROOT != 0);
        
bool bItsHimBan = (strcmp(szAdminAuth2szAdminAuth) == 0);
        
        
/*if((g_bUnBanMode && (bItsHimBan || bUnBanAccess)) || (!g_bUnBanMode && bUnBanAccess))
        {
            FormatEx(szID, sizeof(szID), "u%i", iID);
            hMenu.AddItem(szID, "To unban");
        }
        
        if((g_bRemoveBanMode && (bItsHimBan || bRemoveBanAccess)) || (!g_bRemoveBanMode && bRemoveBanAccess))
        {
            FormatEx(szID, sizeof(szID), "r%i", iID);
            hMenu.AddItem(szID, "Delete");
        }*/
        
        
if(bIsRoot || (g_bUnBanMode && bItsHimBan))
        {
            
FormatEx(szIDsizeof(szID), "u%i"iID);
            
hMenu.AddItem(szID"To unban");
        }
        
        if(
bIsRoot || (g_bRemoveBanMode && bItsHimBan))
        {
            
FormatEx(szIDsizeof(szID), "r%i"iID);
            
hMenu.AddItem(szID"Delete");
        }
        
        
hMenu.AddItem(""""ITEMDRAW_NOTEXT);
        
hMenu.AddItem(""""ITEMDRAW_NOTEXT);
        
hMenu.AddItem(""""ITEMDRAW_NOTEXT);
        
hMenu.AddItem(""""ITEMDRAW_NOTEXT);

        
hMenu.Display(iClientMENU_TIME_FOREVER);
    }
}

public 
int MenuHandler_BanInfo(Menu hMenuMenuAction actionint iClientint Item)
{
    switch(
action)
    {
    case 
MenuAction_End:
        {
            
delete hMenu;
        }
    case 
MenuAction_Cancel:
        {
            if (
Item == MenuCancel_ExitBack)
            {
                
DisplayBanListMenu(iClient);
            }
        }
    case 
MenuAction_Select:
        {
            
char szID[16];
            
hMenu.GetItem(ItemszIDsizeof(szID));

            
int iID S2I(szID[1]);
            if(
szID[0] == 'u')
            {
                
UTIL_UnBan(iID2);
                
DisplayBanInfoMenu(iClientiID);
                
PrintToChat(iClient"Player banned!");
                return 
0;
            }

            if(
szID[0] == 'r')
            {
                
UTIL_RemoveBan(iID);
                
DisplayBanListMenu(iClient);
                
PrintToChat(iClient"Ban removed!");
                return 
0;
            }
        }
    }
    
    return 
0;

__________________
Steam - https://steamcommunity.com/id/porcusorulmagic
Discord - PorcusorulMagic#4908
PorcusorulMagic 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 15:02.


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