SourceMod 1.2.0 Release Notes
SourceMod 1.2 is a major update. It is backwards compatible with all known plugins (see notes for details).
This release includes configuration changes to core.cfg. You should either overwrite your old core.cfg, or merge in the new settings available.
New Game Support
SourceMod 1.2 includes full support for two additional game engines:
- Left 4 Dead, a new game released by Valve. Notes:
- This game uses a new engine, similar to Orange Box. Metamod:Source support is available in 1.7.0+.
- nextmap.smx will appear disabled, since it has no use.
- Do not use forked servers over one copy of SourceMod.
- Selecting an unavailable menu item will cause menus to disappear, without any "end of menu" callback being fired. This is a bug in the game client (see discussion at bug 3566).
- Dark Messiah of Might and Magic, by Ubisoft. Notes:
- This game only has a Windows server, so SourceMod only supports it on Windows.
- This game uses a modified pre-Episode 1 engine, similar but more deviating than The Ship. Metamod:Source support is included in 1.7.1+, and uses the "new" MM:S API, not the legacy API (unlike other earlier engines).
- Reverse engineered HL2SDK headers are available on the AlliedModders Mercurial Forest.
New Updater
SourceMod 1.2 includes a rewrite of the gamedata updating system. It has been moved from Core into an extension, and uses an HTTP connection instead of a hand-crafted protocol. This was done to make maintenance easier and to simplify protocol changes.
The gamedata fetcher no longer skips default files which have custom changes. These will be overwritten if updates are pending. You have been warned. See the Gamedata Changes section on this page for more information on how to add custom changes.
Do not use forked or multiple server instances over one copy of SourceMod. This is essential. The updater, while it doesn't create lock files anymore, can potentially write new files to the gamedata folder. If multiple servers are trying to do this at once, the end result could be undefined. Use separate copies of SourceMod.
Gamedata Changes
Gamedata files can now be placed in "gamedata folders," which if they exist, completely override the existence of old files (in that they do not get parsed).
For example, if SDKTools asks for "sdktools.games", Core will now read gamedata/sdktools.games/master.games.txt instead. This file has a simple format:
"Game Master" { "file" { "rule1" "value" } }
Each section under the main section is a file name. The file is loaded if all the rules underneath it match. Available rules are:
- "engine" as one of "original", "orangebox", "left4dead", or "darkmessiah"
- "game" as used in normal gamedata files.
This helps minimize the amount of file maintenance and complexity in systems with many gamedata entries across many games.
In addition, there is a "custom" folder underneath new gamedata folders. You can use these to place new files that will get parsed after all other parsing is done. Custom files are read in an undefined order, and are immune from automatic updates.
Compatibility
- If you compile plugins (or extensions) with SourceMod 1.2, they cannot be run on SourceMod 1.1, even if they do not use new features.
- SourceMod 1.2 cannot be "downgraded" to SourceMod 1.1 unless the extensions folder is cleared. This is because the "bintools" extension is in a new location, and the new version will be loaded over the old after downgrading.
- Developers: The "usermessage" API has changed. MsgNotify has been removed entirely, and replaced with MsgPostHook. This change is transparent, and no plugins appeared to have been using the API. If you have a plugin relying on the MsgNotify functionality, your plugin will now receive intercepted calls that are blocked as well. Update your source, recompile, and use the new sent parameter to filter.
Changelog
- Added Left 4 Dead support (bug 3414).
- Added Dark Messiah game support (requires Metamod:Source 1.7.1 or higher).
- Added sm_name command (bug 2150).
- Added extension-level dynamic hooking to bintools (bug 2616).
- Added client validation API to replace passing userids asynchronously.
- Added cURL extension, available to other extensions (bug 3560).
- Added parsing of custom gamedata files (bug 3644).
- Added case insensitivity search to ReplaceString (bug 3639, Fyren).
- Added more detail to certain player-oriented menu titles (bug 2740, Fyren).
- Added sv_tags API (bug 3677).
- Greatly improved admin-sql-prefetch performance for large tables (bug 3354, FLOOR_MASTER).
- Exposed IServer address to extensions (bug 3545).
- New gamedata organization; files are now smaller and per-game (bug 3546).
- Split sound functions into a new plugin, sounds.smx.
- Fixed slap and slay on Insurgency (bug 2560).
- Fixed blank admins being created from invalid admin file lines (bug 3431).
- Fixed basetriggers not working on Insurgency (bug 3497).
- Fixed client preferences missing some clients (bug 3616).
- Improved database fallback mechanism in clientprefs (bug 3564).
- Improved timer handling in funcommands (bug 3498).
- Improved compile.sh to take filenames (bug 3550, jonasfietz).
- sm_kick now shows the kick reason when available.
- Fixed MsgPostHook (ex MsgSentNotify) callbacks not firing on intercept hook (bug 3631).
- Note: SourceMod now adds "sourcemod" to the sv_tags cvar.