Raised This Month: $ Target: $400

SourceMod 1.11 Now Stable

Post New Thread Reply   
Thread Tools Display Modes
Author Message

Join Date: May 2008
Old 07-02-2022 , 23:19   SourceMod 1.11 Now Stable
Reply With Quote #1

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.

  • 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.

  • 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

  • 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

  • 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

  • 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.

  • Separate code generation from parsing in expressions #387

  • 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:utstream #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

  • 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<float>({1.0, 1.0, 1.0})`

  • 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.
psychonic is offline
Junior Member
Join Date: Aug 2020
Location: ohio
Old 07-02-2022 , 23:25   Re: SourceMod 1.11 Now Stable
Reply With Quote #2

sapphonie is offline
AlliedModders Donor
Join Date: Feb 2013
Old 07-03-2022 , 02:41   Re: SourceMod 1.11 Now Stable
Reply With Quote #3

Nice! Been using it for a long time and appreciate the changes.
Maxximou5 is offline
Junior Member
Join Date: Jul 2020
Old 07-03-2022 , 09:57   Re: SourceMod 1.11 Now Stable
Reply With Quote #4

Thanks for all the hard work! <3

https://www.endofthelinegaming.com/ -- Picking up where NoHeroes ended.
Judge_Duck is offline
Veteran Member
Join Date: May 2017
Old 07-03-2022 , 16:18   Re: SourceMod 1.11 Now Stable
Reply With Quote #5

Taking paid private requests! Contact me
Cruze is offline
Junior Member
Join Date: Aug 2017
Location: /dev/null
Old 07-05-2022 , 19:59   Re: SourceMod 1.11 Now Stable
Reply With Quote #6

Nice to see DHooks making it into SourceMod, thanks to everyone who contributed to the release!
OfficialSikari is offline
Senior Member
Join Date: Apr 2019
Location: Romania
Old 07-07-2022 , 18:43   Re: SourceMod 1.11 Now Stable
Reply With Quote #7

nice release! good job guys!
My community:

Contact me, fastest way, through my discord server:
xSLOW is offline
AlliedModders Donor
Join Date: Oct 2008
Old 07-14-2022 , 03:48   Re: SourceMod 1.11 Now Stable
Reply With Quote #8

Originally Posted by psychonic View Post
[*] Updated GeoIP extension to use newer database format.
Do we still have to download the databse from MaxMind? I don't think they will provide the database for free in the future. Shouldn't a way be added that is running without a third party license?
fragnichtnach is offline
SourceMod Plugin Approver
Join Date: Aug 2008
Location: Germany
Old 08-02-2022 , 07:00   Re: SourceMod 1.11 Now Stable
Reply With Quote #9

Originally Posted by fragnichtnach View Post
Do we still have to download the databse from MaxMind? I don't think they will provide the database for free in the future. Shouldn't a way be added that is running without a third party license?
What makes you think the lite versions will go away?
There are other .mmdb geolocation data providers out there too if you don't want to register with maxmind.
Peace-Maker is offline
New Member
Join Date: Sep 2022
Old 09-05-2022 , 05:26   Re: SourceMod 1.11 Now Stable
Reply With Quote #10

Nice to see DHooks making it into SourceMod, thanks to everyone who contributed to the release!
Amittgeer is offline

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

All times are GMT -4. The time now is 08:01.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode