This simplifies non-sdk build scripts by removing their loops over SM.archs. Instead the top-level
build script will re-evaluate them for each architecture.
This change makes it so /kick, /ban, and /map open the already created methods for displaying their menus when there are no args.
The reason for the feature is to take advantage of menus that already exist and to make the commands easier to use.
The client == 0 check prevents them from opening if it was ran via rcon, sm_rcon, or server command. Client auth is also checked because its a registered admin command.
Usage params will display if client == 0 and args < min
For example, a moderator wants to change a map, instead of running through the admin menu, they can instead type just /map to display available maps and choose one.
If a mod wants to quickly ban or kick someone without having to either run through the admin menu or type it out, they could then type the corresponding commands with no args to open the menus.
These two base plugins are using the MAPLIST_FLAG_NO_DEFAULT when they shouldn't, which causes much user (and SM developer) confusion as it is completely counter to the documentation.
This doesn't break any extensions NOT using IDataPack, and we do not know of any that are.
* The extension storage utility of this interface has been broken for the last 9 months, with ISourceMod::CreateDataPack being disabled.
* The plugin interop utility of this interface (its stated purpose) has been broken for the last 11+ years, with ISourceMod::GetDataPackHandleType being disabled.
I imagine it only survived the first cleanup 11 years ago because CSS:DM was using it internally, which it has now been migrated away from.
Compiled all the included extensions without changes (API compat), and loaded extensions build pre-change without issue (ABI compat).
The `TopMenu` methodmap natives weren't marked as optional if the extension was optional like the other normal natives.
The `Regex` natives weren't marked as optional at all before if the regex extension was included optionally.
This makes the error message cleaner in case topmenus aren't loaded.
```
adminmenu.smx (Admin Menu): Required extension "TopMenus" file("topmenus.ext") not running
basebans.smx (Basic Ban Commands): Native "TopMenu.Display" was not found
```
* Match old DataPack behavior when overwriting data
* Make RemoveItem more flexible
* Ditch implied RemoveItem behavior & asher fixes
* KyleS nits - but fixed before he says them
* Add back implicit behavior
* Update CDataPack.cpp
Committing to the spec.
* Update CDataPack.h
* fixup removing last item if explicitly requested
* Fix logic for accepting pack pos, rather than index
* Fixup IsReadable
* headache is over now
* Fix rockthevote not clearing g_Voted on fakeclients.
* remove g_RTVAllowed in rockthevote as it's unused.
* Fix basebans using the wrong forward for configs.
* Prevent sm_addban from banning an immune steam adminid.
* Sprinkle in IsChatTrigger checks to plugins with plaintext chat hooks.
* fixup g_Voted[client] in OnClientDisconnect
* Make mac/win lookups lowercase'd
* Revert #709 & 81042cc
* Adjust HashPolicy implementation across sourcemod
Basically, in order to implement our own (actual) hash policy in
`PluginSys.h`, we needed to remove the blanket implementation of `hash`
that was used before. Now, each policy must implement `hash` along with
`matches` in order to be used with `NameHashSet`. While this does force
us to change every implementation of policies across the entirety of
sourcemod, it allows core to use flexible implementations of `hash`.
* Remove logic duplication
* Improve lowercase checks
* Add profiler methodmap
* No tag mismatches here
thanks pm
* Lets fix some documentation while we're here.
* Use proper methodmap documentation style
Across sm we use `//` for methodmap docs, so lets just keep this consistent