Commands (#725)
* feat(Commands): Prototype command system * feat(Commands): Chat commands * refactor(Toxic): convert most options into commands * feat(Protections): block breakup kicks on other players as host * refactor(Kicks): convert most options into commands * refactor(Commands): add labels and descriptions to all commands * feat(Commands): cleanup on unload * refactor(Troll): convert most options into commands * refactor(Misc): convert most options into commands * refactor(Teleport): convert most options into commands * feat(Commands): Variadic commands and toggleable bools * feat(Hotkeys): hotkeys now use commands * fix(Chat): fix the chat window locking up when a message is sent * fix(Commands): properly handle spoofed username * fix(Spam): update filter Co-authored-by: Yimura <24669514+Yimura@users.noreply.github.com>
This commit is contained in:
@ -7,12 +7,6 @@ namespace big
|
||||
{
|
||||
void view::mobile() {
|
||||
ImGui::SetWindowSize({ 0.f, (float)*g_pointers->m_resolution_y }, ImGuiCond_Always);
|
||||
|
||||
components::sub_title("Lester");
|
||||
|
||||
ImGui::Checkbox("Off Radar", &g.self.off_radar);
|
||||
|
||||
ImGui::Separator();
|
||||
|
||||
components::sub_title("Merryweather");
|
||||
|
||||
|
@ -9,42 +9,15 @@ namespace big
|
||||
{
|
||||
void view::self()
|
||||
{
|
||||
components::button("Suicide", [] {
|
||||
ENTITY::SET_ENTITY_HEALTH(self::ped, 0, 0);
|
||||
});
|
||||
|
||||
components::command_button<"suicide">();
|
||||
ImGui::SameLine();
|
||||
|
||||
components::button("Heal", [] {
|
||||
ENTITY::SET_ENTITY_HEALTH(self::ped, PED::GET_PED_MAX_HEALTH(self::ped), 0);
|
||||
PED::SET_PED_ARMOUR(self::ped, PLAYER::GET_PLAYER_MAX_ARMOUR(self::id));
|
||||
});
|
||||
|
||||
components::command_button<"heal">();
|
||||
ImGui::SameLine();
|
||||
|
||||
components::button("Fill Inventory", [] {
|
||||
std::string mpPrefix = local_player::get_mp_prefix();
|
||||
STATS::STAT_SET_INT(rage::joaat(mpPrefix + "NO_BOUGHT_YUM_SNACKS"), 30, true);
|
||||
STATS::STAT_SET_INT(rage::joaat(mpPrefix + "NO_BOUGHT_HEALTH_SNACKS"), 15, true);
|
||||
STATS::STAT_SET_INT(rage::joaat(mpPrefix + "NO_BOUGHT_EPIC_SNACKS"), 5, true);
|
||||
STATS::STAT_SET_INT(rage::joaat(mpPrefix + "MP_CHAR_ARMOUR_1_COUNT"), 10, true);
|
||||
STATS::STAT_SET_INT(rage::joaat(mpPrefix + "MP_CHAR_ARMOUR_2_COUNT"), 10, true);
|
||||
STATS::STAT_SET_INT(rage::joaat(mpPrefix + "MP_CHAR_ARMOUR_3_COUNT"), 10, true);
|
||||
STATS::STAT_SET_INT(rage::joaat(mpPrefix + "MP_CHAR_ARMOUR_4_COUNT"), 10, true);
|
||||
STATS::STAT_SET_INT(rage::joaat(mpPrefix + "MP_CHAR_ARMOUR_5_COUNT"), 10, true);
|
||||
});
|
||||
|
||||
components::command_button<"fillsnacks">();
|
||||
ImGui::SameLine();
|
||||
|
||||
components::button("Skip Cutscene", [] {
|
||||
CUTSCENE::STOP_CUTSCENE_IMMEDIATELY();
|
||||
});
|
||||
|
||||
components::command_button<"skipcutscene">();
|
||||
ImGui::SameLine();
|
||||
|
||||
components::button("Clean Player", [] {
|
||||
entity::clean_ped(self::ped);
|
||||
});
|
||||
components::command_button<"clean">();
|
||||
|
||||
ImGui::Separator();
|
||||
|
||||
@ -53,33 +26,32 @@ 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);
|
||||
components::command_checkbox<"otr">();
|
||||
components::command_checkbox<"freecam">();
|
||||
components::command_checkbox<"nophone">();
|
||||
components::command_checkbox<"infoxy">();
|
||||
components::command_checkbox<"fastrespawn">();
|
||||
|
||||
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);
|
||||
components::command_checkbox<"noclip">();
|
||||
components::command_checkbox<"noragdoll">();
|
||||
components::command_checkbox<"fastrun">();
|
||||
ImGui::Checkbox("No Idle Kick", &g.tunables.no_idle_kick);
|
||||
ImGui::Checkbox("No Water Collision", &g.self.no_water_collision);
|
||||
components::command_checkbox<"walkunder">();
|
||||
|
||||
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("Keep Player Clean", &g.self.clean_player);
|
||||
ImGui::Checkbox("No Collision", &g.self.no_collision);
|
||||
ImGui::Checkbox("Mobile Radio", &g.self.mobile_radio);
|
||||
components::command_checkbox<"invis">();
|
||||
if (g.self.invisibility)
|
||||
components::command_checkbox<"localvis">();
|
||||
components::command_checkbox<"cleanloop">();
|
||||
components::command_checkbox<"nocollision">();
|
||||
components::command_checkbox<"mobileradio">();
|
||||
|
||||
ImGui::Checkbox("Dance Mode", &g.self.dance_mode);
|
||||
if (ImGui::IsItemHovered())
|
||||
|
@ -11,42 +11,17 @@ namespace big
|
||||
{
|
||||
ImGui::Text("Blips:");
|
||||
|
||||
components::button("Waypoint", []
|
||||
{
|
||||
teleport::to_waypoint();
|
||||
});
|
||||
|
||||
components::button("Objective", []
|
||||
{
|
||||
teleport::to_objective();
|
||||
});
|
||||
components::command_button<"waypointtp">({}, "Waypoint");
|
||||
ImGui::SameLine();
|
||||
components::command_button<"objectivetp">({}, "Objective");
|
||||
|
||||
ImGui::Checkbox("Auto-Teleport To Waypoint", &g.self.auto_tp);
|
||||
|
||||
ImGui::Text("Vehicles:");
|
||||
|
||||
components::button("Teleport to Last Vehicle", []
|
||||
{
|
||||
if (g_local_player && g_local_player->m_vehicle)
|
||||
{
|
||||
const Vehicle veh = g_pointers->m_ptr_to_handle(g_local_player->m_vehicle);
|
||||
|
||||
teleport::into_vehicle(veh);
|
||||
}
|
||||
});
|
||||
|
||||
components::button("Bring Personal Vehicle", []
|
||||
{
|
||||
Vehicle veh = mobile::mechanic::get_personal_vehicle();
|
||||
|
||||
vehicle::bring(veh, self::pos);
|
||||
});
|
||||
|
||||
components::button("Teleport to Personal Vehicle", []
|
||||
{
|
||||
Vehicle veh = mobile::mechanic::get_personal_vehicle();
|
||||
|
||||
teleport::into_vehicle(veh);
|
||||
});
|
||||
components::command_button<"lastvehtp">();
|
||||
ImGui::SameLine();
|
||||
components::command_button<"bringpv">();
|
||||
ImGui::SameLine();
|
||||
components::command_button<"pvtp">();
|
||||
}
|
||||
}
|
||||
|
@ -15,8 +15,8 @@ namespace big
|
||||
|
||||
ImGui::BeginGroup();
|
||||
|
||||
ImGui::Checkbox("Infinite Ammo", &g.weapons.infinite_ammo);
|
||||
ImGui::Checkbox("Infinite Clip", &g.weapons.infinite_mag);
|
||||
components::command_checkbox<"infammo">();
|
||||
components::command_checkbox<"infclip">();
|
||||
|
||||
ImGui::EndGroup();
|
||||
ImGui::SameLine();
|
||||
@ -29,7 +29,7 @@ namespace big
|
||||
else
|
||||
g_pointers->m_bypass_max_count_of_active_sticky_bombs->restore();
|
||||
}
|
||||
ImGui::Checkbox("Rapid Fire", &g.weapons.rapid_fire);
|
||||
components::command_checkbox<"rapidfire">();
|
||||
|
||||
ImGui::EndGroup();
|
||||
|
||||
@ -80,15 +80,11 @@ namespace big
|
||||
|
||||
components::sub_title("Misc");
|
||||
|
||||
ImGui::Checkbox("Force Crosshairs", &g.weapons.force_crosshairs);
|
||||
|
||||
components::command_checkbox<"crosshairs">();
|
||||
ImGui::SameLine();
|
||||
|
||||
ImGui::Checkbox("No Recoil", &g.weapons.no_recoil);
|
||||
|
||||
components::command_checkbox<"norecoil">();
|
||||
ImGui::SameLine();
|
||||
|
||||
ImGui::Checkbox("No Spread", &g.weapons.no_spread);
|
||||
components::command_checkbox<"nospread">();
|
||||
|
||||
components::button("Get All Weapons", []
|
||||
{
|
||||
|
Reference in New Issue
Block a user