AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Error (https://forums.alliedmods.net/showthread.php?t=141335)

edgaras85 10-22-2010 17:32

Error
 
Quote:

10/23/2010 - 00:05:01: [SQLITE] Invalid DBI result handle -1
L 10/23/2010 - 00:05:01: [AMXX] Displaying debug trace (plugin "command_logger.amxx")
L 10/23/2010 - 00:05:01: [AMXX] Run time error 10: native error (native "dbi_free_result")
L 10/23/2010 - 00:05:01: [AMXX] [0] command_logger.sma::LogSQL (line 277)
L 10/23/2010 - 00:05:01: [AMXX] [1] command_logger.sma::client_command (line 225)
PHP Code:

/* * * * * * * * * * * * * * *  
* Amx Mod X Script
*    Command Logging.
*                              
* Plugin is used to Log all admin commands.

*******************************************
* Created by: $uicid3 V1.4
*
* V1.0 - First creation. 
* V1.1 - Added DB support.(never released)
* V1.2 - Added clcmd support. 
*    - Made SQL more advanced
*    - Added example php files.
*    - Added blockcmdlist.ini
*    - Added Time to logs
* V1.3 - Change code for less db calls.
*    - Changed blockcmdlist.ini to log_cmdlist.ini
*    - Added cvar: amx_cmd_list.
*    - Cleaned up code again. Changed so plugin makes less db calls.
*    - No longer Logs commands twice.
* V1.4 - Fixed Bug in File Log with Steam ID.
*
* This file is provided as is (no warranties).             

* This file is free software you can redistribute this as
* you please.
*
********************************************
* Credits:
*    Idea/Concept : Everyone on the Forums who has asked for this.
*
******************************************
* Cvar: amx_cmd_list
* Sets how to use the log_cmdlist.ini file
* 0 - Dont use file. (Log all cmds)
* 1 - Use as a Block list. (Dont use commands listed in file)
* 2 - Use as an Allow list. (Only use commands listed in file)
*
* Default is 1
******** If Not using DataBases ******
* Everything gets logged into folder amxmodx/logs/Cmds/
*
* Logged according to cvar: amx_cmd_log_file
* 0 - One big file
* 1 - By Admin Name
* 2 - By Admin AuthID
* 3 - By Date
* 4 - By Map
*
* Default is 2
********************************************
* In File Logging according to cvar: amx_cmd_logging
* Cvar Value - Example Line:
* ---------------------------
* 0 - ADMIN [Time of Day] 'Name here' used 'cmd_here all "args here"'
* 1 - ADMIN [Time of Day] 'Name here'<STEAM_ID_HERE> used 'cmd_here all "args here"'
* 2 - ADMIN [Time of Day] 'Name here' used Cmd 'cmd_here' with args 'all "args here"'
* 3 - ADMIN [Time of Day] 'Name here'<STEAM_ID_HERE> used Cmd 'cmd_here' with args 'all "args here"'
*
* Default is 3
***** If using DataBases ********
* Just load plugin and change map. Everything will be done for you.
*
* Sql variables read out of amxmodx/configs/sql.cfg
*
* If any errors occur while using SQL it stops logging so you dont get the error for every command used. ;p
********************************************/

//Uncomment to use SQL
#define SQL_MODE

#include <amxmodx>
#include <amxmisc>
#if defined SQL_MODE
#include <dbi>
#endif

#define VERSION "1.4"

#define MAX_CMDS 255

new g_szCmds[MAX_CMDS][36]
new 
g_iCmds 0
new g_szListed[MAX_CMDS][36]
new 
g_iListCount 0

#if defined SQL_MODE
new g_sqlHost[66]
new 
g_sqlUser[36]
new 
g_sqlPass[46]
new 
g_sqlDb[26]
new 
g_sqlTable[16] = "cmd_log"

new Sql:sql
new Result:result
new bool:g_boolsqlOK false
#endif

public plugin_init()
{
    
register_plugin("Command Logging",VERSION,"$uicid3")
    
register_cvar("amx_cmd_list","1")
    
#if !defined SQL_MODE
    
register_cvar("amx_cmd_log_file","2")
    
register_cvar("amx_cmd_logging","3")
    
#else
    
set_task(0.4,"SetSQL")
    
#endif
    
set_task(0.1,"GetCmds")
    
set_task(0.6,"GetList")
}

#if defined SQL_MODE
public SetSQL()
{
    
get_cvar_string("amx_sql_host",g_sqlHost,65)
    
get_cvar_string("amx_sql_user",g_sqlUser,35)
    
get_cvar_string("amx_sql_pass",g_sqlPass,45)
    
get_cvar_string("amx_sql_db",g_sqlDb,25)

    new 
szError[36]
    
sql dbi_connect(g_sqlHost,g_sqlUser,g_sqlPass,g_sqlDb,szError,35)

    if (
sql <= SQL_FAILED
    {
        
log_amx("[Command Log] Couldn't connect to Database^nUsing Host:%s , User %s , db %s",g_sqlHost,g_sqlUser,g_sqlPass,g_sqlDb)
        
g_boolsqlOK false
        dbi_close
(sql)
        return
    }

    
dbi_query(sql,"CREATE TABLE IF NOT EXISTS `%s` ( `name` VARCHAR( 36 ), `auth` VARCHAR( 32 ) NOT NULL, `command` VARCHAR( 32 ) NOT NULL, `args` VARCHAR( 101 ) DEFAULT 'none' NOT NULL, `date` VARCHAR( 32 ) NOT NULL, `time` VARCHAR( 32 ) NOT NULL,`map` VARCHAR( 36 ) NOT NULL ) COMMENT = 'Command Log Table'",g_sqlTable)

    
g_boolsqlOK true
    
return
}
#endif

public GetCmds()
{
    new 
flags
    
for(new 0;21;x++)
        
flags |= (1<<x)
    
flags |= (1<<24)

    new 
szInfo[46],Temp
    
new iEnd

    g_iCmds 
0

    iEnd 
get_concmdsnum(flags,-1)
    if(
iEnd MAX_CMDS)
        
iEnd MAX_CMDS

    
for(0;iEndi++)
        
get_concmd(i,g_szCmds[g_iCmds++],35,Temp,szInfo,45,flags,1)

    new 
iStart g_iCmds
    iEnd 
get_clcmdsnum(flags)

    for(new 
iStart;iEndx++)
        
get_clcmd(x,g_szCmds[g_iCmds++],35,Temp,szInfo,45,flags)

    return
}
public 
GetList()
{
    new 
szFileName[65] , szConf[55]
    
get_configsdir(szConf,54)
    
format(szFileName,64,"%s/log_cmdlist.ini",szConf)
    
szConf[0] = 0

    g_iListCount 
0

    
if(!file_exists(szFileName))
        return

    new 
pos szLine[36]
    while( 
read_fileszFileNamepos++, szLine35))
    {
        if( 
szLine[0] == ';' || !) continue

        
copy(g_szListed[g_iListCount],75,szLine)
        
g_iListCount++
    }
    return
}
public 
client_commandid )
{
    if( !
is_user_admin(id) )
        return 
PLUGIN_CONTINUE

    
new szCmd[36],szArgs[101]
    
read_argv(0,szCmd,35)
    
read_args(szArgs,100)

    
remove_quotes(szArgs)

    switch(
get_cvar_num("amx_cmd_list"))
    {
        case 
0:
        {
            if(!
IsCmd(szCmd))
                return 
PLUGIN_CONTINUE
        
}
        case 
1:
        {
            if( ( 
IsCmd(szCmd) && InList(szCmd) ) || !IsCmd(szCmd) )
                return 
PLUGIN_CONTINUE
        
}
        case 
2:
        {
            if( ( 
IsCmd(szCmd) && !( InList(szCmd)) ) || !IsCmd(szCmd) )
                return 
PLUGIN_CONTINUE
        
}
        default:
        {
            if( ( 
IsCmd(szCmd) && InList(szCmd) ) || !IsCmd(szCmd) )
                return 
PLUGIN_CONTINUE
        
}
    }

    
#if defined SQL_MODE
    
LogSQL(id,szCmd,szArgs)
    
#else
    
LogCmd(id,szCmd,szArgs)
    
#endif

    
return PLUGIN_CONTINUE
}

stock bool:IsCmdszCmd[36] )
{
    for(new 
0g_iCmdsi++)
    {
        if( 
equali(szCmd,g_szCmds[i]) )
            return 
true
    
}
    return 
false
}

stock bool:InListszCmd[36] )
{
    for(new 
0g_iListCounti++)
    {
        if( 
equali(szCmd,g_szListed[i]) )
            return 
true
    
}
    return 
false
}

#if defined SQL_MODE
public LogSQL(AdminID szCmd[36] , szArgs[101])
{
    if(!
g_boolsqlOK)
        return 
PLUGIN_CONTINUE
    
new szAdminName[36], szAdminAuth[32],szDate[26],szMap[36],szTime[16]
    
get_user_name(AdminID,szAdminName,35)
    
remove_quotes(szAdminName)
    while(
replace(szAdminName,35,"'","")) { }
    
get_user_authid(AdminID,szAdminAuth,31)
    
get_time("%m-%d-%Y",szDate,25)
    
get_time("%H:%M:%S",szTime,15)
    
get_mapname(szMap,35)

    if(
szArgs[0] == 0)
        
format(szArgs,100,"<i>None</i>")
    new 
szError[126]
    
result dbi_query(sql,"INSERT INTO `%s` (`name`,`auth`,`command`,`args`,`date`,`time`,`map`) VALUES ('%s','%s','%s','%s','%s','%s','%s');",g_sqlTable,szAdminName,szAdminAuth,szCmd,szArgs,szDate,szTime,szMap)

    if(
result == RESULT_FAILED)
    {
        
dbi_error(sql,szError,125)
        
server_print("[Command Log] Couldn't insert new row.^nError:^n^"%s^"^n",szError)
        
server_print("[Command Log] Stopping continuation of Command Logging.")
        
dbi_free_result(result)
        
dbi_close(sql)
        
g_boolsqlOK false
    
}
    
dbi_free_result(result)
    return 
PLUGIN_CONTINUE

#else
public LogCmd(AdminID szCmd[36] , szArgs[101])
{
    new 
szAdminName[36],szAdminAuth[32],szDate[26],szMap[36],szTime[26]
    new 
szLogMessage[256],szLogAuth[32]

    
get_user_name(AdminID,szAdminName,35)
    
get_user_authid(AdminID,szAdminAuth,31)
    
get_mapname(szMap,35)
    
get_time("%m-%d-%Y",szDate,25)
    
get_time("%m-%d-%Y %H:%M:%S",szTime,25)
    
copy(szLogAuth,31,szAdminAuth)
    while(
replace(szLogAuth,31":" "_" )) { }

    new 
szFileName[101],szBaseDir[76]
    
get_basedir(szBaseDir,75)
    new 
len format(szFileName,100,"%s/logs/Cmds/",szBaseDir)
    switch(
get_cvar_num("amx_cmd_log_file"))
    {
        case 
0format(szFileName[len],100-len,"log.log")
        case 
1format(szFileName[len],100-len,"%s.log",szAdminName)
        case 
2format(szFileName[len],100-len,"%s.log",szLogAuth)
        case 
3format(szFileName[len],100-len,"%s.log",szDate)
        case 
4format(szFileName[len],100-len,"%s.log",szMap)
        default: 
format(szFileName[len],100-len,"%s.log",szLogAuth)
    }
    switch(
get_cvar_num("amx_cmd_logging"))
    {
        case 
0format(szLogMessage,255,"ADMIN [%s] '%s' used '%s %s'",szTime,szAdminName,szCmd,szArgs)
        case 
1format(szLogMessage,255,"ADMIN [%s] '%s'<%s> used '%s %s'",szTime,szAdminName,szAdminAuth,szCmd,szArgs)
        case 
2format(szLogMessage,255,"ADMIN [%s] '%s' used Command '%s' with Args '%s'",szTime,szAdminName,szCmd,szArgs)
        case 
3format(szLogMessage,255,"ADMIN [%s] '%s'<%s> used Command '%s' with Args '%s'",szTime,szAdminName,szAdminAuth,szCmd,szArgs)
        default: 
format(szLogMessage,255,"ADMIN [%s] '%s'<%s> used Command '%s' with Args '%s'",szTime,szAdminName,szAdminAuth,szCmd,szArgs)
    }
    if(!
file_exists(szFileName))
    {
        new 
szHeader[75]
        new 
format(szHeader,75,"*File Created By: Command Logger*^n")
        
+= format(szHeader[k],75-k,"**A plugin Created by: $uicid3**^n")
        
write_file(szFileName,szHeader,0)
            
    }
    
write_file(szFileName,szLogMessage,-1)
    return 
PLUGIN_CONTINUE
}
#endif 



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

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