feat: interior weapon (#974)

This commit is contained in:
Aure7138 2023-02-11 05:46:40 +08:00 committed by GitHub
parent 37199eaefa
commit 77e9c9e884
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 49 additions and 1 deletions

View File

@ -614,10 +614,11 @@ namespace big
bool increased_c4_limit = false; bool increased_c4_limit = false;
bool increased_flare_limit = false; bool increased_flare_limit = false;
bool rapid_fire = false; bool rapid_fire = false;
bool interior_weapon = false;
NLOHMANN_DEFINE_TYPE_INTRUSIVE(weapons, NLOHMANN_DEFINE_TYPE_INTRUSIVE(weapons,
ammo_special, custom_weapon, force_crosshairs, infinite_ammo, infinite_mag, increased_damage, no_recoil, ammo_special, custom_weapon, force_crosshairs, infinite_ammo, infinite_mag, increased_damage, no_recoil,
no_spread, vehicle_gun_model, increased_c4_limit, increased_flare_limit, rapid_fire, gravity_gun) no_spread, vehicle_gun_model, increased_c4_limit, increased_flare_limit, rapid_fire, gravity_gun, interior_weapon)
} weapons{}; } weapons{};
struct window struct window

View File

@ -5,6 +5,7 @@
#include "fiber_pool.hpp" #include "fiber_pool.hpp"
#include "util/scripts.hpp" #include "util/scripts.hpp"
#include "hooking.hpp" #include "hooking.hpp"
#include "gta/enums.hpp"
namespace big namespace big
{ {
@ -49,5 +50,48 @@ namespace big
src->set_return_value<BOOL>(NETWORK::NETWORK_TRY_TO_SET_THIS_SCRIPT_IS_NETWORK_SCRIPT(src->get_arg<int>(0), src->get_arg<BOOL>(1), src->get_arg<int>(2))); src->set_return_value<BOOL>(NETWORK::NETWORK_TRY_TO_SET_THIS_SCRIPT_IS_NETWORK_SCRIPT(src->get_arg<int>(0), src->get_arg<BOOL>(1), src->get_arg<int>(2)));
} }
void SET_CURRENT_PED_WEAPON(rage::scrNativeCallContext* src)
{
const auto ped = src->get_arg<Ped>(0);
const auto hash = src->get_arg<rage::joaat_t>(1);
if (g.weapons.interior_weapon && ped == self::ped && hash == RAGE_JOAAT("WEAPON_UNARMED"))
return;
WEAPON::SET_CURRENT_PED_WEAPON(ped, hash, src->get_arg<int>(2));
}
void DISABLE_CONTROL_ACTION(rage::scrNativeCallContext* src)
{
const auto action = src->get_arg<ControllerInputs>(1);
if (g.weapons.interior_weapon)
{
switch (action)
{
case ControllerInputs::INPUT_SELECT_WEAPON:
case ControllerInputs::INPUT_VEH_SELECT_NEXT_WEAPON:
case ControllerInputs::INPUT_VEH_SELECT_PREV_WEAPON:
case ControllerInputs::INPUT_DETONATE:
case ControllerInputs::INPUT_PICKUP:
case ControllerInputs::INPUT_JUMP:
case ControllerInputs::INPUT_TALK:
case ControllerInputs::INPUT_AIM:
case ControllerInputs::INPUT_MELEE_ATTACK_LIGHT:
case ControllerInputs::INPUT_MELEE_ATTACK_HEAVY:
case ControllerInputs::INPUT_MELEE_ATTACK_ALTERNATE:
case ControllerInputs::INPUT_MELEE_BLOCK:
case ControllerInputs::INPUT_VEH_ATTACK:
case ControllerInputs::INPUT_VEH_ATTACK2:
case ControllerInputs::INPUT_VEH_AIM:
case ControllerInputs::INPUT_VEH_PASSENGER_ATTACK:
case ControllerInputs::INPUT_VEH_FLY_SELECT_NEXT_WEAPON:
return;
}
}
PAD::DISABLE_CONTROL_ACTION(src->get_arg<int>(0), (int)action, src->get_arg<int>(2));
}
} }
} }

View File

@ -106,6 +106,8 @@ namespace big
add_native_detour(0x812595A0644CE1DE, all_scripts::IS_DLC_PRESENT); add_native_detour(0x812595A0644CE1DE, all_scripts::IS_DLC_PRESENT);
add_native_detour(0x1CA59E306ECB80A5, all_scripts::NETWORK_SET_THIS_SCRIPT_IS_NETWORK_SCRIPT); add_native_detour(0x1CA59E306ECB80A5, all_scripts::NETWORK_SET_THIS_SCRIPT_IS_NETWORK_SCRIPT);
add_native_detour(0xD1110739EEADB592, all_scripts::NETWORK_TRY_TO_SET_THIS_SCRIPT_IS_NETWORK_SCRIPT); add_native_detour(0xD1110739EEADB592, all_scripts::NETWORK_TRY_TO_SET_THIS_SCRIPT_IS_NETWORK_SCRIPT);
add_native_detour(0xADF692B254977C0C, all_scripts::SET_CURRENT_PED_WEAPON);
add_native_detour(0xFE99B66D079CF6BC, all_scripts::DISABLE_CONTROL_ACTION);
add_native_detour(RAGE_JOAAT("carmod_shop"), 0x06843DA7060A026B, carmod_shop::SET_ENTITY_COORDS); add_native_detour(RAGE_JOAAT("carmod_shop"), 0x06843DA7060A026B, carmod_shop::SET_ENTITY_COORDS);
add_native_detour(RAGE_JOAAT("carmod_shop"), 0x8E2530AA8ADA980E, carmod_shop::SET_ENTITY_HEADING); add_native_detour(RAGE_JOAAT("carmod_shop"), 0x8E2530AA8ADA980E, carmod_shop::SET_ENTITY_HEADING);

View File

@ -17,6 +17,7 @@ namespace big
components::command_checkbox<"infammo">(); components::command_checkbox<"infammo">();
components::command_checkbox<"infclip">(); components::command_checkbox<"infclip">();
ImGui::Checkbox("Interior Weapon", &g.weapons.interior_weapon);
ImGui::EndGroup(); ImGui::EndGroup();
ImGui::SameLine(); ImGui::SameLine();