<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.alliedmods.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=OciXCrom</id>
	<title>AlliedModders Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.alliedmods.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=OciXCrom"/>
	<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/Special:Contributions/OciXCrom"/>
	<updated>2026-06-06T22:48:06Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.6</generator>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=AMX_Mod_X_1.9_Release_Notes&amp;diff=10597</id>
		<title>AMX Mod X 1.9 Release Notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=AMX_Mod_X_1.9_Release_Notes&amp;diff=10597"/>
		<updated>2018-08-31T19:05:49Z</updated>

		<summary type="html">&lt;p&gt;OciXCrom: Grammar check.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{alert|info|&amp;lt;span style&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;quot;vertical-align: super;&amp;quot;&amp;gt;[[File:Ambox_content_soft.svg|35px]]&amp;lt;/span&amp;gt;{{ns|2}}{{resize|200%|This version is not yet released. The release notes are not final.}}|opt=full-border}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AMX Mod X 1.9 is a major update, containing many features, fixes, and improvements under the hood.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:✓ All old plugins and modules will continue to work.&lt;br /&gt;
:✓ This release does have new configuration files.&lt;br /&gt;
:✓ This release does have configuration changes.&lt;br /&gt;
:✓ This release does include plugin changes.&lt;br /&gt;
:✓ This release does have translations changes.&lt;br /&gt;
:✓ This release does not break compatibility.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{alert|info|Hint:|This page includes hidden reference that you can toggle with {{tt|{{hidden|id=hint|labelonly=yes}}}}.|opt=full-border}}&lt;br /&gt;
{{hidden|id=hint|contentonly=yes|content=🙌 Congratulations for understanding the hint!{{margin|10px|}}}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Major Highlights ==&lt;br /&gt;
&lt;br /&gt;
=== GitHub ===&lt;br /&gt;
&lt;br /&gt;
A friendly reminder of the [https://forums.alliedmods.net/showthread.php?t=240468 previous announcement] on the AMX Mod X website, all development is now done on GitHub.&amp;lt;br /&amp;gt;&lt;br /&gt;
You can now check out the latest changes on https://github.com/alliedmodders/amxmodx.&lt;br /&gt;
&lt;br /&gt;
Any help is welcomed and encouraged. To contribute, there are two ways:&lt;br /&gt;
&lt;br /&gt;
* To report a bug or request a feature, you can create an issue here: https://github.com/alliedmodders/amxmodx/issues&lt;br /&gt;
* To directly contribute to the AMX Mod X repository, you can create a ''Pull Request'' by following this guide: https://wiki.alliedmods.net/Git_Tutorial.&lt;br /&gt;
: You can see the current PRs here as well: https://github.com/alliedmodders/amxmodx/pulls. &lt;br /&gt;
: → Don't hesitate to give your thoughts or to review, anyone can participate!&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
&lt;br /&gt;
The improvements for AMX Mod X 1.9 span the whole project:&lt;br /&gt;
&lt;br /&gt;
* Stability and performance improvements&lt;br /&gt;
* Official support for ReHLDS and ReGameDLL&lt;br /&gt;
* Greatly improved UTF-8 support across the project&lt;br /&gt;
* Significant improvements to modules and official plugins&lt;br /&gt;
* (Almost) completely revised and completed documentation&lt;br /&gt;
* Tons of new functionalities for plugin developers and admins&lt;br /&gt;
&lt;br /&gt;
=== Compatibility ===&lt;br /&gt;
&lt;br /&gt;
For AMX Mod X plugins and modules, this release is fully backward compatible. Anything else is a bug. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, a lot of legacy AMX Mod (no X) code has been removed, so we no longer guarantee backward compatibility for AMX Mod plugins.&lt;br /&gt;
&lt;br /&gt;
AMX Mod X contains a host of new features for developers, so plugins and modules compiled against AMX Mod X 1.9 will not run on an earlier version.&lt;br /&gt;
&lt;br /&gt;
If we are made aware of compatibility issues, we will list the known issues below while a fix is developed.&lt;br /&gt;
&lt;br /&gt;
Known Issues:&lt;br /&gt;
* None&lt;br /&gt;
&lt;br /&gt;
=== Upgrading ===&lt;br /&gt;
&lt;br /&gt;
Upgrading follows the standard procedure, however, there are some specific steps that require additional attention.&lt;br /&gt;
&lt;br /&gt;
==== General ====&lt;br /&gt;
&lt;br /&gt;
# Ensure your game server is completely stopped as you cannot properly update some files while they are still in use.&lt;br /&gt;
# Replace all binaries:&lt;br /&gt;
#* Any {{tt|.so}} [[File:Linux.svg|16px]] or {{tt|.dll}} [[File:Windows.svg|16px]] files in {{tt|/amxmodx/dlls}} and {{tt|/amxmodx/modules}} folders&lt;br /&gt;
#* Any {{tt|.amxx}} files in {{tt|/amxmodx/plugins}} folder&lt;br /&gt;
# Replace languages files:&lt;br /&gt;
#* Any {{tt|.txt}} files in {{tt|/amxmodx/data/lang}} folder&lt;br /&gt;
# Replace {{tt|hamdata.ini}} in {{tt|/amxmodx/configs}} folder&lt;br /&gt;
# If you do scripting locally:&lt;br /&gt;
#* Replace all base includes and source files: any {{tt|.sma}} in {{tt|/amxmodx/scripting}} folder and {{tt|.inc}} in {{tt|/amxmodx/scripting/include}} folder&lt;br /&gt;
#* Replace the compiler and its binaries in {{tt|/amxmodx/scripting}} folder&lt;br /&gt;
#** [[File:Linux.svg|16px]] {{tt|amxxpc}} and {{tt|amxxpc32}}&lt;br /&gt;
#** [[File:Windows.svg|16px]] {{tt|amxxpc.exe}} and {{tt|amxxpc32.dll}}&lt;br /&gt;
&lt;br /&gt;
==== New files ====&lt;br /&gt;
&lt;br /&gt;
* Copy {{tt|GeoLite2-Country.mmdb}} to the {{tt|/amxmodx/data}} folder (optionally, delete the old {{tt|GeoIP.dat}} file)&lt;br /&gt;
* Copy the whole {{tt|gamedata}} directory to the {{tt|/amxmodx/data}} folder&lt;br /&gt;
&lt;br /&gt;
==== Config changes ====&lt;br /&gt;
&lt;br /&gt;
{| class=wikitable&lt;br /&gt;
! style=&amp;quot;padding: 0.4em;&amp;quot; | File&lt;br /&gt;
! style=&amp;quot;padding: 0.4em;&amp;quot; | Changes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 0.4em;&amp;quot; | {{tt|amxx.cfg|bgcolor=white}}&lt;br /&gt;
| style=&amp;quot;padding: 0.4em;&amp;quot; | {{hidden|id=amxxcfg|header=New cvars|labelpos=left|content=&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
// Server language in ISO 639-1 format&lt;br /&gt;
// Please see data/lang/languages.txt file for a list of supported languages&lt;br /&gt;
//&lt;br /&gt;
// Default value: en&lt;br /&gt;
amx_language &amp;quot;en&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// If you set this to 0, clients will not see a message about amx_langmenu when they join the server&lt;br /&gt;
//&lt;br /&gt;
// Default value: 1&lt;br /&gt;
amx_language_display_msg 1&lt;br /&gt;
&lt;br /&gt;
// Max temporary ban time (admins with ADMIN_BAN_TEMP access can't ban more than this time)&lt;br /&gt;
// time in minutes, 60 is 1 hour, 120 is 2 hours, 1440 is 1 day, and 10080 is 1 week&lt;br /&gt;
// Default value: 4320 aka 3 days&lt;br /&gt;
amx_tempban_maxtime 4320&lt;br /&gt;
&lt;br /&gt;
// Time to wait (in seconds) before displaying a message about amx_help to a client once joined the server&lt;br /&gt;
//&lt;br /&gt;
// Default value: 15&lt;br /&gt;
amx_help_display_msg_time 15&lt;br /&gt;
&lt;br /&gt;
// If you set this to 0, clients will not see a message about amx_help when they join the server&lt;br /&gt;
//&lt;br /&gt;
// Default value: 1&lt;br /&gt;
amx_help_display_msg 1&lt;br /&gt;
&lt;br /&gt;
// Amount of commands per amx_help page&lt;br /&gt;
//&lt;br /&gt;
// Default value: 10&lt;br /&gt;
amx_help_amount_per_page 10&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{alert|info|Note:|{{tt|amx_help_display_msg}} replaces the {{tt|DISPLAY_MSG}} define in {{tt|admin_help.sma}}.|opt=full-border}}&lt;br /&gt;
{{alert|info|Note:|{{tt|amx_help_amount_per_page}} replaces the {{tt|HELPAMOUNT}} define in {{tt|admin_help.sma}}.|opt=full-border}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hidden|id=doccfg|header=Documentation adjusted|labelpos=left|content=&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Slay is now in the last position.&lt;br /&gt;
&amp;quot;0&amp;quot; slap damage to the default values was wrongly left out.&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
// Slay is automaticall inserted as the last option&lt;br /&gt;
// Default values: 0 1 5&lt;br /&gt;
amx_plmenu_slapdmg 0 1 5&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Missing values:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
// Show admins activity&lt;br /&gt;
// 0 - disabled&lt;br /&gt;
// 1 - show without admin name&lt;br /&gt;
// 2 - show with name&lt;br /&gt;
// 3 - show name only to admins, hide name from normal users&lt;br /&gt;
// 4 - show name only to admins, show nothing to normal users&lt;br /&gt;
// 5 - hide name only to admins, show nothing to normal users&lt;br /&gt;
//&lt;br /&gt;
// Default value: 2&lt;br /&gt;
amx_show_activity 2&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 0.4em;&amp;quot; | {{tt|core.ini|bgcolor=white}}&lt;br /&gt;
| style=&amp;quot;padding: 0.4em;&amp;quot; | {{hidden|id=corecfg|header=One missing and one new option.|labelpos=left|content=&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
; Admin commnand flag manager&lt;br /&gt;
; 0 - enabled&lt;br /&gt;
; 1 - disabled&lt;br /&gt;
disableflagman 0&lt;br /&gt;
&lt;br /&gt;
; MySQL default timeout&lt;br /&gt;
mysql_timeout 60&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 0.4em;&amp;quot; | {{tt|sql.cfg|bgcolor=white}}&lt;br /&gt;
| style=&amp;quot;padding: 0.4em;&amp;quot; | {{hidden|id=sqlcfg|header=New cvar|labelpos=left|content=&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
amx_sql_timeout &amp;quot;60&amp;quot;&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 0.4em;&amp;quot; | {{tt|users.ini|bgcolor=white}}&lt;br /&gt;
| style=&amp;quot;padding: 0.4em;&amp;quot; | {{hidden|id=userscfg|header=New flag &amp;amp; documentation adjusted|labelpos=left|content=&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
; d - amx_ban and amx_unban commands (permanent and temporary bans)&lt;br /&gt;
; v - amx_ban and amx_unban commands (temporary bans only, about amx_unban, only self performed ban during map gonna be allowed)&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Overview for Admins ==&lt;br /&gt;
&lt;br /&gt;
=== Gamedata ===&lt;br /&gt;
&lt;br /&gt;
The AMX Mod X team has made an effort to avoid hard-coding game-specific data into AMXX core and modules. New ''gamedata'' files have been created which are located in the {{tt|amxmodx/data/gamedata/}} directory.&amp;lt;br /&amp;gt;&lt;br /&gt;
These files are now mandatory.&lt;br /&gt;
&lt;br /&gt;
Game data files shipped with AMX Mod X can and will be updated at any time, therefore it is strongly discouraged to edit them manually. &amp;lt;br 7&amp;gt;&lt;br /&gt;
To make custom gamedata changes, please use the {{tt|custom}} folder under the {{tt|gamedata}} directory. All files under this directory are parsed (in an undefined order) after the main files are loaded. They will never be overwritten.&lt;br /&gt;
&lt;br /&gt;
=== GeoIP ===&lt;br /&gt;
&lt;br /&gt;
The {{tt|GeoIP.dat}} file is now replaced by {{tt|GeoLite2-Country.mmdb}} file.&lt;br /&gt;
&lt;br /&gt;
As usual, a more detailed city version exists but is not provided in the default distribution. Plugins can require this version to operate.&lt;br /&gt;
&lt;br /&gt;
Both (Country: ~2 MB, City: ~30 MB) can be downloaded from the official page: https://dev.maxmind.com/geoip/geoip2/geolite2/ (MaxMind DB binary).&lt;br /&gt;
&lt;br /&gt;
=== Plugins ===&lt;br /&gt;
&lt;br /&gt;
Most plugins received large amounts of code improvements, modernizing and optimizing them using the latest AMXX core features.&lt;br /&gt;
This also includes a few security fixes.&lt;br /&gt;
&lt;br /&gt;
However, this does not (yet) translate into major user-facing features. We tried to improve internal tools before focusing on that.&lt;br /&gt;
&lt;br /&gt;
The features in this release are:&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''General'''}}&lt;br /&gt;
&lt;br /&gt;
* A new access level flag {{tt|v}} for temporary bans&lt;br /&gt;
* UTF-8 support in some MOTD&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Admin Commands'''}}&lt;br /&gt;
&lt;br /&gt;
* A new {{tt|amx_extendmap}} command to extend the time limit of the current map. Usage: {{tt|&amp;lt;nowiki&amp;gt;&amp;lt;time in minutes&amp;gt;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
* A new {{tt|amx_xvar_int}} and {{tt|amx_xvar_float}} command&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Admin Chat'''}}&lt;br /&gt;
&lt;br /&gt;
* Cooldown on {{tt|say_team @]}} to avoid overflow on admins&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Admin Help'''}}&lt;br /&gt;
&lt;br /&gt;
* A new {{tt|amx_searchcmd}} command to display information about a command. Usage: {{tt|&amp;lt;match&amp;gt; &amp;lt;entry no.&amp;gt; [no. of entries to display (server only)]}}&lt;br /&gt;
* The hardcoded defines are replaced with {{tt|amx_help_display_msg}}, {{tt|amx_help_display_msg_time}} and {{tt|amx_help_amount_per_page}} cvars&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''CS Misc. Stats'''}}&lt;br /&gt;
&lt;br /&gt;
* A new {{tt|/msounds}} client command to enable/disable sounds&lt;br /&gt;
* A new option to disable showing last man's health&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Players Menu'''}}&lt;br /&gt;
&lt;br /&gt;
* A new Silent Transfer option&lt;br /&gt;
* A new {{tt|amx_language_display_msg}} cvar for previously hardcoded {{tt|DISPLAY_MSG}}&lt;br /&gt;
* Slay is now the last option in the Slay/Slap Menu&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Restrict Weapons'''}}&lt;br /&gt;
&lt;br /&gt;
* The {{tt|MAPSETTINGS}} define is replaced by {{tt|amx_restrmapsettings}} cvar&lt;br /&gt;
* No more hardcoded multilingual messages&lt;br /&gt;
* Admin activity is displayed on config loading/saving&lt;br /&gt;
* Opened menu is refereshed if the command is used to save/load/set&lt;br /&gt;
* Menu/command items are now grouped per class&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Stats X'''}}&lt;br /&gt;
&lt;br /&gt;
* Some translations are now player-specific.&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Teleport Menu'''}}&lt;br /&gt;
&lt;br /&gt;
* Possibility of being stuck should be reduced.&lt;br /&gt;
&lt;br /&gt;
=== Translations ===&lt;br /&gt;
&lt;br /&gt;
Along with fixes, improvements, and completion of existing translations, two new languages are provided:&lt;br /&gt;
* Russian&lt;br /&gt;
* Chinese&lt;br /&gt;
&lt;br /&gt;
== Overview for Developers ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
&lt;br /&gt;
There are too many additions to list them here in details. For complete API changes and additions, see [[AMX_Mod_X_1.9_API_Changes]]. &amp;lt;br /&amp;gt;&lt;br /&gt;
It is strongly recommended to check out the changes, a lot of information is contained there.&lt;br /&gt;
&lt;br /&gt;
Essentially:&lt;br /&gt;
* Documentation has been updated in many ways.&lt;br /&gt;
* Compiler got a bunch of fixes and minor improvements/features.&lt;br /&gt;
* The API has been updated with various fixes and improvements.&lt;br /&gt;
* New module&lt;br /&gt;
* New core APIs&lt;br /&gt;
* Existing core APIs additions&lt;br /&gt;
* Existing module APIs additions&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&lt;br /&gt;
=== Internal ===&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Compilation'''}}&lt;br /&gt;
* Ported buildscripts to new AMBuild2 platform, https://github.com/alliedmodders/ambuild&lt;br /&gt;
* Removed MakeFile ({{pr|amxx|262}})&lt;br /&gt;
* Fixed GCC 4.8, Clang 3.9+ compilation ({{amb|273061}}, {{pr|amxx|458}})&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Library'''}}&lt;br /&gt;
* Now using new AlliedModders Template Library (AMTL) in many places, https://github.com/alliedmodders/amtl  ({{pr|amxx|138}}, {{pr|amxx|260}}, {{pr|amxx|270}}, {{pr|amxx|296}}, {{pr|amxx|422}}, {{pr|amxx|436}})&lt;br /&gt;
* Added basic ReHLDS and ReGameDLL support ({{pr|amxx|417}}, {{pr|amxx|423}}, {{pr|amxx|425}}, {{pr|amxx|427}}, {{pr|amxx|446}}, {{pr|amxx|450}}, {{pr|amxx|483}})&lt;br /&gt;
* Removed pre-compiled zlib from the tree ({{pr|amxx|117}}, {{pr|amxx|118}})&lt;br /&gt;
* Unified zlib linkage by compiling it as a static library and linking it to concerned projects ({{pr|amxx|195}})&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Others'''}}&lt;br /&gt;
* Added license files for GPL2+/GPL3+, updated headers and {{TT|amxx gpl}} command ({{pr|amxx|102}}, {{pr|amxx|103}})&lt;br /&gt;
* Deduplicated a number of files used by modules by moving them to the public directory ({{pr|amxx|112}})&lt;br /&gt;
* Enabled C++11 support ({{pr|amxx|162}})&lt;br /&gt;
* Updated versioning system and added missing module RC file ({{pr|amxx|165}})&lt;br /&gt;
* Improved SELinux compatibility ({{pr|amxx|328}})&lt;br /&gt;
* Updated Visual Studio projects files ({{pr|amxx|109}}, {{pr|amxx|247}})&lt;br /&gt;
* Added Visual Studio 2015+ support ({{pr|amxx|179}}, {{pr|amxx|333}}, {{pr|amxx|397}})&lt;br /&gt;
&lt;br /&gt;
=== Core ===&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Config'''}}&lt;br /&gt;
* Implemented a game config parser ({{pr|amxx|254}}, {{pr|amxx|258}}, {{pr|amxx|280}}, {{pr|amxx|282}}, {{pr|amxx|336}})&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Command'''}}&lt;br /&gt;
* Made registered server commands case-insensitive ({{bz|5625}})&lt;br /&gt;
* Extended {{tt|amxx list}} command to search with criteria ({{pr|amxx|377}})&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Menu'''}}&lt;br /&gt;
* Updated mods list supporting colored menus: DMC, TFC and Valve ({{pr|amxx|143}})&lt;br /&gt;
* Fixed unexpected behaviors when a game menu is overlapped with a custom one ({{bz|3199}})&lt;br /&gt;
* Fixed a crash with overlapping newmenu ({{pr|amxx|462}})&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Module API'''}}&lt;br /&gt;
* Fixed {{tt|OnPluginsUnloaded}} not being called for reloadable modules ({{pr|amxx|485}})&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Multilingual'''}}&lt;br /&gt;
* Improved method to check whether a multilingual file has been processed ({{pr|amxx|213}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Fixed dictionary text files parser failing on BOM marking ({{bz|5858}})&lt;br /&gt;
* Fixed missing status reset on successful language key retrieval ({{bz|5994}})&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Native'''}}&lt;br /&gt;
* Increased {{tt|get_amxstring}} buffer size up to 16k ({{bz|5901}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Fixed crash when dynamic native is executed with the max number of params ({{pr|amxx|291}})&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Others'''}}&lt;br /&gt;
* Added plugin version to debug trace information ({{bz|3649}})&lt;br /&gt;
* Removed KTrie dependency to Hash map ({{pr|amxx|8}}, {{pr|amxx|406}})&lt;br /&gt;
* Removed AMX Mod compatibility ({{pr|amxx|31}}, {{pr|amxx|461}})&lt;br /&gt;
* Removed useless natives: hcsardhnexsnu, is_user_hacking, is_rukia_a_hag, and amxx_setpl_curweap ({{pr|amxx|461}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Fixed incorrect message error on plugin which uses a deprecated file format ({{pr|amxx|275}})&lt;br /&gt;
* Fixed spectator team index not being set in specific situations (Counter-strike only) ({{pr|amxx|15}})&lt;br /&gt;
* Fixed an unicode issue with {{tt|amx_SetStringOld}} ({{pr|amxx|22}}, {{pr|amxx|23}})&lt;br /&gt;
* Fixed log not written earlier at the first server start ({{pr|amxx|265}})&lt;br /&gt;
* Fixed a memory leak when registering a forward fails due to missing callback ({{pr|amxx|465}})&lt;br /&gt;
&lt;br /&gt;
=== User ===&lt;br /&gt;
&lt;br /&gt;
==== Translation ====&lt;br /&gt;
&lt;br /&gt;
* Added Chinese language ({{pr|amxx|75}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Updated Macedonian &amp;amp; Bulgarian translations ({{pr|amxx|477}})&lt;br /&gt;
* Updated Hungarian translations ({{pr|amxx|474}}, {{pr|amxx|494}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Fixed incorrect keys in several multilingual files ({{pr|amxx|27}})&lt;br /&gt;
* Fixed missing translations for the following languages: de, cz, ro and sr ({{pr|amxx|27}})&lt;br /&gt;
* Fixed various translations ({{pr|amxx|67}})&lt;br /&gt;
&lt;br /&gt;
==== Plugin ====&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''General'''}}&lt;br /&gt;
&lt;br /&gt;
* Added a new access level flag {{tt|v}} for temporary bans ({{bz|3218}}, {{pr|amxx|440}})&lt;br /&gt;
* Added UTF-8 support in some MOTD ({{bz|5825}}, {{pr|amxx|135}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Removed AMX Mod compatibility ({{pr|amxx|28}})&lt;br /&gt;
* Removed leet speak translation ({{pr|amxx|83}})&lt;br /&gt;
* Removed some {{tt|client_cmd}} usage ({{pr|amxx|88}})&lt;br /&gt;
* Applied general optimizations ({{bz|5822}}, {{bz|5833}}, {{bz|5818}}, {{pr|amxx|9}}, {{pr|amxx|17}}, {{pr|amxx|78}}, {{pr|amxx|82}}, {{pr|amxx|88}}, {{pr|amxx|89}}, {{pr|amxx|90}}, {{pr|amxx|136}}, {{pr|amxx|139}}, {{pr|amxx|141}}, {{pr|amxx|190}}, {{pr|amxx|194}}, {{pr|amxx|214}}, {{pr|amxx|216}}, {{pr|amxx|227}}, {{pr|amxx|241}}, {{pr|amxx|256}}, {{pr|amxx|362}}, {{pr|amxx|424}})&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Admin Base'''}}&lt;br /&gt;
&lt;br /&gt;
* Directly kick players rather than use a loopback command ({{bz|5946}})&lt;br /&gt;
* Assigned {{tt|FCVAR_PROTECTED}} directly  in {{tt|register_cvar}} instead of after startup ({{pr|amxx|87}})&lt;br /&gt;
* Replaced {{tt|console_print}} with {{tt|engclient_print}} to support connecting players ({{pr|amxx|251}}, {{bz|6372}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Fixed an issue when not including a port when an admin is added by IP address ({{bz|5978}})&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Admin Chat'''}}&lt;br /&gt;
&lt;br /&gt;
* Implemented cooldown on {{tt|say_team @]}} to prevent admin's client get overflowed if executed a couple of times ({{bz|5815}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Fixed broken admin chat access consistency ({{bz|5822}})&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Admin Commands'''}}&lt;br /&gt;
&lt;br /&gt;
* Added {{tt|amx_extendmap}} command ({{bz|3068}})&lt;br /&gt;
* Added {{tt|amx_xvar}} command ({{bz|5896}})&lt;br /&gt;
* Added check for empty string in {{tt|amx_chat}} command ({{bz|6017}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Trimmed target in {{tt|amx_ban}} to prevent bypassing checks ({{pr|amxx|86}})&lt;br /&gt;
* Removed slowhack in {{tt|amx_nick}} command ({{bz|5832}})&lt;br /&gt;
* Sanitized {{tt|servercfgfile}} and {{tt|lservercfgfile}} values ({{bz|6578}}&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Fixed {{amx_slap}} unexpected behavior using large negative damage ({{bz|4975}})&lt;br /&gt;
* Fixed a permission scalability bug in the following commands: ({{bz|6578}}, {{pr|amxx|441}})&lt;br /&gt;
** {{tt|amx_addban}}&lt;br /&gt;
** {{tt|amx_exec}}&lt;br /&gt;
** {{tt|amx_cvar}}&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Admin Help'''}}&lt;br /&gt;
&lt;br /&gt;
* Added {{tt|amx_searchcmd}} command ({{pr|amxx|415}}, {{pr|amxx|456}})&lt;br /&gt;
* Replaced hardcoded defines with {{tt|amx_help_display_msg}}, {{tt|amx_help_display_msg_time}} and {{tt|amx_help_amount_per_page}} cvars ({{pr|amxx|84}}, {{pr|amxx|415}})&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''CS Misc. Stats'''}}&lt;br /&gt;
&lt;br /&gt;
* Added {{tt|/msounds}} client command to enable/disable sounds ({{bz|5846}})&lt;br /&gt;
* Added an option to disable showing last man's health ({{bz|5847}}, {{pr|amxx|122}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Fixed missing stats sounds, sounds precaching and few bugs ({{bz|5810}})&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Map Menu Plugin'''}}&lt;br /&gt;
&lt;br /&gt;
* Fixed possible buffer overflows ({{pr|amxx|91}})&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Multi-Lingula System'''}}&lt;br /&gt;
&lt;br /&gt;
* Moved {{tt|amx_language}} cvar to core ({{pr|amxx|82}})&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''NextMap'''}}&lt;br /&gt;
&lt;br /&gt;
* Fixed last map not properly saving resulting mapcycle reset at mapchange ({{bz|5817}})&lt;br /&gt;
* Fixed an in-game issue where {{tt|mp_chattime}} cvar doesn't exist ({{bz|5922}})&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Nextmap Chooser'''}}&lt;br /&gt;
&lt;br /&gt;
* Fixed possible buffer overflows ({{pr|amxx|91}})&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Players Menu'''}}&lt;br /&gt;
&lt;br /&gt;
* Added Silent Transfer Option ({{pr|amxx|113}}, {{pr|amxx|161}})&lt;br /&gt;
* Added {{tt|amx_language_display_msg}} cvar for previously hardcoded {{tt|DISPLAY_MSG}} ({{pr|amxx|82}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Moved slay as last option instead of first in Slay/Slap Menu ({{bz|5861}})&lt;br /&gt;
* Removed vault usage, {{tt|amx_setlang}} and server language from the menu in favor of {{tt|amx_language}} ({{pr|amxx|82}})&lt;br /&gt;
* Used server language as fallback if client's &amp;quot;lang&amp;quot; key is not defined ({{pr|amxx|106}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Fixed player transfer issues ({{bz|5850}})&lt;br /&gt;
* Fixed incorrect language key ({{pr|amxx|32}})&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Plugin Menu'''}}&lt;br /&gt;
&lt;br /&gt;
* Fixed unreachable code warning ({{pr|amxx|131}})&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Restrict Weapons'''}}&lt;br /&gt;
&lt;br /&gt;
* Overhauled the plugin ({{pr|amxx|347}})&lt;br /&gt;
** Applied general optimization and small QoL changes&lt;br /&gt;
** Moved {{tt|MAPSETTINGS}} define to cvar {{tt|amx_restrmapsettings}}&lt;br /&gt;
** Made hardcoded messages multilingual&lt;br /&gt;
** Displayed admin activity on config loading/saving&lt;br /&gt;
** Refreshed opened menus if the command is used to save/load/set&lt;br /&gt;
** Grouped visually menu/command items per class&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Stats X'''}}&lt;br /&gt;
&lt;br /&gt;
* Moved formatting from {{tt|LANG_SERVER}} to player-specific translations where possible ({{pr|amxx|9}})&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''TimeLeft'''}}&lt;br /&gt;
&lt;br /&gt;
* Fixed possible out of bound error ({{bz|5818}})&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Teleport Menu'''}}&lt;br /&gt;
&lt;br /&gt;
* Improved precision to reduce the possibility of being stuck after teleportation ({{pr|amxx|17}})&lt;br /&gt;
&lt;br /&gt;
=== Developer ===&lt;br /&gt;
&lt;br /&gt;
==== General ====&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''New Modules'''}}&lt;br /&gt;
&lt;br /&gt;
* Introduced a JSON module ({{pr|amxx|379}})&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Engine'''}}&lt;br /&gt;
* Fixed some natives relying on a known engine bug related to last player's edict being invalid ({{bz|6429}}, {{pr|297}}, {{pr|299}}, {{pr|306}})&lt;br /&gt;
:{|&lt;br /&gt;
| {{tt|emit_sound}}&lt;br /&gt;
| Last player wasn't hearing the sound.&lt;br /&gt;
|-&lt;br /&gt;
| {{tt|e/message_begin}}, {{tt|dod_weaponlist}}&lt;br /&gt;
| Was leading to a crash because engine doesn't like {{tt|MSG_ONE_*}} with null entity.&lt;br /&gt;
|-&lt;br /&gt;
| {{tt|TFC_[Clear/Set]Model}}&lt;br /&gt;
| Was leading to a crash because of null edict.&lt;br /&gt;
|-&lt;br /&gt;
| {{tt|set_tr/2}}&lt;br /&gt;
| Was not working when used with {{tt|TR_pHit}}&lt;br /&gt;
|-&lt;br /&gt;
| {{tt|pev}}&lt;br /&gt;
| Was returning 0 used with {{tt|pev_edict}}&lt;br /&gt;
|-&lt;br /&gt;
| {{tt|pev_valid}}&lt;br /&gt;
| Was returning 0.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Miscellaneous'''}}&lt;br /&gt;
&lt;br /&gt;
* Added {{tt|DMG_GRENADE}} constant (CS Only) ({{bz|6030}})&lt;br /&gt;
* Added missing {{tt|SVC_}} messages ({{pr|amxx|223}})&lt;br /&gt;
** {{tt|SVC_RESOURCELOCATION}}&lt;br /&gt;
** {{tt|SVC_SENDCVARVALUE}}&lt;br /&gt;
** {{tt|SVC_SENDCVARVALUE2}}&lt;br /&gt;
* Added new xs stocks ({{pr|amxx|426}})&lt;br /&gt;
** {{tt|xs_vec_len_2d}}&lt;br /&gt;
** {{tt|xs_vec_distance}}&lt;br /&gt;
** {{tt|xs_vec_distance_2d}}&lt;br /&gt;
** {{tt|xs_vec_add_scaled}}&lt;br /&gt;
** {{tt|xs_vec_sub_scaled}}&lt;br /&gt;
* Added {{tt|STATSX_*}}, {{tt|DODX_*}} and {{tt|MAX_BODYHITS}} constants for client statistics ({{pr|amxx|509}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Allowed {{tt|arrayset}} to accept any type ({{pr|amxx|516}})&lt;br /&gt;
* Allowed {{tt|ExecuteForward}} without need to create variable for returned value ({{pr|amxx|382}})&lt;br /&gt;
* Enforced {{tt|any:}} tag in several natives header for convenience ({{pr|amxx|166}}, {{pr|amxx|222}},  {{pr|amxx|499}})&lt;br /&gt;
* Moved string constants and stocks in their own {{tt|string_const.inc}} and {{tt|string_stocks.inc}} includes {{pr|amxx|407}}&lt;br /&gt;
&lt;br /&gt;
==== Core ====&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''New APIs'''}}&lt;br /&gt;
* Introduced Automatic Config File API ({{pr|amxx|266}}, {{pr|amxx|289}}, {{pr|amxx|496}})&lt;br /&gt;
* Introduced DataPacks API ({{bz|5885}}, {{pr|amxx|231}}, {{pr|amxx|261}}, {{pr|419}})&lt;br /&gt;
* Introduced Game Config Parser API ({{pr|amxx|254}})&lt;br /&gt;
* Introduced Hasher API ({{pr|amxx|206}}, {{pr|amxx|384}})&lt;br /&gt;
* Introduced Stack structures API ({{pr|amxx|94}})&lt;br /&gt;
* Introduced TextParser API ({{pr|amxx|101}}, {{pr|amxx|272}}, {{pr|amxx|344}}, {{bz|6228}}, {{bz|6476}})&lt;br /&gt;
* Introduced Trie Iterator API ({{pr|amxx|413}})&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Cellarray'''}}&lt;br /&gt;
* Added {{tt|ArraySortEx}}/{{tt|SortADTArray}} natives and new {{tt|Sort_Random}} sort method ({{bz|5494}}, {{pr|amxx|279}})&lt;br /&gt;
* Added the following new CellArray natives: {{tt|ArrayClone}}, {{tt|ArrayResize}}, {{tt|ArrayFindString}} and {{tt|ArrayFindValue}} ({{bz|6104}}, {{pr|107}}, {{pr|amxx|408}})&lt;br /&gt;
* Added {{tt|size}} parameter to {{tt|ArrayGetArray}}, {{tt|ArraySetArray}} and {{tt|ArrayPushArray}} to control the number of elements to use ({{pr|76}}, {{pr|111}})&lt;br /&gt;
* Added {{tt|block}} parameter to {{tt|ArrayGetCell}} and {{tt|ArraySetCell}} to specify which block ({{pr|amxx|76}}, {{pr|amxx|111}})&lt;br /&gt;
* Added {{tt|achar}} parameter to {{tt|ArrayGetCell}} and {{tt|ArraySetCell}} value as a byte ({{pr|amxx|76}}, {{pr|amxx|111}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Fixed an overflow issue with {{tt|ArrayInsertBefore}} and {{tt|ArrayInsertAfter}} ({{bz|4330}})&lt;br /&gt;
* Fixed {{tt|ArrayDestroy}} erroring on invalid handle ({{pr|amxx|210}})&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''CellTrie'''}}&lt;br /&gt;
* Added {{tt|TrieGetSize}} and {{tt|TrieSnapshot*}} natives ({{pr|amxx|8}})&lt;br /&gt;
* Added new {{tt|replace}} parameters for {{tt|TrieSet*}} natives to make the operation fail if key already set ({{pr|amxx|8}})&lt;br /&gt;
* Added new {{tt|size}} parameter for {{tt|TrieGetString}} and {{tt|TrieGetArray}} to return the number of bytes written in the buffer ({{pr|amxx|8}})&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Client'''}}&lt;br /&gt;
* Added {{tt|client_disconnected}} forward to fix player not being internally disconnected in some situation ({{pr|amxx|264}}, {{pr|amxx|304}}, {{pr|amxx|334}})&lt;br /&gt;
* Added {{tt|client_remove}} forward (post version of {{tt|client_disconnected}} {{pr|amxx|414}}&lt;br /&gt;
* Added {{tt|client_connectex}} forward to allow to reject player’s attempt to join ({{pr|amxx|322}})&lt;br /&gt;
* Added {{tt|flag}} parameter to {{tt|user_silentkill}} ({{pr|amxx|323}})&lt;br /&gt;
* Added {{tt|find_player_ex}} native, a wrapper of {{tt|find_player}} using flags as strings ({{pr|amxx|389}})&lt;br /&gt;
* Added {{tt|get_players_ex}} stock, a wrapper of {{tt|get_players}} using flags as strings ({{pr|amxx|389}})&lt;br /&gt;
* Extended {{tt|client_authorized}} to pass steam ID ({{pr|amxx|322}})&lt;br /&gt;
* Set {{tt|set_user_rendering}} default color/amount to 0 to follow game behavior ({{bz|5772}})&lt;br /&gt;
* Allowed the following natives to be used on connecting players: {{tt|find_player}}, {{tt|get_players}} and {{tt|engclient_print}} (console only) ({{bz|6229}}, {{pr|amxx|126}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Fixed {{tt|user_slap}} unexpected behavior when using large negative damage ({{bz|4975}})&lt;br /&gt;
* Fixed missing new line on client console message which is not truncated server-side if its length exceeds buffer size ({{bz|3140}})&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Cvar/Command'''}}&lt;br /&gt;
* Introduced several natives for cvars management ({{pr|amxx|185}},  {{pr|amxx|202}}, {{pr|amxx|203}},  {{pr|amxx|211}},  {{pr|amxx|230}}, {{pr|amxx|318}}, {{pr|amxx|337}}, {{pr|amxx|453}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Added {{tt|amxclient_cmd}} native ({{bz|5887}}, {{pr|amxx|438}})&lt;br /&gt;
* Added {{tt|read_argv_int}} and {{tt|read_argv_float}} to return the value directly as integer or float ({{pr|amxx|366}}, {{pr|amxx|383}})&lt;br /&gt;
* Added a param to {{tt|register_*cmd}} and {{tt|get_*cmd}} to specify {{tt|info}} is a multilingual key in order to encourage command translation ({{pr|amxx|349}}, {{pr|amxx|434}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Fixed a {{tt|engclient_cmd}} buffer issue ({{pr|amxx|438}})&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Event'''}}&lt;br /&gt;
* Added new {{tt|register_event}} flags to filter humans and bots ({{bz|5768}})&lt;br /&gt;
* Added {{tt|register_event_ex}} native, a wrapper of {{tt|register_event}} using flags as strings ({{pr|amxx|389}})&lt;br /&gt;
* Added {{tt|enable/disable_event}} natives ({{bz|6360}}, {{pr|amxx|267}})&lt;br /&gt;
* Added {{tt|enable/disable_logevent}} natives ({{pr|amxx|326}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Fixed reentrancy issue when a generated message is sent during {{tt|register_event}} forward ({{bz|3664}})&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''File'''}}&lt;br /&gt;
* Added support for Valve FS to natives that use file handles ({{pr|amxx|217}}, {{pr|amxx|235}}, {{pr|amxx|467}})&lt;br /&gt;
* Added {{tt|SetFilePermissions}} native&lt;br /&gt;
* Added {{tt|FileReadInt8}}, {{tt|FileReadUint8}}, {{tt|FileReadInt16}}, {{tt|FileReadUint16}} and {{tt|FileReadInt32}} natives&lt;br /&gt;
* Added {{tt|FileWriteInt8}}, {{tt|FileWriteInt16}} and {{tt|FileWriteInt32}} natives&lt;br /&gt;
* Added {{tt|GetFileTime}} native returning a file timestamp as a unix timestamp ({{bz|4543}})&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Menu'''}}&lt;br /&gt;
* Added menu timeout functionality to Newmenu API ({{pr|amxx|21}}) TODO: link to script changes?&lt;br /&gt;
* Added {{tt|MEXIT_FORCE}} to force a proper exit button on unpaginated menus ({{pr|amxx|20}})&lt;br /&gt;
* Added {{tt|MPROP_SHOWPAGE}} to set whether or not to show the page number in menu title ({{pr|amxx|473}})&lt;br /&gt;
* Added {{tt| menu_addblank2}} and {{tt|menu_addtext2}} to fix unexpected behavior with the original ones when {{tt|slot}} param is set to 1 ({{bz|3096}})&lt;br /&gt;
* Added menu pagination callback ({{pr|amxx|420}})&lt;br /&gt;
* Add default values for {{tt|menu_item_getinfo}}'s arguments ({{pr|amxx|511}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Allowed {{tt|show_menu}} native to send empty text + added {{tt|reset_menu}} stock ({{bz|6244}}, {{pr|amxx|150}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Fixed recursion issues with {{tt|show_menu}} and newmenus ({{pr|amxx|140}}, {{pr|amxx|335}})&lt;br /&gt;
* Fixed a potential underflow bug which can occur when a non-paginated menu has no items in it ({{pr|amxx|20}})&lt;br /&gt;
* Fixed a potential menu handle leak when {{tt|show_menu}} is used after a newmenu was opened ({{pr|amxx|21}})&lt;br /&gt;
* Fixed {{tt|MPROP_NOCOLORS}} menu property not working ({{pr|amxx|283}})&lt;br /&gt;
* Fixed missing format param on error in {{tt|next_hudchannel}} native ({{pr|amxx|391}})&lt;br /&gt;
* Fixed a menu recursion issue ({{pr|amxx|471}})&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''Message'''}}&lt;br /&gt;
* Added {{tt|e/write_/coord/angle/_f}} and {{tt|e/message_begin_f}} natives ({{bz|5829}})&lt;br /&gt;
* Added {{tt|client_print_color}} native (Counter-Strike only) ({{bz|5823}}, {{pr|amxx|338}}, {{pr|amxx|504}})&lt;br /&gt;
* Added {{tt|set/show_dhudmessage}} which uses a different kind of message HUD (hint) ({{bz|5979}})&lt;br /&gt;
* Added {{tt|client_printex}} stock ({{bz|5828}}, {{pr|amxx|10}})&lt;br /&gt;
* Added {{tt|MSG_INIT}} support in {{tt|message_begin}} native ({{bz|6254}}, {{pr|amxx|151}})&lt;br /&gt;
* Added {{tt|elog_message}} native ({{pr|amxx|451}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Set {{tt|set_hudmessage}} default channel to -1 to reflect auto-channeling support ({{bz|5771}})&lt;br /&gt;
&lt;br /&gt;
{{color|dimgrey|'''String'''}}&lt;br /&gt;
* Added {{tt|strtol}} native ({{bz|3233}})&lt;br /&gt;
* Added {{tt|strtof}} native ({{bz|5909}})&lt;br /&gt;
* Added {{tt|strtok2}} which fixes a trim issue with {{tt|strtok}} ({{bz|3993}})&lt;br /&gt;
* Added new string-related stocks ({{bz|6110}}, {{pr|amxx|327}})&lt;br /&gt;
* Added new string-related natives ({{bz|6110}})&lt;br /&gt;
* Added {{tt|fmt}} native to format and return a string inline ({{pr|amxx|350}})&lt;br /&gt;
* Added support for binary format {{tt|%b}} ({{bz|6110}})&lt;br /&gt;
* Added special format specifiers {{tt|%n}} and {{tt|%N}} ({{pr|amxx|93}})&lt;br /&gt;
* Added support for {{tt|%l}} format specifier ({{bz|6361}}, {{pr|amxx|229}}, {{pr|amxx|313}}, {{pr|amxx|320}}, {{pr|amxx|331}}, {{pr|amxx|343}})&lt;br /&gt;
* Added {{tt|SetGlobalTransTarget}} to globally set the player’s language, for use with {{tt|%l}} format specifier ({{pr|amxx|229}})&lt;br /&gt;
* Added text formatting ability to {{tt|set_fail_state}} ({{bz|5800}})&lt;br /&gt;
* Added some UTF-8 compatible natives ({{pr|amxx|407}})&lt;br /&gt;
** {{tt|mb_strotolower}}&lt;br /&gt;
** {{tt|mb_strtoupper}}&lt;br /&gt;
** {{tt|mb_ucfirst}}&lt;br /&gt;
** {{tt|mb_strtotitle }}&lt;br /&gt;
** {{tt|is_string_category}}&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Made formatting-capable function UTF-8 safe (including precision with %s e.g. %.12s) ({{bz|6110}})&lt;br /&gt;
* Made a bunch of stocks/natives UTF-8 safe ({{bz|6110}}, {{pr|amxx|159}})&lt;br /&gt;
* Improved UTF-8 support in some natives ({{pr|amxx|407}}, {{pr|amxx|459}})&lt;br /&gt;
** {{tt|containi}}&lt;br /&gt;
** {{tt|strfind}} (with ignorecase set)&lt;br /&gt;
** {{tt|strcmp}} (with ignorecase set)&lt;br /&gt;
** {{tt|strncmp}} (with ignorecase set)&lt;br /&gt;
** {{tt|equali}}&lt;br /&gt;
** {{tt|replace_string}} (with ignorecase set)&lt;br /&gt;
** {{tt|replace_stringex}} (with ignorecase set)&lt;br /&gt;
** {{tt|get_players}} (with name and ignorecase flags set)&lt;br /&gt;
** {{tt|find_player}} (with name and ignorecase flags set)&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Fixed UTF-8 character parsing due to improper casting ({{pr|amxx|401}})&lt;br /&gt;
* Fixed {{tt|strncmp}} case sensitivity ({{pr|amxx|314}})&lt;br /&gt;
* Fixed a {{tt|floatround}} overflow on large numbers resulting in a negative number when optimization is enabled ({{pr|amxx|376}})&lt;br /&gt;
&lt;br /&gt;
{{color|brown|'''Others'''}}&lt;br /&gt;
&lt;br /&gt;
* Added {{tt|Get/SetModelCollisionBox}} and {{tt|Get/Set/ModelBoundingBox}} ({{bz|3527}})&lt;br /&gt;
* Added {{tt|has_map_ent_class}} native ({{bz|5814}})&lt;br /&gt;
* Added {{tt|engine_changelevel}} ({{pr|amxx|104}}, {{pr|amxx|184}}, {{pr|amxx|503}})&lt;br /&gt;
* Added {{tt|FP_VAL_BYREF}} to pass values by reference in forwards ({{pr|amxx|369}})&lt;br /&gt;
* Added {{tt|RequestFrame}} native ({{pr|amxx|412}})&lt;br /&gt;
* Added {{tt|set_task_ex}} stock, a wrapper of {{tt|set_task}} using flags as strings ({{pr|amxx|389}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Hidden blank line in abort native with {{tt|AMX_ERR_NONE}} ({{bz|6233}}, {{pr|amxx|125}})&lt;br /&gt;
* Improved {{tt|power}} native on large number ({{pr|amxx|385}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Fixed definite time drift on repeating tasks ({{bz|3302}})&lt;br /&gt;
* Fixed a potential issue in {{tt|get_plugin}} ({{pr|amxx|277}})&lt;br /&gt;
* Fixed a crash when a dynamic native is executed with the max number of params ({{pr|amxx|291}})&lt;br /&gt;
&lt;br /&gt;
=== Compiler ===&lt;br /&gt;
&lt;br /&gt;
* Added support for Emscripten to the compiler ({{pr|amxx|115}})&lt;br /&gt;
* Added the following globals ({{pr|amxx|116}})&lt;br /&gt;
** {{TT|__BINARY_PATH__}}&lt;br /&gt;
** {{TT|__BINARY_FILE__}}&lt;br /&gt;
** {{TT|__LINE__}}&lt;br /&gt;
* Added {{TT|&amp;lt;nowiki&amp;gt;#pragma deprecated&amp;lt;/nowiki&amp;gt;}} ({{pr|amxx|116}}, {{pr|amxx|307}})&lt;br /&gt;
* Added a flag {{TT|-E}} to consider all warnings as errors ({{pr|amxx|137}})&lt;br /&gt;
* Added string literal concatenation and stringizing operator ({{pr|amxx|173}})&lt;br /&gt;
* Added ability to directly reference another address in a default argument (for arrays only) ({{pr|amxx|248}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Removed AMX Mod compatibility ({{pr|amxx|31}})&lt;br /&gt;
* Increased variable and functions maximum name length from {{tt|31}} to {{tt|63}} characters ({{bz|5924}})&lt;br /&gt;
* Increased input line length from {{tt|511}} to {{tt|4095}} characters ({{pr|amxx|116}})&lt;br /&gt;
* Ignored {{TT|&amp;lt;nowiki&amp;gt;#pragma tabsize&amp;lt;/nowiki&amp;gt;}} with non-positive argument ({{pr|amxx|116}})&lt;br /&gt;
* Improved {{TT|sizeof}} return on array without specifying the dimensions ({{pr|amxx|116}}, {{pr|amxx|158}})&lt;br /&gt;
* Improved the reported line number accuracy on warning 203/4 (symbol never used) ({{pr|amxx|116}})&lt;br /&gt;
* Used in-memory buffers for reading files, and handling newline better ({{pr|amxx|116}})&lt;br /&gt;
* Used hash table for global name lookups ({{pr|amxx|116}})&lt;br /&gt;
* Disabled the estimated usage calculation because it doesn’t work well and is not that useful ({{pr|amxx|137}})&lt;br /&gt;
* Removed scpack ({{pr|amxx|221}}, {{pr|amxx|226}})&lt;br /&gt;
* Prevented declaring arrays that the compiler is too buggy to handle ({{pr|amxx|248}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Fixed returning strings from variadic functions ({{pr|amxx|121}}, {{pr|amxx|399}})&lt;br /&gt;
* Fixed issue with multidimensional array variable release ({{pr|amxx|116}})&lt;br /&gt;
* Fixed memory corruption when parsing natives ({{pr|amxx|116}})&lt;br /&gt;
* Fixed improper handling of constant chained relational operators, i.e: {{TT|&amp;lt;nowiki&amp;gt;0 &amp;lt; 1 &amp;lt;= 2&amp;lt;/nowiki&amp;gt;}} ({{pr|amxx|116}})&lt;br /&gt;
* Fixed bogus assert about name lengths ({{pr|amxx|116}})&lt;br /&gt;
* Fixed asserting when returning a string literal ({{pr|amxx|116}})&lt;br /&gt;
* Fixed return omission with else-after-return ({{pr|amxx|116}})&lt;br /&gt;
* Fixed crash when using {{TT|tagof(tagname:)}} ({{pr|amxx|116}})&lt;br /&gt;
* Fixed the {{TT|@}} character not being allowed in macro definitions ({{pr|amxx|116}})&lt;br /&gt;
* Fixed {{TT|&amp;lt;nowiki&amp;gt;#elseif&amp;lt;/nowiki&amp;gt;}} handling not working as expected ({{pr|amxx|116}})&lt;br /&gt;
* Fixed {{TT|enum}} field size was not taken into account when implicitly passed to a function ({{pr|amxx|116}})&lt;br /&gt;
* Fixed trailing commas in array literals changing the result of {{TT|sizeof}} ({{pr|amxx|163}})&lt;br /&gt;
* Fixed regression with member tag of {{TT|enum}} is not being checked on assignment ({{pr|amxx|164}})&lt;br /&gt;
* Fixed {{TT|tagof}} operator used as a default value for function arguments ({{pr|amxx|191}})&lt;br /&gt;
* Fixed issue where native functions returning an array would not compile ({{pr|amxx|351}})&lt;br /&gt;
* Fixed compilation error for GCC 6 ({{pr|amxx|372}})&lt;br /&gt;
* Fixed compilation for Clang 3.5+ ({{pr|amxx|177}}, {{pr|amxx|361}})&lt;br /&gt;
* Fixed inc/dec operators not returning an iEXPRESSION ({{pr|amxx|429}})&lt;br /&gt;
&lt;br /&gt;
=== Modules ===&lt;br /&gt;
&lt;br /&gt;
==== CStrike ====&lt;br /&gt;
&lt;br /&gt;
* Added {{tt|CS_OnBuy}} forward, called right before an item is received ({{pr|amxx|25}}, {{pr|amxx|68}}, {{pr|amxx|124}}, {{pr|amxx|183}},  {{pr|amxx|263}}, {{pr|amxx|315}}, {{pr|amxx|340}}, {{pr|amxx|334}})&lt;br /&gt;
* Added {{tt|CS_OnBuyAttempt}} forward, called right after a command is issued ({{pr|amxx|68}}, {{pr|amxx|263}}, {{pr|amxx|334}})&lt;br /&gt;
* Added {{tt|cs_create_entity}} native ({{pr|amxx|189}}, {{pr|amxx|193}})&lt;br /&gt;
* Added {{tt|cs_find_ent_by_class}} native ({{pr|amxx|189}}, {{pr|amxx|193}})&lt;br /&gt;
* Added {{tt|cs_find_ent_by_owner}} ({{pr|amxx|278}})&lt;br /&gt;
* Added {{tt|cs_set_ent_class native}} ({{pr|amxx|332}})&lt;br /&gt;
* Added {{tt|cs_get_user_weapon_entity}} and {{tt|cs_get_user_weapon}} natives ({{pr|amxx|330}}, {{pr|amxx|353}})&lt;br /&gt;
* Added {{tt|cs_get_weapon_class}} and {{tt|cs_is_valid_itemid}} stocks for convenience ({{pr|amxx|278}})&lt;br /&gt;
* Added {{tt|cs_get_item_id}} native to get a {{tt|CSI_}} value from a given alias, {{tt|weapon_}} or {{tt|item_}}  ({{pr|amxx|278}}, {{pr|amxx|342}})&lt;br /&gt;
* Added {{tt|cs_get_translated_item_alias}} native to get an item name (classname) from a given alias ({{pr|amxx|278}}, {{pr|amxx|356}})&lt;br /&gt;
* Added {{tt|cs_get_item_alias}} ({{pr|amxx|342}})&lt;br /&gt;
* Added {{tt|cs_get_weapon_info}} native which gives various information about a weapon (only) ({{pr|amxx|278}}, {{pr|amxx|356}})&lt;br /&gt;
* Added a param to {{tt|cs_set_user_deaths}} native to choose whether the scoreboard should be updated ({{pr|amxx|255}})&lt;br /&gt;
* Added support for {{tt|monster_scientist}} entity (alias of {{tt|hostage_entity}}) to hostage natives  ({{pr|amxx|255}})&lt;br /&gt;
* Added a {{tt|count}} param to {{tt|cs_get/set_armoury_type}} to get/set the number of weapons inside an armoury ({{pr|amxx|255}})&lt;br /&gt;
* Added a {{tt|update_index}} param in {{tt|cs_set_user_model}} to choose whether the model index should be updated ({{pr|amxx|255}}, {{pr|amxx|300}}, {{pr|amxx|370}})&lt;br /&gt;
* Added a {{tt|CS_NORESET}} constant for use with {{tt|cs_set_user_team}} for skipping the model reset ({{pr|amxx|287}}, {{pr|amxx|400}})&lt;br /&gt;
* Added a new value for {{tt|draw_animation}} in {{tt|cs_set_weapon_silen}} which follows game behavior ({{pr|amxx|255}})&lt;br /&gt;
* Added the associated {{tt|TRAIN_*}} constants from HLSDK for use with {{tt|cs_get_user_driving}} ({{pr|amxx|255}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Moved all hardcoded data to its own gamedata files ({{pr|amxx|255}}, {{pr|amxx|352}}, {{pr|amxx|356}})&lt;br /&gt;
* Done some cleanup for the sake of consistency and readability ({{pr|amxx|255}})&lt;br /&gt;
* Added some known constants from CS, a {{tt|cstrike_const.inc}} has been created for the occasion ({{pr|amxx|278}})&lt;br /&gt;
* Cached {{tt|GET_USER_MSG_ID}} calls ({{pr|amxx|255}})&lt;br /&gt;
* Improved {{tt|cs_set_no_knives}} internal code by hooking {{tt|pfnCreateNamedEntity}} only when necessary ({{pr|amxx|255}})&lt;br /&gt;
* Made {{tt|cs_get_user_armor}} {{tt|armortype}} param optional ({{pr|amxx|255}})&lt;br /&gt;
* Improved {{tt|cs_set_user_zoom}} by using an event-based approach rather than enforcing on-frame basis when {{tt|mode}} is 0 ({{pr|amxx|255}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Fixed {{tt|cs_user_spawn}} to properly respawn players ({{bz|3752}})&lt;br /&gt;
* Fixed {{tt|cs_set_user_team}} not telling core spectator team change ({{pr|amxx|13}})&lt;br /&gt;
* Fixed {{tt|cs_get_hostage_id}} error check: a hostage can't be a player ({{pr|amxx|255}})&lt;br /&gt;
* Fixed {{tt|cs_set_user_[model/team]}} and {{tt|cs_reset_user_[model/team]}} overflow issue by staggering user's info updates across multiple frames ({{pr|amxx|255}})&lt;br /&gt;
* Fixed missing meta return in {{tt|ServerActivate}} ({{pr|amxx|308}})&lt;br /&gt;
&lt;br /&gt;
==== CSX ====&lt;br /&gt;
&lt;br /&gt;
* Added {{tt|get_map_objectives}} native ({{bz|5820}}, {{pr|amxx|149}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Modified {{tt|csstats_rank}} value to match {{tt|amxx.cfg}} default value ({{pr|amxx|170}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Fixed {{tt|client_death/damage}} forwards passing alive victims on {{tt|ClientKill}} ({{bz|5812}})&lt;br /&gt;
* Fixed {{tt|client_death}} forward called on {{tt|kill}} command if sent by a spectator ({{pr|amxx|404}})&lt;br /&gt;
&lt;br /&gt;
==== DoDX ====&lt;br /&gt;
&lt;br /&gt;
* Fixed grenade_throw incorrect calling behavior and wrong returned weapon IDs ({{bz|5785}})&lt;br /&gt;
* Fixed a potential crash ({{pr|amxx|277}})&lt;br /&gt;
&lt;br /&gt;
==== DoDFun ====&lt;br /&gt;
&lt;br /&gt;
* Fixed a potential issue  ({{pr|amxx|277}})&lt;br /&gt;
&lt;br /&gt;
==== Engine ====&lt;br /&gt;
&lt;br /&gt;
* Added {{tt|client_cmdStart}} forward ({{bz|5779}})&lt;br /&gt;
* Added {{tt|set_ent_rendering}} native ({{bz|5773}})&lt;br /&gt;
* Added {{tt|entity_intersects}} native ({{bz|6172}}, {{pr|amxx|70}}, {{pr|amxx|367}})&lt;br /&gt;
* Added {{tt|unregister_touch/think/impulse}} ({{pr|amxx|250}})&lt;br /&gt;
* Added safe {{tt|get_global_edict2}} and {{tt|entity_get_edict2}} ({{pr|amxx|250}}, {{pr|amxx|367}})&lt;br /&gt;
* Added a destination parameter to {{tt|trace_hull}} to make it useful using {{tt|NULL_VECTOR}} ({{pr|amxx|250}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Improved {{tt|set_lights}} internal working, only hook server frame when {{tt|pfnLightStyle}} has been called ({{pr|amxx|250}})&lt;br /&gt;
* Moved {{tt|precache_event}} to core ({{pr|amxx|250}}, {{pr|amxx|490}})&lt;br /&gt;
* Removed inconsistent error path from {{tt|entity_get_int}} ({{pr|amxx|250}})&lt;br /&gt;
* Added error path for {{tt|remove_entity}} and unsafe entity ids ({{pr|amxx|250}})&lt;br /&gt;
* Added a bunch of missing entity checks ({{pr|amxx|250}}, {{pr|amxx|345}}, {{pr|amxx|346}}, {{pr|amxx|355}})&lt;br /&gt;
* Used UTF-8 functions where {{tt|KeyValueData}} is touched ({{pr|amxx|250}})&lt;br /&gt;
* Allowed {{tt|find_ent_by_owner}} native to work in {{tt|client_disconnect}} forward ({{pr|amxx|152}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Fixed a crash when using {{tt|get/set_usercmd}} ({{bz|5744}})&lt;br /&gt;
* Fixed {{tt|set_view}} altering {{tt|pev}} properties instead of {{tt|entity_state}} for rendering players ({{bz|5382}})&lt;br /&gt;
* Fixed incorrect behavior of impulse forwards ({{bz|3243}})&lt;br /&gt;
* Fixed {{tt|pfn_spawn}} metamod return to follow engine behavior ({{bz|5807}})&lt;br /&gt;
* Fixed {{tt|set_ent_rendering}} not working on non-player entities ({{pr|amxx|71}})&lt;br /&gt;
* Fixed {{tt|get_info_keybuffer}} not being able to retrieve local key buffer ({{pr|amxx|250}})&lt;br /&gt;
* Fixed an entity check logic error ({{pr|amxx|250}}, {{pr|amxx|259}})&lt;br /&gt;
* Fixed {{tt|is_visible}} native not working on players ({{pr|amxx|392}})&lt;br /&gt;
* Fixed a {{tt|set_lights}} buffer issue which was resulting in an incorrect light ({{pr|amxx|464}}, {{pr|amxx|508}})&lt;br /&gt;
&lt;br /&gt;
==== Fakemeta ====&lt;br /&gt;
&lt;br /&gt;
* Added {{tt|create_kvd}} and {{tt|free_kvd}} allowing creation of new KVD structures that can be used with Hamsandwich.&lt;br /&gt;
* Added new {{tt|get}}/{{tt|set_pdata_*}} natives for the following types: {{tt|bool}}, {{tt|byte}}, {{tt|short}}, {{tt|vector}}, {{tt|ehandle}} and {{tt|ent}} ({{bz|5770}})&lt;br /&gt;
* Introduced new natives to read/write on entity's private data based off class/member name using gamedata files ({{pr|amxx|284}})&lt;br /&gt;
** {{tt|get}}/{{tt|set_ent_data}}&lt;br /&gt;
** {{tt|get}}/{{tt|set_ent_data_float}}&lt;br /&gt;
** {{tt|get}}/{{tt|set_ent_data_vector}}&lt;br /&gt;
** {{tt|get}}/{{tt|set_ent_data_entity}}&lt;br /&gt;
** {{tt|get}}/{{tt|set_ent_data_string}}&lt;br /&gt;
** {{tt|get_ent_data_size}}&lt;br /&gt;
** {{tt|find_ent_data_info}}&lt;br /&gt;
** {{tt|get_field_basetype}}&lt;br /&gt;
* Introduced natives to read/write on the gamerules object ({{pr|amxx|298}}, {{pr|amxx|309}}, {{pr|amxx|316}})&lt;br /&gt;
** {{tt|get}}/{{tt|set_gamerules_int}}&lt;br /&gt;
** {{tt|get}}/{{tt|set_gamerulesa_float}}&lt;br /&gt;
** {{tt|get}}/{{tt|set_gamerules_vector}}&lt;br /&gt;
** {{tt|get}}/{{tt|set_gamerules_entity}}&lt;br /&gt;
** {{tt|get}}/{{tt|set_gamerules_string}}&lt;br /&gt;
** {{tt|get_gamerules_size}}&lt;br /&gt;
** {{tt|find_gamerules_info}}&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Allowed {{tt|get/set_pdata_cbase}} usage at map end whereas player's private data is still valid ({{bz|5787}})&lt;br /&gt;
* Improved handling of {{tt|KeyValueData}} and made it compatible with Hamsandwich ({{pr|amxx|240}})&lt;br /&gt;
* Allowed null invoker to be passed in {{tt|EngFunc_PlayBackEvent}} ({{pr|amxx|358}}, {{bz|6467}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Fixed {{tt|pev_blending}} not working with set_pev ({{bz|5758}})&lt;br /&gt;
* Fixed broken {{tt|EngFunc_ChangeLevel}} ({{pr|amxx|244}})&lt;br /&gt;
* Fixed a bug with recursive pre hooks ({{pr|amxx|341}})&lt;br /&gt;
* Fixed memory leak in {{tt|unregister_forward}} ({{pr|amxx|388}})&lt;br /&gt;
&lt;br /&gt;
==== GeoIP ====&lt;br /&gt;
&lt;br /&gt;
* Module now uses the latest MaxMind GeoIP2 API ({{pr|amxx|99}}, {{pr|amxx|104}}, {{pr|amxx|132}})&lt;br /&gt;
* Added new (UTF-8 safe) {{tt|geoip_*}} natives to retrieve the city, region, continent and more ({{pr|amxx|99}}, {{pr|amxx|198}}, {{pr|amxx|200}})&lt;br /&gt;
* Added a {{tt|geoip}} command mainly for debugging purposes (version, dump an ip data) ({{pr|amxx|99}})&lt;br /&gt;
* Marked {{tt|geoip_country}} as deprecated in favor of the new {{tt|geoip_country_ex}} native ({{pr|amxx|99}})&lt;br /&gt;
&lt;br /&gt;
==== Hamsandwich ====&lt;br /&gt;
&lt;br /&gt;
* Added support for the following mods:&lt;br /&gt;
** Deathmatch Classic&lt;br /&gt;
** Adrenaline Gamer&lt;br /&gt;
** Opposing Forces&lt;br /&gt;
** Sven Coop v5.13 (todo: update to v5.14)&lt;br /&gt;
* Added several functions which required different handlers&lt;br /&gt;
* Added a lot of missing virtual functions for all mods&lt;br /&gt;
* Added natives to deal with the {{tt|ItemInfo}} structure&lt;br /&gt;
* Added support for bots without {{tt|player}} classname ({{bz|6111}}, {{bz|6323}}, {{pr|amxx|153}}, {{pr|amxx|228}})&lt;br /&gt;
* Added {{tt|SetParamEntity2}} native to fix entity param not changing in post hook ({{pr|amxx|395}}, {{pr|amxx|463}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Updated offsets for all mods ({{pr|amxx|354}})&lt;br /&gt;
* Aligned stack on 16 byte boundary in hamsandwich trampolines ({{pr|amxx|24}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Fixed crash for functions returning a vector&lt;br /&gt;
* Fixed crash when {{tt|Ham_TakeHealth}} is called&lt;br /&gt;
* Fixed various typos&lt;br /&gt;
* Fixed misaligned offsets in {{tt|hamdata.ini}}&lt;br /&gt;
* Fixed vtable patching on Linux for newer GCC binaries&lt;br /&gt;
* Fixed resource leak when reading {{tt|hamdata.ini}} ({{pr|amxx|274}})&lt;br /&gt;
* Fixed {{tt|ham hooks}} command not displaying all current hooks of a plugin ({{pr|amxx|276}})&lt;br /&gt;
* Fixed {{tt|HAM_OVERRIDE}} in post hooks ({{bz|6443}}, {{pr|amxx|317}})&lt;br /&gt;
* Fixed a buffer issue in {{tt|RegisterHam}} ({{pr|amxx|495}})&lt;br /&gt;
&lt;br /&gt;
==== MySQL ====&lt;br /&gt;
&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Added {{tt|SQL_SetCharset}} native to (re)set character set ({{bz|5999}})&lt;br /&gt;
* Added MySQL Reconnect feature ({{pr|amxx|154}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Bumped MySQL version to 5.5 ({{pr|amxx|466}}, {{pr|amxx|468}})&lt;br /&gt;
* Established a default timeout for MySQL connectivity ({{pr|amxx|188}})&lt;br /&gt;
* Improved module threading to be more responsive ({{pr|amxx|207}})&lt;br /&gt;
&lt;br /&gt;
==== NVault ====&lt;br /&gt;
&lt;br /&gt;
* Fixed a potential crash at map change if an empty key or value is saved ({{pr|amxx|112}}, {{pr|amxx|130}})&lt;br /&gt;
* Fixed potential formatting issue with {{tt|nvault_[p]set}} ({{pr|amxx|187}})&lt;br /&gt;
&lt;br /&gt;
==== NS ====&lt;br /&gt;
&lt;br /&gt;
* Fixed {{tt|ns_remove_upgrade}} native ({{bz|3394}}, {{pr|amxx|271}})&lt;br /&gt;
&lt;br /&gt;
==== RegEx ====&lt;br /&gt;
&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Added {{tt|regex_compile_ex}}, mainly to allow direct use of {{tt|PCRE_*}} flags ({{pr|amxx|69}})&lt;br /&gt;
* Added {{tt|regex_match_all_c}} and {{tt|regex_match_all}} to retrieve all matches ({{pr|amxx|69}})&lt;br /&gt;
* Added {{tt|regex_replace}} to search and replace ({{pr|amxx|69}})&lt;br /&gt;
* Added {{tt|regex_match_simple}} stock ({{pr|amxx|69}}, {{pr|amxx|156}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Updated {{texttip|PCRE|Perl Compatible Regular Expressions}} to {{tt|v8.35|bgcolor=none}} with UTF-8 support ({{pr|amxx|69}})&lt;br /&gt;
* Updated {{tt|regex_subtr}} to increase static buffer size same as core and to make it UTF-8 safe ({{pr|amxx|69}})&lt;br /&gt;
&lt;br /&gt;
==== SQLite ====&lt;br /&gt;
&lt;br /&gt;
* Added {{tt|SQL_SetCharset}} native to (re)set character set ({{bz|5999}}, {{pr|amxx|236}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Updated library version from {{tt|3.3.13|bgcolor=none}} to {{tt|3.8.8.2|bgcolor=none}} ({{pr|amxx|148}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Fixed missing ''queuetime'' {{tt|FP_CELL}} parameter in {{tt|SQL_ThreadQuery}} callback ({{pr|amxx|205}})&lt;br /&gt;
* Fixed missing buffer size check to {tt|QuoteString}} implementation ({{pr|amxx|411}})&lt;br /&gt;
&lt;br /&gt;
==== Socket ====&lt;br /&gt;
&lt;br /&gt;
* Added a new {{tt|_flags}} parameter to allow non-blocking mode and return libc error ({{pr|amxx|301}})&lt;br /&gt;
* Added {{tt|socket_is_writable}} native to check whether a socket is ready to write  ({{pr|amxx|301}})&lt;br /&gt;
* Added {{tt|socket_is_readable}} as an alias to {{tt|socket_change}} ({{pr|amxx|301}})&lt;br /&gt;
{{margin|10px|}}&lt;br /&gt;
* Updated WinSock version from {{tt|1.1}} to {{tt|2.2}} ({{pr|amxx|301}})&lt;br /&gt;
* Properly checked for WinSock initialization on {{tt|OnAmxxAttach}}/{{tt|Detach}} ({{pr|amxx|301}})&lt;br /&gt;
* Ignored natives registration if WinSock can't be started ({{pr|amxx|301}})&lt;br /&gt;
* Made {{tt|socket_open}} IP version agnostic (both IPv4 and IPv6 are supported) ({{pr|amxx|301}})&lt;br /&gt;
* Made {{tt|socket_close}} to return a value on success/failure ({{pr|amxx|301}})&lt;br /&gt;
&lt;br /&gt;
==== NVault ====&lt;br /&gt;
&lt;br /&gt;
* Fixed server crash when nvault is writing to journal file without write permission ({{bz|3231}})&lt;br /&gt;
&lt;br /&gt;
==== TFCX ====&lt;br /&gt;
&lt;br /&gt;
* Fixed {{tt|tfcstats_rankbots}} not working as expected when disabled ({{bz|3192}})&lt;br /&gt;
* Fixed {{tt|tfcstats_pause}} imcomplete implementation ({{bz|5836}})&lt;br /&gt;
* Fixed {{tt|tfc_setbammo}} not working under Linux ({{bz|5845}})&lt;br /&gt;
* Fixed {{tt|TFC_PC_CIVILIAN}} value ({{bz|6042}})&lt;br /&gt;
* Fixed crash when Infection weapon is used ({{pr|amxx|232}}, {{bz|6333}})&lt;/div&gt;</summary>
		<author><name>OciXCrom</name></author>
		
	</entry>
</feed>