From 15d92940be8017a3a84091260662e00322b0b3ae Mon Sep 17 00:00:00 2001 From: gir489 <100792176+gir489returns@users.noreply.github.com> Date: Tue, 23 Jul 2024 14:13:51 -0400 Subject: [PATCH] Fixed friendly NPCs being incorrectly targeted by the aimbot/triggerbot. (#3412) Added friends check to the aimbot/triggerbot. --- .../looped/session/spoof_host_token.cpp | 205 ++++++++------- src/backend/looped/weapons/aimbot.cpp | 25 +- src/backend/looped/weapons/triggerbot.cpp | 233 +++++++++-------- src/core/settings.hpp | 1 + src/gta/enums.hpp | 239 ++++++++++++++++++ src/views/self/view_weapons.cpp | 2 + 6 files changed, 486 insertions(+), 219 deletions(-) diff --git a/src/backend/looped/session/spoof_host_token.cpp b/src/backend/looped/session/spoof_host_token.cpp index 66e25019..ccc57db1 100644 --- a/src/backend/looped/session/spoof_host_token.cpp +++ b/src/backend/looped/session/spoof_host_token.cpp @@ -1,104 +1,103 @@ -#include "backend/looped/looped.hpp" -#include "backend/looped_command.hpp" -#include "pointers.hpp" -#include "gta_util.hpp" -#include "util/math.hpp" -#include -#include - -namespace big -{ - void set_peer_id_upper(std::uint64_t upper) - { - *g_pointers->m_gta.m_peer_id &= 0xFFFFFFFF; - *g_pointers->m_gta.m_peer_id |= (upper << 32); - - if (gta_util::get_network()->m_game_session_ptr) - gta_util::get_network()->m_game_session_ptr->m_local_player.m_player_data.m_peer_id = *g_pointers->m_gta.m_peer_id; - if (gta_util::get_network()->m_transition_session_ptr) - gta_util::get_network()->m_transition_session_ptr->m_local_player.m_player_data.m_peer_id = *g_pointers->m_gta.m_peer_id; - - g_pointers->m_gta.m_profile_gamer_info->m_peer_id = *g_pointers->m_gta.m_peer_id; - g_pointers->m_gta.m_player_info_gamer_info->m_peer_id = *g_pointers->m_gta.m_peer_id; - (*g_pointers->m_gta.m_communications)->m_voice.m_connections[0]->m_gamer_info.m_peer_id = *g_pointers->m_gta.m_peer_id; - - if (g_local_player && g_local_player->m_player_info) - g_local_player->m_player_info->m_net_player_data.m_peer_id = *g_pointers->m_gta.m_peer_id; - } - - void set_host_token(std::uint64_t token) - { - *g_pointers->m_gta.m_host_token = token; - - if (gta_util::get_network()->m_game_session_ptr) - gta_util::get_network()->m_game_session_ptr->m_local_player.m_player_data.m_host_token = token; - if (gta_util::get_network()->m_transition_session_ptr) - gta_util::get_network()->m_transition_session_ptr->m_local_player.m_player_data.m_host_token = token; - - g_pointers->m_gta.m_profile_gamer_info->m_host_token = token; - g_pointers->m_gta.m_player_info_gamer_info->m_host_token = token; - (*g_pointers->m_gta.m_communications)->m_voice.m_connections[0]->m_gamer_info.m_host_token = token; - - if (g_local_player && g_local_player->m_player_info) - g_local_player->m_player_info->m_net_player_data.m_host_token = token; - - - set_peer_id_upper(token >> 32); - } - - class spoof_host_token_internal : looped_command - { - using looped_command::looped_command; - - virtual void on_enable() override - { - g.session.original_host_token = *g_pointers->m_gta.m_host_token; - } - - virtual void on_tick() override - { - if (g.session.spoof_host_token_dirty && gta_util::get_network()->m_game_session_state == 0) - { - switch (g.session.spoof_host_token_type) - { - case 0: // Disabled - { - set_host_token(g.session.original_host_token); - break; - } - case 1: // Legit - { - std::uint64_t rand_upper = math::rand(20, 230); - set_host_token(((g.session.original_host_token) & 0xFFFFFFFF) | (rand_upper << 32)); - break; - } - case 2: // Aggressive - { - set_host_token(math::rand(10, 1000)); - break; - } - case 3: // Very aggressive - { - set_host_token(0); - break; - } - case 4: // Custom - { - set_host_token(g.session.custom_host_token); - break; - } - } - g.session.spoof_host_token_dirty = false; - } - } - - virtual void on_disable() override - { - if (g.session.original_host_token) - set_host_token(g.session.original_host_token); - } - }; - - static bool true_ref = true; - spoof_host_token_internal g_spoof_host_token_internal("$$spoofhosttoken", "", "", true_ref); +#include "backend/looped_command.hpp" +#include "pointers.hpp" +#include "gta_util.hpp" +#include "util/math.hpp" +#include +#include + +namespace big +{ + void set_peer_id_upper(std::uint64_t upper) + { + *g_pointers->m_gta.m_peer_id &= 0xFFFFFFFF; + *g_pointers->m_gta.m_peer_id |= (upper << 32); + + if (gta_util::get_network()->m_game_session_ptr) + gta_util::get_network()->m_game_session_ptr->m_local_player.m_player_data.m_peer_id = *g_pointers->m_gta.m_peer_id; + if (gta_util::get_network()->m_transition_session_ptr) + gta_util::get_network()->m_transition_session_ptr->m_local_player.m_player_data.m_peer_id = *g_pointers->m_gta.m_peer_id; + + g_pointers->m_gta.m_profile_gamer_info->m_peer_id = *g_pointers->m_gta.m_peer_id; + g_pointers->m_gta.m_player_info_gamer_info->m_peer_id = *g_pointers->m_gta.m_peer_id; + (*g_pointers->m_gta.m_communications)->m_voice.m_connections[0]->m_gamer_info.m_peer_id = *g_pointers->m_gta.m_peer_id; + + if (g_local_player && g_local_player->m_player_info) + g_local_player->m_player_info->m_net_player_data.m_peer_id = *g_pointers->m_gta.m_peer_id; + } + + void set_host_token(std::uint64_t token) + { + *g_pointers->m_gta.m_host_token = token; + + if (gta_util::get_network()->m_game_session_ptr) + gta_util::get_network()->m_game_session_ptr->m_local_player.m_player_data.m_host_token = token; + if (gta_util::get_network()->m_transition_session_ptr) + gta_util::get_network()->m_transition_session_ptr->m_local_player.m_player_data.m_host_token = token; + + g_pointers->m_gta.m_profile_gamer_info->m_host_token = token; + g_pointers->m_gta.m_player_info_gamer_info->m_host_token = token; + (*g_pointers->m_gta.m_communications)->m_voice.m_connections[0]->m_gamer_info.m_host_token = token; + + if (g_local_player && g_local_player->m_player_info) + g_local_player->m_player_info->m_net_player_data.m_host_token = token; + + + set_peer_id_upper(token >> 32); + } + + class spoof_host_token_internal : looped_command + { + using looped_command::looped_command; + + virtual void on_enable() override + { + g.session.original_host_token = *g_pointers->m_gta.m_host_token; + } + + virtual void on_tick() override + { + if (g.session.spoof_host_token_dirty && gta_util::get_network()->m_game_session_state == 0) + { + switch (g.session.spoof_host_token_type) + { + case 0: // Disabled + { + set_host_token(g.session.original_host_token); + break; + } + case 1: // Legit + { + std::uint64_t rand_upper = math::rand(20, 230); + set_host_token(((g.session.original_host_token) & 0xFFFFFFFF) | (rand_upper << 32)); + break; + } + case 2: // Aggressive + { + set_host_token(math::rand(10, 1000)); + break; + } + case 3: // Very aggressive + { + set_host_token(0); + break; + } + case 4: // Custom + { + set_host_token(g.session.custom_host_token); + break; + } + } + g.session.spoof_host_token_dirty = false; + } + } + + virtual void on_disable() override + { + if (g.session.original_host_token) + set_host_token(g.session.original_host_token); + } + }; + + static bool true_ref = true; + spoof_host_token_internal g_spoof_host_token_internal("$$spoofhosttoken", "", "", true_ref); } \ No newline at end of file diff --git a/src/backend/looped/weapons/aimbot.cpp b/src/backend/looped/weapons/aimbot.cpp index 06e65f7e..02774e55 100644 --- a/src/backend/looped/weapons/aimbot.cpp +++ b/src/backend/looped/weapons/aimbot.cpp @@ -4,6 +4,8 @@ #include "natives.hpp" #include "util/math.hpp" #include "util/pools.hpp" +#include "services/friends/friends_service.hpp" +#include "services/player_database/player_database_service.hpp" namespace big { @@ -136,6 +138,17 @@ namespace big { continue; } + + if (g.weapons.aimbot.exclude_friends && !ped->m_player_info) + { + auto rockstar_id = ped->m_player_info->m_net_player_data.m_gamer_handle.m_rockstar_id; + auto is_friend = friends_service::is_friend(rockstar_id); + auto db_player = g_player_database_service->get_player_by_rockstar_id(rockstar_id); + auto is_trusted = db_player && db_player->is_trusted; + + if (is_friend || is_trusted) + continue; + } const auto ped_handle = g_pointers->m_gta.m_ptr_to_handle(ped); @@ -143,20 +156,20 @@ namespace big { bool is_hated_relationship = false; bool is_in_combat = PED::IS_PED_IN_COMBAT(ped_handle, self::ped); - auto blip_color = HUD::GET_BLIP_COLOUR(HUD::GET_BLIP_FROM_ENTITY(ped_handle)); - bool is_enemy = PED::GET_PED_CONFIG_FLAG(ped_handle, 38, TRUE) == TRUE || (blip_color == (int)BlipColors::BlipColorEnemy || blip_color == (int)BlipColors::RedMission); + auto blip_color = HUD::GET_BLIP_HUD_COLOUR(HUD::GET_BLIP_FROM_ENTITY(ped_handle)); + bool is_enemy = ((PED::GET_PED_CONFIG_FLAG(ped_handle, 38, TRUE) == TRUE) || (blip_color == HUD_COLOUR_RED)); switch (PED::GET_RELATIONSHIP_BETWEEN_PEDS(ped_handle, self::ped)) { - case Dislike: - case Wanted: - case Hate: is_hated_relationship = true; + case Dislike: + case Wanted: + case Hate: is_hated_relationship = true; } if (!is_hated_relationship && !is_in_combat && !is_enemy) { /*if (PED::GET_PED_TYPE(ped_handle) != PED_TYPE_ANIMAL) - LOG(INFO) << " PED_TYPE " << PED::GET_PED_TYPE(ped_handle) << " hated " << is_hated_relationship << " combat " << is_in_combat << " enemy " << is_enemy << " blip_color " << blip_color;*/ + LOG(INFO) << " PED_TYPE " << PED::GET_PED_TYPE(ped_handle) << " hated " << is_hated_relationship << " combat " << is_in_combat << " enemy " << is_enemy << " blip_color " << blip_color;*/ continue; } } diff --git a/src/backend/looped/weapons/triggerbot.cpp b/src/backend/looped/weapons/triggerbot.cpp index 51c86f47..b8784116 100644 --- a/src/backend/looped/weapons/triggerbot.cpp +++ b/src/backend/looped/weapons/triggerbot.cpp @@ -1,110 +1,123 @@ -#include "backend/looped_command.hpp" -#include "gta/enums.hpp" -#include "natives.hpp" -#include "util/entity.hpp" - -namespace big -{ - class triggerbot : looped_command - { - using looped_command::looped_command; - - virtual void on_tick() override - { - Entity crosshair_catch; - if (PAD::IS_DISABLED_CONTROL_PRESSED(0, (int)ControllerInputs::INPUT_AIM)) - { - if (g.weapons.aimbot.enable && g.weapons.aimbot.has_target) - { - PED::SET_PED_RESET_FLAG(self::ped, 65, TRUE); - } - else if (entity::raycast(&crosshair_catch)) - { - if (ENTITY::IS_ENTITY_A_PED(crosshair_catch) && !ENTITY::IS_ENTITY_DEAD(crosshair_catch, 0)) - { - Ped ped = (Ped)crosshair_catch; - CPed* ped_ptr = reinterpret_cast(g_pointers->m_gta.m_handle_to_ptr(ped)); - - if (ped_ptr == nullptr) - return; - - if (g.weapons.aimbot.only_on_player && !ped_ptr->m_player_info) - return; - - if (g.weapons.aimbot.only_on_enemy) - { - bool is_hated_relationship = false; - bool is_in_combat = PED::IS_PED_IN_COMBAT(ped, self::ped); - auto blip_color = HUD::GET_BLIP_COLOUR(HUD::GET_BLIP_FROM_ENTITY(ped)); - bool is_enemy = PED::GET_PED_CONFIG_FLAG(ped, 38, TRUE) == TRUE || (blip_color == (int)BlipColors::BlipColorEnemy || blip_color == (int)BlipColors::RedMission); - - switch (PED::GET_RELATIONSHIP_BETWEEN_PEDS(ped, self::ped)) - { - case Dislike: - case Wanted: - case Hate: is_hated_relationship = true; - } - - if (!is_hated_relationship && !is_in_combat && !is_enemy) - { - return; - } - } - - bool is_a_ped_type_we_dont_care_about; - const auto ped_type = PED::GET_PED_TYPE(ped); - - switch (ped_type) - { - case ePedType::PED_TYPE_PLAYER_0: - case ePedType::PED_TYPE_PLAYER_1: - case ePedType::PED_TYPE_NETWORK_PLAYER: - case ePedType::PED_TYPE_PLAYER_2: - case ePedType::PED_TYPE_CIVMALE: - case ePedType::PED_TYPE_CIVFEMALE: - case ePedType::PED_TYPE_COP: - case ePedType::PED_TYPE_GANG_ALBANIAN: - case ePedType::PED_TYPE_GANG_BIKER_1: - case ePedType::PED_TYPE_GANG_BIKER_2: - case ePedType::PED_TYPE_GANG_ITALIAN: - case ePedType::PED_TYPE_GANG_RUSSIAN: - case ePedType::PED_TYPE_GANG_RUSSIAN_2: - case ePedType::PED_TYPE_GANG_IRISH: - case ePedType::PED_TYPE_GANG_JAMAICAN: - case ePedType::PED_TYPE_GANG_AFRICAN_AMERICAN: - case ePedType::PED_TYPE_GANG_KOREAN: - case ePedType::PED_TYPE_GANG_CHINESE_JAPANESE: - case ePedType::PED_TYPE_GANG_PUERTO_RICAN: - case ePedType::PED_TYPE_DEALER: - case ePedType::PED_TYPE_MEDIC: - case ePedType::PED_TYPE_FIREMAN: - case ePedType::PED_TYPE_CRIMINAL: - case ePedType::PED_TYPE_BUM: - case ePedType::PED_TYPE_PROSTITUTE: - case ePedType::PED_TYPE_SPECIAL: - case ePedType::PED_TYPE_MISSION: - case ePedType::PED_TYPE_SWAT: - case ePedType::PED_TYPE_ANIMAL: - case ePedType::PED_TYPE_ARMY: - { - is_a_ped_type_we_dont_care_about = (g.weapons.aimbot.only_on_ped_type & (1LL << ped_type)) == 0; - } - default: is_a_ped_type_we_dont_care_about = false; - } - - if (is_a_ped_type_we_dont_care_about) - { - return; - } - - //Vector3 coords = ENTITY::GET_ENTITY_BONE_POSTION(crosshair_catch, 0x796E); //SKEL_Head (This will fix the edge case of peds in cars) - //PED::SET_PED_SHOOTS_AT_COORD(self::ped, coords.x, coords.y, coords.z, true); - PED::SET_PED_RESET_FLAG(self::ped, 65, TRUE); - } - } - } - } - }; - - triggerbot g_triggerbot("triggerbot", "VIEW_OVERLAY_TRIGGERBOT", "BACKEND_LOOPED_WEAPONS_TRIGGERBOT_DESC", g.weapons.triggerbot); -} +#include "backend/looped_command.hpp" +#include "gta/enums.hpp" +#include "natives.hpp" +#include "util/entity.hpp" +#include "services/friends/friends_service.hpp" +#include "services/player_database/player_database_service.hpp" + +namespace big +{ + class triggerbot : looped_command + { + using looped_command::looped_command; + + virtual void on_tick() override + { + Entity crosshair_catch; + if (PAD::IS_DISABLED_CONTROL_PRESSED(0, (int)ControllerInputs::INPUT_AIM)) + { + if (g.weapons.aimbot.enable && g.weapons.aimbot.has_target) + { + PED::SET_PED_RESET_FLAG(self::ped, 65, TRUE); + } + else if (entity::raycast(&crosshair_catch)) + { + if (ENTITY::IS_ENTITY_A_PED(crosshair_catch) && !ENTITY::IS_ENTITY_DEAD(crosshair_catch, 0)) + { + Ped ped = (Ped)crosshair_catch; + CPed* ped_ptr = reinterpret_cast(g_pointers->m_gta.m_handle_to_ptr(ped)); + + if (ped_ptr == nullptr) + return; + + if (g.weapons.aimbot.only_on_player && !ped_ptr->m_player_info) + return; + + if (g.weapons.aimbot.exclude_friends && !ped_ptr->m_player_info) + { + auto rockstar_id = ped_ptr->m_player_info->m_net_player_data.m_gamer_handle.m_rockstar_id; + auto is_friend = friends_service::is_friend(rockstar_id); + auto db_player = g_player_database_service->get_player_by_rockstar_id(rockstar_id); + auto is_trusted = db_player && db_player->is_trusted; + + if (is_friend || is_trusted) + return; + } + + if (g.weapons.aimbot.only_on_enemy) + { + bool is_hated_relationship = false; + bool is_in_combat = PED::IS_PED_IN_COMBAT(ped, self::ped); + auto blip_color = HUD::GET_BLIP_HUD_COLOUR(HUD::GET_BLIP_FROM_ENTITY(ped)); + bool is_enemy = ((PED::GET_PED_CONFIG_FLAG(ped, 38, TRUE) == TRUE) || (blip_color == HUD_COLOUR_RED)); + + switch (PED::GET_RELATIONSHIP_BETWEEN_PEDS(ped, self::ped)) + { + case Dislike: + case Wanted: + case Hate: is_hated_relationship = true; + } + + if (!is_hated_relationship && !is_in_combat && !is_enemy) + { + return; + } + } + + bool is_a_ped_type_we_dont_care_about; + const auto ped_type = PED::GET_PED_TYPE(ped); + + switch (ped_type) + { + case ePedType::PED_TYPE_PLAYER_0: + case ePedType::PED_TYPE_PLAYER_1: + case ePedType::PED_TYPE_NETWORK_PLAYER: + case ePedType::PED_TYPE_PLAYER_2: + case ePedType::PED_TYPE_CIVMALE: + case ePedType::PED_TYPE_CIVFEMALE: + case ePedType::PED_TYPE_COP: + case ePedType::PED_TYPE_GANG_ALBANIAN: + case ePedType::PED_TYPE_GANG_BIKER_1: + case ePedType::PED_TYPE_GANG_BIKER_2: + case ePedType::PED_TYPE_GANG_ITALIAN: + case ePedType::PED_TYPE_GANG_RUSSIAN: + case ePedType::PED_TYPE_GANG_RUSSIAN_2: + case ePedType::PED_TYPE_GANG_IRISH: + case ePedType::PED_TYPE_GANG_JAMAICAN: + case ePedType::PED_TYPE_GANG_AFRICAN_AMERICAN: + case ePedType::PED_TYPE_GANG_KOREAN: + case ePedType::PED_TYPE_GANG_CHINESE_JAPANESE: + case ePedType::PED_TYPE_GANG_PUERTO_RICAN: + case ePedType::PED_TYPE_DEALER: + case ePedType::PED_TYPE_MEDIC: + case ePedType::PED_TYPE_FIREMAN: + case ePedType::PED_TYPE_CRIMINAL: + case ePedType::PED_TYPE_BUM: + case ePedType::PED_TYPE_PROSTITUTE: + case ePedType::PED_TYPE_SPECIAL: + case ePedType::PED_TYPE_MISSION: + case ePedType::PED_TYPE_SWAT: + case ePedType::PED_TYPE_ANIMAL: + case ePedType::PED_TYPE_ARMY: + { + is_a_ped_type_we_dont_care_about = (g.weapons.aimbot.only_on_ped_type & (1LL << ped_type)) == 0; + } + default: is_a_ped_type_we_dont_care_about = false; + } + + if (is_a_ped_type_we_dont_care_about) + { + return; + } + + //Vector3 coords = ENTITY::GET_ENTITY_BONE_POSTION(crosshair_catch, 0x796E); //SKEL_Head (This will fix the edge case of peds in cars) + //PED::SET_PED_SHOOTS_AT_COORD(self::ped, coords.x, coords.y, coords.z, true); + PED::SET_PED_RESET_FLAG(self::ped, 65, TRUE); + } + } + } + } + }; + + triggerbot g_triggerbot("triggerbot", "VIEW_OVERLAY_TRIGGERBOT", "BACKEND_LOOPED_WEAPONS_TRIGGERBOT_DESC", g.weapons.triggerbot); +} diff --git a/src/core/settings.hpp b/src/core/settings.hpp index bcfcabc4..d61a9b78 100644 --- a/src/core/settings.hpp +++ b/src/core/settings.hpp @@ -901,6 +901,7 @@ namespace big bool enable = false; int64_t only_on_ped_type = -1; bool only_on_player = false; + bool exclude_friends = false; bool only_on_enemy = false; bool has_target = false; float fov = 60.f; diff --git a/src/gta/enums.hpp b/src/gta/enums.hpp index 84c4497f..5109360a 100644 --- a/src/gta/enums.hpp +++ b/src/gta/enums.hpp @@ -2140,3 +2140,242 @@ enum PedRelationships : int Hate, Indifferent = 255 }; + +enum HudColors : int //https://docs.fivem.net/docs/game-references/hud-colors/ +{ + HUD_COLOUR_PURE_WHITE, + HUD_COLOUR_WHITE, + HUD_COLOUR_BLACK, + HUD_COLOUR_GREY, + HUD_COLOUR_GREYLIGHT, + HUD_COLOUR_GREYDARK, + HUD_COLOUR_RED, + HUD_COLOUR_REDLIGHT, + HUD_COLOUR_REDDARK, + HUD_COLOUR_BLUE, + HUD_COLOUR_BLUELIGHT, + HUD_COLOUR_BLUEDARK, + HUD_COLOUR_YELLOW, + HUD_COLOUR_YELLOWLIGHT, + HUD_COLOUR_YELLOWDARK, + HUD_COLOUR_ORANGE, + HUD_COLOUR_ORANGELIGHT, + HUD_COLOUR_ORANGEDARK, + HUD_COLOUR_GREEN, + HUD_COLOUR_GREENLIGHT, + HUD_COLOUR_GREENDARK, + HUD_COLOUR_PURPLE, + HUD_COLOUR_PURPLELIGHT, + HUD_COLOUR_PURPLEDARK, + HUD_COLOUR_PINK, + HUD_COLOUR_RADAR_HEALTH, + HUD_COLOUR_RADAR_ARMOUR, + HUD_COLOUR_RADAR_DAMAGE, + HUD_COLOUR_NET_PLAYER1, + HUD_COLOUR_NET_PLAYER2, + HUD_COLOUR_NET_PLAYER3, + HUD_COLOUR_NET_PLAYER4, + HUD_COLOUR_NET_PLAYER5, + HUD_COLOUR_NET_PLAYER6, + HUD_COLOUR_NET_PLAYER7, + HUD_COLOUR_NET_PLAYER8, + HUD_COLOUR_NET_PLAYER9, + HUD_COLOUR_NET_PLAYER10, + HUD_COLOUR_NET_PLAYER11, + HUD_COLOUR_NET_PLAYER12, + HUD_COLOUR_NET_PLAYER13, + HUD_COLOUR_NET_PLAYER14, + HUD_COLOUR_NET_PLAYER15, + HUD_COLOUR_NET_PLAYER16, + HUD_COLOUR_NET_PLAYER17, + HUD_COLOUR_NET_PLAYER18, + HUD_COLOUR_NET_PLAYER19, + HUD_COLOUR_NET_PLAYER20, + HUD_COLOUR_NET_PLAYER21, + HUD_COLOUR_NET_PLAYER22, + HUD_COLOUR_NET_PLAYER23, + HUD_COLOUR_NET_PLAYER24, + HUD_COLOUR_NET_PLAYER25, + HUD_COLOUR_NET_PLAYER26, + HUD_COLOUR_NET_PLAYER27, + HUD_COLOUR_NET_PLAYER28, + HUD_COLOUR_NET_PLAYER29, + HUD_COLOUR_NET_PLAYER30, + HUD_COLOUR_NET_PLAYER31, + HUD_COLOUR_NET_PLAYER32, + HUD_COLOUR_SIMPLEBLIP_DEFAULT, + HUD_COLOUR_MENU_BLUE, + HUD_COLOUR_MENU_GREY_LIGHT, + HUD_COLOUR_MENU_BLUE_EXTRA_DARK, + HUD_COLOUR_MENU_YELLOW, + HUD_COLOUR_MENU_YELLOW_DARK, + HUD_COLOUR_MENU_GREEN, + HUD_COLOUR_MENU_GREY, + HUD_COLOUR_MENU_GREY_DARK, + HUD_COLOUR_MENU_HIGHLIGHT, + HUD_COLOUR_MENU_STANDARD, + HUD_COLOUR_MENU_DIMMED, + HUD_COLOUR_MENU_EXTRA_DIMMED, + HUD_COLOUR_BRIEF_TITLE, + HUD_COLOUR_MID_GREY_MP, + HUD_COLOUR_NET_PLAYER1_DARK, + HUD_COLOUR_NET_PLAYER2_DARK, + HUD_COLOUR_NET_PLAYER3_DARK, + HUD_COLOUR_NET_PLAYER4_DARK, + HUD_COLOUR_NET_PLAYER5_DARK, + HUD_COLOUR_NET_PLAYER6_DARK, + HUD_COLOUR_NET_PLAYER7_DARK, + HUD_COLOUR_NET_PLAYER8_DARK, + HUD_COLOUR_NET_PLAYER9_DARK, + HUD_COLOUR_NET_PLAYER10_DARK, + HUD_COLOUR_NET_PLAYER11_DARK, + HUD_COLOUR_NET_PLAYER12_DARK, + HUD_COLOUR_NET_PLAYER13_DARK, + HUD_COLOUR_NET_PLAYER14_DARK, + HUD_COLOUR_NET_PLAYER15_DARK, + HUD_COLOUR_NET_PLAYER16_DARK, + HUD_COLOUR_NET_PLAYER17_DARK, + HUD_COLOUR_NET_PLAYER18_DARK, + HUD_COLOUR_NET_PLAYER19_DARK, + HUD_COLOUR_NET_PLAYER20_DARK, + HUD_COLOUR_NET_PLAYER21_DARK, + HUD_COLOUR_NET_PLAYER22_DARK, + HUD_COLOUR_NET_PLAYER23_DARK, + HUD_COLOUR_NET_PLAYER24_DARK, + HUD_COLOUR_NET_PLAYER25_DARK, + HUD_COLOUR_NET_PLAYER26_DARK, + HUD_COLOUR_NET_PLAYER27_DARK, + HUD_COLOUR_NET_PLAYER28_DARK, + HUD_COLOUR_NET_PLAYER29_DARK, + HUD_COLOUR_NET_PLAYER30_DARK, + HUD_COLOUR_NET_PLAYER31_DARK, + HUD_COLOUR_NET_PLAYER32_DARK, + HUD_COLOUR_BRONZE, + HUD_COLOUR_SILVER, + HUD_COLOUR_GOLD, + HUD_COLOUR_PLATINUM, + HUD_COLOUR_GANG1, + HUD_COLOUR_GANG2, + HUD_COLOUR_GANG3, + HUD_COLOUR_GANG4, + HUD_COLOUR_SAME_CREW, + HUD_COLOUR_FREEMODE, + HUD_COLOUR_PAUSE_BG, + HUD_COLOUR_FRIENDLY, + HUD_COLOUR_ENEMY, + HUD_COLOUR_LOCATION, + HUD_COLOUR_PICKUP, + HUD_COLOUR_PAUSE_SINGLEPLAYER, + HUD_COLOUR_FREEMODE_DARK, + HUD_COLOUR_INACTIVE_MISSION, + HUD_COLOUR_DAMAGE, + HUD_COLOUR_PINKLIGHT, + HUD_COLOUR_PM_MITEM_HIGHLIGHT, + HUD_COLOUR_SCRIPT_VARIABLE, + HUD_COLOUR_YOGA, + HUD_COLOUR_TENNIS, + HUD_COLOUR_GOLF, + HUD_COLOUR_SHOOTING_RANGE, + HUD_COLOUR_FLIGHT_SCHOOL, + HUD_COLOUR_NORTH_BLUE, + HUD_COLOUR_SOCIAL_CLUB, + HUD_COLOUR_PLATFORM_BLUE, + HUD_COLOUR_PLATFORM_GREEN, + HUD_COLOUR_PLATFORM_GREY, + HUD_COLOUR_FACEBOOK_BLUE, + HUD_COLOUR_INGAME_BG, + HUD_COLOUR_DARTS, + HUD_COLOUR_WAYPOINT, + HUD_COLOUR_MICHAEL, + HUD_COLOUR_FRANKLIN, + HUD_COLOUR_TREVOR, + HUD_COLOUR_GOLF_P1, + HUD_COLOUR_GOLF_P2, + HUD_COLOUR_GOLF_P3, + HUD_COLOUR_GOLF_P4, + HUD_COLOUR_WAYPOINTLIGHT, + HUD_COLOUR_WAYPOINTDARK, + HUD_COLOUR_PANEL_LIGHT, + HUD_COLOUR_MICHAEL_DARK, + HUD_COLOUR_FRANKLIN_DARK, + HUD_COLOUR_TREVOR_DARK, + HUD_COLOUR_OBJECTIVE_ROUTE, + HUD_COLOUR_PAUSEMAP_TINT, + HUD_COLOUR_PAUSE_DESELECT, + HUD_COLOUR_PM_WEAPONS_PURCHASABLE, + HUD_COLOUR_PM_WEAPONS_LOCKED, + HUD_COLOUR_END_SCREEN_BG, + HUD_COLOUR_CHOP, + HUD_COLOUR_PAUSEMAP_TINT_HALF, + HUD_COLOUR_NORTH_BLUE_OFFICIAL, + HUD_COLOUR_SCRIPT_VARIABLE_2, + HUD_COLOUR_H, + HUD_COLOUR_HDARK, + HUD_COLOUR_T, + HUD_COLOUR_TDARK, + HUD_COLOUR_HSHARD, + HUD_COLOUR_CONTROLLER_MICHAEL, + HUD_COLOUR_CONTROLLER_FRANKLIN, + HUD_COLOUR_CONTROLLER_TREVOR, + HUD_COLOUR_CONTROLLER_CHOP, + HUD_COLOUR_VIDEO_EDITOR_VIDEO, + HUD_COLOUR_VIDEO_EDITOR_AUDIO, + HUD_COLOUR_VIDEO_EDITOR_TEXT, + HUD_COLOUR_HB_BLUE, + HUD_COLOUR_HB_YELLOW, + HUD_COLOUR_VIDEO_EDITOR_SCORE, + HUD_COLOUR_VIDEO_EDITOR_AUDIO_FADEOUT, + HUD_COLOUR_VIDEO_EDITOR_TEXT_FADEOUT, + HUD_COLOUR_VIDEO_EDITOR_SCORE_FADEOUT, + HUD_COLOUR_HEIST_BACKGROUND, + HUD_COLOUR_VIDEO_EDITOR_AMBIENT, + HUD_COLOUR_VIDEO_EDITOR_AMBIENT_FADEOUT, + HUD_COLOUR_VIDEO_EDITOR_AMBIENT_DARK, + HUD_COLOUR_VIDEO_EDITOR_AMBIENT_LIGHT, + HUD_COLOUR_VIDEO_EDITOR_AMBIENT_MID, + HUD_COLOUR_LOW_FLOW, + HUD_COLOUR_LOW_FLOW_DARK, + HUD_COLOUR_G1, + HUD_COLOUR_G2, + HUD_COLOUR_G3, + HUD_COLOUR_G4, + HUD_COLOUR_G5, + HUD_COLOUR_G6, + HUD_COLOUR_G7, + HUD_COLOUR_G8, + HUD_COLOUR_G9, + HUD_COLOUR_G10, + HUD_COLOUR_G11, + HUD_COLOUR_G12, + HUD_COLOUR_G13, + HUD_COLOUR_G14, + HUD_COLOUR_G15, + HUD_COLOUR_ADVERSARY, + HUD_COLOUR_DEGEN_RED, + HUD_COLOUR_DEGEN_YELLOW, + HUD_COLOUR_DEGEN_GREEN, + HUD_COLOUR_DEGEN_CYAN, + HUD_COLOUR_DEGEN_BLUE, + HUD_COLOUR_DEGEN_MAGENTA, + HUD_COLOUR_STUNT_1, + HUD_COLOUR_STUNT_2, + HUD_COLOUR_SPECIAL_RACE_SERIES, + HUD_COLOUR_SPECIAL_RACE_SERIES_DARK, + HUD_COLOUR_CS, + HUD_COLOUR_CS_DARK, + HUD_COLOUR_TECH_GREEN, + HUD_COLOUR_TECH_GREEN_DARK, + HUD_COLOUR_TECH_RED, + HUD_COLOUR_TECH_GREEN_VERY_DARK, + HUD_COLOUR_PLACEHOLDER_01, + HUD_COLOUR_PLACEHOLDER_02, + HUD_COLOUR_PLACEHOLDER_03, + HUD_COLOUR_PLACEHOLDER_04, + HUD_COLOUR_PLACEHOLDER_05, + HUD_COLOUR_PLACEHOLDER_06, + HUD_COLOUR_PLACEHOLDER_07, + HUD_COLOUR_PLACEHOLDER_08, + HUD_COLOUR_PLACEHOLDER_09, + HUD_COLOUR_PLACEHOLDER_10, + HUD_COLOUR_JUNK_ENERGY +}; \ No newline at end of file diff --git a/src/views/self/view_weapons.cpp b/src/views/self/view_weapons.cpp index fd5e0ef0..cdc05e20 100644 --- a/src/views/self/view_weapons.cpp +++ b/src/views/self/view_weapons.cpp @@ -190,6 +190,8 @@ namespace big { components::command_checkbox<"aimonlyatplayer">(); ImGui::SameLine(); + ImGui::Checkbox("TRUST_FRIENDS"_T.data(), &g.weapons.aimbot.exclude_friends); + ImGui::SameLine(); components::command_checkbox<"aimonlyatenemy">(); ImGui::CheckboxFlags("PLAYERS"_T.data(), &g.weapons.aimbot.only_on_ped_type, (int64_t)ePedTypeFlag::PED_TYPE_NETWORK_PLAYER);