diff --git a/SpyCustom/Hooks.hpp b/SpyCustom/Hooks.hpp index 2c5ec34..7f31e5c 100644 --- a/SpyCustom/Hooks.hpp +++ b/SpyCustom/Hooks.hpp @@ -2,6 +2,7 @@ #include "sdk/particles.h" #include "ProtobuffMessages.h" + VMTHook* SoundHook = nullptr; void __fastcall hkEmitSound1(void* _this, int edx, IRecipientFilter& filter, int iEntIndex, int iChannel, char* pSoundEntry, unsigned int nSoundEntryHash, const char* pSample, float flVolume, int nSeed, float flAttenuation, int iFlags, int iPitch, const Vector* pOrigin, const Vector* pDirection, void* pUtlVecOrigins, bool bUpdatePositions, float soundtime, int speakerentity, int unk) { @@ -428,6 +429,76 @@ void fastStop(C_BasePlayer* localplayer, int flags, CUserCmd* cmd) noexcept cmd->sidemove = negatedDirection.y; } +void FastLadder(C_BasePlayer* localplayer, CUserCmd* cmd) +{ + static bool checkkkk = false; + float Up_down; + + Vector angle; + iff.g_pEngineClient->GetViewAngles(angle); + auto oldangles = cmd->viewangles; + if (localplayer->GetMoveType() == MOVETYPE_LADDER) + { + if (angle.x < 15) + Up_down = -89; + else Up_down = 89; + if (cmd->buttons & IN_FORWARD) + { + cmd->viewangles.x = Up_down; + if (oldangles.y > 135 && oldangles.y <= 180) + { + cmd->viewangles.y = 90.0f; + cmd->buttons |= IN_MOVELEFT; + } + else if (oldangles.y <= 135 && oldangles.y >= 90) + { + cmd->viewangles.y = 179.0f; + cmd->buttons |= IN_MOVERIGHT; + } + else if (oldangles.y <= -135 && oldangles.y >= -180.0f) + { + cmd->viewangles.y = -90.f; + cmd->buttons |= IN_MOVERIGHT; + } + else if (oldangles.y <= 90 && oldangles.y >= 45) + { + cmd->viewangles.y = 0; + cmd->buttons |= IN_MOVELEFT; + } + else if (oldangles.y >= -90 && oldangles.y <= -45) + { + cmd->viewangles.y = -0; + cmd->buttons |= IN_MOVERIGHT; + } + else if (oldangles.y <= -90 && oldangles.y >= -135) + { + cmd->viewangles.y = -179.0; + cmd->buttons |= IN_MOVELEFT; + } + else if (oldangles.y <= 45 && oldangles.y > 0) + { + cmd->viewangles.y = 90; + cmd->buttons |= IN_MOVERIGHT; + } + else if (oldangles.y <= -0 && oldangles.y >= -45) + { + cmd->viewangles.y = -90; + cmd->buttons |= IN_MOVELEFT; + } + } + } + //duck on edge of ladder?? + if (localplayer->GetMoveType() == MOVETYPE_LADDER && !checkkkk) + { + checkkkk = true; + } + if (localplayer->GetMoveType() != MOVETYPE_LADDER && checkkkk) + { + cmd->buttons |= IN_DUCK; + checkkkk = false; + } + +} bool __stdcall hkCreateMove(float frame_time, CUserCmd* pCmd) { @@ -440,12 +511,16 @@ bool __stdcall hkCreateMove(float frame_time, CUserCmd* pCmd) short localid = iff.g_pEngineClient->GetLocalPlayer(); C_BasePlayer* localplayer = static_cast(iff.g_pEntityList->GetClientEntity(localid)); + if (!localplayer) return 0; + const auto pre_flags = localplayer->GetFlags(); bool interval = !((pCmd->tick_count + 1) % 10); if (g_Options.faststop) fastStop(localplayer, pre_flags, pCmd); + if (g_Options.fastladder) + FastLadder(localplayer, pCmd); if (g_Options.slidewalk) pCmd->buttons ^= IN_FORWARD | IN_BACK | IN_MOVELEFT | IN_MOVERIGHT; if (g_Options.fastduck) diff --git a/SpyCustom/Menu.hpp b/SpyCustom/Menu.hpp index a58caee..04a396d 100644 --- a/SpyCustom/Menu.hpp +++ b/SpyCustom/Menu.hpp @@ -1870,13 +1870,14 @@ long __stdcall hkEndScene(IDirect3DDevice9* pDevice) ImGui::Columns(3, nullptr, false); // - style->ItemSpacing = ImVec2(7.0f, 10.0f); //10 + style->ItemSpacing = ImVec2(7.0f, 8.0f); //10 ImGui::Checkbox("Spectator list", g_Options.speclist); ImGui::Checkbox("Vote reveal", g_Options.votereveal); ImGui::Checkbox("Rank reveal", g_Options.rankreveal); ImGui::Checkbox("Money reveal", g_Options.moneyreveal); ImGui::Checkbox("Fast duck", g_Options.fastduck); ImGui::Checkbox("Fast stop", g_Options.faststop); + ImGui::Checkbox("Fast ladder", g_Options.fastladder); ImGui::Checkbox("Slide walk", g_Options.slidewalk); //ImGui::NextColumn(); @@ -1920,10 +1921,10 @@ long __stdcall hkEndScene(IDirect3DDevice9* pDevice) ImGui::NextColumn(); - style->ItemSpacing = ImVec2(7.0f, 10.0f); + style->ItemSpacing = ImVec2(7.0f, 8.0f); //10 ImGui::Checkbox("C4 timer", g_Options.c4timer); - ImGui::Checkbox("Stick to heads", g_Options.blockbot); - style->ItemSpacing = ImVec2(7.0f, 17.0f); + ImGui::Checkbox("Block bot", g_Options.blockbot); + style->ItemSpacing = ImVec2(7.0f, 19.0f); //17 if (ImGui::SliderFloat("Viewmodel pos X", g_Options.viewmodel_x, -90.0f, 90.0f)) SetValueUnrestricted("viewmodel_offset_x", g_Options.viewmodel_x); @@ -1936,13 +1937,13 @@ long __stdcall hkEndScene(IDirect3DDevice9* pDevice) ImGui::NextColumn(); - style->ItemSpacing = ImVec2(7.0f, 10.0f); + style->ItemSpacing = ImVec2(7.0f, 8.0f); //10 ImGui::Checkbox("Bunny hop", g_Options.bunnyhop); DisableElements(*g_Options.bunnyhop, 1); ImGui::Checkbox("Auto strafe", g_Options.autostrafe); DisableElements(*g_Options.bunnyhop, 0); - style->ItemSpacing = ImVec2(7.0f, 17.0f); + style->ItemSpacing = ImVec2(7.0f, 19.0f); //17 ImGui::SliderFloat("Viewmodel ang X", g_Options.viewmodel_ang_x, -180.0f, 180.0f); ImGui::SliderFloat("Viewmodel ang Y", g_Options.viewmodel_ang_y, -180.0f, 180.0f); diff --git a/SpyCustom/Options.hpp b/SpyCustom/Options.hpp index d50e9aa..0eff374 100644 --- a/SpyCustom/Options.hpp +++ b/SpyCustom/Options.hpp @@ -708,6 +708,7 @@ public: OPTION(bool, predict, 0); OPTION(bool, blockbot, 0); + OPTION(bool, fastladder, 1); }; inline Options g_Options;