.INI File Cleaner or Enabler/Disabler
Posted: Tue Oct 06, 2026 12:00 am
I searched a little and didn't find something similar to what I was looking for, and I decided to try by myself and made a code that can disable and enable a whole .ini file or a single line by a command.
Put your .ini file here
Used an exemple when you wanna enable/disable bunnyhop plugin in the plugins-custom.ini:
Source code:
Used an example to completely remove the plugin instead of only add a ';' before it's name:
Source Code:
OBS: If you wanna disable/enable a plugin and it contains debug mode, you must add on enableLine() and disableLine() stock too, remember that it check if the line is equal, not if contains the same name.
Put your .ini file here
Code: Select all
new const g_szIniFileName[] = "plugins-custom.ini"Source code:
Code: Select all
#include <amxmodx>
#include <amxmisc>
#define PLUGIN ".Ini file Enabler/Disabler"
#define VERSION "1.0"
#define AUTHOR "EFFx"
new const g_szIniFileName[] = "plugins-custom.ini"
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("amx_clean", "cmdClean", ADMIN_IMMUNITY, "<1|0 - Clean whole file>")
register_clcmd("amx_remove", "cmdRemove", ADMIN_IMMUNITY, "<1|0 - Remove whole file>")
}
public cmdClean(id, level, cid)
{
if(!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED
new szWholeFile[2], bool:bIsWholeFile
read_argv(1, szWholeFile, charsmax(szWholeFile))
bIsWholeFile = bool:str_to_num(szWholeFile)
if(!enableLine(bIsWholeFile, bIsWholeFile ? "" : "bunnyhop.amxx"))
{
console_print(id, "[AMXX]: Line not found")
return PLUGIN_HANDLED
}
return PLUGIN_HANDLED
}
public cmdRemove(id, level, cid)
{
if(!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED
new szWholeFile[2], bool:bIsWholeFile
read_argv(1, szWholeFile, charsmax(szWholeFile))
bIsWholeFile = bool:str_to_num(szWholeFile)
if(!disableLine(bIsWholeFile, bIsWholeFile ? "" : "bunnyhop.amxx"))
{
console_print(id, "[AMXX]: Line not found")
return PLUGIN_HANDLED
}
return PLUGIN_HANDLED
}
enableLine(bool:bWholeFile, szLine[])
{
new szFileName[64], szText[512]
get_configsdir(szFileName, charsmax(szFileName))
format(szFileName, charsmax(szFileName), "%s/%s", szFileName, g_szIniFileName)
new iFile = fopen(szFileName, "rt"), i
while(!feof(iFile))
{
fgets(iFile, szText, charsmax(szText))
trim(szText)
i++
if(szText[0] == ';')
{
if(!bWholeFile && !equal(szText[1], szLine))
continue
replace(szText, charsmax(szText), ";", "")
write_file(szFileName, szText, (i - 1))
return true
}
}
fclose(iFile)
return false
}
disableLine(bool:bWholeFile, szLine[])
{
new szFileName[64], szText[512]
get_configsdir(szFileName, charsmax(szFileName))
format(szFileName, charsmax(szFileName), "%s/%s", szFileName, g_szIniFileName)
new iFile = fopen(szFileName, "rt"), i
while(!feof(iFile))
{
fgets(iFile, szText, charsmax(szText))
trim(szText)
i++
if(szText[0] != ';')
{
if(!bWholeFile && !equal(szText, szLine))
continue
format(szText, charsmax(szText), ";%s", szText)
write_file(szFileName, szText, (i - 1))
return true
}
}
fclose(iFile)
return false
} Source Code:
Code: Select all
#include <amxmodx>
#include <amxmisc>
#define PLUGIN ".Ini file cleaner"
#define VERSION "1.0"
#define AUTHOR "EFFx"
new const g_szIniFileName[] = "plugins-pubg.ini"
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("amx_clean", "cmdClean", ADMIN_IMMUNITY, "<1|0 - Clean whole file>")
}
public cmdClean(id, level, cid)
{
if(!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED
new szWholeFile[2], bool:bIsWholeFile
read_argv(1, szWholeFile, charsmax(szWholeFile))
bIsWholeFile = bool:str_to_num(szWholeFile)
if(!cleanFile(bIsWholeFile, bIsWholeFile ? "" : "bunnyhop.amxx"))
{
console_print(id, "[AMXX]: Line not found")
return PLUGIN_HANDLED
}
return PLUGIN_HANDLED
}
cleanFile(bool:bWholeFile, szLine[])
{
new szFileName[64], szText[512]
get_configsdir(szFileName, charsmax(szFileName))
format(szFileName, charsmax(szFileName), "%s/%s", szFileName, g_szIniFileName)
new iFile = fopen(szFileName, "rt"), i
while(!feof(iFile))
{
fgets(iFile, szText, charsmax(szText))
trim(szText)
i++
if((szText[0] == EOS) || !bWholeFile && !equal(szText, szLine))
continue
replace(szText, charsmax(szText), bWholeFile ? szText : szLine, "")
write_file(szFileName, szText, (i - 1))
if(bWholeFile)
{
cleanFile(bWholeFile, szLine)
}
return true
}
fclose(iFile)
return false
}