Raised This Month: $4 Target: $400
 1% 

[L4D & L4D2] Left 4 DHooks Direct (1.81) [30-Nov-2021]


Post New Thread Reply   
 
Thread Tools Display Modes
Author
Silvers
AlliedModders Donor
Join Date: Aug 2010
Location: SpaceX
Plugin ID:
6954
Plugin Version:
1.81
Plugin Category:
General Purpose
Plugin Game:
Left 4 Dead
Plugin Dependencies:
    Servers with this Plugin:
    204 
    Plugin Description:
    Left 4 Downtown and L4D Direct conversion and merger.
    Old 02-24-2020 , 02:00   [L4D & L4D2] Left 4 DHooks Direct (1.81) [30-Nov-2021]
    Reply With Quote #1

    About:

    Originally two Extensions [L4D1] Left 4 Downtown created by "Downtown1" and [L4D2] Left 4 Downtown 2 by "ProdigySim" and maintained by various others, this is an all-in-one port to DHooks with many additions.

    This also merges natives from L4D2_Direct by "ProdigySim" and L4D_Direct port by "raziEiL".

    Since version 1.73 many stocks were added. From "l4d_stocks" include file by "Mr. Zero" and "lux_library" include file by "Lux".

    Also created natives from the "l4d2addresses.txt" gamedata by "AtomicStryker" and who?

    I done this to learn some stuff, add missing natives and forwards to L4D1 and add more features. Also because the extensions are often broken with SourceMod updates and confusing to find the latest gamedata or working version.

    Thanks to Lux and a conversation we had: using the plugin iterator and GetFunctionByName to detect which forwards are being used by plugins. This will only detour functions being used by other plugins. Plugins are rescanned on map change.



    Features:
    • Many new forwards and natives in L4D1 and L4D2.
    • Many stock functions added to the include files.
    • Additional features not present in the Extension versions.
    • Test plugin demonstrating animation hooks + all forwards and natives capabilities.

    • Addons Disabler included (L4D2 only).
    • The native L4D_LobbyUnreserve is NOW finally supported from version 1.16 and newer!
    • Dynamic detouring - only detours forwards required by other plugins. Rescans on map change.

    • Animation hooks to modify player animations.
    • View the left4dhooks.*.cfg files in the \addons\sourcemod\data\ folder for activity names and sequence numbers.
    • View the left4dhooks_anim.inc file in the \addons\sourcemod\scripting\include\ folder for activity constants for usage in plugin source code.

    • Natives to execute VScripts (L4D2 only) and retrieve return data.
    • Some natives as wrappers to VScript functions (L4D2 only).

    • Various target filters (used in commands for example "sm_slay @survivors"):
    • Spoiler



    Bugs:
    • Forwards L4D2_OnSendInRescueVehicle and L4D2_OnUseHealingItems are blocked in Linux L4D1/L4D2 to prevent crashes. Waiting for DHooks update to support object returns.

    • Developers are tasked with ensuring they provide valid client and entity indexes when using Natives.
    • This is to prevent duplicating checks and additional overhead inside left4dhooks.

    • Reporting Bugs: State which game. Explain how to replicate the issue. Show the plugin or code or PM me if code is private.

    • Test Plugin: Shows usage of all forwards and natives. See the examples provided to understand what is possible.



    Thanks:
    • Dr!fter and Peace-Maker - For the DHooks Dynamic Detour extension and various help.
    • Lux - Lots of technical support and ideas + figuring out why some detours were broken.
    • Lux - For the "lux_library.inc" include file.
    • Mr. Zero - For the "l4d_stocks.inc" include files.
    • Dragokas - Server and support testing in Linux for both games, and various stocks.
    • Spirit_12 - Various ideas and support. Suggesting to incorporate "l4d2_direct.inc".
    • xZk - Support testing and helping find a crash.
    • Nuki - Suggesting to incorporate "l4d2_addresses.txt".
    • Forgetest - Various fixes, requests and suggestions.
    • Psyk0tik - Various signatures, requests and suggestions.
    • BHaType - Various offsets, requests and suggestions.
    • Marttt - Various plugins and testing.
    • Various people posting in this thread with reports.
    • Thanks to the following individuals for their contribution to the Extensions.
    • This plugin was made using source code from the following plugins:
    Spoiler



    Admin Commands: (requires "z" flag)
    PHP Code:
    // Lists the currently active forwards and the plugins using them.
    sm_l4dd_detours or sm_l4dhooks_detours

    // Reloads the detour hooks, enabling or disabling depending if they're required by other plugins.
    // When adding or removing plugins that use any detours during gameplay. To optimize forwards by disabling unused or enabling required functions that were previously unused.
    sm_l4dd_reload or sm_l4dhooks_reload

    // Removes lobby reservation.
    sm_l4dd_unreserve 


    CVars:

    Saved to left4dhooks.cfg in your servers \cfg\sourcemod\ folder.

    PHP Code:
    l4d2_addons_eclipse "-1" // L4D2 only. Addons Manager (-1: use addonconfig; 0: disable addons; 1: enable addons.
    left4dhooks_version // Left 4 DHooks Direct plugin version. 



    All Forwards, Natives and Stocks:
    • Assume everything is L4D1 and L4D2 compatible unless otherwise stated.
    • View the include files for detailed descriptions.
    • View the test plugin for usage demonstrations.

    Forwards: (L4D1 = 61 & L4D2 = 78)
    Spoiler


    Natives: (L4D1 = 126 & L4D2 = 212)
    Spoiler


    Stocks: (L4D1 = 106 & L4D2 = 149)
    Spoiler



    Changes:
    Code:
    1.81 (30-Nov-2021)
        - Fixed forward "L4D_OnVomitedUpon" sometimes throwing errors about null pointer. Thanks to "Krufftys Killers" for reporting.
        - Changed function "Local_GetRandomClient" in "left4dhooks_silver.inc" to be stock. Thanks to "A1m" for reporting.
    
        - Updated: Plugin.
        - Updated: "left4dhooks_silver.inc" Include file.
    
    1.80 (24-Nov-2021)
        - Fixed forward "L4D_OnSpawnSpecial_Post" param error. Thanks to "fdxx" for reporting.
    
    1.79 (23-Nov-2021)
        - Changed forward "L4D_OnSpawnSpecial_Post" prototype to remove the reference variable.
    
        - Updated: Plugin and Test plugin.
        - Updated: "left4dhooks.inc" Include file.
    
    1.78 (23-Nov-2021)
        - Added forwards "L4D_OnSpawnSpecial_Post", "L4D_OnSpawnTank_Post", "L4D_OnSpawnWitch_Post" and "L4D2_OnSpawnWitchBride_Post". Requested by "A1m".
        - Added stocks "GetAnyRandomClient", "GetRandomSurvivor" and "GetRandomInfected" to the "left4dhooks_silver.inc" include file.
    
        - Updated: Plugin and Test plugin.
        - Updated: "left4dhooks.l4d1" and "left4dhooks.l4d2" GameData files.
        - Updated: "left4dhooks.inc" and "left4dhooks_silver.inc" Include files.
    
    1.77 (21-Nov-2021)
        - Fixed not detouring some functions when only 1 detour was used instead of both pre and post. Thanks to "fdxx" for reporting.
    
    1.76 (20-Nov-2021)
        - Fixed native "L4D2_IsReachable" using a bad signature. Thanks to "tRololo312312" for reporting.
        - Wildcarded the "Music::Play" signatures to be compatible with plugins detouring. Thanks to "user2000", "Edison1318" and "Shadowysn" for reporting.
        - Wildcarded the "ZombieManager::SpawnTank" signatures to be compatible with plugins detouring. Thanks to "Tank Rush" for reporting.
    
        - L4D1 and L4D2 GameData files updated.
    
    1.75 (18-Nov-2021)
        - Fixed forward "L4D2_OnHitByVomitJar" throwing errors about null pointer.
        - Forwards "L4D_OnVomitedUpon" and "L4D2_OnHitByVomitJar" attacker can now be reported as 0.
    
        - "left4dhooks_silver.inc" include:
            - Deprecated stock "L4D_IsPlayerIncapped".
    
        - "left4dhooks_stocks.inc" include:
            - Renamed the stock "L4D_HasAnySurvivorLeftSafeArea" to "L4D_HasAnySurvivorLeftSafeAreaStock" (the native "L4D_HasAnySurvivorLeftSafeArea" still exists).
            - Fixed compile errors on SourceMod version 1.11. Thanks to "user2000" for reporting.
            - Replaced indentation spaces with tabs.
    
        - Note: "#include <left4dhooks>" will load all <left4dhooks_*> includes. Other "#include <left4dhooks_*>" will attempt to load each other if included on their own.
        - Only required to use "#include <left4dhooks>" for all features and stocks availability.
    
        - Plugin and Include files updated.
    
    1.74 (16-Nov-2021)
        - Fixed releasing 1.73 with the wrong "left4dhooks_stocks.inc" include file version. Thanks to "moschinovac" for reporting.
    
    1.73 (15-Nov-2021)
        - Added tons of new stocks! About 147!
    
        - Added some new enums to the "left4dhooks_silver.inc" include file: "L4D_TEAM_*", "L4D_ZOMBIE_CLASS_*", "L4D2_ZOMBIE_CLASS_*" and "L4D_WEAPON_SLOT_*".
        - Added new include file "left4dhooks_lux_library.inc" - various new stocks from "lux_library.inc". Thanks to "Lux" for the original file and allowing use.
        - Added new include file "left4dhooks_silver.inc" - various new stocks. This will be updated over time to add new simple stock functions.
        - Added new inclide file "left4dhooks_stocks.inc" - various new stocks from "l4d_stocks.inc". Thanks to "Mr. Zero" for the original files.
        - This is also combined with the "l4d_weapon_stocks.inc" include file by "Mr. Zero".
        - Only required to copy to the "scripting/include" directory when compiling, "left4dhooks.inc" will include these automatically.
    
        - New GameData file "lux_library.txt" used for the "left4dhooks_lux_library.inc" include file. Thanks to "Lux" for providing these.
    
        - Updated: Plugin, Test plugin, Include file.
        - Added: New include files and GameData file.
    
    1.72 (10-Nov-2021)
        - Added native "L4D_GetPointer" to return various pointer addresses.
        - Added native "L4D_GetClientFromAddress" to return a client index from a memory address.
        - Added native "L4D_GetEntityFromAddress" to return an entity index from a memory address.
        - Added native "L4D_ReadMemoryString" to read a string from a memory address.
        - Added native "L4D_GetServerOS" to return the current server OS.
    
    1.71 (07-Nov-2021)
        - Fixed native "L4D2_GetSurvivorSetMod" not being restricted to L4D2. Thanks to "HarryPotter" for reporting.
        - Plugin now loads about 1 second faster and no longer creates about 1 second delay on map changes.
        - Changes to the "sm_l4dd_detours" and "sm_l4dhooks_detours" commands to prevent errors when using the DEBUG or DETOUR defines.
    
    1.70 (07-Nov-2021)
        - Added native "L4D_TankRockPrj" to create a Tank Rock projectile.
        - Added native "L4D_DetonateProjectile" to detonate grenade projectiles.
        - Added natives to L4D2: "L4D2_GetSurvivorSetMap" and "L4D2_GetSurvivorSetMod" to return the maps and modified Survivor set.
        - Changed forwards "L4D_OnGetSurvivorSet" and "L4D_OnFastGetSurvivorSet" to post hooks to retrieve the correct value. Thanks to "Gabe Iggy" for reporting.
        - Fixed detours "OnShovedBySurvivor_Clone" and "OnStaggered_Clone" being broken on L4D1 linux. Thanks to "HarryPotter" for reporting.
    
        - GameData files, include file and plugins updated.
    
    1.69a (04-Nov-2021)
        - Added missing forwards "L4D_OnPouncedOnSurvivor" and "L4D2_OnStartCarryingVictim" to the include file. Thanks to "ProjectSky" for reporting.
    
    1.69 (03-Nov-2021)
        - Added forward "L4D_OnPouncedOnSurvivor" to notify when a Survivor is being pounced on by a Hunter.
        - Added forward "L4D2_OnStartCarryingVictim" to L4D2 to notify when a Survivor is being grabbed by a Charger.
        - Fixed some natives disabling the plugin if their signatures broke. Only their functionality will break.
    
        - GameData files, include file and plugins updated.
    
    1.68 (02-Nov-2021)
        - Added forward "L4D_OnGrabWithTongue" to L4D2 to notify when someone is about to be grabbed by a Smoker Tongue. Requested by "Alexmy".
        - Added forward "L4D2_OnJockeyRide" to notify when someone is about to be ridden by a Jockey. Requested by "Alexmy".
        - Cleaned and consolidated the code: standardized gamedata names, function names and variable names.
        - Compatibility support for SourceMod 1.11. Fixed various warnings.
    
        - GameData files, include file and plugins updated.
    
    1.67 (25-Oct-2021)
        - Fixed the create projectile natives from failing still when passing 0 entity index. Thanks to "BHaType" for reporting.
        - Fixed L4D1 Linux forward "TryOfferingTankBot" sometimes throwing errors. Thanks to "HarryPotter" for reporting.
        - Fixed L4D1 setting "L4D2FWA_PenetrationNumLayers" - float values will be rounded to ceiling. Thanks to "epzminion" for finding and "Psyk0tik" for reporting.
        - Fixed target filters "@isb" and "@isp" being flipped.
    
    1.66 (21-Oct-2021)
        - Fixed L4D1 Linux not finding the "g_pWeaponInfoDatabase" signature. Thanks to "Ja-Forces" for reporting.
        - L4D1 GameData updated.
    
    1.65 (20-Oct-2021)
        - Changed forward "L4D2_CGasCan_EventKilled" params to show the inflictor and attacker.
        - Thanks to "ProjectSky" for reminding me.
    
        - Plugins and include file updated.
    
    1.64 (20-Oct-2021)
        - Added 1 new forward to L4D1 and L4D2:
            - "L4D_CBreakableProp_Break" - When a physics prop is broken.
    
        - Added 3 new forwards to L4D2:
            - "L4D2_CGasCan_EventKilled" - When a GasCan is destroyed.
            - "L4D2_CGasCan_ActionComplete" - When a Survivor has finished pouring gas.
            - "L4D2_CInsectSwarm_CanHarm" - When Spitter Acid is checking if a player or entity can be damaged.
    
        - Added 1 new native to L4D1 and L4D2:
            - "L4D_GetWeaponID" - to get the Weapon ID by classname
    
        - Added and unlocked all the weapon attribute modification natives to L4D1:
        - Thanks to "Psyk0tik" for the suggestion and information about offsets.
            - "L4D2_IsValidWeapon"
            - "L4D2_GetFloatWeaponAttribute" and "L4D2_SetFloatWeaponAttribute"
            - "L4D2_GetIntWeaponAttribute" and "L4D2_SetIntWeaponAttribute"
            - "L4D2IntWeaponAttributes" enums - ("L4D2IWA_Bullets", "L4D2IWA_Damage", "L4D2IWA_ClipSize")
            - "L4D2FloatWeaponAttributes" enums - ("L4D2FWA_MaxPlayerSpeed", "L4D2FWA_SpreadPerShot", "L4D2FWA_MaxSpread", "L4D2FWA_Range", etc)
    
        - Added new target filters (requested by Tonblader):
            "@deads" - Dead Survivors (all, bots)
            "@deadsi" - Dead Special Infected (all, bots)
            "@deadsp" - Dead Survivors players (no bots)
            "@deadsip" - Dead Special Infected players (no bots)
            "@deadsb" - Dead Survivors bots (no players)
            "@deadsib" - Dead Special Infected bots (no players)
            "@sp" - Survivors players (no bots)
            "@isp" - Special Infected players (no bots)
            "@isb" - Incapped Survivor Only Bots
            "@isp" - Incapped Survivor Only Players
    
        - Changed target filter names (requested by Tonblader):
            "@incappedsurvivorbot" to "@rincappedsurvivorbot"
            "@isb" to "@risb"
            "@survivorbot" to "@rsurvivorbot"
            "@sb" to "@rsb"
            "@infectedbot" to "@rinfectedbot"
            "@ib" to "@rib"
            "@tankbot" to "@rtankbot"
            "@tb" to "@rtb"
    
        - Added "FINALE_*" enums to the include file for use with the "L4D2_ChangeFinaleStage" and "L4D2_GetCurrentFinaleStage" natives and "L4D2_OnChangeFinaleStage" forward.
        - Thanks to "Dragokas" for suggesting.
    
        - GameData files, include file and plugins updated.
    
    1.63 (15-Oct-2021)
        - Changed all projectile natives to allow passing 0 (world) instead of a client index. Thanks to "BHaType" for reporting.
        - Changed forward "L4D_OnGameModeChange" from "Action" type to "Void". Thanks to "Psyk0tik" for reporting.
        - Fixed commands "sm_l4dd_detours" and "sm_l4dhooks_detours" not showing all forwards when they have pre and post hooks.
    
        - Added 11 new forwards to L4D1 and L4D2. Thanks to "Psyk0tik" for the suggestions, signatures and detour functions.
            - "L4D_TankClaw_DoSwing_Pre" - When a tank is swinging to punch.
            - "L4D_TankClaw_DoSwing_Post" - When a tank is swinging to punch.
            - "L4D_TankClaw_GroundPound_Pre" - When an tank punches the ground.
            - "L4D_TankClaw_GroundPound_Post" - When an tank punches the ground.
            - "L4D_TankClaw_OnPlayerHit_Pre" - When a tank swings and punches a player.
            - "L4D_TankClaw_OnPlayerHit_Post" - When a tank swings and punches a player.
            - "L4D_TankRock_OnDetonate" - When a tank rock hits something.
            - "L4D_TankRock_OnRelease" - When a tank rock is thrown.
            - "L4D_PlayerExtinguish" - When a player is about to be extinguished.
            - "L4D_PipeBombProjectile_Pre" - When a PipeBomb projectile is being created.
            - "L4D_PipeBombProjectile_Post" - After a PipeBomb projectile is created.
    
        - Added 1 new forward to L4D2. Thanks to "Lux" for the suggestion, signature and detour functions.
            - "L4D2_MeleeGetDamageForVictim" - When calculating melee damage to inflict on something.
    
        - GameData files, include file and plugins updated.
    
    1.62 (08-Oct-2021)
        - L4D1 Linux: Update thanks to "Forgetest" for writing.
        - L4D1 Linux: Fixed issues with the forwards "L4D_OnShovedBySurvivor" and "L4D2_OnStagger". Thanks "HarryPotter" for reporting.
    
        - L4D1 GameData file and plugin updated.
    
    1.61 (05-Oct-2021)
        - Added natives "L4D_GetTempHealth" and "L4D_SetTempHealth" to handle Survivors temporary health buffer.
        - Added natives "L4D_PlayMusic" to play a specified music string to a client. Thanks to "DeathChaos25" and "Shadowysn" for "Dynamic Soundtrack Sets" plugin.
        - Added natives "L4D_StopMusic" to stop playing a specified music string to a client. Thanks to "DeathChaos25" and "Shadowysn" for "Dynamic Soundtrack Sets" plugin.
        - Moved the animation ACT_* enums from "include/left4dhooks.inc" to "include/left4dhooks_anim.inc". Suggested by "Accelerator". No plugin changes required.
    
        - Thanks to "Psyk0tik" for requesting the following forwards and natives and their signatures found here: https://github.com/Psykotikism/L4D1-2_Signatures
    
        - Added natives:
            - "L4D2_HasConfigurableDifficultySetting" - Returns if there is a configurable difficulty setting.
            - "L4D2_IsGenericCooperativeMode" - Returns if the current game mode is Coop/Realism mode.
            - "L4D_IsCoopMode" - Returns if the current game mode is Coop mode.
            - "L4D2_IsRealismMode" - Returns if the current game mode is Realism mode.
            - "L4D2_IsScavengeMode" - Returns if the current game mode is Scavenge mode.
            - "L4D_IsSurvivalMode" - Returns if the current game mode is Survival mode.
            - "L4D_IsVersusMode" - Returns if the current game mode is Versus mode.
    
        - Added forwards:
            - "L4D_OnFalling" - Called when a player is falling.
            - "L4D_OnFatalFalling" - Called when a player is falling in a fatal zone.
            - "L4D2_OnPlayerFling" - Called when a player is flung to the ground.
            - "L4D_OnEnterStasis" - Called when a Tank enters stasis mode in Versus mode.
            - "L4D_OnLeaveStasis" - Called when a Tank leaves stasis mode in Versus mode.
    
        - GameData files, include file and plugins updated.
    
    1.60 (29-Sep-2021)
        - Added native "L4D2_GrenadeLauncherPrj" to create an activated Grenade Launcher projectile which detonates on impact. L4D2 only.
        - Fixed L4D1 Linux "MolotovProjectile_Create" signature. Thanks to "Ja-Forces" for reporting.
    
    1.59 (29-Sep-2021)
        - HotFix: Fix Linux not loading the last 2 natives.
    
    1.58 (29-Sep-2021)
        - Added native "L4D_MolotovPrj" to create an activated Molotov projectile which detonates on impact.
        - Added native "L4D2_VomitJarPrj" to create an activated VomitJar projectile which detonates on impact. L4D2 only.
        - Added "STATE_*" enums to the include file for use with the "L4D_State_Transition" native. Thanks to "BHaType" for providing.
        - Fixed some incorrect information in the include file. Thanks to "jackz" for reporting.
    
        - GameData files, include file and plugins updated.
    
    1.57 (18-Sep-2021)
        - Changed the method for getting the current GameMode. Should have no more issues. Thanks to "ddd123" for reporting.
        - L4D2: Wildcarded the "CTerrorPlayer::Fling" signature for compatibility with being detoured. Thanks to "ddd123" for reporting.
    
        - L4D2 GameData file and plugin updated.
    
    1.56 (15-Sep-2021)
        - Fixed spawning an entity directly OnMapStart (can cause crashes), delayed by a frame to fix errors. Thanks to "fdxx" for reporting.
    
    1.55 (12-Sep-2021)
        - Fixed native "L4D2Direct_TryOfferingTankBot" not working for L4D1 Linux due to the last update. Thanks to "Forgetest" for reporting.
        - L4D1 gamedata file updated only.
    
    1.54 (12-Sep-2021)
        - Big thanks to "Forgetest" and "HarryPotter" for helping fix and test this release.
    
        - Added forward "L4D_OnGameModeChange" to notify plugins when the mode has changed to Coop, Versus, Survival and Scavenge (L4D2).
        - Added native "L4D_GetGameModeType" to return if the current game mode is Coop, Versus, Survival or Scavenge (L4D2).
    
        - Update for L4D1:
    
        - Fixed on Linux forward "L4D_OnSpawnWitch" from not triggering for some Witch spawns. Thanks to "Forgetest" for fixing.
        - Fixed on Linux forward "L4D_OnTryOfferingTankBot" from not triggering on the first tank. Thanks to "Forgetest" for fixing.
        - Unlocked native "L4D2Direct_GetMobSpawnTimer" for usage in L4D1. Thanks to "HarryPotter" for reporting functionality.
        - Unlocked native "L4D2Direct_GetTankCount" for usage in L4D1. Missed this from the last update.
    
        - L4D1 GameData file, include file and plugins updated.
    
    1.53 (09-Sep-2021)
        - Update for L4D1:
    
        - Added forward "L4D_OnRecalculateVersusScore" from "raziEiL"'s port of "L4D Direct".
        - Added natives "L4DDirect_GetSurvivorHealthBonus", "L4DDirect_SetSurvivorHealthBonus" and "L4DDirect_RecomputeTeamScores" from "raziEiL"'s port of "L4D Direct".
        - Changed native "L4D2_GetTankCount" to use the directors variable instead of counting entities. Thanks to "Forgetest" for the offsets.
        - Unblocked native "L4D_GetTeamScore" for usage in L4D1. Accepts logical_team params 1-6.
        - Fixed forward "L4D_OnFirstSurvivorLeftSafeArea" not blocking correctly. Thanks to "Forgetest" for the solution.
        - Various fixes and additions thanks to "HarryPotter" for requesting and testing.
    
        - L4D1 GameData file, include file and plugins updated.
    
    1.52 (31-Aug-2021)
        - Added L4D1 and L4D2 specific "ACT_*" animation activity constants to the include file for usage in animation pre-hooks. See the include file for details.
        - Wildcarded "RestartScenarioFromVote" detour to be compatible with the "[L4D2] Restart Without Changelevel" plugin by "iaNanaNana".
        - Various minor changes to the code legibility.
    
        - L4D2 GameData updated. Include file and plugins updated.
    
    1.51 (10-Aug-2021)
        - Added natives "L4D_GetCurrentChapter" and "L4D_GetMaxChapters" to get the current and max chapters count. Thanks to "Psyk0tik" for help.
        - L4D1: added natives "L4D_GetVersusMaxCompletionScore" and "L4D_SetVersusMaxCompletionScore" to get/set Versus max score. Thanks to "BHaType" for offsets.
        - L4D1: Fixed broken "CThrowActivate" signature due to the 1.0.4.0 update. Thank to "matrixmark" for reporting.
    
        - GameData files, include file and plugins updated.
    
    1.50 (22-Jul-2021)
        - Fixed "Native was not found" errors in L4D1. Thanks to "xerox8521" for reporting.
        - Test plugin: Fixed "L4D_OnMaterializeFromGhostPre" and "L4D_OnMaterializeFromGhost" throwing "String formatted incorrectly" errors.
    
    1.49 (13-Jul-2021)
        - L4D2: Fixed the "SpawnTimer" offset being wrong. Thanks to "Forgetest" for reporting.
        - L4D2: GameData file updated.
    
    1.48 (13-Jul-2021)
        - Fixed "Param is not a pointer" in the "L4D_OnVomitedUpon" forward. Thanks to "ddd123" for reporting.
        - L4D2: Changed the way "ForceNextStage" address is read on Windows, hopefully future proof.
        - L4D2: GameData file updated.
    
    1.47 (10-Jul-2021)
        - Fixed "Trying to get value for null pointer" in the "L4D_OnVomitedUpon" forward. Thanks to "Shadowart" for reporting.
    
    1.46 (09-Jul-2021)
        - L4D2: Added native "L4D2_ExecVScriptCode" to exec VScript code instead of having to create an entity to fire code.
        - L4D2: Fixed GameData file from the "2.2.2.0" game update.
    
    1.45 (04-Jul-2021)
        - Fixed bad description for "L4D_SetHumanSpec" and "L4D_TakeOverBot" in the Include file.
        - L4D1: Fixed forward "L4D_OnVomitedUpon" crashing. GameData file updated. Thanks to "Crasher_3637" for reporting.
    
    1.44 (01-Jul-2021)
        - Fixed forward "L4D_OnMaterializeFromGhost" not firing. Thanks to "ProjectSky" for reporting.
        - Fixed changelog description. Thanks to "Spirit_12" for reporting.
    
    1.43 (01-Jul-2021)
        - L4D1 & L4D2 update:
        - Added forward "L4D_OnMaterializeFromGhostPre" and "L4D_OnMaterializeFromGhost" when a client spawns out of ghost mode. Thanks to "ProjectSky" and "sorallll" and for suggesting.
    
        - Added native "L4D_RespawnPlayer" to respawn a dead player.
        - Added native "L4D_SetHumanSpec" to takeover a bot.
        - Added native "L4D_TakeOverBot" to takeover a bot.
        - Added native "L4D_CanBecomeGhost" to determine when someone is about to enter ghost mode.
        - Added native "L4D2_AreWanderersAllowed" to determine if Witches can wander.
        - Added native "L4D_IsFinaleEscapeInProgress" to determine when the rescue vehicle is leaving until.
        - Added native "L4D_GetLastKnownArea" to retrieve a clients last known nav area.
    
        - Added missing "ACT_ITEM2_VM_LOWERED_TO_IDLE" to the "data/left4dhooks.l4d2.cfg" config.
    
        - Updated: Plugin, Test plugin, Include file, GameData files and "data/left4dhooks.l4d2.cfg" config.
    
    1.42 (23-Jun-2021)
        - L4D1 & L4D2 update:
        - Added forward "L4D_OnVomitedUpon" when client is covered in vomit.
        - Added forward "L4D_OnEnterGhostStatePre" with the ability to block entering ghost state.
        - Changed 2 signatures to be compatible with detouring: "CTerrorPlayer::OnStaggered" and "CTerrorPlayer::OnVomitedUpon".
    
        - L4D2 update only:
    
        - Added forward "L4D2_OnHitByVomitJar" when a Bilejar explodes on clients.
        - Added native "L4D2_NavAreaTravelDistance" to return the nav flow distance between two areas.
        - Added native "L4D2_UseAdrenaline" to give a player the Adrenaline effect and health benefits.
    
        - Added various natives as wrappers executing VScript code:
            - These are slower than native SDKCalls, please report popular ones to convert to fast SDKCalls.
            "L4D2_VScriptWrapper_GetMapNumber"
            "L4D2_VScriptWrapper_HasEverBeenInjured"
            "L4D2_VScriptWrapper_GetAliveDuration"
            "L4D2_VScriptWrapper_IsDead"
            "L4D2_VScriptWrapper_IsDying"
            "L4D2_VScriptWrapper_UseAdrenaline"
            "L4D2_VScriptWrapper_ReviveByDefib"
            "L4D2_VScriptWrapper_ReviveFromIncap"
            "L4D2_VScriptWrapper_GetSenseFlags"
            "L4D2_VScriptWrapper_NavAreaBuildPath"
            "L4D2_VScriptWrapper_NavAreaTravelDistance" // Added as a demonstration and test, SDKCall is available, use "L4D2_NavAreaTravelDistance" instead.
    
        - Updated: Plugin, Test plugin, GameData and Include file. Both L4D1 and L4D2.
        - Thanks to "Eärendil" for showing me how to call some VScript functions.
    
    1.41 (18-Jun-2021)
        - L4D2: Fixed "InvulnerabilityTimer" offset. Thanks to "Nuki" for helping.
        - GameData .txt file updated.
    
    1.40 (16-Jun-2021)
        - L4D2: Fixed various offsets breaking from "2.2.1.3" game update. Thanks to "Nuki" for reporting and helping.
        - GameData .txt file updated.
    
    1.39 (16-Jun-2021)
        - Changed command "sm_l4dd_detours" results displayed to be read easier.
        - L4D2: Fixed signatures breaking from "2.2.1.3" game update. Thanks to "Crasher_3637" for fixing.
        - L4D2: Fixed "VanillaModeOffset" in Linux breaking from "2.2.1.3" game update. Thanks to "Accelerator74" for fixing.
        - GameData .txt file updated.
    
    1.38 (28-Apr-2021)
        - Changed native "L4D2_IsReachable" to allow using team 2 and team 4.
    
    1.37 (20-Apr-2021)
        - Removed "RoundRespawn" being used, was for private testing, maybe a future native. Thanks to "Ja-Forces" for reporting.
    
    1.36 (20-Apr-2021)
        - Added optional forward "AP_OnPluginUpdate" from "Autoreload Plugins" by "Dragokas", to rescan required detours when loaded plugins change.
        - Fixed native "L4D2Direct_GetFlowDistance" sometimes returning -9999.0 when invalid, now returns 0.0;
        - Fixed native "L4D_FindRandomSpot" from crashing Linux servers. Thanks to "Gold Fish" for reporting and fixing and "Marttt" for testing.
        - Restricted native "L4D2_IsReachable" client index to Survivor bots only. Attempts to find a valid bot otherwise it will throw an error. Thanks to "Forgetest" for reporting.
        - Signatures compatibility with plugins detouring them. L4D1: "OnLedgeGrabbed", "OnRevived" and L4D2: "OnLedgeGrabbed". Thanks to "Dragokas" for providing.
    
        - Updated: L4D1 GameData file.
        - Updated: L4D2 GameData file.
        - Updated: Plugin and Include file.
        - Updated: Test plugin to reflect above changes.
    
    1.35 (10-Apr-2021)
        - Fixed native "L4D_GetTeamScore" error message when using the wrong team values. Thanks to "BHaType" for reporting.
        - Restricted native "L4D2_IsReachable" client index to bots only. Attempts to find a valid bot otherwise it will throw an error. Thanks to "Forgetest" for reporting.
    
    1.34 (23-Mar-2021)
        - Added native "L4D_HasPlayerControlledZombies" to return if players can control infected. Thanks to "Spirit_12" for requesting.
        - Thanks to "Crasher_3637" for the L4D1 signature.
        - Fixed Linux detection accidentally being broken from version 1.17 update.
    
        - Updated: L4D1 GameData file.
        - Updated: L4D2 GameData file.
        - Updated: Plugin and Include file.
        - Updated: Test plugin to reflect above changes.
    
    1.33a (04-Mar-2021)
        - L4D1 GameData updated. Changes fixing "L4D2_OnEntityShoved" were missing from the previous update.
    
    1.33 (02-Mar-2021)
        - Changed forward "L4D2_OnEntityShoved" to trigger for all entities being shoved not just clients.
        - Fixed forward "L4D2_OnEntityShoved" not working in L4D1. GameData file updated for L4D1.
        - Fixed native "L4D_IsFirstMapInScenario" crashing in L4D1 from changes in version 1.30 update.
    
    1.32 (23-Feb-2021)
        - Changed native "L4D_GetRandomPZSpawnPosition" to accept client index of 0. Thanks to "Accelerator74" for reporting.
        - Fixed target filters misspelling "incapped". Thanks to "Forgetest" for reporting.
    
    1.31 (23-Feb-2021)
        - Added Target Filters to target randomly. Requested by "Tonblader":
            "@incappedsurvivors", "@is"
            "@randomincappedsurvivor", "@ris"
            "@randomsurvivor", "@rs"
            "@randominfected", "@ri"
            "@randomtank", "@rt"
            "@incappedsurvivorbot", "@isb"
            "@survivorbot", "@sb"
            "@infectedbot", "@ib"
            "@tankbot", "@tb"
    
        - Fixed "L4D_GetPlayerSpawnTime" from returning the wrong value again. Thanks to "Forgetest" for reporting.
    
    1.30 (15-Feb-2021)
        - Fixed natives "L4D2_SetIntMeleeAttribute" and "L4D2_SetFloatMeleeAttribute" functions. Thanks to "bw4re" for reporting.
        - Fixed native "L4D_GetPlayerSpawnTime" giving the wrong time. Thanks to "Forgetest" for reporting.
    
        - Fixes by "Dragokas"
        - Fixed native "L4D_IsFirstMapInScenario" call with SDKCall_Raw returned error in SM 1.11, L4D1. Thanks to "Crasher" for reporting, and "Rostu" for help.
        - Fixed "ForceNextStage" signature (WIN).
    
        - Updated: L4D2 GameData file.
        - Updated: Plugin
    
    1.29 (10-Oct-2020)
        - Fixed "L4D_StaggerPlayer" not working with NULL_VECTOR. Thanks to "Zippeli" for reporting.
    
    1.28 (09-Oct-2020)
        - Added command "sm_l4dd_unreserve" to remove lobby reservation. Added for testing purposes but is functional.
        - Fixed L4D1 GameData failing to find "g_pServer" address. Thanks to "Ja-Forces" for reporting.
        - Fixed forward "L4D_OnFirstSurvivorLeftSafeArea" throwing errors about null pointer.
    
    1.27 (05-Oct-2020)
        - Fixed not loading in L4D1 due to recent changes. Thanks to "TiTz" for reporting.
    
    1.26 (01-Oct-2020)
        - L4D2: Fixed the new target filters not working correctly, now matches by modelname for Survivors instead of character netprop.
    
    1.25 (01-Oct-2020)
        - Added survivor specific target filters:   @nick, @rochelle, @coach, @ellis, @bill, @zoey, @francis, @louis
        - Added special infected target filters:    @smokers, @boomers, @hunters, @spitters, @jockeys, @chargers
        - Changed native "L4D2_GetMeleeWeaponIndex" to return -1 instead of throwing an error, due to melee being unavailable.
        - Fixed melee weapon IDs being incorrect depending on which are enabled. Thanks to "iaNanaNana" for reporting.
        - Updated the "data/left4dhooks.l4d2.cfg" config with latest "ACT_*" animation numbers.
    
    1.24 (27-Sep-2020)
        - Reverted change: native "L4D_GetTeamScore" now accepts values 1 and 2 again.
        - Changed natives:
            "L4D2Direct_GetVSTankFlowPercent", "L4D2Direct_SetVSTankFlowPercent", "L4D2Direct_GetVSTankToSpawnThisRound",
            "L4D2Direct_SetVSTankToSpawnThisRound", "L4D2Direct_GetVSWitchFlowPercent", "L4D2Direct_SetVSWitchFlowPercent",
            "L4D2Direct_GetVSWitchToSpawnThisRound" and "L4D2Direct_SetVSWitchToSpawnThisRound".
        - Corrected natives "roundNumber" to consider "m_bAreTeamsFlipped" and "m_bInSecondHalfOfRound".
        - Thanks to "devilesk" for native value clarification.
    
    1.23 (27-Sep-2020)
        - Update by "ProdigySim" to fix Addons Eclipse. Thank you!
        - Updated: L4D2 GameData file.
    
    1.22 (24-Sep-2020)
        - Compatibility update for L4D2's "The Last Stand" update.
        - Big thanks to "ProdigySim" for help updating various gamedata offsets and signatures.
        - Added support for the 2 new melee weapons.
        - Changed native "L4D_GetTeamScore" to accept values 0 and 1 which seems is the standard.
        - Late loading with debug enabled now shows the g_pGameRules pointer.
        - Moved hard coded Addon Eclipse offsets to gamedata.
    
    1.21 (01-Sep-2020)
        - Removed teleporting the old and new tank players when using "L4D_ReplaceTank" native.
    
    1.20 (28-Aug-2020)
        - Changed forward "L4D_OnEnterGhostState" hook from pre to post hook. Thanks to "Forgetest" for reporting.
        - Fixed forward "L4D_OnShovedBySurvivor" client and target order being wrong. Thanks to "Forgetest" for reporting.
    
    1.19 (27-Aug-2020)
        - Fixed native "L4D2Direct_TryOfferingTankBot" from crashing the server. Thanks to "disawar1" for reporting.
    
    1.18 (20-Aug-2020)
        - Thanks to "Forgetest" for reporting the following issues and testing multiple fixes.
        - Fixed natives using "L4D2CT_VersusStartTimer" from reading the incorrect address.
        - Fixed native "L4D2_IsValidWeapon" returning false when the classname is missing "weapon_".
        - Fixed address "g_pGameRules" being incorrect after certain map or mode changes, this broke the following natives:
            "L4D2_GetVersusCompletionPlayer", "L4D_GetVersusMaxCompletionScore" and "L4D_SetVersusMaxCompletionScore".
    
        - Note: native "L4D2_IsValidWeapon" and various "*WeaponAttribute" natives still returns invalid for CSS weapons.
            This only happens on the servers first load until map is changed and the CSS weapons are precached using whichever method
            your server uses to enable CSS weapons. Plugins using or modifying CSS weapons might need to be updated with this in mind.
    
    1.17 (20-Jul-2020)
        - Added native (L4D2 only): "L4D2_IsReachable" to check if a position is accessible to a Survivor Bot.
        - Fixed include native "L4D2_AreTeamsFlipped" returning an int instead of bool. Thanks to "BloodyBlade" for reporting.
        - Fixed native "L4D_GetHighestFlowSurvivor" throwing errors in 1.11. Thanks to "yuzumi" for reporting.
        - Removed some useless "view_as" code. Might remove more in the future.
    
        - Updated: L4D2 GameData file.
        - Updated: Plugin and Include file.
        - Updated: Test plugin to reflect above changes.
    
    1.16a (16-Jun-2020)
        - Fixed using the wrong offset for "m_PendingMobCount". Thanks to "fbef0102" for reporting.
        - Updated: GameData file for L4D2 Linux only.
    
    1.16 (05-Jun-2020)
        - Added native "L4D_LobbyUnreserve" finally, to support "Remove Lobby Reservation (When Full)" plugin.
        - Huge thanks to "GAMMACASE" and "Deathreus" for helping figure why the native was crashing.
        - L4D1: GameData updated to support this native.
    
        - Updated: L4D1 GameData file.
        - Updated: Plugin and Include file.
    
    1.15 (15-May-2020)
        - Added a valid entity check for "L4D2_OnFindScavengeItem" due to so many plugins passing bad entities and throwing errors.
        - Fixed "L4D_Dissolve" native description in the include file. Thanks to "Psyk0tik" for reporting.
    
    1.14 (10-May-2020)
        - Added native (L4D2 only): "L4D2Direct_GetScriptedEventManager" to return the scripted event manager pointer.
        - This native replicates "L4D2_GetCDirectorScriptedEventManager" used by other plugins.
    
        - Added 19 missing natives from L4D2Direct (L4D1 and L4D2):
        - "CTimer_Reset", "CTimer_Start", "CTimer_Invalidate", "CTimer_HasStarted", "CTimer_IsElapsed", "CTimer_GetElapsedTime", "CTimer_GetRemainingTime",
        - "CTimer_GetCountdownDuration", "ITimer_Reset", "ITimer_Start", "ITimer_Invalidate", "ITimer_HasStarted", "ITimer_GetElapsedTime",
        - "CTimer_GetDuration", "CTimer_SetDuration", "CTimer_GetTimestamp", "CTimer_SetTimestamp", "ITimer_GetTimestamp", "ITimer_SetTimestamp"
    
        - Fixed "L4D_OnTryOfferingTankBot" not returning a valid client index.
        - Thanks to "Mis" for requesting changes and reporting bugs.
    
        - Updated: Plugin and Include file.
        - Updated: Test plugin to reflect above changes.
    
    1.13 (05-May-2020)
        - Added better error log message when gamedata file is missing.
        - Fixed "L4D2_OnEntityShoved" not detecting the last client. Thanks to "Addie" for reporting.
        - Made all natives optional from the include file. Thanks to "Crasher_3637" for requesting.
        - Optional natives can be set by plugins with "#undef REQUIRE_PLUGIN" before "#include <left4dhooks>" and "#define REQUIRE_PLUGIN" after.
    
        - Updated: Plugin and Include file.
        - Updated: Test plugin to reflect above changes.
    
    1.12 (09-Apr-2020)
        - Added commands "sm_l4dd_detours" and "sm_l4dd_reload" as wrappers to "sm_l4dhooks_detours" and "sm_l4dhooks_reload".
        - Fixed command "sm_l4dhooks_detours" displaying the wrong forward, now also displays the plugin name using that forward.
    
    1.11 (18-Mar-2020)
        - Added command "sm_l4dhooks_detours" to display which forwards are enabled.
        - Added missing natives: "L4D2Direct_GetPendingMobCount" and "L4D2Direct_SetPendingMobCount" from "raziEiL"'s port.
        - Fixed native "L4D2_GetVScriptOutput" using the provided buffer to execute code. Buffer now can be small to get small return values.
        - Optimized native "L4D2_GetVScriptOutput" to reuse the same entity for multiple calls in the same frame.
        - Maximum native "L4D2_GetVScriptOutput" code allowed seems to be 1006 characters.
    
        - Updated: Plugin, Include and GameData files.
        - Updated: Test plugin to reflect above changes.
    
    1.10 (14-Mar-2020)
        - Added natives (L4D1 & L4D2): "L4D_IsAnySurvivorInStartArea", "L4D_IsInFirstCheckpoint" and "L4D_IsInLastCheckpoint".
        - Added native (L4D2 only): "L4D2_GetCurrentFinaleStage".
        - Thanks to "Nuki" for requesting.
    
        - Fixed missing "L4D2IWA_ClipSize" offset. Now this works: L4D2_SetIntWeaponAttribute("weapon_rifle", L4D2IWA_ClipSize, 100);
        - See include for details.
    
        - Updated: Plugin, Include and GameData files.
        - Updated: Test plugin to reflect above changes.
    
    1.9 (10-Mar-2020)
        - Added native (L4D2 only): "L4D2_GetVScriptOutput" to execute VScript code and get return data.
        - This is modified from an example script I published on 29-Jun-2019: https://forums.alliedmods.net/showthread.php?t=317145
    
        - Added new natives (L4D2 only): "L4D2_ForceNextStage", "L4D2_IsTankInPlay" and "L4D2_GetFurthestSurvivorFlow"
        - Added new natives (L4D1 & L4D2): "L4D_HasAnySurvivorLeftSafeArea" and "L4D_IsAnySurvivorInCheckpoint".
        - See the "NATIVES - Silvers" section inside the include file for details.
        - Thanks to "Nuki" for requesting.
    
        - Updated: Plugin, Include and GameData files.
        - Updated: Test plugin to reflect above changes.
    
    1.8 (08-Mar-2020)
        - Added AutoExecConfig to generate a cvars config saved to "cfgs/sourcemod/left4dhooks.cfg".
        - Loads signatures in "OnPluginStart" except "g_pGameRules" which can only load in "OnMapStart".
        - Thanks to "Accelerator74" for requesting and testing.
        - Fixed some wrong return types in the include file.
    
        - Updated: Plugin and Include file.
    
    1.7 (04-Mar-2020)
        - Added natives "L4D_GetNearestNavArea" and "L4D_FindRandomSpot" to get a random spawn position.
        - Fixed native "L4D2Direct_GetFlowDistance" sometimes causing server crashes.
        - Fixed natives "L4D_IsFirstMapInScenario" and "L4D_IsMissionFinalMap" sometimes returning incorrect values. Thanks to "Accelerator74".
    
        - Updated: Plugin, Include and GameData files.
        - Updated: Test plugin to reflect above changes.
    
    1.6 (02-Mar-2020)
        - Fixed the animation hook throwing an "Exception reported: Client is not connected" error.
    
        Thanks to "Accelerator74" for reporting:
        - Fixed Addons Disabler "l4d2_addons_eclipse" not working without any plugins using the forward to detour.
        - Fixed "L4D2Direct_GetVSWitchFlowPercent" and "L4D2Direct_SetVSWitchFlowPercent" natives.
    
    1.5 (29-Feb-2020)
        - Added Director Variables to be rechecked:
        - Some of these only work in the Finale, some may only work outside of the Finale. L4D2 is weird.
            "SmokerLimit", "BoomerLimit", "HunterLimit", "SpitterLimit", "JockeyLimit", "ChargerLimit", "TankLimit",
            "DominatorLimit", "WitchLimit" and "CommonLimit".
    
            Challenge Mode variables, if required:
            "cm_MaxSpecials", "cm_BaseSpecialLimit", "cm_SmokerLimit", "cm_BoomerLimit", "cm_HunterLimit", "cm_SpitterLimit",
            "cm_JockeyLimit", "cm_ChargerLimit", "cm_TankLimit", "cm_DominatorLimit", "cm_WitchLimit" and "cm_CommonLimit".
    
        - Added Target Filters (thanks to "hoanganh810972" for reporting as missing):
            Survivors: "@s", "@surv", "@survivors"
            Specials:  "@i", "@infe", "@infected"
            Tanks:     "@t", "@tank", "@tanks"
    
        - Fixed native "L4D_CreateRescuableSurvivors" from not working. Now spawns all dead survivors into rescuable rooms.
        - Removed "L4D_OnGetRandomPZSpawnPosition" forward due to spawning specials at 0,0,0 when modifying any value.
    
        - Updated: Plugin, Include and GameData files.
        - Updated: Test plugin to reflect above changes.
    
    1.4 (28-Feb-2020)
        - AnimHooks no longer affect the same client index if the previous user disconnected and someone else connected.
        - Clarified AnimHooks details in the include file. All AnimHooks are removed on map change.
        - Fixed L4D1: "Invalid Handle" errors caused by Director Variables fix. Thanks to "TiTz" for reporting.
    
    1.3 (27-Feb-2020)
        - Added forward "L4D_OnGetRandomPZSpawnPosition" to display when the game selects a position.
        - Added native "L4D_GetRandomPZSpawnPosition" to select a random position.
        - Thanks to "Accelerator74" for requesting.
    
        - Added forward "L4D2_OnSelectTankAttackPre" to handle "ACT_*" activity numbers.
        - Changed "L4D2_OnSelectTankAttack" to use "m_nSequence" numbers instead, just like the extension did.
        - Changed the "AnimHook" functions to use "ACT_*" activity numbers (pre-hook) and "m_nSequence" animation number (post-hook).
        - Existing plugins using "L4D2_OnSelectTankAttack" no longer need to change anything.
        - Existing plugins with the new "AnimHook" hook can now use normal model "m_nSequence" sequence numbers in the post hook.
        - Thanks to "Accelerator74" for reporting the fix.
    
        - Updated: Plugin, Include and GameData files.
        - Updated: Test plugin to demonstrate each change.
    
    1.2 (27-Feb-2020)
        - Wildcarded the following signatures to be compatible with 3rd party plugin detours:
        - L4D2: "ChooseVictim", "GetSurvivorSet" and "ChangeFinaleStage".
        - Thanks to "xZk" for reporting.
    
    1.1 (27-Feb-2020)
        - Added 26 new natives to L4D2 and 15 to L4D1 from "l4d2addresses.txt". Thanks to "Nuki" for suggesting.
        - See the "NATIVES - l4d2addresses.txt" section inside the include file for details.
    
        - Added 7 new natives to L4D2 and 5 to L4D1 from my plugins.
        - See the "NATIVES - Silvers" section inside the include file for details.
    
        - Fixed "L4D2_OnEndVersusModeRound" forwards triggering more than once per round. Thanks to "spumer" for reporting.
        - Fixed creating forwards and natives in the wrong place. Thanks to "Accelerator74" for reporting.
        - Fixed some signatures failing when other plugins detour them. Thanks to "hoanganh810972" for reporting.
        - Fixed cvar "l4d2_addons_eclipse" - values 0 and 1 now disable/enable addons unless otherwise handled.
        - Fixed not forwarding some Director Variables that were initialized too early. Thanks to "hoanganh81097" for reporting.
        - Thanks to "Spirit_12" for ideas with the Director Variables fix.
        - Removed unused actions from some forwards.
    
        - Updated: Plugin, Include and GameData files.
    
    1.0 (24-Feb-2020)
        - Initial release.


    Compiling/Updating Plugins:
    For plugins changing from "left4downtown" or those using "l4d2_direct":
    • Replace include line: "<left4downtown>" with "<left4dhooks>"
    • Replace "<l4d2_direct>" with "<left4dhooks>" or remove line if already replacing "<left4downtown>" with "<left4dhooks>"


    Requirements:

    Installation:
    1. Download the .zip and extract the files to their respective folders in your servers \addons\sourcemod\ folder.
    Attached Files
    File Type: zip left4dhooks.zip (296.7 KB, 78 views)
    __________________

    Last edited by Silvers; 11-30-2021 at 06:01.
    Silvers is offline
    Silvers
    AlliedModders Donor
    Join Date: Aug 2010
    Location: SpaceX
    Old 02-24-2020 , 02:01   Re: [L4D & L4D2] Left 4 DHooks Direct (1.0) [24-Feb-2020]
    Reply With Quote #2

    Plugins Using This:




    Other Plugins:
    • All original "left4downtown" plugins should work, they simply need to be recompiled changing the include "left4downtown" to "left4dhooks".
    __________________

    Last edited by Silvers; 11-16-2021 at 09:44.
    Silvers is offline
    Psyk0tik
    AlliedModders Donor
    Join Date: May 2012
    Location: Homeless
    Old 02-24-2020 , 03:51   Re: [L4D & L4D2] Left 4 DHooks Direct (1.0) [24-Feb-2020]
    Reply With Quote #3

    This is epic!
    __________________
    AFK like JFK
    --
    Donate to Motivate
    --
    Get latest L4D/L4D2 gamedata signatures here.
    --
    PM me if you need help with finding signatures and/or offsets in the following games: L4D1&2/CSGO/TF2/NMRIH/INS/DODS/CSS/HL2DM
    Psyk0tik is offline
    Dragokas
    Veteran Member
    Join Date: Nov 2017
    Location: Ukraine
    Old 02-24-2020 , 07:25   Re: [L4D & L4D2] Left 4 DHooks Direct (1.0) [24-Feb-2020]
    Reply With Quote #4

    Code:
                                       .''.       
           .''.      .        *''*    :_\/_:     . 
          :_\/_:   _\(/_  .:.*_\/_*   : /\ :  .'.:.'.
      .''.: /\ :   ./)\   ':'* /\ * :  '..'.  -=:o:=-
     :_\/_:'.:::.    ' *''*    * '.\'/.' _\(/_'.':'.'
     : /\ : :::::     *_\/_*     -= o =-  /)\    '  *
      '..'  ':::'     * /\ *     .'/.\'.   '
          *            *..*         :
          *
            *
    __________________
    Expert of CMD/VBS/VB6. Malware analyst. L4D fun (Bloody Witch)
    [My plugins] [My tools] [GitHub] [Articles] [Donate]
    Dragokas is offline
    spumer
    Senior Member
    Join Date: Aug 2011
    Old 02-24-2020 , 11:04   Re: [L4D & L4D2] Left 4 DHooks Direct (1.0) [24-Feb-2020]
    Reply With Quote #5

    You did not respect crash-protection for L4D2_OnEndVersusModeRound https://github.com/Attano/Left4Downt..._round.cpp#L42

    This very usefull. And this is why i was add L4D2_OnEndVersusModeRound_Post hook
    https://github.com/Attano/Left4Downtown2/pull/1
    __________________

    Last edited by spumer; 02-24-2020 at 11:07.
    spumer is offline
    DragShot
    Junior Member
    Join Date: Feb 2020
    Location: Lima, Peru
    Old 02-24-2020 , 11:36   Re: [L4D & L4D2] Left 4 DHooks Direct (1.0) [24-Feb-2020]
    Reply With Quote #6

    Man, this feels like I'm watching the future itself become reality. I love it.
    DragShot is offline
    Spirit_12
    Veteran Member
    Join Date: Dec 2012
    Location: Toronto, CA
    Old 02-24-2020 , 19:05   Re: [L4D & L4D2] Left 4 DHooks Direct (1.0) [24-Feb-2020]
    Reply With Quote #7

    I remember when you actually took charge to start this project. Great to see it come to fruition. I feel like this need to be a revolving plugin with updates based on new natives.

    Wait you actually implemented IsTeamFull native ? That's huge.
    __________________

    Last edited by Spirit_12; 02-24-2020 at 19:07.
    Spirit_12 is offline
    Silvers
    AlliedModders Donor
    Join Date: Aug 2010
    Location: SpaceX
    Old 02-24-2020 , 19:13   Re: [L4D & L4D2] Left 4 DHooks Direct (1.0) [24-Feb-2020]
    Reply With Quote #8

    Thanks.

    Planning to add more natives from "l4d2addresses.txt" over the next few days.

    Quote:
    Originally Posted by spumer View Post
    You did not respect crash-protection
    Will add.
    __________________

    Last edited by Silvers; 02-26-2020 at 01:24.
    Silvers is offline
    Spirit_12
    Veteran Member
    Join Date: Dec 2012
    Location: Toronto, CA
    Old 02-24-2020 , 20:34   Re: [L4D & L4D2] Left 4 DHooks Direct (1.0) [24-Feb-2020]
    Reply With Quote #9

    Just gonna leave this here for now. I didn't have time to test and don't want to create a whole thread without testing. Feel free to try it out.

    This is just a tiny plugin to showcase the L4D_OnLedgeGrabbed forward. Pretty much it allows you to control if a survivor will grab onto the ledge when they are being smoked or jocked.

    Code:
    "l4d2_lc",				"1",	"On/Off for the plugin.
    "l4d2_lc_jockey",			"1",	"On/Off switch for Jockey ledge grab"
    "l4d2_lc_smoker",			"1",	"On/Off switch for Smoker ledge grab"
    Attached Files
    File Type: sp Get Plugin or Get Source (l4d2_ledge_control.sp - 431 views - 2.9 KB)
    __________________

    Last edited by Spirit_12; 02-27-2020 at 22:21.
    Spirit_12 is offline
    Accelerator
    AlliedModders Donor
    Join Date: Dec 2010
    Location: Russia
    Old 02-25-2020 , 04:40   Re: [L4D & L4D2] Left 4 DHooks Direct (1.0) [24-Feb-2020]
    Reply With Quote #10

    Very well! Great replacement left 4 downtown!

    But the creation of natives and forwards is better to transfer to the function AskPluginLoad2. otherwise we get something like this:
    Code:
    L 02/25/2020 - 12:03:02: [SM] Unable to load plugin "l4d_scorefixesfinale.smx": Native "L4D_IsMissionFinalMap" was not found
    L 02/25/2020 - 12:03:02: [SM] Unable to load plugin "l4d2_match_start.smx": Native "L4D_RestartScenarioFromVote" was not found
    L 02/25/2020 - 12:03:02: [SM] Unable to load plugin "bossfixes.smx": Native "L4D2_SetVersusTankFlowPercent" was not found
    L 02/25/2020 - 12:03:02: [SM] Unable to load plugin "CmdBalance.smx": Native "L4D2_SetVersusCampaignScores" was not found
    L 02/25/2020 - 12:03:02: [SM] Unable to load plugin "TwoTanks.smx": Native "L4D2Direct_GetMapMaxFlowDistance" was not found
    Correct it error (oldtank -> newtank)
    Code:
    		ThrowNativeError(SP_ERROR_PARAM, "Invalid oldtank client %d.", newtank);
    __________________

    Last edited by Accelerator; 02-25-2020 at 07:26.
    Accelerator is offline
    Reply


    Thread Tools
    Display Modes

    Posting Rules
    You may not post new threads
    You may not post replies
    You may not post attachments
    You may not edit your posts

    BB code is On
    Smilies are On
    [IMG] code is On
    HTML code is Off

    Forum Jump


    All times are GMT -4. The time now is 01:29.


    Powered by vBulletin®
    Copyright ©2000 - 2021, vBulletin Solutions, Inc.
    Theme made by Freecode