From 03b65d53752fc8c0cead2679102f88b1cdf63bcb Mon Sep 17 00:00:00 2001 From: "R.K" Date: Tue, 30 Apr 2024 11:52:49 -0700 Subject: [PATCH] feat: Added Infinite Vehicle Ammo (#3003) --- .../looped/vehicle/infinite_veh_ammo.cpp | 40 +++++++++++++++++++ src/core/settings.hpp | 3 +- src/views/vehicle/view_vehicle.cpp | 1 + 3 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 src/backend/looped/vehicle/infinite_veh_ammo.cpp diff --git a/src/backend/looped/vehicle/infinite_veh_ammo.cpp b/src/backend/looped/vehicle/infinite_veh_ammo.cpp new file mode 100644 index 00000000..e5d8a2f6 --- /dev/null +++ b/src/backend/looped/vehicle/infinite_veh_ammo.cpp @@ -0,0 +1,40 @@ +#include "backend/looped_command.hpp" +#include "natives.hpp" + +namespace big +{ + class infinite_veh_ammo : looped_command + { + using looped_command::looped_command; + + virtual void on_tick() override + { + if (self::veh && VEHICLE::DOES_VEHICLE_HAVE_WEAPONS(self::veh)) + { + for (int i = 0; i < 3; i++) + { + VEHICLE::SET_VEHICLE_WEAPON_RESTRICTED_AMMO(self::veh, i, -1); + } + + VEHICLE::SET_VEHICLE_BOMB_AMMO(self::veh, -1); + VEHICLE::SET_VEHICLE_COUNTERMEASURE_AMMO(self::veh, -1); + } + } + + virtual void on_disable() override + { + if (self::veh && VEHICLE::DOES_VEHICLE_HAVE_WEAPONS(self::veh)) + { + for (int i = 0; i < 3; i++) + { + VEHICLE::SET_VEHICLE_WEAPON_RESTRICTED_AMMO(self::veh, i, 20); + } + + VEHICLE::SET_VEHICLE_BOMB_AMMO(self::veh, 20); + VEHICLE::SET_VEHICLE_COUNTERMEASURE_AMMO(self::veh, 20); + } + } + }; + + infinite_veh_ammo g_infinite_veh_ammo("infinitevehammo", "VEHICLE_INFINITE_AMMO", "VEHICLE_INFINITE_AMMO_DESC", g.vehicle.infinite_veh_ammo); +} diff --git a/src/core/settings.hpp b/src/core/settings.hpp index 797c0e6a..3ee7113a 100644 --- a/src/core/settings.hpp +++ b/src/core/settings.hpp @@ -753,6 +753,7 @@ namespace big bool drive_on_water = false; bool horn_boost = false; bool instant_brake = false; + bool infinite_veh_ammo = false; bool block_homing = true; bool ls_customs = false; // don't save this to disk bool seatbelt = false; @@ -807,7 +808,7 @@ namespace big NLOHMANN_DEFINE_TYPE_INTRUSIVE(vehicle_ammo_special, enabled, type, explosion_tag, speed, time_between_shots, alternate_wait_time, weapon_range, rocket_time_between_shots, rocket_alternate_wait_time, rocket_lock_on_range, rocket_range, rocket_reload_time, rocket_explosion_tag, rocket_lifetime, rocket_launch_speed, rocket_time_before_homing, rocket_improve_tracking) } vehicle_ammo_special{}; - NLOHMANN_DEFINE_TYPE_INTRUSIVE(vehicle, speedo_meter, fly, rainbow_paint, speed_unit, god_mode, proof_bullet, proof_fire, proof_collision, proof_melee, proof_explosion, proof_steam, proof_water, proof_mask, auto_drive_destination, auto_drive_style, auto_drive_speed, auto_turn_signals, boost_behavior, drive_on_water, horn_boost, instant_brake, block_homing, seatbelt, turn_signals, vehicle_jump, keep_vehicle_repaired, no_water_collision, disable_engine_auto_start, change_engine_state_immediately, keep_engine_running, keep_vehicle_clean, vehinvisibility, localveh_visibility, keep_on_ground, no_collision, unlimited_weapons, siren_mute, all_vehs_in_heists, abilities, vehicle_ammo_special) + NLOHMANN_DEFINE_TYPE_INTRUSIVE(vehicle, speedo_meter, fly, rainbow_paint, speed_unit, god_mode, proof_bullet, proof_fire, proof_collision, proof_melee, proof_explosion, proof_steam, proof_water, proof_mask, auto_drive_destination, auto_drive_style, auto_drive_speed, auto_turn_signals, boost_behavior, drive_on_water, horn_boost, instant_brake, infinite_veh_ammo, block_homing, seatbelt, turn_signals, vehicle_jump, keep_vehicle_repaired, no_water_collision, disable_engine_auto_start, change_engine_state_immediately, keep_engine_running, keep_vehicle_clean, vehinvisibility, localveh_visibility, keep_on_ground, no_collision, unlimited_weapons, siren_mute, all_vehs_in_heists, abilities, vehicle_ammo_special) } vehicle{}; struct weapons diff --git a/src/views/vehicle/view_vehicle.cpp b/src/views/vehicle/view_vehicle.cpp index ee454a3a..df55f288 100644 --- a/src/views/vehicle/view_vehicle.cpp +++ b/src/views/vehicle/view_vehicle.cpp @@ -68,6 +68,7 @@ namespace big ImGui::BeginGroup(); components::command_checkbox<"vehgodmode">("GOD_MODE"_T.data()); + components::command_checkbox<"infinitevehammo">(); components::command_checkbox<"hornboost">(); components::command_checkbox<"vehjump">(); components::command_checkbox<"invisveh">();