refactor!: globals (#717)

* refactor(globals): use macro's for to_json/from_json
* refactor(globals): switch from global pointer to global instance
This commit is contained in:
Yimura
2022-12-18 23:15:52 +01:00
committed by GitHub
parent 4041370763
commit f6c00f113d
147 changed files with 1280 additions and 1902 deletions

View File

@ -40,10 +40,10 @@ namespace big
}
}
dl->AddRectFilled({ (float)*g_pointers->m_resolution_x - 360.f, 10.f + start_pos }, { (float)*g_pointers->m_resolution_x - 10.f, start_pos + 45.f + total_size }, g->window.color);
dl->AddRectFilled({ (float)*g_pointers->m_resolution_x - 360.f, 10.f + start_pos }, { (float)*g_pointers->m_resolution_x - 10.f, start_pos + 45.f + total_size }, g.window.color);
dl->AddRectFilledMultiColor({ (float)*g_pointers->m_resolution_x - 360.f, 10.f + start_pos }, { (float)*g_pointers->m_resolution_x - 255.f, start_pos + 45.f + total_size }, fadeBegin, fadeEnd, fadeEnd, fadeBegin);
dl->AddText(g->window.font_sub_title, 22.f, { (float)*g_pointers->m_resolution_x - 350.f, 15.f + start_pos }, textCol, title.c_str());
dl->AddText(g.window.font_sub_title, 22.f, { (float)*g_pointers->m_resolution_x - 350.f, 15.f + start_pos }, textCol, title.c_str());
int i = 0;
for (std::string txt : split_points)
{
@ -68,8 +68,8 @@ namespace big
prev_pos = draw_notification(prev_pos, draw_list, n.title, n.message, g_notification_service->notification_colors.at(n.type));
}
/*ImGui::SetNextWindowSize({ (float)g->window.x * 0.2f, (float)g->window.y });
ImGui::SetNextWindowPos({ (float)g->window.x - (float)g->window.x * 0.2f, 0 });
/*ImGui::SetNextWindowSize({ (float)g.window.x * 0.2f, (float)g.window.y });
ImGui::SetNextWindowPos({ (float)g.window.x - (float)g.window.x * 0.2f, 0 });
if (ImGui::Begin("notifications", nullptr, ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoNav | ImGuiWindowFlags_NoBackground | ImGuiWindowFlags_NoMouseInputs | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoBringToFrontOnFocus))
{
std::vector<notification> notifications = g_notification_service->get();

View File

@ -8,25 +8,25 @@ namespace big
{
if (ImGui::BeginTabItem("Logs"))
{
ImGui::Checkbox("Log Metrics", &g->debug.logs.metric_logs);
ImGui::Checkbox("Log Metrics", &g.debug.logs.metric_logs);
ImGui::Checkbox("Native Script Hooks", &g->debug.logs.script_hook_logs);
ImGui::Checkbox("Native Script Hooks", &g.debug.logs.script_hook_logs);
if (ImGui::TreeNode("Script Event Logging"))
{
ImGui::Checkbox("Enable Script Event Logging", &g->debug.logs.script_event.logs);
ImGui::Checkbox("Enable Script Event Logging", &g.debug.logs.script_event.logs);
ImGui::Separator();
ImGui::Checkbox("Filter by Player", &g->debug.logs.script_event.filter_player);
ImGui::Checkbox("Filter by Player", &g.debug.logs.script_event.filter_player);
if (g->debug.logs.script_event.filter_player)
if (g.debug.logs.script_event.filter_player)
{
ImGui::ListBoxHeader("##filter_player");
for (const auto& [_, player] : g_player_service->players())
{
if (components::selectable(player->get_name(), g->debug.logs.script_event.player_id == player->id()))
if (components::selectable(player->get_name(), g.debug.logs.script_event.player_id == player->id()))
{
g->debug.logs.script_event.player_id = player->id();
g.debug.logs.script_event.player_id = player->id();
}
}
ImGui::EndListBox();

View File

@ -22,7 +22,7 @@ namespace big
!plyr->get_ped() ||
!plyr->get_ped()->m_navigation)
return;
if (g->esp.hide_self && plyr->is_valid() && plyr->id() == g_player_service->get_self()->id())
if (g.esp.hide_self && plyr->is_valid() && plyr->id() == g_player_service->get_self()->id())
return;
auto& player_pos = *plyr->get_ped()->m_navigation->get_position();
@ -30,9 +30,9 @@ namespace big
float screen_x, screen_y;
const float distance = math::calculate_distance_from_game_cam(player_pos);
const float multplr = distance > g->esp.global_render_distance[1] ? -1.f : 6.17757f / distance;
const float multplr = distance > g.esp.global_render_distance[1] ? -1.f : 6.17757f / distance;
if (multplr == -1.f || g->esp.global_render_distance[0] > distance) return;
if (multplr == -1.f || g.esp.global_render_distance[0] > distance) return;
uint32_t ped_damage_bits = plyr->get_ped()->m_damage_bits;
@ -43,34 +43,34 @@ namespace big
std::string name_str;
ImVec2 name_pos = { esp_x - (62.5f * multplr), esp_y - (175.f * multplr) - 20.f };
ImU32 esp_color = g->esp.default_color;
ImU32 esp_color = g.esp.default_color;
if (plyr->is_friend())
{
esp_color = g->esp.friend_color;
esp_color = g.esp.friend_color;
}
else if (g->esp.change_esp_color_from_dist) {
if (distance <= g->esp.distance_threshold[0])
esp_color = g->esp.enemy_color;
else if (distance >= g->esp.distance_threshold[0] && distance < g->esp.distance_threshold[1])
esp_color = g->esp.enemy_near_color;
else if (g.esp.change_esp_color_from_dist) {
if (distance <= g.esp.distance_threshold[0])
esp_color = g.esp.enemy_color;
else if (distance >= g.esp.distance_threshold[0] && distance < g.esp.distance_threshold[1])
esp_color = g.esp.enemy_near_color;
}
const auto armor_perc = plyr->get_ped()->m_armor / 50.f;
const auto health_perc = plyr->get_ped()->m_health / (plyr->get_ped()->m_maxhealth + 0.001f);
if (distance < g->esp.tracer_render_distance[1] && distance > g->esp.tracer_render_distance[0] && g->esp.tracer)
draw_list->AddLine({ (float)*g_pointers->m_resolution_x * g->esp.tracer_draw_position[0], (float)*g_pointers->m_resolution_y * g->esp.tracer_draw_position[1] }, { esp_x, esp_y }, esp_color);
if (distance < g.esp.tracer_render_distance[1] && distance > g.esp.tracer_render_distance[0] && g.esp.tracer)
draw_list->AddLine({ (float)*g_pointers->m_resolution_x * g.esp.tracer_draw_position[0], (float)*g_pointers->m_resolution_y * g.esp.tracer_draw_position[1] }, { esp_x, esp_y }, esp_color);
if (distance < g->esp.box_render_distance[1] && distance > g->esp.box_render_distance[0] && g->esp.box)
if (distance < g.esp.box_render_distance[1] && distance > g.esp.box_render_distance[0] && g.esp.box)
draw_list->AddRect({ esp_x - (62.5f * multplr), esp_y - (175.f * multplr) }, { esp_x - (62.5f * multplr) + (125.f * multplr), esp_y - (175.f * multplr) + (350.f * multplr) }, esp_color);
if (g->esp.name)
if (g.esp.name)
name_str = plyr->get_name();
if (g->esp.distance)
if (g.esp.distance)
{
if (g->esp.name)
if (g.esp.name)
name_str += " | ";
name_str += std::to_string((int)distance);
name_str += "m";
@ -78,7 +78,7 @@ namespace big
draw_list->AddText(name_pos, esp_color, name_str.c_str());
if (g->esp.god) {
if (g.esp.god) {
std::string mode_str = "";
if (ped_damage_bits & (uint32_t)eEntityProofs::GOD)
@ -105,8 +105,8 @@ namespace big
if (!(ped_damage_bits & (uint32_t)eEntityProofs::GOD))
{
if (g->esp.health) {
if (g->esp.scale_health_from_dist) {
if (g.esp.health) {
if (g.esp.scale_health_from_dist) {
draw_list->AddLine({ esp_x - (62.5f * multplr), esp_y + (175.f * multplr) + 5.f }, { esp_x - (62.5f * multplr) + (125.f * multplr), esp_y + (175.f * multplr) + 5.f }, health_perc == 0.f ? death_bg : health_perc < 0.25f ? health_red_bg : health_perc < 0.65f ? health_yellow_bg : health_green_bg, 4);
draw_list->AddLine({ esp_x - (62.5f * multplr), esp_y + (175.f * multplr) + 5.f }, { esp_x - (62.5f * multplr) + (125.f * multplr) * health_perc, esp_y + (175.f * multplr) + 5.f }, health_perc < 0.25f ? health_red : health_perc < 0.65f ? health_yellow : health_green, 4);
}
@ -115,10 +115,10 @@ namespace big
draw_list->AddLine({ esp_x - (62.5f * multplr), esp_y + (175.f * multplr) + 5.f }, { esp_x - (62.5f * multplr) + (100.f * health_perc), esp_y + (175.f * multplr) + 5.f }, health_perc < 0.25f ? health_red : health_perc < 0.65f ? health_yellow : health_green, 4);
}
}
if (g->esp.armor && plyr->get_ped()->m_armor > 0) {
if (g.esp.armor && plyr->get_ped()->m_armor > 0) {
float offset = 5.f;
offset = g->esp.health ? 10.f : 5.f;
if (g->esp.scale_armor_from_dist) {
offset = g.esp.health ? 10.f : 5.f;
if (g.esp.scale_armor_from_dist) {
draw_list->AddLine({ esp_x - (62.5f * multplr), esp_y + (175.f * multplr) + offset }, { esp_x - (62.5f * multplr) + (125.f * multplr), esp_y + (175.f * multplr) + offset }, armor_blue_bg, 4);
draw_list->AddLine({ esp_x - (62.5f * multplr), esp_y + (175.f * multplr) + offset }, { esp_x - (62.5f * multplr) + (125.f * multplr) * armor_perc, esp_y + (175.f * multplr) + offset }, armor_blue, 4);
}
@ -132,7 +132,7 @@ namespace big
}
void esp::draw() {
if (!g->esp.enabled) return;
if (!g.esp.enabled) return;
if (const auto draw_list = ImGui::GetBackgroundDrawList(); draw_list)
{

View File

@ -70,53 +70,53 @@ namespace big
ImGui::EndListBox();
}
ImGui::Checkbox("Join in SCTV slots", &g->session.join_in_sctv_slots);
ImGui::Checkbox("Join in SCTV slots", &g.session.join_in_sctv_slots);
if (ImGui::IsItemHovered())
ImGui::SetTooltip("Allows you to join full and solo sessions but can be detected by other modders");
components::sub_title("Player Magnet");
ImGui::Checkbox("Enabled", &g->session.player_magnet_enabled);
if (g->session.player_magnet_enabled)
ImGui::Checkbox("Enabled", &g.session.player_magnet_enabled);
if (g.session.player_magnet_enabled)
{
ImGui::InputInt("Player Count", &g->session.player_magnet_count);
ImGui::InputInt("Player Count", &g.session.player_magnet_count);
}
components::sub_title("Chat");
ImGui::Checkbox("Auto-kick Chat Spammers", &g->session.kick_chat_spammers);
ImGui::Checkbox("Disable Filter", &g->session.disable_chat_filter);
ImGui::Checkbox("Log Chat Messages", &g->session.log_chat_messages);
ImGui::Checkbox("Log Text Messages", &g->session.log_text_messages);
ImGui::Checkbox("Auto-kick Chat Spammers", &g.session.kick_chat_spammers);
ImGui::Checkbox("Disable Filter", &g.session.disable_chat_filter);
ImGui::Checkbox("Log Chat Messages", &g.session.log_chat_messages);
ImGui::Checkbox("Log Text Messages", &g.session.log_text_messages);
static char msg[256];
ImGui::InputText("##message", msg, sizeof(msg));
ImGui::SameLine();
ImGui::Checkbox("Is Team", &g->session.is_team);
ImGui::Checkbox("Is Team", &g.session.is_team);
ImGui::SameLine();
components::button("Send", []
{
if(const auto net_game_player = gta_util::get_network_player_mgr()->m_local_net_player; net_game_player)
{
if(g_pointers->m_send_chat_message(*g_pointers->m_send_chat_ptr, net_game_player->get_net_data(), msg, g->session.is_team))
notify::draw_chat(msg, net_game_player->get_name(), g->session.is_team);
if(g_pointers->m_send_chat_message(*g_pointers->m_send_chat_ptr, net_game_player->get_net_data(), msg, g.session.is_team))
notify::draw_chat(msg, net_game_player->get_name(), g.session.is_team);
}
});
components::sub_title("Decloak");
components::script_patch_checkbox("Reveal OTR Players", &g->session.decloak_players);
components::script_patch_checkbox("Reveal OTR Players", &g.session.decloak_players);
components::sub_title("Force Host");
ImGui::Checkbox("Force Session Host", &g->session.force_session_host);
ImGui::Checkbox("Force Session Host", &g.session.force_session_host);
if (ImGui::IsItemHovered())
ImGui::SetTooltip("Join another session to apply changes. The original host of the session must leave or be kicked. This feature is easily detectable by other mod menus, use with caution");
ImGui::SameLine();
if (g->session.force_session_host)
if (g.session.force_session_host)
{
ImGui::SameLine();
ImGui::Checkbox("Kick Host During Join", &g->session.kick_host_when_forcing_host);
ImGui::Checkbox("Kick Host During Join", &g.session.kick_host_when_forcing_host);
}
if (ImGui::Checkbox("Force Script Host", &g->session.force_script_host))
if (ImGui::Checkbox("Force Script Host", &g.session.force_script_host))
{
if (g->session.force_script_host)
if (g.session.force_script_host)
g_fiber_pool->queue_job([]
{
scripts::force_host(RAGE_JOAAT("freemode"));
@ -126,40 +126,40 @@ namespace big
}
components::sub_title("Remote Name Spoofing");
ImGui::Checkbox("Spoof Other Players' Names", &g->session.name_spoof_enabled);
ImGui::Checkbox("Spoof Other Players' Names", &g.session.name_spoof_enabled);
if (ImGui::IsItemHovered())
ImGui::SetTooltip("Requires session host. Spoofed names will not visible locally nor to the player that had their name spoofed. Requires players to join after becoming host");
if (g->session.name_spoof_enabled)
if (g.session.name_spoof_enabled)
{
ImGui::Checkbox("Advertise YimMenu", &g->session.advertise_menu);
ImGui::Checkbox("Advertise YimMenu", &g.session.advertise_menu);
if (ImGui::IsItemHovered())
ImGui::SetTooltip("Advertise YimMenu by spoofing player names to differently colored variants of 'YimMenu'. You will not be able to customize the name with this option enabled");
if (!g->session.advertise_menu)
if (!g.session.advertise_menu)
{
constexpr size_t name_size = RTL_FIELD_SIZE(rage::rlGamerInfo, m_name);
static char name[name_size];
strcpy_s(name, sizeof(name), g->session.spoofed_name.c_str());
strcpy_s(name, sizeof(name), g.session.spoofed_name.c_str());
ImGui::Text("Name: ");
ImGui::InputText("##username_input", name, sizeof(name));
if (name != g->session.spoofed_name)
g->session.spoofed_name = std::string(name);
if (name != g.session.spoofed_name)
g.session.spoofed_name = std::string(name);
}
}
components::sub_title("All Players");
ImGui::Checkbox("Off The Radar", &g->session.off_radar_all);
ImGui::Checkbox("Off The Radar", &g.session.off_radar_all);
ImGui::SameLine();
ImGui::Checkbox("Never Wanted", &g->session.never_wanted_all);
ImGui::Checkbox("Never Wanted", &g.session.never_wanted_all);
ImGui::SameLine();
ImGui::Checkbox("Semi Godmode", &g->session.semi_godmode_all);
ImGui::Checkbox("Semi Godmode", &g.session.semi_godmode_all);
ImGui::Checkbox("Explosion Karma", &g->session.explosion_karma);
ImGui::Checkbox("Explosion Karma", &g.session.explosion_karma);
ImGui::SameLine();
ImGui::Checkbox("Damage Karma", &g->session.damage_karma);
ImGui::Checkbox("Damage Karma", &g.session.damage_karma);
static int global_wanted_level = 0;
@ -169,7 +169,7 @@ namespace big
}
ImGui::SameLine();
if (ImGui::Checkbox("Force", &g->session.wanted_level_all))
if (ImGui::Checkbox("Force", &g.session.wanted_level_all))
{
*scr_globals::globalplayer_bd.at(self::id, scr_globals::size::globalplayer_bd).at(212).as<Player*>() = __rdtsc() + 32;
*scr_globals::globalplayer_bd.at(self::id, scr_globals::size::globalplayer_bd).at(213).as<int*>() = global_wanted_level;
@ -197,16 +197,16 @@ namespace big
components::small_text("Teleports");
if (ImGui::BeginCombo("##apartment", apartment_names[g->session.send_to_apartment_idx]))
if (ImGui::BeginCombo("##apartment", apartment_names[g.session.send_to_apartment_idx]))
{
for (int i = 1; i < apartment_names.size(); i++)
{
if (ImGui::Selectable(apartment_names[i], i == g->session.send_to_apartment_idx))
if (ImGui::Selectable(apartment_names[i], i == g.session.send_to_apartment_idx))
{
g->session.send_to_apartment_idx = i;
g.session.send_to_apartment_idx = i;
}
if (i == g->session.send_to_apartment_idx)
if (i == g.session.send_to_apartment_idx)
{
ImGui::SetItemDefaultFocus();
}
@ -217,18 +217,18 @@ namespace big
ImGui::SameLine();
components::button("TP All To Apartment", [] { g_player_service->iterate([](auto& plyr) { toxic::send_player_to_apartment(plyr.second, g->session.send_to_apartment_idx); }); });
components::button("TP All To Apartment", [] { g_player_service->iterate([](auto& plyr) { toxic::send_player_to_apartment(plyr.second, g.session.send_to_apartment_idx); }); });
if (ImGui::BeginCombo("##warehouse", warehouse_names[g->session.send_to_warehouse_idx]))
if (ImGui::BeginCombo("##warehouse", warehouse_names[g.session.send_to_warehouse_idx]))
{
for (int i = 1; i < warehouse_names.size(); i++)
{
if (ImGui::Selectable(warehouse_names[i], i == g->session.send_to_warehouse_idx))
if (ImGui::Selectable(warehouse_names[i], i == g.session.send_to_warehouse_idx))
{
g->session.send_to_warehouse_idx = i;
g.session.send_to_warehouse_idx = i;
}
if (i == g->session.send_to_warehouse_idx)
if (i == g.session.send_to_warehouse_idx)
{
ImGui::SetItemDefaultFocus();
}
@ -239,7 +239,7 @@ namespace big
ImGui::SameLine();
components::button("TP All To Warehouse", [] { g_player_service->iterate([](auto& plyr) { toxic::send_player_to_warehouse(plyr.second, g->session.send_to_warehouse_idx); }); });
components::button("TP All To Warehouse", [] { g_player_service->iterate([](auto& plyr) { toxic::send_player_to_warehouse(plyr.second, g.session.send_to_warehouse_idx); }); });
components::button("TP All To Darts", [] { g_player_service->iterate([](auto& plyr) { toxic::start_activity(plyr.second, eActivityType::Darts); }); });
ImGui::SameLine();
@ -313,17 +313,17 @@ namespace big
components::button("Camhedz", [] { scripts::start_launcher_script(218); });
ImGui::EndGroup();
ImGui::Checkbox("Disable Pedestrians", &g->session.disable_peds);
ImGui::Checkbox("Disable Pedestrians", &g.session.disable_peds);
ImGui::SameLine();
ImGui::Checkbox("Disable Traffic", &g->session.disable_traffic);
ImGui::Checkbox("Disable Traffic", &g.session.disable_traffic);
ImGui::SameLine();
ImGui::Checkbox("Force Thunder", &g->session.force_thunder);
ImGui::Checkbox("Force Thunder", &g.session.force_thunder);
components::sub_title("Script Host Features");
ImGui::Checkbox("Disable CEO Money", &g->session.block_ceo_money);
ImGui::Checkbox("Disable CEO Money", &g.session.block_ceo_money);
if (ImGui::IsItemHovered())
ImGui::SetTooltip("Blocks CEO money drops across the entire session. This can also break other stuff, use with caution");
ImGui::SameLine();
ImGui::Checkbox("Randomize CEO Colors", &g->session.randomize_ceo_colors);
ImGui::Checkbox("Randomize CEO Colors", &g.session.randomize_ceo_colors);
}
}

View File

@ -87,22 +87,22 @@ namespace big
if (ImGui::TreeNode("Filters"))
{
ImGui::Checkbox("Region", &g->session_browser.region_filter_enabled);
ImGui::Checkbox("Region", &g.session_browser.region_filter_enabled);
if (ImGui::IsItemHovered())
ImGui::SetTooltip("It is highly recommended to keep this filter enabled");
if (g->session_browser.region_filter_enabled)
if (g.session_browser.region_filter_enabled)
{
ImGui::SameLine();
if (ImGui::BeginCombo("###region_select", regions[g->session_browser.region_filter].name))
if (ImGui::BeginCombo("###region_select", regions[g.session_browser.region_filter].name))
{
for (const auto& region : regions)
{
if (ImGui::Selectable(region.name, g->session_browser.region_filter == region.id))
if (ImGui::Selectable(region.name, g.session_browser.region_filter == region.id))
{
g->session_browser.region_filter = region.id;
g.session_browser.region_filter = region.id;
}
}
ImGui::EndCombo();
@ -110,34 +110,34 @@ namespace big
}
ImGui::Checkbox("Language", &g->session_browser.language_filter_enabled);
ImGui::Checkbox("Language", &g.session_browser.language_filter_enabled);
if (ImGui::IsItemHovered())
ImGui::SetTooltip("Setting a correct region filter for the language will help tremendously");
if (g->session_browser.language_filter_enabled)
if (g.session_browser.language_filter_enabled)
{
ImGui::SameLine();
if (ImGui::BeginCombo("###language_select", languages[g->session_browser.language_filter].name))
if (ImGui::BeginCombo("###language_select", languages[g.session_browser.language_filter].name))
{
for (const auto& language : languages)
{
if (ImGui::Selectable(language.name, g->session_browser.language_filter == language.id))
if (ImGui::Selectable(language.name, g.session_browser.language_filter == language.id))
{
g->session_browser.language_filter = language.id;
g.session_browser.language_filter = language.id;
};
}
ImGui::EndCombo();
}
}
ImGui::Checkbox("Players", &g->session_browser.player_count_filter_enabled);
ImGui::Checkbox("Players", &g.session_browser.player_count_filter_enabled);
if (g->session_browser.player_count_filter_enabled)
if (g.session_browser.player_count_filter_enabled)
{
ImGui::InputInt("Minimum", &g->session_browser.player_count_filter_minimum);
ImGui::InputInt("Maximum", &g->session_browser.player_count_filter_maximum);
ImGui::InputInt("Minimum", &g.session_browser.player_count_filter_minimum);
ImGui::InputInt("Maximum", &g.session_browser.player_count_filter_maximum);
}
ImGui::TreePop();
@ -145,13 +145,13 @@ namespace big
if (ImGui::TreeNode("Sorting"))
{
ImGui::Combo("Sort By", &g->session_browser.sort_method, "Off\0Player Count");
if (g->session_browser.sort_method != 0)
ImGui::Combo("Direction", &g->session_browser.sort_direction, "Ascending\0Descending");
ImGui::Combo("Sort By", &g.session_browser.sort_method, "Off\0Player Count");
if (g.session_browser.sort_method != 0)
ImGui::Combo("Direction", &g.session_browser.sort_direction, "Ascending\0Descending");
ImGui::TreePop();
}
if (ImGui::Checkbox("Replace Game Matchmaking", &g->session_browser.replace_game_matchmaking));
if (ImGui::Checkbox("Replace Game Matchmaking", &g.session_browser.replace_game_matchmaking));
if (ImGui::IsItemHovered())
ImGui::SetTooltip("This will replace the default game matchmaking with a custom one that will use the filters and sorting set here");

View File

@ -17,17 +17,17 @@ namespace big
PAD::DISABLE_ALL_CONTROL_ACTIONS(0);
});
ImGui::Checkbox("Spoof Username", &g->spoofing.spoof_username);
ImGui::Checkbox("Spoof Username", &g.spoofing.spoof_username);
constexpr size_t name_size = RTL_FIELD_SIZE(rage::rlGamerInfo, m_name);
static char name[name_size];
strcpy_s(name, sizeof(name), g->spoofing.username.c_str());
strcpy_s(name, sizeof(name), g.spoofing.username.c_str());
ImGui::Text("Username:");
ImGui::InputText("##username_input", name, sizeof(name));
if (name != g->spoofing.username)
g->spoofing.username = std::string(name);
if (name != g.spoofing.username)
g.spoofing.username = std::string(name);
ImGui::Separator();
@ -37,10 +37,10 @@ namespace big
PAD::DISABLE_ALL_CONTROL_ACTIONS(0);
});
ImGui::Checkbox("Spoof IP", &g->spoofing.spoof_ip);
ImGui::Checkbox("Spoof IP", &g.spoofing.spoof_ip);
ImGui::Text("IP Address:");
ImGui::DragInt4("##ip_fields", g->spoofing.ip_address, 0, 255);
ImGui::DragInt4("##ip_fields", g.spoofing.ip_address.data(), 0, 255);
ImGui::Separator();
@ -50,14 +50,14 @@ namespace big
PAD::DISABLE_ALL_CONTROL_ACTIONS(0);
});
ImGui::Checkbox("Spoof Rockstar ID", &g->spoofing.spoof_rockstar_id);
ImGui::Checkbox("Spoof Rockstar ID", &g.spoofing.spoof_rockstar_id);
ImGui::Text("Rockstar ID:");
ImGui::InputScalar("##rockstar_id_input", ImGuiDataType_U64, &g->spoofing.rockstar_id);
ImGui::InputScalar("##rockstar_id_input", ImGuiDataType_U64, &g.spoofing.rockstar_id);
components::sub_title("Hide Features");
ImGui::Checkbox("Hide God Mode", &g->spoofing.spoof_hide_god);
ImGui::Checkbox("Hide Spectate", &g->spoofing.spoof_hide_spectate);
ImGui::Checkbox("Hide God Mode", &g.spoofing.spoof_hide_god);
ImGui::Checkbox("Hide Spectate", &g.spoofing.spoof_hide_spectate);
components::sub_title("Crew");
@ -65,70 +65,70 @@ namespace big
PAD::DISABLE_ALL_CONTROL_ACTIONS(0);
});
ImGui::Checkbox("Spoof Crew", &g->spoofing.spoof_crew_data);
ImGui::Checkbox("Spoof Crew", &g.spoofing.spoof_crew_data);
constexpr size_t crew_tag_size = RTL_FIELD_SIZE(ClanData, m_clan_tag);
static char crew_tag[crew_tag_size];
strcpy_s(crew_tag, sizeof(crew_tag), g->spoofing.crew_tag.c_str());
strcpy_s(crew_tag, sizeof(crew_tag), g.spoofing.crew_tag.c_str());
ImGui::Text("Crew Tag:");
ImGui::InputText("##crew_tag_input", crew_tag, sizeof(crew_tag));
if (crew_tag != g->spoofing.crew_tag)
g->spoofing.crew_tag = std::string(crew_tag);
if (crew_tag != g.spoofing.crew_tag)
g.spoofing.crew_tag = std::string(crew_tag);
ImGui::Checkbox("Is Rockstar Crew", &g->spoofing.rockstar_crew);
ImGui::Checkbox("Is Rockstar Crew", &g.spoofing.rockstar_crew);
ImGui::Checkbox("Square Crew Tag", &g->spoofing.square_crew_tag);
ImGui::Checkbox("Square Crew Tag", &g.spoofing.square_crew_tag);
components::sub_title("Extra - Only work when Spoofed RID");
ImGui::Checkbox("Is Cheater", &g->spoofing.spoof_cheater);
ImGui::Checkbox("Is Rockstar Dev", &g->spoofing.spoof_rockstar_dev);
ImGui::Checkbox("Is Rockstar QA", &g->spoofing.spoof_rockstar_qa);
ImGui::Checkbox("Is Cheater", &g.spoofing.spoof_cheater);
ImGui::Checkbox("Is Rockstar Dev", &g.spoofing.spoof_rockstar_dev);
ImGui::Checkbox("Is Rockstar QA", &g.spoofing.spoof_rockstar_qa);
components::sub_title("Session Attributes");
components::small_text("Only works when session host");
ImGui::Checkbox("Region", &g->spoofing.spoof_session_region_type);
if (g->spoofing.spoof_session_region_type)
ImGui::Checkbox("Region", &g.spoofing.spoof_session_region_type);
if (g.spoofing.spoof_session_region_type)
{
ImGui::SameLine();
if (ImGui::BeginCombo("###region_select", regions[g->spoofing.session_region_type].name))
if (ImGui::BeginCombo("###region_select", regions[g.spoofing.session_region_type].name))
{
for (const auto& region : regions)
{
if (ImGui::Selectable(region.name, g->spoofing.session_region_type == region.id))
if (ImGui::Selectable(region.name, g.spoofing.session_region_type == region.id))
{
g->spoofing.session_region_type = region.id;
g.spoofing.session_region_type = region.id;
}
}
ImGui::EndCombo();
}
}
ImGui::Checkbox("Language", &g->spoofing.spoof_session_language);
if (g->spoofing.spoof_session_language)
ImGui::Checkbox("Language", &g.spoofing.spoof_session_language);
if (g.spoofing.spoof_session_language)
{
ImGui::SameLine();
if (ImGui::BeginCombo("###language_select", languages[g->spoofing.session_language].name))
if (ImGui::BeginCombo("###language_select", languages[g.spoofing.session_language].name))
{
for (const auto& language : languages)
{
if (ImGui::Selectable(language.name, g->spoofing.session_language == language.id))
if (ImGui::Selectable(language.name, g.spoofing.session_language == language.id))
{
g->spoofing.session_language = language.id;
g.spoofing.session_language = language.id;
};
}
ImGui::EndCombo();
}
}
ImGui::Checkbox("Player Count", &g->spoofing.spoof_session_player_count);
if (g->spoofing.spoof_session_player_count)
ImGui::Checkbox("Player Count", &g.spoofing.spoof_session_player_count);
if (g.spoofing.spoof_session_player_count)
{
ImGui::SameLine();
ImGui::InputInt("###player_count", &g->spoofing.session_player_count);
ImGui::InputInt("###player_count", &g.spoofing.session_player_count);
}
}
}

View File

@ -31,16 +31,16 @@ namespace big
components::small_text("Teleports");
if (ImGui::BeginCombo("##apartment", apartment_names[g->session.send_to_apartment_idx]))
if (ImGui::BeginCombo("##apartment", apartment_names[g.session.send_to_apartment_idx]))
{
for (int i = 1; i < apartment_names.size(); i++)
{
if (ImGui::Selectable(apartment_names[i], i == g->session.send_to_apartment_idx))
if (ImGui::Selectable(apartment_names[i], i == g.session.send_to_apartment_idx))
{
g->session.send_to_apartment_idx = i;
g.session.send_to_apartment_idx = i;
}
if (i == g->session.send_to_apartment_idx)
if (i == g.session.send_to_apartment_idx)
{
ImGui::SetItemDefaultFocus();
}
@ -51,18 +51,18 @@ namespace big
ImGui::SameLine();
components::button("TP To Apartment", [] { toxic::send_player_to_apartment(g_player_service->get_selected(), g->session.send_to_apartment_idx); });
components::button("TP To Apartment", [] { toxic::send_player_to_apartment(g_player_service->get_selected(), g.session.send_to_apartment_idx); });
if (ImGui::BeginCombo("##warehouse", warehouse_names[g->session.send_to_warehouse_idx]))
if (ImGui::BeginCombo("##warehouse", warehouse_names[g.session.send_to_warehouse_idx]))
{
for (int i = 1; i < warehouse_names.size(); i++)
{
if (ImGui::Selectable(warehouse_names[i], i == g->session.send_to_warehouse_idx))
if (ImGui::Selectable(warehouse_names[i], i == g.session.send_to_warehouse_idx))
{
g->session.send_to_warehouse_idx = i;
g.session.send_to_warehouse_idx = i;
}
if (i == g->session.send_to_warehouse_idx)
if (i == g.session.send_to_warehouse_idx)
{
ImGui::SetItemDefaultFocus();
}
@ -73,7 +73,7 @@ namespace big
ImGui::SameLine();
components::button("TP To Warehouse", [] { toxic::send_player_to_warehouse(g_player_service->get_selected(), g->session.send_to_warehouse_idx); });
components::button("TP To Warehouse", [] { toxic::send_player_to_warehouse(g_player_service->get_selected(), g.session.send_to_warehouse_idx); });
components::button("TP To Darts", [] { toxic::start_activity(g_player_service->get_selected(), eActivityType::Darts); });
ImGui::SameLine();

View File

@ -32,7 +32,7 @@ namespace big
Vehicle veh = PED::GET_VEHICLE_PED_IS_IN(PLAYER::GET_PLAYER_PED_SCRIPT_INDEX(g_player_service->get_selected()->id()), FALSE);
if (veh == 0)
{
if (g->player.spectating)
if (g.player.spectating)
g_notification_service->push_warning("Remote Control", "Player not in a vehicle");
else
g_notification_service->push_warning("Remote Control", "Player not in a vehicle, try spectating the player");
@ -40,7 +40,7 @@ namespace big
}
vehicle::remote_control_vehicle(veh);
g->player.spectating = false;
g.player.spectating = false;
});
ImGui::TreePop();

View File

@ -7,7 +7,7 @@ namespace big
std::string title = std::format("Player Options: {}", g_player_service->get_selected()->get_name());
ImGui::Text(title.c_str());
ImGui::Checkbox("Spectate", &g->player.spectating);
ImGui::Checkbox("Spectate", &g.player.spectating);
if (g_player_service->get_selected()->is_valid())
{

View File

@ -30,7 +30,7 @@ namespace big
// calculate icons width
const auto window = ImGui::GetCurrentWindow();
ImGui::PushFont(g->window.font_icon);
ImGui::PushFont(g.window.font_icon);
const auto icons_size = ImGui::CalcTextSize(player_iconsc, player_icons_end);
const ImVec2 icons_pos(window->DC.CursorPos.x + 300.0f - 32.0f - icons_size.x, window->DC.CursorPos.y + 2.0f);
const ImRect icons_box(icons_pos, icons_pos + icons_size);
@ -48,7 +48,7 @@ namespace big
{
g_player_service->set_selected(plyr);
g_gui_service->set_selected(tabs::PLAYER);
g->window.switched_view = true;
g.window.switched_view = true;
}
ImGui::PopID();
ImGui::PopStyleVar();
@ -60,7 +60,7 @@ namespace big
ImGui::PopStyleColor();
// render icons on top of the player button
ImGui::PushFont(g->window.font_icon);
ImGui::PushFont(g.window.font_icon);
ImGui::RenderTextWrapped(icons_box.Min, player_iconsc, player_icons_end, icons_size.x);
ImGui::PopFont();
}

View File

@ -10,7 +10,7 @@ namespace big
components::sub_title("Lester");
ImGui::Checkbox("Off Radar", &g->self.off_radar);
ImGui::Checkbox("Off Radar", &g.self.off_radar);
ImGui::Separator();

View File

@ -52,36 +52,36 @@ namespace big
ImGui::BeginGroup();
ImGui::Checkbox("God Mode", &g->self.god_mode);
ImGui::Checkbox("Off Radar", &g->self.off_radar);
ImGui::Checkbox("Free Cam", &g->self.free_cam);
ImGui::Checkbox("Disable Phone", &g->tunables.disable_phone);
ImGui::Checkbox("Unlimited Oxygen", &g->self.unlimited_oxygen);
ImGui::Checkbox("Fast Respawn", &g->self.fast_respawn);
ImGui::Checkbox("God Mode", &g.self.god_mode);
ImGui::Checkbox("Off Radar", &g.self.off_radar);
ImGui::Checkbox("Free Cam", &g.self.free_cam);
ImGui::Checkbox("Disable Phone", &g.tunables.disable_phone);
ImGui::Checkbox("Unlimited Oxygen", &g.self.unlimited_oxygen);
ImGui::Checkbox("Fast Respawn", &g.self.fast_respawn);
ImGui::EndGroup();
ImGui::SameLine();
ImGui::BeginGroup();
ImGui::Checkbox("No Clip", &g->self.noclip);
ImGui::Checkbox("No Ragdoll", &g->self.no_ragdoll);
ImGui::Checkbox("Super Run", &g->self.super_run);
ImGui::Checkbox("No Idle Kick", &g->tunables.no_idle_kick);
ImGui::Checkbox("No Water Collision", &g->self.no_water_collision);
ImGui::Checkbox("No Clip", &g.self.noclip);
ImGui::Checkbox("No Ragdoll", &g.self.no_ragdoll);
ImGui::Checkbox("Super Run", &g.self.super_run);
ImGui::Checkbox("No Idle Kick", &g.tunables.no_idle_kick);
ImGui::Checkbox("No Water Collision", &g.self.no_water_collision);
ImGui::EndGroup();
ImGui::SameLine();
ImGui::BeginGroup();
ImGui::Checkbox("Invisibility", &g->self.invisibility);
if (g->self.invisibility) {
ImGui::Checkbox("Locally Visible", &g->self.local_visibility);
ImGui::Checkbox("Invisibility", &g.self.invisibility);
if (g.self.invisibility) {
ImGui::Checkbox("Locally Visible", &g.self.local_visibility);
}
ImGui::Checkbox("Keep Player Clean", &g->self.clean_player);
ImGui::Checkbox("No Collision", &g->self.no_collision);
ImGui::Checkbox("Mobile Radio", &g->self.mobile_radio);
ImGui::Checkbox("Keep Player Clean", &g.self.clean_player);
ImGui::Checkbox("No Collision", &g.self.no_collision);
ImGui::Checkbox("Mobile Radio", &g.self.mobile_radio);
ImGui::Checkbox("Dance Mode", &g->self.dance_mode);
ImGui::Checkbox("Dance Mode", &g.self.dance_mode);
if (ImGui::IsItemHovered())
ImGui::SetTooltip("Hold Right DPAD or E to enter dance mode");
@ -93,55 +93,55 @@ namespace big
if (ImGui::Button("Check all"))
{
g->self.proof_bullet = true;
g->self.proof_fire = true;
g->self.proof_collision = true;
g->self.proof_melee = true;
g->self.proof_explosion = true;
g->self.proof_steam = true;
g->self.proof_drown = true;
g->self.proof_water = true;
g.self.proof_bullet = true;
g.self.proof_fire = true;
g.self.proof_collision = true;
g.self.proof_melee = true;
g.self.proof_explosion = true;
g.self.proof_steam = true;
g.self.proof_drown = true;
g.self.proof_water = true;
}
ImGui::SameLine();
if (ImGui::Button("Uncheck all"))
{
g->self.proof_bullet = false;
g->self.proof_fire = false;
g->self.proof_collision = false;
g->self.proof_melee = false;
g->self.proof_explosion = false;
g->self.proof_steam = false;
g->self.proof_drown = false;
g->self.proof_water = false;
g.self.proof_bullet = false;
g.self.proof_fire = false;
g.self.proof_collision = false;
g.self.proof_melee = false;
g.self.proof_explosion = false;
g.self.proof_steam = false;
g.self.proof_drown = false;
g.self.proof_water = false;
}
ImGui::BeginGroup();
ImGui::Checkbox("Bullet", &g->self.proof_bullet);
ImGui::Checkbox("Fire", &g->self.proof_fire);
ImGui::Checkbox("Bullet", &g.self.proof_bullet);
ImGui::Checkbox("Fire", &g.self.proof_fire);
ImGui::EndGroup();
ImGui::SameLine();
ImGui::BeginGroup();
ImGui::Checkbox("Collision", &g->self.proof_collision);
ImGui::Checkbox("Melee", &g->self.proof_melee);
ImGui::Checkbox("Collision", &g.self.proof_collision);
ImGui::Checkbox("Melee", &g.self.proof_melee);
ImGui::EndGroup();
ImGui::SameLine();
ImGui::BeginGroup();
ImGui::Checkbox("Explosion", &g->self.proof_explosion);
ImGui::Checkbox("Steam", &g->self.proof_steam);
ImGui::Checkbox("Explosion", &g.self.proof_explosion);
ImGui::Checkbox("Steam", &g.self.proof_steam);
ImGui::EndGroup();
ImGui::SameLine();
ImGui::BeginGroup();
ImGui::Checkbox("Drown", &g->self.proof_drown);
ImGui::Checkbox("Water", &g->self.proof_water);
ImGui::Checkbox("Drown", &g.self.proof_drown);
ImGui::Checkbox("Water", &g.self.proof_water);
ImGui::EndGroup();
@ -149,18 +149,18 @@ namespace big
components::sub_title("Police");
ImGui::Checkbox("Never Wanted", &g->self.never_wanted);
ImGui::Checkbox("Never Wanted", &g.self.never_wanted);
if (!g->self.never_wanted)
if (!g.self.never_wanted)
{
ImGui::Checkbox("Force Wanted Level", &g->self.force_wanted_level);
ImGui::Checkbox("Force Wanted Level", &g.self.force_wanted_level);
ImGui::Text("Wanted Level");
if (
ImGui::SliderInt("###wanted_level", &g->self.wanted_level, 0, 5) &&
!g->self.force_wanted_level &&
ImGui::SliderInt("###wanted_level", &g.self.wanted_level, 0, 5) &&
!g.self.force_wanted_level &&
g_local_player != nullptr
) {
g_local_player->m_player_info->m_wanted_level = g->self.wanted_level;
g_local_player->m_player_info->m_wanted_level = g.self.wanted_level;
}
}
@ -170,86 +170,86 @@ namespace big
ImGui::BeginGroup();
ImGui::Checkbox("Hide Radar", &g->self.hide_radar);
ImGui::Checkbox("Hide Radar", &g.self.hide_radar);
ImGui::SameLine();
ImGui::Checkbox("Hide Ammo", &g->self.hide_ammo);
ImGui::Checkbox("Hide Ammo", &g.self.hide_ammo);
ImGui::SameLine();
ImGui::Checkbox("Force show HUD", &g->self.force_show_hud);
ImGui::Checkbox("Force show HUD", &g.self.force_show_hud);
ImGui::Combo("##hud_comp_combo", &g->self.selected_hud_component, hud_component_names, (int)HudComponents::HUD_WEAPONS);
ImGui::Combo("##hud_comp_combo", &g.self.selected_hud_component, hud_component_names, (int)HudComponents::HUD_WEAPONS);
ImGui::SameLine();
components::button("Hide", [] {
g->self.hud_components_states[g->self.selected_hud_component] = true;
g.self.hud_components_states[g.self.selected_hud_component] = true;
});
ImGui::SameLine();
components::button("Show", [] {
g->self.hud_components_states[g->self.selected_hud_component] = false;
g.self.hud_components_states[g.self.selected_hud_component] = false;
});
components::button("Hide all", [] {
g->self.hide_radar = true;
g->self.hide_ammo = true;
g.self.hide_radar = true;
g.self.hide_ammo = true;
for (int i = 0; i < (int)HudComponents::HUD_WEAPONS; i++)
{
g->self.hud_components_states[i] = true;
g.self.hud_components_states[i] = true;
}
});
ImGui::SameLine();
components::button("Show all", [] {
g->self.hide_radar = false;
g->self.hide_ammo = false;
g.self.hide_radar = false;
g.self.hide_ammo = false;
for (int i = 0; i < (int)HudComponents::HUD_WEAPONS; i++)
{
g->self.hud_components_states[i] = false;
g.self.hud_components_states[i] = false;
}
});
ImGui::SameLine();
ImGui::Checkbox("Force show HUD element", &g->self.force_show_hud_element);
ImGui::Checkbox("Force show HUD element", &g.self.force_show_hud_element);
if (ImGui::IsItemHovered())
ImGui::SetTooltip("To force show a HUD specific element, click Hide all then click Show on the desired element.");
ImGui::EndGroup();
g->self.proof_mask = 0;
if (g->self.god_mode)
g.self.proof_mask = 0;
if (g.self.god_mode)
{
g->self.proof_mask |= static_cast<int>(eEntityProofs::GOD);
g.self.proof_mask |= static_cast<int>(eEntityProofs::GOD);
}
if (g->self.proof_bullet)
if (g.self.proof_bullet)
{
g->self.proof_mask |= static_cast<int>(eEntityProofs::BULLET);
g.self.proof_mask |= static_cast<int>(eEntityProofs::BULLET);
}
if (g->self.proof_fire)
if (g.self.proof_fire)
{
g->self.proof_mask |= static_cast<int>(eEntityProofs::FIRE);
g.self.proof_mask |= static_cast<int>(eEntityProofs::FIRE);
}
if (g->self.proof_collision)
if (g.self.proof_collision)
{
g->self.proof_mask |= static_cast<int>(eEntityProofs::COLLISION);
g.self.proof_mask |= static_cast<int>(eEntityProofs::COLLISION);
}
if (g->self.proof_melee)
if (g.self.proof_melee)
{
g->self.proof_mask |= static_cast<int>(eEntityProofs::MELEE);
g.self.proof_mask |= static_cast<int>(eEntityProofs::MELEE);
}
if (g->self.proof_explosion)
if (g.self.proof_explosion)
{
g->self.proof_mask |= static_cast<int>(eEntityProofs::EXPLOSION);
g.self.proof_mask |= static_cast<int>(eEntityProofs::EXPLOSION);
}
if (g->self.proof_steam)
if (g.self.proof_steam)
{
g->self.proof_mask |= static_cast<int>(eEntityProofs::STEAM);
g.self.proof_mask |= static_cast<int>(eEntityProofs::STEAM);
}
if (g->self.proof_drown)
if (g.self.proof_drown)
{
g->self.proof_mask |= static_cast<int>(eEntityProofs::DROWN);
g.self.proof_mask |= static_cast<int>(eEntityProofs::DROWN);
}
if (g->self.proof_water)
if (g.self.proof_water)
{
g->self.proof_mask |= static_cast<int>(eEntityProofs::WATER);
g.self.proof_mask |= static_cast<int>(eEntityProofs::WATER);
}
}
}

View File

@ -21,7 +21,7 @@ namespace big
teleport::to_objective();
});
ImGui::Checkbox("Auto-Teleport To Waypoint", &g->self.auto_tp);
ImGui::Checkbox("Auto-Teleport To Waypoint", &g.self.auto_tp);
ImGui::Text("Vehicles:");

View File

@ -15,30 +15,30 @@ namespace big
ImGui::BeginGroup();
ImGui::Checkbox("Infinite Ammo", &g->weapons.infinite_ammo);
ImGui::Checkbox("Infinite Clip", &g->weapons.infinite_mag);
ImGui::Checkbox("Infinite Ammo", &g.weapons.infinite_ammo);
ImGui::Checkbox("Infinite Clip", &g.weapons.infinite_mag);
ImGui::EndGroup();
ImGui::SameLine();
ImGui::BeginGroup();
if (ImGui::Checkbox("Bypass C4 Limit", &g->weapons.bypass_c4_limit))
if (ImGui::Checkbox("Bypass C4 Limit", &g.weapons.bypass_c4_limit))
{
if (g->weapons.bypass_c4_limit)
if (g.weapons.bypass_c4_limit)
g_pointers->m_bypass_max_count_of_active_sticky_bombs->apply();
else
g_pointers->m_bypass_max_count_of_active_sticky_bombs->restore();
}
ImGui::Checkbox("Rapid Fire", &g->weapons.rapid_fire);
ImGui::Checkbox("Rapid Fire", &g.weapons.rapid_fire);
ImGui::EndGroup();
ImGui::Separator();
ImGui::Checkbox("Enable Special Ammo", &g->weapons.ammo_special.toggle);
ImGui::Checkbox("Enable Special Ammo", &g.weapons.ammo_special.toggle);
eAmmoSpecialType selected_ammo = g->weapons.ammo_special.type;
eExplosionTag selected_explosion = g->weapons.ammo_special.explosion_tag;
eAmmoSpecialType selected_ammo = g.weapons.ammo_special.type;
eExplosionTag selected_explosion = g.weapons.ammo_special.explosion_tag;
if (ImGui::BeginCombo("Special Ammo", SPECIAL_AMMOS[(int)selected_ammo].name))
{
@ -46,7 +46,7 @@ namespace big
{
if (ImGui::Selectable(special_ammo.name, special_ammo.type == selected_ammo))
{
g->weapons.ammo_special.type = special_ammo.type;
g.weapons.ammo_special.type = special_ammo.type;
}
if (special_ammo.type == selected_ammo)
@ -64,7 +64,7 @@ namespace big
{
if (ImGui::Selectable(name, type == selected_explosion))
{
g->weapons.ammo_special.explosion_tag = type;
g.weapons.ammo_special.explosion_tag = type;
}
if (type == selected_explosion)
@ -80,15 +80,15 @@ namespace big
components::sub_title("Misc");
ImGui::Checkbox("Force Crosshairs", &g->weapons.force_crosshairs);
ImGui::Checkbox("Force Crosshairs", &g.weapons.force_crosshairs);
ImGui::SameLine();
ImGui::Checkbox("No Recoil", &g->weapons.no_recoil);
ImGui::Checkbox("No Recoil", &g.weapons.no_recoil);
ImGui::SameLine();
ImGui::Checkbox("No Spread", &g->weapons.no_spread);
ImGui::Checkbox("No Spread", &g.weapons.no_spread);
components::button("Get All Weapons", []
{
@ -111,13 +111,13 @@ namespace big
}
});
ImGui::SliderFloat("Damage Multiplier", &g->weapons.increased_damage, 1.f, 10.f, "%.1f");
ImGui::SliderFloat("Damage Multiplier", &g.weapons.increased_damage, 1.f, 10.f, "%.1f");
ImGui::Separator();
components::sub_title("Custom Weapons");
CustomWeapon selected = g->weapons.custom_weapon;
CustomWeapon selected = g.weapons.custom_weapon;
if (ImGui::BeginCombo("Weapon", custom_weapons[(int)selected].name))
{
@ -125,7 +125,7 @@ namespace big
{
if (ImGui::Selectable(weapon.name, weapon.id == selected))
{
g->weapons.custom_weapon = weapon.id;
g.weapons.custom_weapon = weapon.id;
}
if (weapon.id == selected)
@ -140,11 +140,20 @@ namespace big
switch (selected)
{
case CustomWeapon::VEHICLE_GUN:
components::input_text_with_hint(
"Shooting Model",
"Name of the vehicle model",
g->weapons.vehicle_gun_model, sizeof(g->weapons.vehicle_gun_model)
);
// this some ugly ass looking code
static char vehicle_gun[12];
std::memcpy(vehicle_gun, g.weapons.vehicle_gun_model.c_str(), 12);
if (ImGui::InputTextWithHint("Shooting Model", "Name of the vehicle model", vehicle_gun, sizeof(vehicle_gun)))
{
g.weapons.vehicle_gun_model = vehicle_gun;
}
if (ImGui::IsItemActive())
{
g_fiber_pool->queue_job([]
{
PAD::DISABLE_ALL_CONTROL_ACTIONS(0);
});
}
break;
}

View File

@ -5,35 +5,35 @@ namespace big
{
void view::context_menu_settings()
{
ImGui::Checkbox("Context Menu Enabled", &g->context_menu.enabled);
ImGui::Checkbox("Context Menu Enabled", &g.context_menu.enabled);
if (g->context_menu.enabled)
if (g.context_menu.enabled)
{
ImGui::Text("Allowed Entity Types:");
ImGui::CheckboxFlags("Object", reinterpret_cast<int*>(&g->context_menu.allowed_entity_types), static_cast<int>(ContextEntityType::OBJECT));
ImGui::CheckboxFlags("Object", reinterpret_cast<int*>(&g.context_menu.allowed_entity_types), static_cast<int>(ContextEntityType::OBJECT));
ImGui::SameLine();
ImGui::CheckboxFlags("Ped", reinterpret_cast<int*>(&g->context_menu.allowed_entity_types), static_cast<int>(ContextEntityType::PED));
ImGui::CheckboxFlags("Ped", reinterpret_cast<int*>(&g.context_menu.allowed_entity_types), static_cast<int>(ContextEntityType::PED));
ImGui::SameLine();
ImGui::CheckboxFlags("Player", reinterpret_cast<int*>(&g->context_menu.allowed_entity_types), static_cast<int>(ContextEntityType::PLAYER));
ImGui::CheckboxFlags("Player", reinterpret_cast<int*>(&g.context_menu.allowed_entity_types), static_cast<int>(ContextEntityType::PLAYER));
ImGui::SameLine();
ImGui::CheckboxFlags("Vehicle", reinterpret_cast<int*>(&g->context_menu.allowed_entity_types), static_cast<int>(ContextEntityType::VEHICLE));
ImGui::CheckboxFlags("Vehicle", reinterpret_cast<int*>(&g.context_menu.allowed_entity_types), static_cast<int>(ContextEntityType::VEHICLE));
static ImVec4 selected_option_color = ImGui::ColorConvertU32ToFloat4(g->context_menu.selected_option_color);
static ImVec4 selected_option_color = ImGui::ColorConvertU32ToFloat4(g.context_menu.selected_option_color);
ImGui::Text("Selected Option Color:");
if (ImGui::ColorEdit4("###BSelected Option Color##cm_picker", (float*)&selected_option_color, ImGuiColorEditFlags_InputRGB | ImGuiColorEditFlags_NoSidePreview))
{
g->context_menu.selected_option_color = ImGui::ColorConvertFloat4ToU32(selected_option_color);
g.context_menu.selected_option_color = ImGui::ColorConvertFloat4ToU32(selected_option_color);
}
ImGui::Checkbox("Bounding Box Enabled", &g->context_menu.bounding_box_enabled);
ImGui::Checkbox("Bounding Box Enabled", &g.context_menu.bounding_box_enabled);
if (g->context_menu.bounding_box_enabled)
if (g.context_menu.bounding_box_enabled)
{
static ImVec4 bounding_box_color = ImGui::ColorConvertU32ToFloat4(g->context_menu.bounding_box_color);
static ImVec4 bounding_box_color = ImGui::ColorConvertU32ToFloat4(g.context_menu.bounding_box_color);
ImGui::Text("Bounding Box Color:");
if (ImGui::ColorEdit4("###Bounding Box Color##cm_picker", (float*)&bounding_box_color, ImGuiColorEditFlags_InputRGB | ImGuiColorEditFlags_NoSidePreview))
{
g->context_menu.bounding_box_color = ImGui::ColorConvertFloat4ToU32(bounding_box_color);
g.context_menu.bounding_box_color = ImGui::ColorConvertFloat4ToU32(bounding_box_color);
}
}
}

View File

@ -4,76 +4,76 @@ namespace big
{
void view::esp_settings()
{
ImGui::Checkbox("ESP Enabled", &g->esp.enabled);
ImGui::Checkbox("ESP Enabled", &g.esp.enabled);
if (g->esp.enabled)
if (g.esp.enabled)
{
ImGui::Checkbox("Hide Self", &g->esp.hide_self);
ImGui::Checkbox("Hide Self", &g.esp.hide_self);
ImGui::Text("Global Render Distance (min, max)");
ImGui::SliderFloat2("###Global Render Distance", g->esp.global_render_distance, 0.f, 1500.f);
ImGui::SliderFloat2("###Global Render Distance", g.esp.global_render_distance, 0.f, 1500.f);
ImGui::Checkbox("Tracer", &g->esp.tracer);
if (g->esp.tracer) {
ImGui::Checkbox("Tracer", &g.esp.tracer);
if (g.esp.tracer) {
ImGui::Text("Tracer Draw Position (x, y)");
ImGui::SliderFloat2("###Draw Position", g->esp.tracer_draw_position, 0.f, 1.f);
ImGui::SliderFloat2("###Draw Position", g.esp.tracer_draw_position, 0.f, 1.f);
ImGui::Text("Tracer Render Distance (min, max)");
ImGui::SliderFloat2("###Tracer Render Distance", g->esp.tracer_render_distance, g->esp.global_render_distance[0], g->esp.global_render_distance[1]);
ImGui::SliderFloat2("###Tracer Render Distance", g.esp.tracer_render_distance, g.esp.global_render_distance[0], g.esp.global_render_distance[1]);
}
ImGui::Checkbox("Box ESP", &g->esp.box);
if (g->esp.box) {
ImGui::Checkbox("Box ESP", &g.esp.box);
if (g.esp.box) {
ImGui::Text("Box Render Distance (min, max)");
ImGui::SliderFloat2("###Box Render Distance", g->esp.box_render_distance, g->esp.global_render_distance[0], g->esp.global_render_distance[1]);
ImGui::SliderFloat2("###Box Render Distance", g.esp.box_render_distance, g.esp.global_render_distance[0], g.esp.global_render_distance[1]);
}
ImGui::Checkbox("Show Player Name", &g->esp.name);
ImGui::Checkbox("Show Player Distance", &g->esp.distance);
ImGui::Checkbox("Show Player Godmode", &g->esp.god);
ImGui::Checkbox("Show Player Health", &g->esp.health);
ImGui::Checkbox("Show Player Armor", &g->esp.armor);
ImGui::Checkbox("Show Player Name", &g.esp.name);
ImGui::Checkbox("Show Player Distance", &g.esp.distance);
ImGui::Checkbox("Show Player Godmode", &g.esp.god);
ImGui::Checkbox("Show Player Health", &g.esp.health);
ImGui::Checkbox("Show Player Armor", &g.esp.armor);
ImGui::Checkbox("Should ESP Color Change with Distance", &g->esp.change_esp_color_from_dist);
if (g->esp.health)
ImGui::Checkbox("Should Healthbar Scale with Distance", &g->esp.scale_health_from_dist);
ImGui::Checkbox("Should ESP Color Change with Distance", &g.esp.change_esp_color_from_dist);
if (g.esp.health)
ImGui::Checkbox("Should Healthbar Scale with Distance", &g.esp.scale_health_from_dist);
if (g->esp.armor)
ImGui::Checkbox("Should Armorbar Scale with Distance", &g->esp.scale_armor_from_dist);
if (g.esp.armor)
ImGui::Checkbox("Should Armorbar Scale with Distance", &g.esp.scale_armor_from_dist);
static ImVec4 col_enemy = ImGui::ColorConvertU32ToFloat4(g->esp.enemy_color);
static ImVec4 col_enemy_near = ImGui::ColorConvertU32ToFloat4(g->esp.enemy_near_color);
static ImVec4 col_default = ImGui::ColorConvertU32ToFloat4(g->esp.default_color);
static ImVec4 col_friend = ImGui::ColorConvertU32ToFloat4(g->esp.friend_color);
static ImVec4 col_enemy = ImGui::ColorConvertU32ToFloat4(g.esp.enemy_color);
static ImVec4 col_enemy_near = ImGui::ColorConvertU32ToFloat4(g.esp.enemy_near_color);
static ImVec4 col_default = ImGui::ColorConvertU32ToFloat4(g.esp.default_color);
static ImVec4 col_friend = ImGui::ColorConvertU32ToFloat4(g.esp.friend_color);
ImGui::Text("Distance threshold (min, max)");
ImGui::SliderFloat2("###Distance threshold", g->esp.distance_threshold, g->esp.global_render_distance[0], g->esp.global_render_distance[1]);
ImGui::SliderFloat2("###Distance threshold", g.esp.distance_threshold, g.esp.global_render_distance[0], g.esp.global_render_distance[1]);
if (ImGui::TreeNode("ESP Colors (RGBA)"))
{
if (g->esp.change_esp_color_from_dist) {
if (g.esp.change_esp_color_from_dist) {
ImGui::Text("Enemy Close Color:");
if (ImGui::ColorEdit4("###Enemy ESP Color##esp_picker", (float*)&col_enemy, ImGuiColorEditFlags_InputRGB | ImGuiColorEditFlags_NoSidePreview))
{
g->esp.enemy_color = ImGui::ColorConvertFloat4ToU32(col_enemy);
g.esp.enemy_color = ImGui::ColorConvertFloat4ToU32(col_enemy);
}
ImGui::Text("Enemy Near Color:");
if (ImGui::ColorEdit4("###Enemy Near ESP Color##esp_picker", (float*)&col_enemy_near, ImGuiColorEditFlags_InputRGB | ImGuiColorEditFlags_NoSidePreview))
{
g->esp.enemy_near_color = ImGui::ColorConvertFloat4ToU32(col_enemy_near);
g.esp.enemy_near_color = ImGui::ColorConvertFloat4ToU32(col_enemy_near);
}
}
ImGui::Text("Default Color:");
if (ImGui::ColorEdit4("###Default ESP Color##esp_picker", (float*)&col_default, ImGuiColorEditFlags_InputRGB | ImGuiColorEditFlags_NoSidePreview))
{
g->esp.default_color = ImGui::ColorConvertFloat4ToU32(col_default);
g.esp.default_color = ImGui::ColorConvertFloat4ToU32(col_default);
}
ImGui::Text("Friendly Color:");
if (ImGui::ColorEdit4("###Friend ESP Color##friend_picker", (float*)&col_friend, ImGuiColorEditFlags_InputRGB | ImGuiColorEditFlags_NoSidePreview))
{
g->esp.friend_color = ImGui::ColorConvertFloat4ToU32(col_friend);
g.esp.friend_color = ImGui::ColorConvertFloat4ToU32(col_friend);
}
}
}

View File

@ -6,18 +6,18 @@ namespace big
void view::gui_settings()
{
components::sub_title("UI Scale");
ImGui::SliderFloat("##gui-scale", &g->window.gui_scale, 1.f, 1.5f, "%.2f");
ImGui::SliderFloat("##gui-scale", &g.window.gui_scale, 1.f, 1.5f, "%.2f");
ImGui::SameLine();
if (ImGui::Button("Apply##gui-scale"))
g_renderer->rescale(g->window.gui_scale);
g_renderer->rescale(g.window.gui_scale);
if (ImGui::IsItemHovered())
ImGui::SetTooltip("Changing the UI scale may break rendering and require you to unload and inject YimMenu again.");
components::sub_title("Colors");
static ImVec4 col_gui = ImGui::ColorConvertU32ToFloat4(g->window.color);
static ImVec4 col_gui = ImGui::ColorConvertU32ToFloat4(g.window.color);
if (ImGui::ColorEdit4("Gui Color##gui_picker", (float*)&col_gui, ImGuiColorEditFlags_InputRGB | ImGuiColorEditFlags_NoSidePreview))
{
g->window.color = ImGui::ColorConvertFloat4ToU32(col_gui);
g.window.color = ImGui::ColorConvertFloat4ToU32(col_gui);
}
}

View File

@ -2,7 +2,7 @@
namespace big
{
void draw_pair_option(const std::string_view name, decltype(g->notifications.gta_thread_kill)& option)
void draw_pair_option(const std::string_view name, decltype(g.notifications.gta_thread_kill)& option)
{
ImGui::Text("%s", name.data());
@ -16,25 +16,25 @@ namespace big
{
components::sub_title("GTA Threads");
draw_pair_option("Terminate", g->notifications.gta_thread_kill);
draw_pair_option("Start", g->notifications.gta_thread_start);
draw_pair_option("Terminate", g.notifications.gta_thread_kill);
draw_pair_option("Start", g.notifications.gta_thread_start);
components::sub_title("Network Player Manager");
ImGui::Text("Player Join");
ImGui::Checkbox("Above Map", &g->notifications.player_join.above_map);
ImGui::Checkbox("Log", &g->notifications.player_join.log);
ImGui::Checkbox("Notify", &g->notifications.player_join.notify);
ImGui::Checkbox("Above Map", &g.notifications.player_join.above_map);
ImGui::Checkbox("Log", &g.notifications.player_join.log);
ImGui::Checkbox("Notify", &g.notifications.player_join.notify);
draw_pair_option("Player Leave", g->notifications.player_leave);
draw_pair_option("Player Leave", g.notifications.player_leave);
draw_pair_option("Init", g->notifications.network_player_mgr_init);
draw_pair_option("Shutdown", g->notifications.network_player_mgr_shutdown);
draw_pair_option("Init", g.notifications.network_player_mgr_init);
draw_pair_option("Shutdown", g.notifications.network_player_mgr_shutdown);
components::sub_title("Received Event");
auto& received_event = g->notifications.received_event;
auto& received_event = g.notifications.received_event;
ImGui::BeginGroup();
draw_pair_option("Clear Ped Tasks", received_event.clear_ped_task);
@ -52,7 +52,7 @@ namespace big
components::sub_title("Script Event Handler");
auto& script_event_handler = g->notifications.script_event_handler;
auto& script_event_handler = g.notifications.script_event_handler;
ImGui::BeginGroup();
draw_pair_option("Bounty", script_event_handler.bounty);
@ -100,11 +100,11 @@ namespace big
components::sub_title("Other");
draw_pair_option("Reports", g->notifications.reports);
draw_pair_option("Transaction Error / Rate Limit", g->notifications.transaction_rate_limit);
draw_pair_option("Mismatch sync type", g->notifications.mismatch_sync_type);
draw_pair_option("Out of allowed range sync type", g->notifications.out_of_allowed_range_sync_type);
draw_pair_option("Invalid sync", g->notifications.invalid_sync);
draw_pair_option("Reports", g.notifications.reports);
draw_pair_option("Transaction Error / Rate Limit", g.notifications.transaction_rate_limit);
draw_pair_option("Mismatch sync type", g.notifications.mismatch_sync_type);
draw_pair_option("Out of allowed range sync type", g.notifications.out_of_allowed_range_sync_type);
draw_pair_option("Invalid sync", g.notifications.invalid_sync);
}
}

View File

@ -5,49 +5,49 @@ namespace big
void view::protection_settings()
{
ImGui::BeginGroup();
ImGui::Checkbox("Bounty", &g->protections.script_events.bounty);
ImGui::Checkbox("CEO Ban", &g->protections.script_events.ceo_ban);
ImGui::Checkbox("CEO Kick", &g->protections.script_events.ceo_kick);
ImGui::Checkbox("CEO Money", &g->protections.script_events.ceo_money);
ImGui::Checkbox("TSE Crash", &g->protections.script_events.crash);
ImGui::Checkbox("Fake Deposit", &g->protections.script_events.fake_deposit);
ImGui::Checkbox("Force Mission", &g->protections.script_events.force_mission);
ImGui::Checkbox("Bounty", &g.protections.script_events.bounty);
ImGui::Checkbox("CEO Ban", &g.protections.script_events.ceo_ban);
ImGui::Checkbox("CEO Kick", &g.protections.script_events.ceo_kick);
ImGui::Checkbox("CEO Money", &g.protections.script_events.ceo_money);
ImGui::Checkbox("TSE Crash", &g.protections.script_events.crash);
ImGui::Checkbox("Fake Deposit", &g.protections.script_events.fake_deposit);
ImGui::Checkbox("Force Mission", &g.protections.script_events.force_mission);
ImGui::EndGroup();
ImGui::SameLine();
ImGui::BeginGroup();
ImGui::Checkbox("Force Teleport", &g->protections.script_events.force_teleport);
ImGui::Checkbox("GTA Banner", &g->protections.script_events.gta_banner);
ImGui::Checkbox("MC Teleport", &g->protections.script_events.mc_teleport);
ImGui::Checkbox("Network Bail", &g->protections.script_events.network_bail);
ImGui::Checkbox("Personal Vehicle Destroyed", &g->protections.script_events.personal_vehicle_destroyed);
ImGui::Checkbox("Remote Off Radar", &g->protections.script_events.remote_off_radar);
ImGui::Checkbox("Rotate Cam", &g->protections.script_events.rotate_cam);
ImGui::Checkbox("Force Teleport", &g.protections.script_events.force_teleport);
ImGui::Checkbox("GTA Banner", &g.protections.script_events.gta_banner);
ImGui::Checkbox("MC Teleport", &g.protections.script_events.mc_teleport);
ImGui::Checkbox("Network Bail", &g.protections.script_events.network_bail);
ImGui::Checkbox("Personal Vehicle Destroyed", &g.protections.script_events.personal_vehicle_destroyed);
ImGui::Checkbox("Remote Off Radar", &g.protections.script_events.remote_off_radar);
ImGui::Checkbox("Rotate Cam", &g.protections.script_events.rotate_cam);
ImGui::EndGroup();
ImGui::SameLine();
ImGui::BeginGroup();
ImGui::Checkbox("Send to Cutscene", &g->protections.script_events.send_to_cutscene);
ImGui::Checkbox("Send to Location", &g->protections.script_events.send_to_location);
ImGui::Checkbox("Sound Spam", &g->protections.script_events.sound_spam);
ImGui::Checkbox("Spectate", &g->protections.script_events.spectate);
ImGui::Checkbox("Transaction Error", &g->protections.script_events.transaction_error);
ImGui::Checkbox("Vehicle Kick", &g->protections.script_events.vehicle_kick);
ImGui::Checkbox("Wanted Level", &g->protections.script_events.clear_wanted_level);
ImGui::Checkbox("Send to Cutscene", &g.protections.script_events.send_to_cutscene);
ImGui::Checkbox("Send to Location", &g.protections.script_events.send_to_location);
ImGui::Checkbox("Sound Spam", &g.protections.script_events.sound_spam);
ImGui::Checkbox("Spectate", &g.protections.script_events.spectate);
ImGui::Checkbox("Transaction Error", &g.protections.script_events.transaction_error);
ImGui::Checkbox("Vehicle Kick", &g.protections.script_events.vehicle_kick);
ImGui::Checkbox("Wanted Level", &g.protections.script_events.clear_wanted_level);
ImGui::EndGroup();
ImGui::SameLine();
ImGui::BeginGroup();
ImGui::Checkbox("Teleport To Warehouse", &g->protections.script_events.teleport_to_warehouse);
ImGui::Checkbox("Start Activity", &g->protections.script_events.start_activity);
components::script_patch_checkbox("Script Host Kick", &g->protections.script_host_kick);
ImGui::Checkbox("RID Join", &g->protections.rid_join);
ImGui::Checkbox("Teleport To Warehouse", &g.protections.script_events.teleport_to_warehouse);
ImGui::Checkbox("Start Activity", &g.protections.script_events.start_activity);
components::script_patch_checkbox("Script Host Kick", &g.protections.script_host_kick);
ImGui::Checkbox("RID Join", &g.protections.rid_join);
if (ImGui::IsItemHovered())
ImGui::SetTooltip("This will block anyone trying to join you through Rockstar ID, including your friends");
ImGui::Checkbox("Lessen Breakup Kicks As Host", &g->protections.lessen_breakups);
ImGui::Checkbox("Lessen Breakup Kicks As Host", &g.protections.lessen_breakups);
if (ImGui::IsItemHovered())
ImGui::SetTooltip("Attacker must join after you have become host for this to work. There are anti-cheat concerns with this feature");
ImGui::EndGroup();

View File

@ -27,23 +27,23 @@ namespace big
void view::settings()
{
components::sub_title("Misc");
ImGui::Checkbox("Enable Dev DLC", &g->settings.dev_dlc);
ImGui::Checkbox("Enable Dev DLC", &g.settings.dev_dlc);
ImGui::Separator();
components::sub_title("Hotkeys");
ImGui::PushItemWidth(350.f);
if (ImGui::Hotkey("Menu Toggle", &g->settings.hotkeys.menu_toggle))
g->settings.hotkeys.editing_menu_toggle = true; // make our menu reappear
if (ImGui::Hotkey("Menu Toggle", &g.settings.hotkeys.menu_toggle))
g.settings.hotkeys.editing_menu_toggle = true; // make our menu reappear
if (ImGui::Hotkey("Teleport to waypoint", &g->settings.hotkeys.teleport_waypoint))
g_hotkey_service->update_hotkey("waypoint", g->settings.hotkeys.teleport_waypoint);
if (ImGui::Hotkey("Teleport to objective", &g->settings.hotkeys.teleport_objective))
g_hotkey_service->update_hotkey("objective", g->settings.hotkeys.teleport_objective);
if (ImGui::Hotkey("Teleport to waypoint", &g.settings.hotkeys.teleport_waypoint))
g_hotkey_service->update_hotkey("waypoint", g.settings.hotkeys.teleport_waypoint);
if (ImGui::Hotkey("Teleport to objective", &g.settings.hotkeys.teleport_objective))
g_hotkey_service->update_hotkey("objective", g.settings.hotkeys.teleport_objective);
if (ImGui::Hotkey("Toggle Noclip", &g->settings.hotkeys.noclip))
g_hotkey_service->update_hotkey("noclip", g->settings.hotkeys.noclip);
if (ImGui::Hotkey("Toggle Noclip", &g.settings.hotkeys.noclip))
g_hotkey_service->update_hotkey("noclip", g.settings.hotkeys.noclip);
ImGui::PopItemWidth();

View File

@ -85,32 +85,32 @@ namespace big
components::sub_title("Auto Drive");
{
float auto_drive_speed_user_unit = vehicle::mps_to_speed(g->vehicle.auto_drive_speed, g->vehicle.speed_unit);
float auto_drive_speed_user_unit = vehicle::mps_to_speed(g.vehicle.auto_drive_speed, g.vehicle.speed_unit);
if (ImGui::SliderFloat(
std::format("Top Speed({})", speed_unit_strings[(int)g->vehicle.speed_unit]).c_str(),
std::format("Top Speed({})", speed_unit_strings[(int)g.vehicle.speed_unit]).c_str(),
&auto_drive_speed_user_unit,
vehicle::mps_to_speed(0.f, g->vehicle.speed_unit),
vehicle::mps_to_speed(150.f, g->vehicle.speed_unit),
vehicle::mps_to_speed(0.f, g.vehicle.speed_unit),
vehicle::mps_to_speed(150.f, g.vehicle.speed_unit),
"%.1f"
)) {
g->vehicle.auto_drive_speed = vehicle::speed_to_mps(auto_drive_speed_user_unit, g->vehicle.speed_unit);
g.vehicle.auto_drive_speed = vehicle::speed_to_mps(auto_drive_speed_user_unit, g.vehicle.speed_unit);
}
static constexpr char const* driving_style_names[] = { "Law-Abiding", "The Road Is Yours" };
if (ImGui::BeginCombo("Driving Style", driving_style_names[(int)g->vehicle.auto_drive_style]))
if (ImGui::BeginCombo("Driving Style", driving_style_names[(int)g.vehicle.auto_drive_style]))
{
for (int i = 0; i < 2; i++)
{
if (ImGui::Selectable(driving_style_names[i], g->vehicle.auto_drive_style == (AutoDriveStyle)i))
if (ImGui::Selectable(driving_style_names[i], g.vehicle.auto_drive_style == (AutoDriveStyle)i))
{
g->vehicle.auto_drive_style = (AutoDriveStyle)i;
g.vehicle.auto_drive_style = (AutoDriveStyle)i;
g_notification_service->push_warning(
"Auto Drive",
std::format("Driving style set to {}.", driving_style_names[i])
);
}
if (g->vehicle.auto_drive_style == (AutoDriveStyle)i)
if (g.vehicle.auto_drive_style == (AutoDriveStyle)i)
{
ImGui::SetItemDefaultFocus();
}
@ -120,19 +120,19 @@ namespace big
}
if (components::button("To Objective")) {
g->vehicle.auto_drive_destination = AutoDriveDestination::OBJECTITVE;
g.vehicle.auto_drive_destination = AutoDriveDestination::OBJECTITVE;
}
ImGui::SameLine();
if (components::button("To Waypoint")) {
g->vehicle.auto_drive_destination = AutoDriveDestination::WAYPOINT;
g.vehicle.auto_drive_destination = AutoDriveDestination::WAYPOINT;
}
ImGui::SameLine();
if (components::button("Wander")) {
g->vehicle.auto_drive_destination = AutoDriveDestination::WANDER;
g.vehicle.auto_drive_destination = AutoDriveDestination::WANDER;
}
ImGui::SameLine();
if (components::button("Emergency Stop")) {
g->vehicle.auto_drive_destination = AutoDriveDestination::EMERGENCY_STOP;
g.vehicle.auto_drive_destination = AutoDriveDestination::EMERGENCY_STOP;
}
}
ImGui::Separator();
@ -140,26 +140,26 @@ namespace big
components::sub_title("Rainbow Paint");
{
ImGui::Checkbox("Primary", &g->vehicle.rainbow_paint.primary);
ImGui::Checkbox("Primary", &g.vehicle.rainbow_paint.primary);
ImGui::SameLine();
ImGui::Checkbox("Secondary", &g->vehicle.rainbow_paint.secondary);
ImGui::Checkbox("Secondary", &g.vehicle.rainbow_paint.secondary);
ImGui::SameLine();
ImGui::Checkbox("Neon", &g->vehicle.rainbow_paint.neon);
ImGui::Checkbox("Neon", &g.vehicle.rainbow_paint.neon);
ImGui::SameLine();
ImGui::Checkbox("Smoke", &g->vehicle.rainbow_paint.smoke);
ImGui::Checkbox("Smoke", &g.vehicle.rainbow_paint.smoke);
static constexpr char const* rgb_types[] = { "Off", "Fade", "Spasm" };
ImGui::SetNextItemWidth(120);
if (ImGui::BeginCombo("RGB Type", rgb_types[(int)g->vehicle.rainbow_paint.type]))
if (ImGui::BeginCombo("RGB Type", rgb_types[(int)g.vehicle.rainbow_paint.type]))
{
for (int i = 0; i < 3; i++)
{
bool itemSelected = (int)g->vehicle.rainbow_paint.type == i;
bool itemSelected = (int)g.vehicle.rainbow_paint.type == i;
if (ImGui::Selectable(rgb_types[i], itemSelected))
{
g->vehicle.rainbow_paint.type = (RainbowPaintType)i;
g.vehicle.rainbow_paint.type = (RainbowPaintType)i;
}
if (itemSelected)
@ -170,25 +170,25 @@ namespace big
ImGui::EndCombo();
}
if (g->vehicle.rainbow_paint.type != RainbowPaintType::Off)
if (g.vehicle.rainbow_paint.type != RainbowPaintType::Off)
{
ImGui::SameLine();
ImGui::SetNextItemWidth(150);
ImGui::SliderInt("RGB Speed", &g->vehicle.rainbow_paint.speed, 1, 10);
ImGui::SliderInt("RGB Speed", &g.vehicle.rainbow_paint.speed, 1, 10);
}
}
ImGui::Separator();
static constexpr char const* boost_behaviors[] = { "Default", "Instant Refill", "Infinite" };
if (ImGui::BeginCombo("Boost Behavior", boost_behaviors[static_cast<int>(g->vehicle.boost_behavior)]))
if (ImGui::BeginCombo("Boost Behavior", boost_behaviors[static_cast<int>(g.vehicle.boost_behavior)]))
{
for (int i = 0; i < 3; i++)
{
bool itemSelected = g->vehicle.boost_behavior == static_cast<eBoostBehaviors>(i);
bool itemSelected = g.vehicle.boost_behavior == static_cast<eBoostBehaviors>(i);
if (ImGui::Selectable(boost_behaviors[i], itemSelected))
{
g->vehicle.boost_behavior = static_cast<eBoostBehaviors>(i);
g.vehicle.boost_behavior = static_cast<eBoostBehaviors>(i);
}
if (itemSelected)
@ -207,27 +207,27 @@ namespace big
{
ImGui::BeginGroup();
ImGui::Checkbox("Enabled", &g->vehicle.fly.enabled);
ImGui::Checkbox("Don't Stop", &g->vehicle.fly.dont_stop);
ImGui::Checkbox("Enabled", &g.vehicle.fly.enabled);
ImGui::Checkbox("Don't Stop", &g.vehicle.fly.dont_stop);
ImGui::EndGroup();
ImGui::SameLine();
ImGui::BeginGroup();
ImGui::Checkbox("Disable Collision", &g->vehicle.fly.no_collision);
ImGui::Checkbox("Stop On Exit", &g->vehicle.fly.stop_on_exit);
ImGui::Checkbox("Disable Collision", &g.vehicle.fly.no_collision);
ImGui::Checkbox("Stop On Exit", &g.vehicle.fly.stop_on_exit);
ImGui::EndGroup();
float fly_speed_user_unit = vehicle::mps_to_speed(g->vehicle.fly.speed, g->vehicle.speed_unit);
float fly_speed_user_unit = vehicle::mps_to_speed(g.vehicle.fly.speed, g.vehicle.speed_unit);
if (ImGui::SliderFloat(
std::format("Speed({})", speed_unit_strings[(int)g->vehicle.speed_unit]).c_str(),
std::format("Speed({})", speed_unit_strings[(int)g.vehicle.speed_unit]).c_str(),
&fly_speed_user_unit,
vehicle::mps_to_speed(0.f, g->vehicle.speed_unit),
vehicle::mps_to_speed(150.f, g->vehicle.speed_unit),
vehicle::mps_to_speed(0.f, g.vehicle.speed_unit),
vehicle::mps_to_speed(150.f, g.vehicle.speed_unit),
"%.1f"
)) {
g->vehicle.fly.speed = vehicle::speed_to_mps(fly_speed_user_unit, g->vehicle.speed_unit);
g.vehicle.fly.speed = vehicle::speed_to_mps(fly_speed_user_unit, g.vehicle.speed_unit);
}
}
}

View File

@ -195,7 +195,7 @@ namespace big
}
components::button("Start LS Customs", [] {
g->vehicle.ls_customs = true;
g.vehicle.ls_customs = true;
});
ImGui::SameLine();
if (components::button("Max Vehicle"))

View File

@ -27,7 +27,7 @@ namespace big
{
g_notification_service->push_warning("Persist Car", "Vehicle failed to spawn, there is most likely too many spawned vehicles in the area");
}
else if (g->spawn_vehicle.spawn_inside)
else if (g.spawn_vehicle.spawn_inside)
teleport::into_vehicle(vehicle);
selected_vehicle_file.clear();

View File

@ -11,30 +11,30 @@ namespace big
void view::pv() {
ImGui::SetWindowSize({ 0.f, (float)*g_pointers->m_resolution_y }, ImGuiCond_Always);
if (ImGui::Checkbox("Preview", &g->clone_pv.preview_vehicle))
if (ImGui::Checkbox("Preview", &g.clone_pv.preview_vehicle))
{
if (!g->clone_pv.preview_vehicle)
if (!g.clone_pv.preview_vehicle)
{
g_model_preview_service->stop_preview();
}
}
ImGui::SameLine();
ImGui::Checkbox("Spawn In", &g->clone_pv.spawn_inside);
ImGui::Checkbox("Spawn In", &g.clone_pv.spawn_inside);
ImGui::SameLine();
static char plate_buf[9] = { 0 };
int num_of_rows = 3;
ImGui::Checkbox("Spawn Clone", &g->clone_pv.spawn_clone);
if (g->clone_pv.spawn_clone)
ImGui::Checkbox("Spawn Clone", &g.clone_pv.spawn_clone);
if (g.clone_pv.spawn_clone)
{
num_of_rows = 5;
ImGui::Checkbox("Spawn Maxed", &g->clone_pv.spawn_maxed);
ImGui::Checkbox("Spawn Maxed", &g.clone_pv.spawn_maxed);
ImGui::SameLine();
ImGui::Checkbox("Clone PV Plate", &g->clone_pv.clone_plate);
if (g->clone_pv.clone_plate)
ImGui::Checkbox("Clone PV Plate", &g.clone_pv.clone_plate);
if (g.clone_pv.clone_plate)
{
num_of_rows = 4;
}
@ -42,9 +42,9 @@ namespace big
{
ImGui::SetNextItemWidth(300.f);
strncpy(plate_buf, g->clone_pv.plate.c_str(), 9);
strncpy(plate_buf, g.clone_pv.plate.c_str(), 9);
components::input_text_with_hint("Plate", "Plate Number", plate_buf, sizeof(plate_buf), ImGuiInputTextFlags_None, [] {
g->clone_pv.plate = plate_buf;
g.clone_pv.plate = plate_buf;
});
}
}
@ -116,16 +116,16 @@ namespace big
ImGui::PushID('v' << 24 & personal_veh->get_id());
components::selectable(label, false, [&personal_veh] {
if (g->clone_pv.spawn_clone)
if (g.clone_pv.spawn_clone)
{
Vector3 spawn_location = vehicle::get_spawn_location(g->spawn_vehicle.spawn_inside);
Vector3 spawn_location = vehicle::get_spawn_location(g.spawn_vehicle.spawn_inside);
float spawn_heading = ENTITY::GET_ENTITY_HEADING(self::ped);
auto vehicle_idx = personal_veh->get_vehicle_idx();
auto owned_mods = vehicle::get_owned_mods_from_vehicle_idx(vehicle_idx);
const char* spawn_plate_buf = plate_buf;
if (g->clone_pv.clone_plate)
if (g.clone_pv.clone_plate)
{
spawn_plate_buf = personal_veh->get_plate();
}
@ -138,14 +138,14 @@ namespace big
}
else
{
if (g->clone_pv.spawn_maxed)
if (g.clone_pv.spawn_maxed)
{
vehicle::max_vehicle(veh);
}
vehicle::set_plate(veh, spawn_plate_buf);
if (g->clone_pv.spawn_inside)
if (g.clone_pv.spawn_inside)
{
vehicle::teleport_into_vehicle(veh);
}
@ -161,7 +161,7 @@ namespace big
});
ImGui::PopID();
if (!g->clone_pv.preview_vehicle || (g->clone_pv.preview_vehicle && !ImGui::IsAnyItemHovered()))
if (!g.clone_pv.preview_vehicle || (g.clone_pv.preview_vehicle && !ImGui::IsAnyItemHovered()))
{
g_model_preview_service->stop_preview();
}
@ -170,7 +170,7 @@ namespace big
g_fiber_pool->queue_job([&personal_veh] {
g_model_preview_service->show_vehicle(
vehicle::get_owned_mods_from_vehicle_idx(personal_veh->get_vehicle_idx()),
g->clone_pv.spawn_maxed
g.clone_pv.spawn_maxed
);
});
}

View File

@ -11,24 +11,24 @@ namespace big
{
ImGui::SetWindowSize({ 0.f, (float)*g_pointers->m_resolution_y }, ImGuiCond_Always);
if (ImGui::Checkbox("Preview", &g->spawn_vehicle.preview_vehicle))
if (ImGui::Checkbox("Preview", &g.spawn_vehicle.preview_vehicle))
{
if (!g->spawn_vehicle.preview_vehicle)
if (!g.spawn_vehicle.preview_vehicle)
{
g_model_preview_service->stop_preview();
}
}
ImGui::SameLine();
ImGui::Checkbox("Spawn In", &g->spawn_vehicle.spawn_inside);
ImGui::Checkbox("Spawn In", &g.spawn_vehicle.spawn_inside);
ImGui::SameLine();
ImGui::Checkbox("Spawn Maxed", &g->spawn_vehicle.spawn_maxed);
ImGui::Checkbox("Spawn Maxed", &g.spawn_vehicle.spawn_maxed);
static char plate_buf[9] = { 0 };
strncpy(plate_buf, g->spawn_vehicle.plate.c_str(), 9);
strncpy(plate_buf, g.spawn_vehicle.plate.c_str(), 9);
ImGui::SetNextItemWidth(300.f);
components::input_text_with_hint("Plate", "Plate Number", plate_buf, sizeof(plate_buf), ImGuiInputTextFlags_None, [] {
g->spawn_vehicle.plate = plate_buf;
g.spawn_vehicle.plate = plate_buf;
});
@ -83,7 +83,7 @@ namespace big
components::selectable(std::format("Current Vehicle [{}]", item.m_display_name), false, [] {
if (self::veh)
{
Vector3 spawn_location = vehicle::get_spawn_location(g->spawn_vehicle.spawn_inside);
Vector3 spawn_location = vehicle::get_spawn_location(g.spawn_vehicle.spawn_inside);
float spawn_heading = ENTITY::GET_ENTITY_HEADING(self::ped);
auto owned_mods = vehicle::get_owned_mods_from_vehicle(self::veh);
@ -96,14 +96,14 @@ namespace big
}
else
{
if (g->spawn_vehicle.spawn_maxed)
if (g.spawn_vehicle.spawn_maxed)
{
vehicle::max_vehicle(veh);
}
vehicle::set_plate(veh, plate_buf);
if (g->spawn_vehicle.spawn_inside)
if (g.spawn_vehicle.spawn_inside)
{
vehicle::teleport_into_vehicle(veh);
}
@ -113,7 +113,7 @@ namespace big
g_model_preview_service->stop_preview();
});
if (!g->spawn_vehicle.preview_vehicle || (g->spawn_vehicle.preview_vehicle && !ImGui::IsAnyItemHovered()))
if (!g.spawn_vehicle.preview_vehicle || (g.spawn_vehicle.preview_vehicle && !ImGui::IsAnyItemHovered()))
{
g_model_preview_service->stop_preview();
}
@ -122,7 +122,7 @@ namespace big
g_fiber_pool->queue_job([] {
g_model_preview_service->show_vehicle(
vehicle::get_owned_mods_from_vehicle(self::veh),
g->spawn_vehicle.spawn_maxed
g.spawn_vehicle.spawn_maxed
);
});
}
@ -155,7 +155,7 @@ namespace big
ImGui::PushID(vehicle.m_hash);
components::selectable(vehicle.m_display_name, false, [&vehicle]
{
const auto spawn_location = vehicle::get_spawn_location(g->spawn_vehicle.spawn_inside);
const auto spawn_location = vehicle::get_spawn_location(g.spawn_vehicle.spawn_inside);
const auto spawn_heading = ENTITY::GET_ENTITY_HEADING(self::ped);
const auto veh = vehicle::spawn(vehicle.m_hash, spawn_location, spawn_heading);
@ -166,14 +166,14 @@ namespace big
}
else
{
if (g->spawn_vehicle.spawn_maxed)
if (g.spawn_vehicle.spawn_maxed)
{
vehicle::max_vehicle(veh);
}
vehicle::set_plate(veh, plate_buf);
if (g->spawn_vehicle.spawn_inside)
if (g.spawn_vehicle.spawn_inside)
{
vehicle::teleport_into_vehicle(veh);
}
@ -183,13 +183,13 @@ namespace big
});
ImGui::PopID();
if (!g->spawn_vehicle.preview_vehicle || (g->spawn_vehicle.preview_vehicle && !ImGui::IsAnyItemHovered()))
if (!g.spawn_vehicle.preview_vehicle || (g.spawn_vehicle.preview_vehicle && !ImGui::IsAnyItemHovered()))
{
g_model_preview_service->stop_preview();
}
else if (ImGui::IsItemHovered())
{
g_model_preview_service->show_vehicle(vehicle.m_hash, g->spawn_vehicle.spawn_maxed);
g_model_preview_service->show_vehicle(vehicle.m_hash, g.spawn_vehicle.spawn_maxed);
}
}
}

View File

@ -20,7 +20,7 @@ namespace big
});
ImGui::SameLine();
ImGui::Checkbox("Keep Vehicle Repaired", &g->vehicle.keep_vehicle_repaired);
ImGui::Checkbox("Keep Vehicle Repaired", &g.vehicle.keep_vehicle_repaired);
ImGui::Separator();
@ -45,8 +45,8 @@ namespace big
vehicle::set_engine_state(
self::veh,
true,
g->vehicle.change_engine_state_immediately,
g->vehicle.disable_engine_auto_start
g.vehicle.change_engine_state_immediately,
g.vehicle.disable_engine_auto_start
);
});
ImGui::SameLine();
@ -54,42 +54,42 @@ namespace big
vehicle::set_engine_state(
self::veh,
false,
g->vehicle.change_engine_state_immediately,
g->vehicle.disable_engine_auto_start
g.vehicle.change_engine_state_immediately,
g.vehicle.disable_engine_auto_start
);
});
ImGui::Checkbox("Disable Engine Auto Start", &g->vehicle.disable_engine_auto_start);
ImGui::Checkbox("Disable Engine Auto Start", &g.vehicle.disable_engine_auto_start);
ImGui::SameLine();
ImGui::Checkbox("Change State Immediately", &g->vehicle.change_engine_state_immediately);
ImGui::Checkbox("Change State Immediately", &g.vehicle.change_engine_state_immediately);
ImGui::Separator();
components::sub_title("General");
{
ImGui::BeginGroup();
ImGui::Checkbox("God Mode", &g->vehicle.god_mode);
ImGui::Checkbox("Horn Boost", &g->vehicle.horn_boost);
ImGui::Checkbox("Vehicle Jump", &g->vehicle.vehicle_jump);
ImGui::Checkbox("God Mode", &g.vehicle.god_mode);
ImGui::Checkbox("Horn Boost", &g.vehicle.horn_boost);
ImGui::Checkbox("Vehicle Jump", &g.vehicle.vehicle_jump);
ImGui::EndGroup();
ImGui::SameLine();
ImGui::BeginGroup();
ImGui::Checkbox("Instant Brake", &g->vehicle.instant_brake);
ImGui::Checkbox("Can Be Targeted", &g->vehicle.is_targetable);
ImGui::Checkbox("Drive On Water", &g->vehicle.drive_on_water);
ImGui::Checkbox("Instant Brake", &g.vehicle.instant_brake);
ImGui::Checkbox("Can Be Targeted", &g.vehicle.is_targetable);
ImGui::Checkbox("Drive On Water", &g.vehicle.drive_on_water);
ImGui::EndGroup();
ImGui::SameLine();
ImGui::BeginGroup();
ImGui::Checkbox("Seatbelt", &g->vehicle.seatbelt);
ImGui::Checkbox("Turn Signals", &g->vehicle.turn_signals);
if (g->vehicle.turn_signals)
ImGui::Checkbox("Seatbelt", &g.vehicle.seatbelt);
ImGui::Checkbox("Turn Signals", &g.vehicle.turn_signals);
if (g.vehicle.turn_signals)
{
ImGui::Checkbox("Fully Automatic Signal", &g->vehicle.auto_turn_signals);
ImGui::Checkbox("Fully Automatic Signal", &g.vehicle.auto_turn_signals);
}
ImGui::Checkbox("No Water Collision", &g->vehicle.no_water_collision);
ImGui::Checkbox("No Water Collision", &g.vehicle.no_water_collision);
ImGui::EndGroup();
}
@ -100,52 +100,52 @@ namespace big
{
if (ImGui::Button("Check all"))
{
g->vehicle.proof_bullet = true;
g->vehicle.proof_fire = true;
g->vehicle.proof_collision = true;
g->vehicle.proof_melee = true;
g->vehicle.proof_explosion = true;
g->vehicle.proof_steam = true;
g->vehicle.proof_water = true;
g.vehicle.proof_bullet = true;
g.vehicle.proof_fire = true;
g.vehicle.proof_collision = true;
g.vehicle.proof_melee = true;
g.vehicle.proof_explosion = true;
g.vehicle.proof_steam = true;
g.vehicle.proof_water = true;
}
ImGui::SameLine();
if (ImGui::Button("Uncheck all"))
{
g->vehicle.proof_bullet = false;
g->vehicle.proof_fire = false;
g->vehicle.proof_collision = false;
g->vehicle.proof_melee = false;
g->vehicle.proof_explosion = false;
g->vehicle.proof_steam = false;
g->vehicle.proof_water = false;
g.vehicle.proof_bullet = false;
g.vehicle.proof_fire = false;
g.vehicle.proof_collision = false;
g.vehicle.proof_melee = false;
g.vehicle.proof_explosion = false;
g.vehicle.proof_steam = false;
g.vehicle.proof_water = false;
}
ImGui::BeginGroup();
ImGui::Checkbox("Bullet", &g->vehicle.proof_bullet);
ImGui::Checkbox("Fire", &g->vehicle.proof_fire);
ImGui::Checkbox("Bullet", &g.vehicle.proof_bullet);
ImGui::Checkbox("Fire", &g.vehicle.proof_fire);
ImGui::EndGroup();
ImGui::SameLine();
ImGui::BeginGroup();
ImGui::Checkbox("Collision", &g->vehicle.proof_collision);
ImGui::Checkbox("Melee", &g->vehicle.proof_melee);
ImGui::Checkbox("Collision", &g.vehicle.proof_collision);
ImGui::Checkbox("Melee", &g.vehicle.proof_melee);
ImGui::EndGroup();
ImGui::SameLine();
ImGui::BeginGroup();
ImGui::Checkbox("Explosion", &g->vehicle.proof_explosion);
ImGui::Checkbox("Steam", &g->vehicle.proof_steam);
ImGui::Checkbox("Explosion", &g.vehicle.proof_explosion);
ImGui::Checkbox("Steam", &g.vehicle.proof_steam);
ImGui::EndGroup();
ImGui::SameLine();
ImGui::BeginGroup();
ImGui::Checkbox("Water", &g->vehicle.proof_water);
ImGui::Checkbox("Water", &g.vehicle.proof_water);
ImGui::EndGroup();
}
@ -156,19 +156,19 @@ namespace big
{
ImGui::RadioButton(
speed_unit_strings[(int)SpeedUnit::KMPH].c_str(),
(int*)&g->vehicle.speed_unit,
(int*)&g.vehicle.speed_unit,
(int)SpeedUnit::KMPH
);
ImGui::SameLine();
ImGui::RadioButton(
speed_unit_strings[(int)SpeedUnit::MIPH].c_str(),
(int*)&g->vehicle.speed_unit,
(int*)&g.vehicle.speed_unit,
(int)SpeedUnit::MIPH
);
ImGui::SameLine();
ImGui::RadioButton(
speed_unit_strings[(int)SpeedUnit::MPS].c_str(),
(int*)&g->vehicle.speed_unit,
(int*)&g.vehicle.speed_unit,
(int)SpeedUnit::MPS
);
}
@ -177,58 +177,58 @@ namespace big
components::sub_title("Speedo Meter");
{
ImGui::Checkbox("Enabled", &g->vehicle.speedo_meter.enabled);
ImGui::Checkbox("Enabled", &g.vehicle.speedo_meter.enabled);
if (g->vehicle.speedo_meter.enabled)
if (g.vehicle.speedo_meter.enabled)
{
ImGui::Text("Position (X, Y)");
float pos[2] = { g->vehicle.speedo_meter.x, g->vehicle.speedo_meter.y };
float pos[2] = { g.vehicle.speedo_meter.x, g.vehicle.speedo_meter.y };
if (ImGui::SliderFloat2("###speedo_pos", pos, .001f, .999f, "%.3f"))
{
g->vehicle.speedo_meter.x = pos[0];
g->vehicle.speedo_meter.y = pos[1];
g.vehicle.speedo_meter.x = pos[0];
g.vehicle.speedo_meter.y = pos[1];
}
ImGui::SameLine();
ImGui::Checkbox("Left Sided", &g->vehicle.speedo_meter.left_side);
ImGui::Checkbox("Left Sided", &g.vehicle.speedo_meter.left_side);
}
}
g->vehicle.proof_mask = 0;
if (g->vehicle.god_mode)
g.vehicle.proof_mask = 0;
if (g.vehicle.god_mode)
{
g->vehicle.proof_mask |= static_cast<int>(eEntityProofs::GOD);
g.vehicle.proof_mask |= static_cast<int>(eEntityProofs::GOD);
}
if (g->vehicle.proof_bullet)
if (g.vehicle.proof_bullet)
{
g->vehicle.proof_mask |= static_cast<int>(eEntityProofs::BULLET);
g.vehicle.proof_mask |= static_cast<int>(eEntityProofs::BULLET);
}
if (g->vehicle.proof_fire)
if (g.vehicle.proof_fire)
{
g->vehicle.proof_mask |= static_cast<int>(eEntityProofs::FIRE);
g.vehicle.proof_mask |= static_cast<int>(eEntityProofs::FIRE);
}
if (g->vehicle.proof_collision)
if (g.vehicle.proof_collision)
{
g->vehicle.proof_mask |= static_cast<int>(eEntityProofs::COLLISION);
g.vehicle.proof_mask |= static_cast<int>(eEntityProofs::COLLISION);
}
if (g->vehicle.proof_melee)
if (g.vehicle.proof_melee)
{
g->vehicle.proof_mask |= static_cast<int>(eEntityProofs::MELEE);
g.vehicle.proof_mask |= static_cast<int>(eEntityProofs::MELEE);
}
if (g->vehicle.proof_explosion)
if (g.vehicle.proof_explosion)
{
g->vehicle.proof_mask |= static_cast<int>(eEntityProofs::EXPLOSION);
g.vehicle.proof_mask |= static_cast<int>(eEntityProofs::EXPLOSION);
}
if (g->vehicle.proof_steam)
if (g.vehicle.proof_steam)
{
g->vehicle.proof_mask |= static_cast<int>(eEntityProofs::STEAM);
g.vehicle.proof_mask |= static_cast<int>(eEntityProofs::STEAM);
}
if (g->vehicle.proof_water)
if (g.vehicle.proof_water)
{
g->vehicle.proof_mask |= static_cast<int>(eEntityProofs::WATER);
g.vehicle.proof_mask |= static_cast<int>(eEntityProofs::WATER);
}
}
}

View File

@ -6,7 +6,7 @@ namespace big
static void draw_model_bounding_box(ImDrawList* draw_list, const model_bounding_box_screen_space& m_model_bounding_box_screen_space)
{
const auto& box = g_context_menu_service->m_model_bounding_box_screen_space;
const auto& color = g->context_menu.bounding_box_color;
const auto& color = g.context_menu.bounding_box_color;
draw_list->AddLine(box.edge1, box.edge2, color);
draw_list->AddLine(box.edge1, box.edge4, color);
@ -38,7 +38,7 @@ namespace big
auto& context_target_pos = *g_context_menu_service->m_pointer->m_navigation->get_position();
const auto context_target_distance = math::calculate_distance_from_game_cam(context_target_pos);
const auto context_target_multplr = context_target_distance > g->esp.global_render_distance[1] ? -1.f : 6.17757f / context_target_distance;
const auto context_target_multplr = context_target_distance > g.esp.global_render_distance[1] ? -1.f : 6.17757f / context_target_distance;
if (g_pointers->m_get_screen_coords_for_world_coords(context_target_pos.data, &context_screen_x, &context_screen_y))
{
@ -56,10 +56,10 @@ namespace big
for (std::uint32_t i = 0; i < cm->options.size(); i++)
{
const auto co = cm->options.at(i);
draw_list->AddText({ cm_start_x + 7.f, cm_start_y + (20.f * static_cast<float>(i)) + 5.f }, cm->current_option == i ? g->context_menu.selected_option_color : ImGui::ColorConvertFloat4ToU32({ 1.f, 1.f, 1.f, 1.f }), co.name.c_str());
draw_list->AddText({ cm_start_x + 7.f, cm_start_y + (20.f * static_cast<float>(i)) + 5.f }, cm->current_option == i ? g.context_menu.selected_option_color : ImGui::ColorConvertFloat4ToU32({ 1.f, 1.f, 1.f, 1.f }), co.name.c_str());
}
if (g->context_menu.bounding_box_enabled)
if (g.context_menu.bounding_box_enabled)
draw_model_bounding_box(draw_list, g_context_menu_service->m_model_bounding_box_screen_space);
}
}

View File

@ -241,7 +241,7 @@ namespace big
selected_ped_player_id = -1;
g_model_preview_service->stop_preview();
}
else if (!g->spawn_ped.preview_ped || (g->spawn_ped.preview_ped && !ImGui::IsAnyItemHovered()))
else if (!g.spawn_ped.preview_ped || (g.spawn_ped.preview_ped && !ImGui::IsAnyItemHovered()))
{
g_model_preview_service->stop_preview();
}
@ -272,7 +272,7 @@ namespace big
selected_ped_player_id = plyr_id;
g_model_preview_service->stop_preview();
}
else if (!g->spawn_ped.preview_ped || (g->spawn_ped.preview_ped && !ImGui::IsAnyItemHovered()))
else if (!g.spawn_ped.preview_ped || (g.spawn_ped.preview_ped && !ImGui::IsAnyItemHovered()))
{
g_model_preview_service->stop_preview();
}
@ -386,7 +386,7 @@ namespace big
ped_model_dropdown_open = ped_model_dropdown_focused;
if (!g->spawn_ped.preview_ped || (g->spawn_ped.preview_ped && (!item_hovered || !ped_model_dropdown_open)))
if (!g.spawn_ped.preview_ped || (g.spawn_ped.preview_ped && (!item_hovered || !ped_model_dropdown_open)))
{
g_model_preview_service->stop_preview();
}
@ -550,9 +550,9 @@ namespace big
ImGui::Separator();
if (ImGui::Checkbox("Preview", &g->spawn_ped.preview_ped))
if (ImGui::Checkbox("Preview", &g.spawn_ped.preview_ped))
{
if (!g->spawn_ped.preview_ped)
if (!g.spawn_ped.preview_ped)
{
g_model_preview_service->stop_preview();
}

View File

@ -8,13 +8,13 @@ namespace big
{
if (ImGui::TreeNode("Local Time"))
{
ImGui::Checkbox("Override Time", &g->session.override_time);
ImGui::Checkbox("Override Time", &g.session.override_time);
if (g->session.override_time)
if (g.session.override_time)
{
ImGui::SliderInt("Hour", &g->session.custom_time.hour, 0, 23);
ImGui::SliderInt("Minute", &g->session.custom_time.minute, 0, 59);
ImGui::SliderInt("Second", &g->session.custom_time.second, 0, 59);
ImGui::SliderInt("Hour", &g.session.custom_time.hour, 0, 23);
ImGui::SliderInt("Minute", &g.session.custom_time.minute, 0, 59);
ImGui::SliderInt("Second", &g.session.custom_time.second, 0, 59);
}
ImGui::TreePop();
@ -27,7 +27,7 @@ namespace big
MISC::CLEAR_OVERRIDE_WEATHER();
});
if (ImGui::ListBox("", &g->session.local_weather, session::weathers, 15))
if (ImGui::ListBox("", &g.session.local_weather, session::weathers, 15))
{
g_fiber_pool->queue_job([]
{