Basically a programmable Stripper:Source
for plugin developers.
Parses out the level string provided in SDKHooks' OnLevelInit
forward into individual sets of entity properties and provides forwards for other plugins to easily read / add / remove / modify said properties.
A few examples are available here.
Things the plugin will clobber:
Seemingly doesn't play nice with Stripper:Source, as it and SDKHooks both cache their own level entity string.
I don't know if other Source Engine games use a different format for their entity strings; this was only tested against TF2. I assume it can support any game that also supports Stripper:Source (or Hammer by extension, I guess).
This is very much beta, not-rigorously tested software that I was commissioned to write and allowed to release publicly.
Expect breaking API changes, as I'm still not quite happy with how it's designed.
Mostly thinking about abstracting away the StringMultiMap dependency so client plugins don't need to depend on the backing implementation.
I've decided to keep it tied to StringMultiMaps
for the sake of development simplicity; no need to keep native functions in sync against the development of More ADTs.
If you're brave enough to try it, please report any bugs you come across.
Requires More ADTs
, a custom extension that exposes an additional collection handle type to SourceMod. The extension provides StringMultiMap
handles, which are pretty much StringMap
handles that allow duplicate keys (which are necessary to support entity outputs). The extension hasn't been rigorously tested either (basically purpose-built for this plugin) and I'm a C++ scrub, so check a look at that as well and let me know of any major errors.
Additionally, I've written up a drop-in replacement for Stripper:Source that uses this library. Or at least tried to; not sure if every config works 100% the way that it should (the issue should mostly be with ones that aren't well-formed).
(Level KeyValues: Stripper)