| Main
 > News
 > About
 > Credits
 
 Downloads
 > Stable Builds
 > Dev Builds
 > Plugins
 
 Tools
 > Stats
 > Compiler
 > Bugs/Requests
 > Cross-Reference
 > Waterfall
 
 Documentation
 > Install/Usage
 > Writing Plugins
 > Script Functions
 > Development
 > C++ Reference
 
 Community
 > Forums
 > Discord
 
 
 
   Monthly Target: $400
 Raised This Month: $5
 Amount Needed: $395
 Hall of Fame
 
 
 |  
  
  
   | SourceMod 1.12 Now Stable | Oct 20, 2024 12:36 |  
   | SourceMod 1.12 is now the new stable, recommended version to use. 
 This has been another one of our longest times between stable releases, so the full changelog is quite large. There are numerous updates in this version, compared to 1.11. Here are some of the highlights:
 
 
 
  Added or greatly improved support for five games and mods
 Greatly improved 64-bit support
 Many new natives added
 Numerous bugs fixed
 
 Shoutouts
 We also want to take a moment to thank everyone that contributed to the release in any way, but a few specific callouts are warranted.
 
 Kenzzer was a driving force with heavily improving 64-bit support, and doing a bulk of that work. This may soon be a requirement for Team Fortress 2 servers, and already is for some newer games, such as Military Conflict: Vietnam and Blade Symphony. You'll also see Digby and Mikusch showing up many times in the changelog. They both contributed many of the features and fixes. And finally, I also want to give a special mention to Sarrus for his awesome SourcePawn Studio extension for Visual Studio Code. It's a great tool for anyone developing SourceMod plugins.
 
 Here is the full changelog. Italicized items were also backported to 1.11 after it went stable. As you can see, there are many contributors beyond the core team. Apologies if anything or anyone was missed.
 
 Game support
 
 
  Added support for Military Conflict: Vietnam - #1887
 Added gamedata for GMod 9 (caatge) - #2093
 Added gamedata for Pre-Fortress 2 (dangreene0) - #2091
 Added gamedata for Open Fortress (sappho) - #2057
 Added gamedata for TF2 Classic (sappho) - #2089
 Numerous gamedata updates, SDK updates, and internal updates to maintain supported games
 
 Features
 
 
  Added support for bcompat references (edict indexes) as inputs to ReferenceToIndex (c0rp3n) - #1323
 Added ParseTime native (Digby) - #1697
 Added File.Size native, supporting both direct and valvefs files (Peak) - #2131
 Added GetFilePermissions native (Kenzzer) - #2177
 Added support for referencing any engine binary in gamedata, rather than only engine, server, and matchmaking_ds - #1626
 Added block parameter to various ArrayList functions (Mikusch) - #1656
 Added float suport for the modulo operator (%) (Mikusch) - #1953
 Added Handle methodmap with Close and Clone methods
 Added ArrayStack.Top, ArrayStack.TopString, and ArrayStack.TopArray natives and ArrayStack.Length property (Mikusch) - #2019
 Added GetClientOriginalLanguage native (Digby) - #1810
 Added SMCParser.ParseString native to load an SMC file from a char[] (Digby) - #1817
 Added GetPublicChatTriggers and GetSilentChatTriggers natives (Digby) - #1816
 Added OnServerEnterHibernation and OnServerExitHibernation forwards (ojlanders) - #2151
 Added LoadEntityFromHandleAddress and StoreEntityToHandleAddress natives (nosoop) - #1830
 Added support for accessing ConVar flags in CommandIterator - #1869
 Updated KeyValues.Rewind native to make traversal stack clearing optional (Digby) - #1993
 Updated topmenus to allow sorting with subcategories in config file (Peak) - #1757
 Added TE_ReadEnt and TE_WriteEnt tempents natives for ehandle fields - #1905
 Added ability to specify trace type on many TR_Trace* natives (vanz666) - Add custom sdktools trace types
 Added explode parameter to ForcePlayerSuicide native (Mikusch) - #1782
 Added SDKCall_Engine as new SDKCallType for IVEngineServer calls (accelerator74) - #1648
 Added logging of vote cancellation and vote results (Rushaway) - #1794
 Added sm_dsay command for sending HUD messages - #1889
 Updated sm_nominate to be able to be used via console (dysphie) - #1803
 Added support for SDKCall returning non-networked entities (FortyTwoFortyTwo) - #1797
 Added natives for working with entity lumps (nosoop) #1673
 
 Bug fixes
 
 
  Fixed rare crash with logging (Kenzzer) - #2161
 Standardized behavior of RenameFile across platforms when destination file exists (rtldg) - #2060
 Fixed issues with CRC-based gamedata targeting not functioning properly
 Fixed a case where nextmap functionality could get stuck in a loop - #1545
 Fixed crash when parsing certain large SMC files (bottiger) - #2173
 Fixed IsClientSourceTV native not functioning in L4D2 if tv_name was set to non-default value (adriansmares) #2143
 Fixed CommandListeners only being blocked with Plugin_Stop rather than also Plugin_Handled (Digby) - #1819
 Fixed server crash that would occur when RemoveEdict or RemoveEntity were called on worldspawn. An error is now thrown instead. (CookieCat45) - #2104
 Fixed SetEntityHealth native to support entities with m_iHealth is not networked but exists in the datadesc (Kenzzer) - #1846
 Fixed a recursion issue in ServerCommandEx on some games (ojlanders) - #2133
 Fixed crash when calling SQL_LockDatabase twice on a db handle (Digby) - #1937
 Fixed ForcePlayerSuicide native not working on some games if called too soon after previous call on a player (Mikusch) - #1782
 Fixed a crash that could occur on TF2 if SDKTools was loaded and replay was enabled (hydrogen-mvm) - #2033
 Fixed a crash that could occur in TF2_DisguisePlayer (KitRifty) - #2117
 Fixed bypassHooks parameter in SDKHooks_DropWeapon being ignored in some cases (Rainyan) - https://github.com/alliedmodders/sourcemod/issues/1876
 Fixed a crash that would occur upon DHooks load if SDKHooks could not be loaded - #1930
 Fixed SDKCall VDECODE_FLAG_ALLOWNOTINGAME flag not working (1mpulse) - #2000
 Fixed full map name not being logged in sm_map command when using inexact matching (Rushaway) - #1907
 Fixed nextmap conflict on Dystopia (bauxiteDYS) - #2075
 Fixed a case where gamedata values could be unintentionally overridden (nosoop) - #1859
 Fixed a crash that could occur when trying to send a usermessage inside of a usermessage hook callback (zer0k-z) - #1883
 Fixed maplist always being reparsed, even if file hadn't changed (clague) - #1891
 Fixed a command injection issue in sm_play command (b0ink) - #1832
 Fixed chat triggers being used as a ban reason when using sm_ban interactively (rainyan) - #2067
 
 Miscellaneous
 
 
  Multiple improvements with 64-bit support, by multiple people (Kenzzer, bottiger, KitRifty)
 Reworked handling of edicts and entities to be safer and more consistenct, leading to stability improvements (Kenzzer) - #1903
 Improved performance for HasEntProp (Digby) - #1908
 Updated compiler targeting to C++17
 Updated to SourcePawn 1.12
 Brought language files in-tree, replacing the old, gated translator tool with a GitHub-based workflow that anyone can contribute with
 Moved menu sounds moved to gamedata - #1896
 Added support for building against hl2sdk-mock, for tests
 Increased max supported players from 64 to 100 (65 to 101 with SourceTV) (sappho) - #2026
 Improved sm plugins and sm exts client commands to not require pagination (zer0k) - #1862
 Updated ShowHudText and ShowSyncHudText natives to thrown an error if params haven't been set - #1890
 Updated SDKHooks to greatly improve performance on Linux when there are many hooks (KaelaSavia) - #2094
 Updated multiple callbacks in SDKHooks to use highest result instead of last result, ex. Plugin_Stop always supersedes Plugin_Continue - #1872
 Updated sm_help to no longer print hidden commands (Batfoxkid) - #1831
 Restructured admin-flatfile script files for consistency - #2043
 Improved ff command support on L4D and L4D2 (ambaca) - #1530
 Improve messaging when nominated map is not in map pool (FlaminSarge) - #597
 
 The Stable Builds download page now points to 1.12 builds, although 1.11 ones are still available and linked there. The Dev Builds page now points to the new 1.13 branch.
 |  
   | .: by psychonic |  
  
  
   | New Translation Workflow | Mar 29, 2023 19:17 |  
   | Phrases for all languages have been moved into the repository and can be updated through pull requests. 
 The translation phrases used to be maintained by dedicated community volunteers through an online tool. While the tool worked well and served its purpose, it doesn't quite work with the current rolling release model. We couldn't add new phrases (looking at you, #597), since there was no process to gather translations and the existing solution saw little activity over the years. This led to rethinking how community translations are collected and resulted in putting the old translator tool down in favor of a Github Project tracking the progress.
 
 With scheduled releases, it used to work like this: before publishing a release, the phrases were frozen and all translators asked to update the phrases. After they voted on the best translation for all phrases, they were exported and shipped with the next release. With a rolling release model, the 1.11-dev and master branches are always kept in a runnable state, so there is no time to stop and gather all translations before each commit.
 
 Since we're using Github for most of the file related tasks already, just including all phrases in the repository and updating them through pull requests seems like the obvious choice. This brings the translation phrases one step closer to where most of the activity happens. To keep an overview of missing phrases in languages, we use a Github project which gets updated whenever a phrase file changes.
 
 If you want to contribute to a translation in SourceMod, the new workflow is as follows:
 
  Look at what needs to be done for your language in the Translation project.
      Click on the language name in the card to open a detailed view.
 
 Check the phrase in the english translation files.
 Update the correct phrases file with your translation.
 Open a pull request with your changes.
 
 We still need your eyes to judge the new phrases in incoming pull requests. You can check the list of pending changes and comment on the languages you know.
 
 At the time of this writing, not even a single supported language has all of the phrases translated! Let's go and change this!
 |  
   | .: by Peace-Maker |  
  
  
   | SourceMod 1.11 Now Stable | Jul 02, 2022 22:19 |  
   | It's been cooking for long enough, so SourceMod 1.11 is now, finally declared stable. A new release was overdue, so this post includes an unusually long list of changes. We've highlighted some changes at the top and included a detailed list of individual changes below. Many thanks to Peace-Maker for aggregating the release notes! 
 The IRC channels are fully deprecated and all our communication switched to Discord. Come join us!
 
 Welcome Headline and Peace-Maker to the team!
 
 This release wouldn't be possible without the help of the incredible community. Thanks to (in no particular order): PerfectLaugh, sigsegv-mvm, komashchenko, GAMMACASE, naydef, SM9CC, bottiger1, Impact123, Deathreus, sneak-it, thorgot, proobs, Bara, FortyTwoFortyTwo, etojuice, dysphie, wanted241, Douile, hlstriker, ErikMinekus, Sikarii, ProdigySim, menesakdeniz, Vauff, Natanel-Shitrit, nosoop, JoinedSenses, BotoX, hydrogen-mvm, Einyux, CrazyHackGUT, Scags, MartLegion, stickz, 2251307218, arthurdead, TheByKotik, rumblefrog, thewavelength, b3none, Wend4r, Accelerator74, eyal282, TotallyMehis, WildCard65, Rostu13, Mikusch, Silenci0, kidfearless, c0rp3n, sapphonie, sirdigbot, yourmnbbn, s3bul, rtldg, ashort96, xerox8521, pedrotski, A1mDev, Sarrus1, Kxnrl, Adrianilloo, Kenzzer, iNilo, clugg, GabenManPowered, Alienmario, neko-pm, Psykotikism, BoneTM, Margen67.
 
 Highlights
 
 
  Include DHooks2 as first-party extension.
 New OnPlayerRunCmdPre forward to get raw values before other plugins mess with them.
 New OnNotifyPluginUnloaded() forward for child plugin resource management.
 Gamedata files are automatically reparsed on load if they have changed since the last load.
 Signature lookups are done on the unchanged binary in memory. No need to wildcard the first bytes if the function gets detoured anymore!
 A2S_RULES query fix for CS:GO allowing to query public convar values like in all other games.
 New forwards when clients use voice chat.
 Add frequently used SDK calls like LookupEntityAttachment and SetEntityCollisionGroup.
 PostgreSQL database driver.
 Updated GeoIP extension to use newer database format.
 Rewrite of the SourcePawn parser to separate it from code generation in the compiler to allow for further improvement of the language. See here what's changed and might need touching for your plugin to compile on 1.11.
 Various stability and documentation improvements.
 
 Below is a detailed list of changes since the last release. There were a plethora of little typo fixes and documentation improvements, which aren't listed individually to keep the already long list shorter, but are appreciated anyways.
 
 SourceMod changes
 Entries marked by an asterix (*) were backported to 1.10 as well.
 
 Features
 
 
  Import DHooks2 as first-party extension #1629
 Add more trace enumerate natives: TR_EnumerateEntitiesSphere, TR_EnumerateEntitiesBox, TR_EnumerateEntitiesPoint #1145
 Add helper stocks for getting numerical command arguments #1194
 Add array operations to DataPack #1219
 Add string_t SetEntPropString support for ep1 #1299
 mapchooser: Add option for persistent map storage #1183
 Add ArrayStack.Clone method #1304
 Add StringMap.Clone method #852
 Add support for networked CUtlVector netprop #1330
 Add Insurgency support for amd64 Windows #1295
 menusys: Add MenuShufflePerClient native #1073
 Implement ClientSpeaking forwards #1247
 Automate Gamedata reparsing #1348
 Add GameData.GetMemSig native #1345
 Add StringMap.ContainsKey native #1390
 Add client id to MultiTargetFilter forward #1070
 Add sm_dump_datamaps_xml #1409
 Add A2S_Rules fix for CS:GO to CStrike extension #614
 Add PostgreSQL database driver #32
 Add support for hexadecimal offsets in gamedata #1426
 Add ConVar.GetDescription() method #1449
 Add OnNotifyPluginUnloaded() forward #1462
 Add FlagBitsToString for admin permission flag bits #377
 Add SetEntityCollisionGroup native #1507 #1513
 Add StringToInt64() and Int64ToString() natives #1511
 Add OnMapInit forward and deprecate OnLevelInit #1534
 Track the creating plugin for convars in ConVar.Plugin #1537
 Support building with hl2sdk-mock #1584
 Support Blade Symphony on x64 #1586
 Add OnClientLanguageChanged() forward #1597
 Enable SDKCalls on CBaseServer methods using SDKCall_Server call type #1612
 Cache copy of library on first symbol/signature lookup for future lookups #1642
 Add EntityCollisionRulesChanged & SetEntityOwner natives #1620
 SDKTools: Add LookupEntityAttachment & GetEntityAttachment natives #1653
 Add ArrayStack.Clear native #1676
 Add bitwise SetBitFlags for AdminId and GroupId methodmaps #1677
 Add MAX_AUTHID_LENGTH define #1696
 Add GetCmdArgFloat(Ex) stocks #1742
 Add OnPlayerRunCmdPre forward with readonly parameters #1760
 Add "DispatchKeyValueInt" stock #1764
 
 Enhancements
 
 
  Update game support for CS:GO, Contagion, TF2, NMRiH, Nuclear Dawn, Blade Symphony, PVKII, L4D2, ZPS, Black Mesa, HL2DM, Day of Infamy, Fortress Forever, Alien Swarm: Reactive Drop *
 Use map display name for admin map chooser menu #1097 *
 Add new CSWeaponID knives and items #1111 #1114 #1126 *
 Clarify detour creation errors #1191 *
 Remove hardcoded question mark from sm_vote #1699 *
 Return DBDriver instead of Handle in DBI #1109
 Add missing const to origin parameters #1079
 Add default values to TeleportEntity #1167
 Make all command lookups case-insensitive #1542
 Return array type info with FindSendPropInfo #1548
 Change sm_beacon to use game-specific team colors #1187
 mapchooser: Replace existing map entry from exclusion list #1184
 Make GetStringTableData native binary-safe #1232
 Prevent unecessary re-tagging for address functions #1250
 Alert players of map history console output #1242
 Notify on frame-delayed plugin reloads #1292
 Do not require quotes around message in sm_psay #1300
 cookies: Align output of sm_help #977
 Change int[] to any[] for data r/w functions #1221
 Update GeoIP2 extension to new GeoLite2 .mmdb database format #1245
 Detect invalid menu item selections in L4D-based games #1543
 handlesys: Output allocation timestamp during panic #1110
 regex: Update pcre to version 8.44 #1309
 Update multiple base plugins to use newer methodmap API
 Various documentation improvements and fixes
 Remove legacy CDataPack cache #1357
 Update cookie funcs to return newdecl Cookie #1379
 Universalize a single call to srand() on map init #1422
 Improve logging on map/generic votes #1362
 Call ConVarQueryFinished on client disconnect #1384
 Use same chat visibility logic for 'friendlyfire' command as for 'timeleft' #1494
 Clean non-ingame clients from NormalSHook #1450
 Allow overriding SDKHook_Think #1397
 Add ability to skip mprotect with StoreToAddress #1523
 Use display name for currentmap chat trigger #1512
 Always use cached name value with UTF8 fixes #1544
 Add support for all Steam ID formats to admin-sql-threaded #1604
 Bump handle limit to 1MB #1610
 Allow h-flag admins to bypass vote delay (or "sm_vote_delay_bypass" override) #1733
 DHooks: Allow setting CBaseEntity* param to NULL #1754
 Prevent workshop prefix from showing in nominations results menu #1737
 DHooks: Throw error when trying to use argument passflags for detours #1773
 Expand ShowHudText message buffer to 512 bytes for Protobuf games #1777
 Add a PluginIterator methodmap #1779
 Update SQLite library to 3.38.5 #1792
 
 Fixes
 
 
  Fix virtual SDKCall with object params #1104 *
 Fix possible heap corruption on player disconnect #1108 *
 Speculative fix for MySQL crashes #1135 *
 Make ConVar cache case insensitive #1177 *
 Fix rare crash due to ConCommand cache misses #1256
 Fix GetSteamAccountID validation opt-out #1158 *
 Prevent basecommands from printing to disconnected clients #1138 *
 Fix incorrect nomination command response #1161 *
 Fix TF2_MakeBleed using incorrect custom damage type #1163 *
 Prevent clients from spamming global chat using sm_nominate #1217 *
 Fix memory leak when deleting some datapacks #1251 *
 Fix matching Regex against an empty string #1253 *
 Fix crash when ArrayList runs out of memory #1235 *
 Fix "Command Group" override type admin flags #1349 *
 Fix ignoring admin access flags for basecomm commands in admin menu #1364 *
 Fix vprof crashing in some games #1541 *
 TF2Tools: Fix TF2_OnIsHolidayActive forward not getting called after map change #1752 *
 SDKTools: Clear gamerules pointer on level shutdown (fixes crash when calling TF2_IsHolidayActive while no map is running) #1755 *
 Validate GetEntityHandle in FindEntityByNetClass #1089
 Check short name for remote extensions #1053
 Adjust CanAdminTarget to support multiple Group Immunity IDs #1147
 Fix heap corruption in CUtlVector destructor on Windows #1165
 sdkhooks: Correct velocity issues with dropweapon #1159
 Fix HookEntityOutput/HookSingleEntityOutput bugs in sdktools #1074
 engine: Implement message buffering #1071
 Fix basecomm failing to load on games without sv_alltalk #1212
 Prevent voteban evading & add ban length cvar #1249
 Extensions: Prevent multiple calls to SDK_OnAllLoaded #1293
 Fix TFResourceNames using array based enum struct #1154
 Throw error when invalid address passed to SDKCall #1265
 Clear map history on limit change in mapchooser #1197
 Fix velocities assignment of SDKHooks_TakeDamage #1322
 Fix invalid sm_dump_netprops_xml output #1360
 Fix PrepSDKCall_SetSignature with symbols on Windows #1346
 Fix reading netprop strings and support for string prop arrays #1372
 Fix displaying "Back" menu option to admin menu not obeying admin permissions #1374
 Fix sql injection in sql-admin-manager plugin #1423
 Fix rare crash when accessing the plugin handle in command iterators #1439
 Prevent multiple map changes in randomcycle #1428
 Call SetGlobalTarget in PrintToConsole for translations #1448
 Fix outdated MENU_DEBUG define output #1506
 Fix lookup of matchmaking_ds binary for gamedata #1504
 Fix sm_dump_admcache with command group overrides #1519
 Fix output hooks when caller/activator are flipped #1411
 Remove buggy entity lump manipulation from OnLevelInit #1534
 Handle detour patches across page boundaries #1535
 Fix reading/writing float variant-based props #1536
 Fix reading/writing string_t array netprops #1538
 Catch exceptions from TraceRay filter/enumerator callbacks #1557
 TF2Tools: Prevent CalcIsAttackCriticalHelper* from being called twice #1573
 Fix not calling SDK_OnAllLoaded when reloading extensions #1606
 Fix name change caching and calling OnClientSettingsChanged for bots #1605
 Fix error return of FormatNativeString #1613
 Fix up gamedata CRC functionality for gameversion specific gamedata #1621
 Fix off-by-one truncation of translation buffers using the whole buffer size #1640
 Fix GetMenuExitBackButton always returning false #1646
 SDKHooks: Fix ShouldCollide's originalResult parameter containing undefined data #1657
 SDKHooks: Fix crash in non-bypass-hooks DropWeapon implementation #1672
 Fix silent error on large ArrayList startsize #1705
 Stop SQLite results being used before being fetched #1709
 DHooks: Fix changing of byref vector parameters #1772
 
 Other
 
 
  Deprecate IsSoundPrecached #1172 *
 Add an option to build against no SDKs #1201 *
 Restore the frame pointer on Linux #1200 *
 Throw configuration error on unsupported compilers #1029
 Add windows supported SDKs to powershell checkout-deps #1116
 Improve checkout-deps setup speed #1236
 Improve checkout-deps PIP installation handling #1328
 Add -m flag to checkout-deps.sh to avoid downloading MySQL #1753
 Improve CI compiler coverage
 Switch to using STL instead of AMTL in lots of cases
 testing: Add stock AssertStrEq #1185
 Move AppVeyor config in-tree and convert to MSVC2015 #969
 Rename blacklist.plugins.txt to blocklist.plugins.txt #1310
 Improve multi-arch builds and add x64 to official Windows builds
 Cleanly remove all hooks when unloading extensions #1377
 Harden plugin and extension loading path requirements #1437
 Start using Github Actions for CI
 Add SourcePawn JIT debug metadata options to core.cfg #1412
 Bump minimum required clang version to clang-8 #1619
 Add support for ASAN on Linux #1635
 
 SourcePawn changes
 SourcePawn 1.11 contains a major rewrite of the compiler. This rewrite is intended to allow rapid feature development and improve the health and stability of the language. It fixes many bugs, and as a result, old programs may not compile. Programs compiled with an older compiler continue to run fine.
 
 Notably, SourcePawn 1.11 does not hide errors in unused functions anymore. If a stock is unused, and has errors, the errors should be fixed or the stock should be removed.
 
 More common errors for 1.11 upgrades are listed in a separate post including details how to fix them.
 
 Features
 
 
  Separate code generation from parsing in expressions #387
 
 Enhancements
 
 
  Add rudimentary build support for code coverage analysis #378
 Code cleanup and refactoring #386
 Improve test coverage of the compiler #389 #390 #392 #393 #394
 Docparse: Change output of JsonRenderer to generic std::outstream #421
 Docparse: Allow to parse code from memory instead of a file path #423
 Docparse: Add "kind" field to methodmap methods
 Refactor symbol::usage and symbol::flags to help debugging #422
 Check switch cases for tag mismatches #436
 
 Fixes
 
 
  Fix scalars being assignable to arrays #419 *
 Fix 2D+ arrays not initializing to zero #480 *
 Fix interpreter handling of genarray.z
 Forbid passing character slices to references #377
 Fix double-free when a fatal error occurs during assembly #397
 Fix bugs in the increment/decrement operator #391
 Fix global array declarations not checking index tags #410
 Fix missing warning when accessing an enum-struct function without call parenthesis #406
 Fix heap management for directly using return value of functions returning arrays in expressions #433
 Fix literal enum-struct initializers #431
 Fix tag on array expressions to avoid the need to re-tag `view_as({1.0, 1.0, 1.0})`
 
 Other
 
 
  Fix spshell argument handling *
 Remove old expression parser #420
 Remove legacy enum structs #373
 Remove dead or obsolete code in the compiler #375 #376 #379 #381 #382 #393
 Remove cellsof and tagof keywords #380
 Switch to AMTL argument parser #395
 Disable peephole optimizer for new parser #391
 
 The Stable Builds download page now points to 1.11 builds, although 1.10 ones are still available and linked there. The Dev Builds page now points to the new 1.12 branch.
 |  
   | .: by psychonic |  
  
  
   | SourceMod 1.10 Now Stable! | Oct 19, 2019 06:38 |  
   | The new stable branch of SourceMod is now 1.10. As always, there will be gamedata updates for the old-stable 1.9 branch for a while. 
 The new version includes community contributions by the following awesome people: headline, SlidyBat, PerfectLaugh, quasemago, Technoblazed, InvexByte, TiBarification, Pelipoika, Peace-Maker, thewavelength, rumblefrog, jason-e, Kailo, CrazyHackGUT, rsKliPPy, fakuivan, maximsmol, Silenci0, hydrogen-mvm, Hexer10, ddhoward, Bara, PowerLord, TheByKotik, komashchenko, BotoX, b3none, DJPlaya, PerfectLaugh, 404UNFca, JoinedSenses, TheDS1337, Batfoxkid, MartLegion, FortyTwoFortyTwo, PlayBoy31, and Einyux.
 
 The highlights of this release include:
 
 Transitional syntax for enum-structs. Read more about them in the wiki.
Support for running on 64-bit dedicated servers.
New trace ray natives to query for more infos along the ray.
Updated MySQL client library for utf8mb4 charset support.
A new command to reload the databases.cfg without restarting the server: sm_reload_databases
Faster compile times due to numerous fixes and tweaks.
Adjusted plugin binary format to pave the way for more advanced language features.
Lots of stability and code quality improvements.
Improved methodmap API and documentation.
 
 Here are all the changes that were made since 1.9 was set as the stable branch:
 Note, entries marked by an * were backported to 1.9 as well.
 
 SourceMod changes
 
 Fixes
 
 Workaround CS:GO Stringtable bug #1046
Simplify Logger internals to fix SourceMod from stopping to log #691
Handle NULLs in SDKCall string return #906 *
Allow changing to -1/null for attacker and inflictor in OnTakeDamage SDK hook
Fix CompileRegex not actually setting a valid error code #775
Fix compilation with Visual Studio 2017+
SDKHooks: Reset global hookid when unhooking in SourceHook #916
Prevent FrameIterator OOB Errors #949 *
Improve error message for EmitSound #787
Fix BfRead.BytesLeft not being able to be optional #945 *
IBinTools: Block loading incompatible interface versions #979
Fix wrong matchmaking_ds bin path being used in some instances #1006
Remove `MAPLIST_FLAG_NO_DEFAULT` misuses #870
Fix typo in fallback to "default" maplists section #923
Fix wrong timeleft calculation after mp_restartgame in CS:S and CS:GO #1072
Mark new methodmap natives as optional #867
Don't double-format in ReplyToCommand #932 *
PassType typo fixup #1018
Fix description of nominations convars #758
Fix description for CharToLower and CharToUpper (again) #750
Fix param order in CancelClientMenu documentation #982
Documentation fixes of methodmap implementation #788
Fix FormatUserLogText to use GetClientAuthId #805
Add missing MarkNativeAsOptional for SetAuthIdCookie native #879
Send ShowActivity messages to TV clients #813
Fix sm_help erroring out if invoked during the connection process #723
basevotes: Fix buffer size for workshop obtained levels #956
Fix wrong formatting to "Vote Delay Minutes" when delay above 60s #1009
 
 Features
 
 64-bit support for CSGO on Linux and macOS #705
Add more traceray natives (TR_EnumerateEntities, TR_EnumerateEntitiesHull, TR_ClipRayToEntity[Ex], TR_ClipRayHullToEntity[Ex], TR_ClipCurrentRayToEntity[ex]) #754
Add TR_GetHitBoxIndex native#1085
Add RemoveEntity native #745
Add sm_reload_databases command #773
Add int64 support to Protobuf methodmap #943
Allow different values per platform in "Keys" gamedata section #765
Open menu with matching maps on ambiguous !nominate map_name command #983
Add Regex.MatchAll native and fix MatchRegex behaviour to match documentation #767
MySQL: Support multiple result sets in prepared queries #825
Add LogStackTrace native #685
Add Protobuf.HasField native
Add CommandIterator methodmap including CommandIterator.Plugin to access registering plugin #819
Add missing return value documentation for CreateDirectory
Fix Miscellaneous Regressions and undefined behaviours #1022
 
 Enhancements
 
 Update game support for CS:GO, BMS, Empires, NMRiH, Insurgency, PVKII, IOSoccer, ZPS *
Move semantics for StringHashMap #589
Remove DB configuration locking #791
Add TFCond Descriptions #1005
Add Profiler methodmap #814
Add GameData methodmap #766
Add GlobalForward & PrivateForward methodmaps #1004
Add Cookie methodmap #1012
Add getter for Event.BroadcastDisabled #946
Add Sort and SortCustom to ArrayList methodmap #1003
Add File.Flush methodmap function #1056
Update TF2_IgnitePlayer to support setting duration of fire #1038
Add templated helper class to promote type-safety for wrapped function calls #965
Add more TF2 specific DMG_ definitions #756
Add new custom kill identifier for TF2 #972
Add Shield and Bumpmine to cstrike.inc #991
Allow any returns in native callbacks #857
Add RequestFrameCallback with optional data parameter #1068
Update sm_ban, sm_kick, & sm_map to display menu when issued without arguments #838
Pad plugin ID based on the total plugin count in sm plugins list output #1027
Improve CreateNative failure message #903
Use natural sorting for map lists #907
Add internationalization to basechat and fix CS:GO colours #674
Switch CS:GO Clantag set/get to use netprops + offset over sig + offset #922
Unify map lookup logic across tf2esque engines #931
Change MultiTargetFilter to a typeset that allows ArrayList #955
Remove goto from ExtensionSys.cpp #729
SQL-Admin-Manager: style clean-up #974
 
 Other
 
 Rewrite DataPack implementation #688
Prevent use of primitive float operation functions #763
Update MySQL to version 5.5 (support utf8mb4 charset) #786
Update SQLite to version 3.26.0 #783 #935
Increase MAX_NAME_LENGTH to match CS:GO MAX_PLAYER_NAME_LENGTH
Use safe strcpy where applicable #784 #785
Remove IDataPack interface #864
Update sample extension params to be sourcehook-friendly #886
Deprecate GetMaxClients #818
Deprecate FormatUserLogText #856
Cleanup first party plugins #777
Fix GCC 9 builds #1024
Make SQL_QuoteString deprecated #792
Add a note about FormatTime platform dependence #908
 
 
 SourcePawn changes
 
 Fixes
 
 Fix initializing of dynamic char[] #176
Fix a HEA memory leak when using break in nested scopes #207
Fix switch statements' default case not being registered as guaranteed return #236
Fix crash when indexing an array with a literal array #286
Fix crash on malformed if statement #297
Fix assert when returning an indeterminate array #290
Fix crash when enabling profiler #316
Annihilate codepage support and fix compiler startup segfault #238
Relax name shadowing checks for implicitly prototyped functions #371
Fix -D active directory compiler option #259
Look in include paths for the default include file
Increment error count on fatal error #171
Fixed segmentation fault in DocGen #185
Fix wrong debug codestart of struct variables #309
Fix register increment/decrement visit in interpreter #190
Fix anonymous methodmap instantiations #206
Disallow references on indeterminate array arguments #315
Remove pow10 usage and shim for libc 2.27+ support #208
Fix incorrect reported file in error message when missing a required semicolon #331
Don't allow redefining typedefs or typesets #351
Fix unused stocks getting compiled into the binary #366
Fix warning when non-stock functions are used by stock functions #352
 
 Features
 
 Add transitional syntax for enum structs #287
Add #warning directive #170
Added __LINE__ constant #180
Add RTTI metadata and replace debug symbols sections #210
Copy function debug name onto stack for crash dumps #159
Add basic debug API for breakpoints #216
Fully support basic floating point operations in spshell #195
Replace codeversion with feature flags #198
 
 Enhancements
 
 Add "not" optimization #165
C++ify compiler code
Improve compilation speed
  Improve compile time by optimizing stgwrite #183
Optimize compilation for large global arrays #184
Rewrite the lexer #264
Compiler performance enhancements around symbol handling
Rewrite symbol pruning #269
Always parse as UTF-8 #270
Remove the MEMFILE abstraction #274
Remove the three-pass codegen step #277
Fix memory leaks #280
Replace the macro list with a hash table #282
Remove cmptag #260
 
Simplify inline exit frames #345
Expand the semantics of the RETN instruction (opt-in) #192
Introduce a new method of encoding arrays #199
Introduce control flow verification #213 #215
  JIT off the control-flow graph, rather than instruction stream #217
Compute static memory requirements of methods #218
Require a balanced heap state at join points #219
 
Move stack checks to the function prologue #223
 
 Other
 
 Align JIT HALT implementation with Interpreter and Verifier #175
Remove then/begin/end tokens #161
Remove #pragma rational #193
Remove unused constants like cellbits, charmin #360
Add a -v/--version command to spshell that displays JIT availability #203
Add a -z compression level argument to the compiler #272
Improve testing harness #204
Fix compliation on XCode 10 and above #326
Use clang-format for code style checks #340
 
 The Stable Builds download page now points to 1.10 builds, although 1.9 ones are still available and linked there. The Dev Builds page now points to the new 1.11 branch.
 
 Many thanks to Peace-Maker for writing up this news post for us!
 |  
   | .: by asherkin |  
  
  
   | SourceMod Discord | May 25, 2019 07:55 |  
   | Come one, come all - join us on the official SourceMod Discord! 
 
  
 If IRC is more your thing, we're still there too!
 |  
   | .: by asherkin |  |