Raised This Month: $252 Target: $400
 63% 

[L4D & L4D2] Left 4 DHooks Direct (1.22) [24-Sep-2020]


Post New Thread Reply   
 
Thread Tools Display Modes
Author
Silvers
AlliedModders Donor
Join Date: Aug 2010
Location: SpaceX
Plugin ID:
6954
Plugin Version:
1.22
Plugin Category:
General Purpose
Plugin Game:
Left 4 Dead
Plugin Dependencies:
    Servers with this Plugin:
    144 
    Plugin Description:
    Left 4 Downtown and L4D Direct conversion and merger.
    Old 02-24-2020 , 01:00   [L4D & L4D2] Left 4 DHooks Direct (1.22) [24-Sep-2020]
    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".

    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.
    • Some new forwards and natives in L4D2.
    • Additional features not present in the Extension versions.
    • Demo plugin demonstrating animation hooks + all forwards and natives capabilities.
    • Addons Disabler included (L4D2 only).
    • The native L4D_LobbyUnreserve is NOW finally supported in 1.16!
    • Dynamic detouring - only detours forwards required by other plugins. Rescans on map change.
    • Animation hooks to modify player animations.
    • View the \addons\sourcemod\data\ folder for activity names and sequence numbers.
    • Native to execute VScripts and retrieve return data.



    Bugs:
    • Player slots is unsupported. Use the L4DToolZ Metamod plugin to increase player slots and unreserve your server.
    • Forward L4D2_OnUseHealingItems is blocked in Linux L4D1/L4D2 to prevent crashes. Waiting for DHooks update to support object returns.
    • Conflicts with Left4Downtown, remove the extension to run.
    • 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.

    Demo Plugin:
    • I've tried to test every forward and native on Windows and Linux in both games. Everything appears to be working but I might have missed something.
    • Uncomment the sections you wish to test, by default from 1.1 everything is commented out.



    Thanks:
    • Lux - Lots of technical support and ideas + figuring out why some detours were broken.
    • Peace-Maker - For the DHooks Dynamic Detour extension and various help.
    • Dragokas - Server and support testing in Linux for both games.
    • 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".
    • 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 


    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 and Natives:
    • Assume everything is L4D1 and L4D2 compatible unless otherwise stated.
    • View the include file for detailed descriptions.

    Forwards: (L4D1 = 33 & L4D2 = 43)
    Spoiler


    Natives: (L4D1 = 87 & L4D2 = 163)
    Spoiler



    Changes:
    Code:
    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.


    Requirements:
    • DHooks (Experimental Dynamic Detour support) extension.
    • Requires SourceMod 1.10 due to various methodmaps. Done this to force servers to update. Can work on SM 1.9 but requires reverting methodmaps code and variable types. Instead you should just upgrade SM to benfit from fixes, improvements, and new features.
    • Conflicts with Left4Downtown, remove the extension to run.


    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 (174.9 KB, 181 views)
    __________________

    Last edited by Silvers; Yesterday at 17:11.
    Silvers is offline
    Silvers
    AlliedModders Donor
    Join Date: Aug 2010
    Location: SpaceX
    Old 02-24-2020 , 01: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 might simply need to be recompiled changing the include "left4downtown" to "left4dhooks".
    __________________

    Last edited by Silvers; 09-01-2020 at 14:02.
    Silvers is offline
    Crasher_3637
    AlliedModders Donor
    Join Date: May 2012
    Old 02-24-2020 , 02:51   Re: [L4D & L4D2] Left 4 DHooks Direct (1.0) [24-Feb-2020]
    Reply With Quote #3

    This is epic!
    __________________
    AFK like JFK
    Crasher_3637 is offline
    Dragokas
    Veteran Member
    Join Date: Nov 2017
    Location: Ukraine
    Old 02-24-2020 , 06: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]
    Dragokas is offline
    spumer
    Senior Member
    Join Date: Aug 2011
    Old 02-24-2020 , 10: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 10:07.
    spumer is offline
    DragShot
    Junior Member
    Join Date: Feb 2020
    Location: Lima, Peru
    Old 02-24-2020 , 10: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 , 18: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 18:07.
    Spirit_12 is offline
    Silvers
    AlliedModders Donor
    Join Date: Aug 2010
    Location: SpaceX
    Old 02-24-2020 , 18: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 00:24.
    Silvers is offline
    Spirit_12
    Veteran Member
    Join Date: Dec 2012
    Location: Toronto, CA
    Old 02-24-2020 , 19: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 - 139 views - 2.9 KB)
    __________________

    Last edited by Spirit_12; 02-27-2020 at 21:21.
    Spirit_12 is offline
    Accelerator74
    AlliedModders Donor
    Join Date: Dec 2010
    Location: Russia
    Old 02-25-2020 , 03: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 Accelerator74; 02-25-2020 at 06:26.
    Accelerator74 is online now
    Send a message via ICQ to Accelerator74
    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 07:01.


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