- Changed signature call of `CanPlayerTeleport` for linux/linux64 to current used name
- Applied fix at detour class CanPlayerBeTeleported to use standard parameter proceedings for linux
* Add new IntHashMap and IntMap natives
This is a continuation of #579.
[HashMap] Adds new IntHashMap and IntMap natives.
This patch makes the following changes
* Refactors StringHashMap to a generic HashMap template
* Adds the IntHashMap class
* Adds new IntMap natives
* Adds IntMap tests to the tries test suite
[HashMap] Reverted rename of CharsAndLength
[HashMap] Use more descriptive template names
[HashMap] Removed old-style natives
[HashMap] Removed IntHash class
[HashMap] Reverted some search & replace errors
Co-authored-by: Geoffrey McRae <geoff@hostfission.com>
* Fix spelling mistake + include
* Fix tries test
* Update tests with clone + ContainsKey
---------
Co-authored-by: Geoffrey McRae <geoff@hostfission.com>
Co-authored-by: Nicholas Hastings <nshastings@gmail.com>
* Add x64 Windows support
* undo changes of hook.cpp
* undo changes of hook.h
* undo changes of extension.cpp
* undo changes of listeners.cpp
* undo changes of signatures.cpp
* fix dhooks on x86
* Fix-up dhooks buildscript
---------
Co-authored-by: Kenzzer <kenzzer@users.noreply.github.com>
* fix sdktools crash on 64 bits
* remove other 32bit-isms from sdktools
* Swap sizeof(intptr_t) for sizeof(void *)
---------
Co-authored-by: Nick Hastings <nshastings@gmail.com>
* Reconcile the concept of Edict & Networkable across the codebase
* There's no need to check this, it's done elsewhere. Also could be null (segfault)
* This was never needed
* Pseudo review changes
Re-added removed null checks, and added new ones.
Changed the error messages in Get/SetProp natives to better reflect reality.
* Don't change the behaviour of GetEntityNetClass
* Overload IGameHelpers::FindServerClass
* Make error messages more accurate
* Fix a dev comment
* Rename FindServerClass
---------
Co-authored-by: Kenzzer <kenzzer@users.noreply.github.com>
* Add safetyhook, remove libudis86
Co-authored-by: bottiger1 <55270538+bottiger1@users.noreply.github.com>
* Add modified CDetour
Co-authored-by: bottiger1 <55270538+bottiger1@users.noreply.github.com>
* Add CDetour [Safetyhook] to build script
* Re-enable loader/core/corelogic, and fix new C++20 error
* Reenable all extensions (except dhooks)
* Make cstrike compile against new CDetour
* Remove unused variable in sdktools output?
* Make sdktools compile against new cdetour
* Downgrade to C++17
* remove auto
* fix compilation on linux
* Re-enable dhooks
* Re-authorise old compilers
* Fix invalid downgrade of std::optional
* readd libudis86 for dhooks only
---------
Co-authored-by: Kenzzer <kenzzer@users.noreply.github.com>
Co-authored-by: bottiger1 <55270538+bottiger1@users.noreply.github.com>
* Band-aid for Bulk SDKHooks performance impact on linux
Platform specific changes.
* Oops forgot about header
* Simplified/improved LevelShutdown code
* Fix 64-bit JIT not allocating stack space for params on stack
Fix wrong cond check for passing objects by value
* Fix wrong FireOutput detour proto on win64
* Fix AcceptEntityInput on 64 bit by using struct from SDK instead of pointer math.
* Fix from Malifox. Not sure what it does but it is supposedly related to the AcceptEntityInput crash.
* Fix episode1 and darkm sdk paths
This brings in a few breaking changes.
One, INVALID_FUNCTION is now 0 instead of -1. This is long overdue.
Plugins should transparently work except in two cases:
1. Third-party extensions that have a hardcoded test for -1 will no
longer work. A new API has been provided for this,
GetFunctionByIdOrNull.
2. If a plugin "framework" uses INVALID_FUNCTION anywhere in its
exported API, then all plugins using that framework need to be
recompiled together, so they agree on the value of
INVALID_FUNCTION.
Hopefully the damage here is minimal. The core plugin version has been
bumped to 7 to try and limit conflicts.
Second, braceless functions are no longer supported. There wasn't really
any way around this and it's better to bite the bullet now. This affects
source compatibility, but not binary compatibility.
Third, the "using" keyword is no longer implemented. SourceMod now has a
Handle methodmap again. Plugins compiled against this new methodmap will
require a "Handle.~Handle" native, which 1.12 now provides.
* 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
* Fix SDKHook_Use callback result handling
The returned result of the last callback in the list was used instead
of the highest value. This differs from the behavior of the other hooks.
* Fix SDKHook_Spawn callback result handling
The returned result of the last callback in the list was used instead
of the highest value. This differs from the behavior of the other hooks.
* Fix SDKHook_GetMaxHealth callback result handling
The returned result of the last callback in the list was used instead
of the highest value. This differs from the behavior of the other hooks.
The returned health is only changed if no other plugin wants to block the callback.
* 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
The passflags are only supported by SourceHook for virtual hooks and are ignored for detours with DynamicDetours. This caused confusion, so throw an error when trying to set e.g. the DHookPass_ByRef flag on detour arguments.
We always created a new vector object instead of changing the passed in vector directly. This works for the function being called using our changed values - but the caller doesn't see the changed values if it's passing a vector by reference.
Only create a new vector if there isn't one being passed in and set the values directly in the passed in vector otherwise.
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