diff --git a/BigBaseV2/src/backend/looped/vehicle/horn_boost.cpp b/BigBaseV2/src/backend/looped/vehicle/horn_boost.cpp index 414d0a28..13b6d7fd 100644 --- a/BigBaseV2/src/backend/looped/vehicle/horn_boost.cpp +++ b/BigBaseV2/src/backend/looped/vehicle/horn_boost.cpp @@ -1,24 +1,37 @@ #include "backend/looped/looped.hpp" #include "gta/enums.hpp" #include "natives.hpp" -#include "util/entity.hpp" namespace big { + static constexpr float hornBoostSpeedDefault = 10.f; + static float hornBoostSpeed = hornBoostSpeedDefault; + static constexpr float hostBoostSpeedMax = 200.f; + void looped::vehicle_horn_boost() { if (!g->vehicle.horn_boost) return; + + const Vehicle veh = PED::GET_VEHICLE_PED_IS_IN(PLAYER::PLAYER_PED_ID(), false); + if (veh == 0) + { + hornBoostSpeed = hornBoostSpeedDefault; + + return; + } + + if (PAD::IS_CONTROL_JUST_PRESSED(0, (int)ControllerInputs::INPUT_VEH_HORN)) + hornBoostSpeed = ENTITY::GET_ENTITY_SPEED(veh); if (PAD::IS_CONTROL_PRESSED(0, (int)ControllerInputs::INPUT_VEH_HORN)) { - Ped ped = PLAYER::PLAYER_PED_ID(); - Vehicle veh = PED::GET_VEHICLE_PED_IS_IN(ped, false); + if (hornBoostSpeed < hostBoostSpeedMax) hornBoostSpeed++; - if (veh == 0) return; - if (VEHICLE::GET_PED_IN_VEHICLE_SEAT(veh, -1, 0) != ped) return; - - Vector3 velocity = ENTITY::GET_ENTITY_VELOCITY(veh) * 1.05f; - ENTITY::SET_ENTITY_VELOCITY(veh, velocity.x, velocity.y, velocity.z - 0.5f); + const auto velocity = + ENTITY::GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(veh, 0.f, hornBoostSpeed, 0.f) - ENTITY::GET_ENTITY_COORDS(veh, true); + ENTITY::SET_ENTITY_VELOCITY(veh, velocity.x, velocity.y, velocity.z); } + else if (PAD::IS_CONTROL_JUST_RELEASED(0, (int)ControllerInputs::INPUT_VEH_HORN)) + hornBoostSpeed = hornBoostSpeedDefault; } } \ No newline at end of file