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: $105
Amount Needed: $295
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 |
|