Veteran Member
Join Date: Feb 2016
Location: São Paulo, Brasil
|
07-29-2018
, 19:32
.INI File Cleaner or Enabler/Disabler
|
#1
|
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
PHP Code:
new const g_szIniFileName[] = "plugins-custom.ini"
Used an exemple when you wanna enable/disable bunnyhop plugin in the plugins-custom.ini:
Source code:
PHP Code:
#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 }
Used an example to completely remove the plugin instead of only add a ';' before it's name:
Source Code:
PHP Code:
#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 }
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.
__________________
Last edited by EFFx; 07-29-2018 at 19:55.
|
|