mirror of
https://github.com/Mr-X-GTA/YimMenu.git
synced 2025-06-18 23:17:52 +08:00
128 lines
3.2 KiB
C++
128 lines
3.2 KiB
C++
![]() |
#include "views/view.hpp"
|
||
|
#include "fiber_pool.hpp"
|
||
|
#include "script.hpp"
|
||
|
#include "script_global.hpp"
|
||
|
#include "util/entity.hpp"
|
||
|
#include "util/player.hpp"
|
||
|
#include "util/notify.hpp"
|
||
|
#include "util/session.hpp"
|
||
|
|
||
|
namespace big
|
||
|
{
|
||
|
void view::self() {
|
||
|
components::button("Suicide", [] {
|
||
|
ENTITY::SET_ENTITY_HEALTH(PLAYER::PLAYER_PED_ID(), 0, 0);
|
||
|
});
|
||
|
|
||
|
if (ImGui::TreeNode("General"))
|
||
|
{
|
||
|
ImGui::BeginGroup();
|
||
|
|
||
|
ImGui::Checkbox("God Mode", &g->self.godmode);
|
||
|
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::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::EndGroup();
|
||
|
|
||
|
ImGui::TreePop();
|
||
|
}
|
||
|
|
||
|
if (ImGui::TreeNode("Frame Flags"))
|
||
|
{
|
||
|
ImGui::BeginGroup();
|
||
|
|
||
|
ImGui::Checkbox("Explosive Ammo", &g->self.frame_flags.explosive_ammo);
|
||
|
ImGui::Checkbox("Fire Ammo", &g->self.frame_flags.fire_ammo);
|
||
|
|
||
|
ImGui::EndGroup();
|
||
|
ImGui::SameLine();
|
||
|
ImGui::BeginGroup();
|
||
|
|
||
|
ImGui::Checkbox("Explosive Melee", &g->self.frame_flags.explosive_melee);
|
||
|
ImGui::Checkbox("Super Jump", &g->self.frame_flags.super_jump);
|
||
|
|
||
|
ImGui::EndGroup();
|
||
|
|
||
|
ImGui::TreePop();
|
||
|
}
|
||
|
|
||
|
if (ImGui::TreeNode("Player Model"))
|
||
|
{
|
||
|
static char model[32];
|
||
|
|
||
|
g_fiber_pool->queue_job([] {
|
||
|
PAD::DISABLE_ALL_CONTROL_ACTIONS(0);
|
||
|
});
|
||
|
|
||
|
if (
|
||
|
ImGui::InputText("Model Name###player_ped_model", model, sizeof(model), ImGuiInputTextFlags_EnterReturnsTrue) ||
|
||
|
components::button("Set Player Model###spawn_player_ped_model")
|
||
|
)
|
||
|
{
|
||
|
g_fiber_pool->queue_job([] {Hash hash = rage::joaat(model);
|
||
|
|
||
|
for (uint8_t i = 0; !STREAMING::HAS_MODEL_LOADED(hash) && i < 100; i++)
|
||
|
{
|
||
|
STREAMING::REQUEST_MODEL(hash);
|
||
|
|
||
|
script::get_current()->yield();
|
||
|
}
|
||
|
if (!STREAMING::HAS_MODEL_LOADED(hash))
|
||
|
{
|
||
|
notify::above_map("~r~Failed to spawn model, did you give an incorrect model?");
|
||
|
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
PLAYER::SET_PLAYER_MODEL(PLAYER::GET_PLAYER_INDEX(), hash);
|
||
|
PED::SET_PED_DEFAULT_COMPONENT_VARIATION(PLAYER::PLAYER_PED_ID());
|
||
|
script::get_current()->yield();
|
||
|
STREAMING::SET_MODEL_AS_NO_LONGER_NEEDED(hash);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
ImGui::TreePop();
|
||
|
}
|
||
|
|
||
|
if (ImGui::TreeNode("Police"))
|
||
|
{
|
||
|
ImGui::Checkbox("Never Wanted", &g->self.never_wanted);
|
||
|
|
||
|
if (!g->self.never_wanted)
|
||
|
{
|
||
|
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)
|
||
|
g_local_player->m_player_info->m_wanted_level = g->self.wanted_level;
|
||
|
}
|
||
|
|
||
|
ImGui::TreePop();
|
||
|
}
|
||
|
|
||
|
if (ImGui::TreeNode("Extra's")) {
|
||
|
|
||
|
components::button("Skip Cutscene", [] {
|
||
|
CUTSCENE::STOP_CUTSCENE_IMMEDIATELY();
|
||
|
});
|
||
|
|
||
|
ImGui::Text("Session");
|
||
|
for (const SessionType& session_type : sessions)
|
||
|
{
|
||
|
components::button(session_type.name, [session_type] {
|
||
|
session::join_type(session_type);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
}
|