View Single Post
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