When an admin initiates a ban from a BaseBans GUI menu, track players by
their AuthId (SteamID) instead of userid, so that the admin is able to
target players who disconnect after that menu was constructed.
If the target player is still connected, use their userid to ban the
same as before this commit.
If the target has disconnected, write a ban using their stored AuthId
value, as with "sm_addban".
This commit also revertss the `(admin==0)` check from PrepareBan that
was mistakenly added by bf7212889b,
because it would prevent banning from server/RCON (client index 0).
Fix#1768
The `sm_admin`-triggered Menu flow for banning players is caching client
indices inside the basebans.sp `PlayerInfo` struct, and can then
incorrectly use them in the menu callback without checking for the
related client's UserId validity. This leads to bug #1768 occurring when
the ban target player disconnects from the server before the banning
admin could complete the banmenu UI flow.
Since the related menu callbacks can't rely on the cached client index,
I have removed the basebans.sp `PlayerInfo.banTarget` member entirely,
in favor of the `PlayerInfo.banTarget`, and instead call
`GetClientOfUserId(...)` to get & validate the target client index where
necessary. The `PrepareBan(...)` function has been refactored to take a
ban target UserId (instead of the target client index) accordingly.
* Update SDKCall return information
This adds the information that if the return value is a string then SDKCall will return the number of bytes written.
* Update description
* Add info if the string is null
The current ``KvSavePosition`` definition does not reflect the behaviour seen in [core/smn_keyvalues.cpp#L973-L981](404e96ad45/core/smn_keyvalues.cpp (L973-L981)). This can cause problems if some procedure on sp expects ``KvSavePosition`` to always add one node to the stack, no matter if there is no higher node.
Co-authored-by: peace-maker <peace-maker@wcfan.de>
* Remove obsolete slapslay.phrases.txt
That plugin isn't in the stock arsenal since forever.
* Remove "Dead Player Rename" phrase
Unused since #313
* Remove nominations phrases from rockthevote
Those phrases were moved to their own nominations.phrases.txt
* Remove "Next Map" phrase from nextmap.phrases.txt
It was moved to basetriggers.phrases.txt
* Remove unused phrases from common.phrases.txt
Only "Slapped Player" was moved to funvotes.phrases.txt
* Delete empty phrase files
* Fix workflow python version selection
3.10 would select Python 3.1 and fail
* Deduplicate "Please select a map" phrase
Only keep it in the plugin.basecommands.txt file and remove it from the basevotes.phrases.txt.
Both plugins using the phrase load the basecommands phrases.
* Allow manual triggering of translations action
* Actually use the nextmap phrases
They were never referenced in the plugin. The "ago" phrase doesn't work the way it is and needs more rethinking.
Support L4D(2) Friendly Fire In Basetriggers.sp #1522
- Games have cvar mp_friendlyfire min. and max. bounds set to 1
- Removing mp_friendlyfire lower bound and set to 0, cvar have no purpose on friendly fire damage.
- FF works from z_difficulty and each difficult level have FF damage ration cvars:
survivor_friendly_fire_factor_easy
survivor_friendly_fire_factor_normal
survivor_friendly_fire_factor_hard
survivor_friendly_fire_factor_expert
Update added PRINT_TO_ things from previous update.
Co-authored-by: Bacardi <>
* Build SDKTools for hl2sdk-mock
* Fix loading of extensions using advanced naming scheme for hl2sdk-mock
* Fix error on missing sv_visiblemaxplayers convar
* Build SDKHooks for hl2sdk-mock
* Fix x86_64 SourcePawn VM filename
* SDKHooks: Ignore missing IEntityListeners list in hl2sdk-mock
* Add CommandIterator.ConVarFlags property
Allow to access the convar flags `FCVAR_*` value from the iterator.
The CommandIterator.Flags property should have been called `AdminFlags`,
but it's too late to change that now.
* Switch admin help menu to use CommandIterator.ConVarFlags
No need to lookup the convar again.
* Deprecate CommandIterator.Flags
Rename it to .AdminFlags now that we have two kinds of flags exposed
on the iterator.
Allows using `FCVAR_HIDDEN` to block commands from appearing in `sm_help` and `sm_searchcmd` which helps with creating alias to commands without filling up the list with those aliases.
For example:
```sourcepawn
RegAdminCmd("sm_setmyperk", MyCommand, ADMFLAG_CHEATS);
RegAdminCmd("sm_setmyperks", MyCommand, ADMFLAG_CHEATS, _, FCVAR_HIDDEN);
RegConsoleCmd("ff2_boss", MyCommand);
RegConsoleCmd("ff2boss", MyCommand, _, FCVAR_HIDDEN);
```
* Initial PVKII branch support
* Change PVKII code to 23, DOTA uses 22 in MM
* Bunch more SE_PVKII preprocessor that was missed
* Add some missing SOURCE_ENGINE_PVKII cases
* Update PVKII FireOutput signature for Linux
* Update checkout-deps with 'pvkii'
* Fix FireOutput signature for PVKII, accidentally used one from newer build
* Change PVKII code to 10, and bump others by 1
* Only check against SE_SDK2013 here, like Metamod
* More SE_PVKII preprocessor cleanup
* Add a PluginIterator methodmap
* Follow convention
* Update sourcemod.inc
* Turn method ReadPlugin into property Plugin
* Requested change
* Update sourcemod.inc
* Curse you VSC
* Follow behavior of other iterators instead of the natives
* Fix a stray space
* Implement a hacked CPluginIterator
* Oops
Copy paste go brr
* Revert a change made before the custom impl
Adds an OnPlayerRunCmdPre forward in order for plugins to be able to hook OnPlayerRunCmd with the guarantee that none of the parameters have been modified by other plugins. As such, OnPlayerRunCmdPre's parameters cannot be modified and are read-only.
Plugins that wish to use OnPlayerRunCmdPre can maintain backwards compatibility with SourceMod 1.10 by falling back to OnPlayerRunCmd if the Pre variant was never fired.
* DHooks: Allow setting CBaseEntity* param to NULL #1751
The param had to be a valid entity and wasn't allowed to be set to NULL. Behave similar to SetReturn which maps INVALID_ENT_REFERENCE (or -1) to NULL.
* Update include documentation