diff --git a/src/backend/looped/self/part_water.cpp b/src/backend/looped/self/part_water.cpp new file mode 100644 index 00000000..f0aa4851 --- /dev/null +++ b/src/backend/looped/self/part_water.cpp @@ -0,0 +1,32 @@ +#include "backend/looped/looped.hpp" +#include "natives.hpp" +#include "backend/looped_command.hpp" + +namespace big +{ + class partwater : looped_command + { + using looped_command::looped_command; + + virtual void on_tick() override + { + Vector3 coords = self::pos; + float offset[] = { -4, 4 }; + + for (int i = 0; i < 5; i++) + { + if (i < 2) + { + coords.x += offset[(i % 2 == 0)]; + } + else if (i < 4) + { + coords.y += offset[(i % 2 == 0)]; + } + WATER::MODIFY_WATER(coords.x, coords.y, -500000.0f, 0.2f); + } + } + }; + + partwater g_partwater("partwater", "Part Water", "Makes you like Moses", g.world.water.part_water); +} diff --git a/src/backend/looped/world/train.cpp b/src/backend/looped/world/train.cpp index 90f281c6..c32da3f2 100644 --- a/src/backend/looped/world/train.cpp +++ b/src/backend/looped/world/train.cpp @@ -11,7 +11,7 @@ namespace big { int trainSpeed = ENTITY::GET_ENTITY_SPEED(train::get_closest_train()); - if (g.train.drive_train) + if (g.world.train.drive_train) { if (PAD::IS_CONTROL_PRESSED(0, 71)) trainSpeed++; @@ -27,6 +27,6 @@ namespace big int train = train::get_closest_train(); if (train != 0) - VEHICLE::SET_RENDER_TRAIN_AS_DERAILED(train, g.train.derail_train); + VEHICLE::SET_RENDER_TRAIN_AS_DERAILED(train, g.world.train.derail_train); } } \ No newline at end of file diff --git a/src/core/globals.hpp b/src/core/globals.hpp index 521a1991..db50eb57 100644 --- a/src/core/globals.hpp +++ b/src/core/globals.hpp @@ -181,10 +181,9 @@ namespace big struct player { int character_slot = 1; - int set_level = 130; bool spectating = false; - NLOHMANN_DEFINE_TYPE_INTRUSIVE(player, character_slot, set_level, spectating) + NLOHMANN_DEFINE_TYPE_INTRUSIVE(player, character_slot, spectating) } player{}; struct protections @@ -244,6 +243,7 @@ namespace big bool no_water_collision = false; int wanted_level = 0; bool god_mode = false; + bool part_water = false; bool proof_bullet = false; bool proof_fire = false; bool proof_collision = false; @@ -270,7 +270,7 @@ namespace big NLOHMANN_DEFINE_TYPE_INTRUSIVE(self, clean_player, force_wanted_level, free_cam, invisibility, local_visibility, never_wanted, no_ragdoll, - noclip, off_radar, super_run, no_collision, unlimited_oxygen, no_water_collision, wanted_level, god_mode, + noclip, off_radar, super_run, no_collision, unlimited_oxygen, no_water_collision, wanted_level, god_mode, part_water, proof_bullet, proof_fire, proof_collision, proof_melee, proof_explosion, proof_steam, proof_drown, proof_water, proof_mask, hide_radar, hide_ammo, selected_hud_component, hud_components_states, force_show_hud_element, force_show_hud, mobile_radio, fast_respawn, auto_tp, super_jump, beast_jump) @@ -396,18 +396,38 @@ namespace big NLOHMANN_DEFINE_TYPE_INTRUSIVE(clone_pv, preview_vehicle, spawn_inside, spawn_clone, spawn_maxed, clone_plate, plate) } clone_pv{}; - struct spawn_ped + struct world { - bool preview_ped = false; + struct train + { + bool derail_train = false; + bool drive_train = false; + } train{}; - NLOHMANN_DEFINE_TYPE_INTRUSIVE(spawn_ped, preview_ped) - } spawn_ped{}; + struct water + { + bool part_water = false; + NLOHMANN_DEFINE_TYPE_INTRUSIVE(water, part_water) + } water{}; - struct train - { - bool derail_train = false; - bool drive_train = false; - } train{}; + struct spawn_ped + { + bool preview_ped = false; + + NLOHMANN_DEFINE_TYPE_INTRUSIVE(spawn_ped, preview_ped) + } spawn_ped{}; + + struct custom_time + { + int local_weather = 0; + bool override_time = {}; + bool override_weather = false; + int hour{}, minute{}, second{}; + + NLOHMANN_DEFINE_TYPE_INTRUSIVE(custom_time, local_weather, hour, minute, second) + } custom_time; + NLOHMANN_DEFINE_TYPE_INTRUSIVE(world, water, spawn_ped, custom_time) + } world{}; struct spoofing { @@ -663,10 +683,9 @@ namespace big NLOHMANN_DEFINE_TYPE_INTRUSIVE(ugc, infinite_model_memory) } ugc{}; - NLOHMANN_DEFINE_TYPE_INTRUSIVE(menu_settings, debug, tunables, notifications, player, protections, self, session, settings, spawn_vehicle, clone_pv, - spawn_ped, spoofing, vehicle, weapons, window, context_menu, esp, session_browser, ugc, reactions) + spoofing, vehicle, weapons, window, context_menu, esp, session_browser, ugc, reactions, world) }; inline auto g = menu_settings(); diff --git a/src/services/gui/gui_service.hpp b/src/services/gui/gui_service.hpp index 5d1976f7..137e5396 100644 --- a/src/services/gui/gui_service.hpp +++ b/src/services/gui/gui_service.hpp @@ -28,6 +28,7 @@ namespace big TIME_AND_WEATHER, CREATOR, TRAIN, + WATER, NETWORK, SESSION, @@ -80,8 +81,9 @@ namespace big { tabs::SPAWN_PED, { "Spawn Ped", view::spawn_ped }}, { tabs::TIME_AND_WEATHER, { "Time And Weather", view::time_and_weather }}, { tabs::CREATOR, { "Creator", view::creator }}, - { tabs::TRAIN, { "Train", view::train }} - }}}, + { tabs::TRAIN, { "Train", view::train }}, + { tabs::WATER, { "Water", view::water }}, + }}}, {tabs::NETWORK, { "Network", nullptr, { { tabs::SPOOFING, { "Spoofing", view::spoofing }}, { tabs::SESSION, { "Session", view::session }}, diff --git a/src/views/view.hpp b/src/views/view.hpp index 7f814e75..63c0fbcd 100644 --- a/src/views/view.hpp +++ b/src/views/view.hpp @@ -49,6 +49,7 @@ namespace big static void gta_data(); static void creator(); static void train(); + static void water(); static void player_info(); static void player_troll(); diff --git a/src/views/world/view_spawn_ped.cpp b/src/views/world/view_spawn_ped.cpp index b0efd473..12c673df 100644 --- a/src/views/world/view_spawn_ped.cpp +++ b/src/views/world/view_spawn_ped.cpp @@ -242,7 +242,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.world.spawn_ped.preview_ped || (g.world.spawn_ped.preview_ped && !ImGui::IsAnyItemHovered())) { g_model_preview_service->stop_preview(); } @@ -273,7 +273,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.world.spawn_ped.preview_ped || (g.world.spawn_ped.preview_ped && !ImGui::IsAnyItemHovered())) { g_model_preview_service->stop_preview(); } @@ -387,7 +387,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.world.spawn_ped.preview_ped || (g.world.spawn_ped.preview_ped && (!item_hovered || !ped_model_dropdown_open))) { g_model_preview_service->stop_preview(); } @@ -551,9 +551,9 @@ namespace big ImGui::Separator(); - if (ImGui::Checkbox("Preview", &g.spawn_ped.preview_ped)) + if (ImGui::Checkbox("Preview", &g.world.spawn_ped.preview_ped)) { - if (!g.spawn_ped.preview_ped) + if (!g.world.spawn_ped.preview_ped) { g_model_preview_service->stop_preview(); } diff --git a/src/views/world/view_train.cpp b/src/views/world/view_train.cpp index 4d95a23e..d4121744 100644 --- a/src/views/world/view_train.cpp +++ b/src/views/world/view_train.cpp @@ -36,11 +36,11 @@ namespace big ImGui::SameLine(); components::button("Set", [] { train::set_train_speed(train_speed); }); - ImGui::Checkbox("Drive Train", &g.train.drive_train); + ImGui::Checkbox("Drive Train", &g.world.train.drive_train); ImGui::SameLine(); - ImGui::Checkbox("Derail Train", &g.train.derail_train); + ImGui::Checkbox("Derail Train", &g.world.train.derail_train); } } \ No newline at end of file diff --git a/src/views/world/view_water.cpp b/src/views/world/view_water.cpp new file mode 100644 index 00000000..22107675 --- /dev/null +++ b/src/views/world/view_water.cpp @@ -0,0 +1,10 @@ +#include "fiber_pool.hpp" +#include "views/view.hpp" + +namespace big +{ + void view::water() + { + components::command_checkbox<"partwater">(); + } +} \ No newline at end of file