Optimizing Plugins (AMX Mod X Scripting)
LOL HAX
LOL HAX
Faster Natives
AMX Mod X replaces many of the old AMX Mod natives with faster versions. Read below to discover them.
Cvar Pointers
As of AMX Mod X 1.70, you can cache "cvar pointers". These are direct accesses to cvars, rather than named access. This is a critical optimization which is dozens of times faster. For example:
new g_enabled = register_cvar("csdm_enabled", "1") //OR new g_enabled = get_cvar_pointer("csdm_enabled") stock SetCSDM(num) set_pcvar_num(g_enabled, num) stock GetCSDM() return get_pcvar_num(g_enabled)
All of the cvar* functions (except for set_cvar_string) are mapped to [get|set]_pcvar_*. You can get a cached cvar pointer with get_cvar_pointer() or register_cvar().
FormatEX
As of AMX Mod X 1.70, there is an ultra high-speed version of format() called formatex(). It skips copy-back checking, unlike format(). formatex() cannot be used if a source input is the same as the output buffer. For example, these are invalid:
new buffer[255] formatex(buffer, 254, "%s", buffer); formatex(buffer, 254, buffer); formatex(buffer, 254, "%d %s", buffer[2]);
It should be noted that format() will behave the same as formatex() if it detects that there will be no copy-back needed. However, formatex() does not check this, and thus is slightly faster for situations where the coder is sure of its usage.
File Writing
As of AMX Mod X 1.70, there are new natives for file writing. Read_file and write_file are O(n^2) functions for consecutive read/writes. fopen(), fgets(), fputs(), and fclose() are O(n) (or better) depending on how you use them.