From 73da313dabbbc4f8164fea5626760c193768e818 Mon Sep 17 00:00:00 2001 From: Daniel Date: Wed, 26 Mar 2025 01:30:41 +0100 Subject: [PATCH] feat: implement seatbelt (#31) --- src/game/features/self/Seatbelt.cpp | 32 +++++++++++++++++++++++++++++ src/game/frontend/submenus/Self.cpp | 1 + 2 files changed, 33 insertions(+) create mode 100644 src/game/features/self/Seatbelt.cpp diff --git a/src/game/features/self/Seatbelt.cpp b/src/game/features/self/Seatbelt.cpp new file mode 100644 index 0000000..654137d --- /dev/null +++ b/src/game/features/self/Seatbelt.cpp @@ -0,0 +1,32 @@ +#include "core/commands/LoopedCommand.hpp" +#include "game/gta/Natives.hpp" +#include "game/backend/Self.hpp" + +namespace YimMenu::Features +{ + class Seatbelt : public LoopedCommand + { + using LoopedCommand::LoopedCommand; + + static constexpr int VEHICLE_KNOCK_OFF_NEVER = 1; + static constexpr int VEHICLE_KNOCK_OFF_DEFAULT = 0; + + virtual void OnTick() override + { + auto handle = Self::GetPed().GetHandle(); + + PED::SET_PED_CONFIG_FLAG(handle, 32, false); + PED::SET_PED_CAN_BE_KNOCKED_OFF_VEHICLE(handle, VEHICLE_KNOCK_OFF_NEVER); + } + + virtual void OnDisable() override + { + auto handle = Self::GetPed().GetHandle(); + + PED::SET_PED_CONFIG_FLAG(handle, 32, true); + PED::SET_PED_CAN_BE_KNOCKED_OFF_VEHICLE(handle, VEHICLE_KNOCK_OFF_DEFAULT); + } + }; + + static Seatbelt _Seatbelt{"seatbelt", "Seatbelt", "Prevents you from falling out of vehicles."}; +}; \ No newline at end of file diff --git a/src/game/frontend/submenus/Self.cpp b/src/game/frontend/submenus/Self.cpp index e216fd4..1ad8fbc 100644 --- a/src/game/frontend/submenus/Self.cpp +++ b/src/game/frontend/submenus/Self.cpp @@ -70,6 +70,7 @@ namespace YimMenu::Submenus vehicleGlobalsGroup->AddItem(std::make_shared("repairvehicle"_J)); vehicleMiscGroup->AddItem(std::make_shared("speedometer"_J)); + vehicleMiscGroup->AddItem(std::make_shared("seatbelt"_J)); vehicle->AddItem(vehicleGlobalsGroup); vehicle->AddItem(vehicleMiscGroup);