* 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:
maybegreat48
2022-12-22 21:23:32 +00:00
committed by GitHub
parent 9d9d438b5d
commit ce5c317d87
143 changed files with 3194 additions and 1458 deletions

View File

@ -1,5 +1,6 @@
#include "views/view.hpp"
#include "services/player_database/player_database_service.hpp"
#include "core/data/command_access_levels.hpp"
namespace big
{
@ -118,6 +119,26 @@ namespace big
net_player_data->m_external_port).data());
}
if (ImGui::BeginCombo("Chat Command Permissions", COMMAND_ACCESS_LEVELS[g_player_service->get_selected()->command_access_level.value_or(g.session.chat_command_default_access_level)]))
{
for (const auto& [type, name] : COMMAND_ACCESS_LEVELS)
{
if (ImGui::Selectable(name, type == g_player_service->get_selected()->command_access_level.value_or(g.session.chat_command_default_access_level)))
{
g.session.chat_command_default_access_level = type;
g_player_database_service->get_or_create_player(g_player_service->get_selected())->command_access_level = type;
g_player_database_service->save();
}
if (type == g_player_service->get_selected()->command_access_level.value_or(g.session.chat_command_default_access_level))
{
ImGui::SetItemDefaultFocus();
}
}
ImGui::EndCombo();
}
if (ImGui::Button("Add To Database"))
{
g_player_database_service->get_or_create_player(g_player_service->get_selected());

View File

@ -1,7 +1,6 @@
#include "views/view.hpp"
#include "util/teleport.hpp"
#include "util/toxic.hpp"
#include "util/kick.hpp"
namespace big
{
@ -9,17 +8,17 @@ namespace big
{
if (ImGui::TreeNode("Kick"))
{
components::button("Breakup Kick", [] { kick::breakup_kick(g_player_service->get_selected()); });
components::button("Lost Connection Kick", [] { kick::lost_connection_kick(g_player_service->get_selected()); });
components::button("Bail Kick", [] { kick::bail_kick(g_player_service->get_selected()); });
components::button("Null Function Kick", [] { kick::null_function_kick(g_player_service->get_selected()); });
components::button("OOM Kick", [] { kick::oom_kick(g_player_service->get_selected()); });
components::button("Script Host Kick", [] { kick::kick_player_script_host(g_player_service->get_selected()); });
components::button("End Session Kick", [] { kick::end_session_kick(g_player_service->get_selected()); });
components::player_command_button<"breakup">(g_player_service->get_selected());
components::player_command_button<"lckick">(g_player_service->get_selected());
components::player_command_button<"bailkick">(g_player_service->get_selected());
components::player_command_button<"nfkick">(g_player_service->get_selected());
components::player_command_button<"oomkick">(g_player_service->get_selected());
components::player_command_button<"shkick">(g_player_service->get_selected());
components::player_command_button<"endkick">(g_player_service->get_selected());
if (ImGui::IsItemHovered())
ImGui::SetTooltip("The kick can take around 10 seconds to work");
components::button("Host Kick", [] { kick::host_kick(g_player_service->get_selected()); });
components::button("Complaint Kick", [] { kick::complaint_kick(g_player_service->get_selected()); });
components::player_command_button<"hostkick">(g_player_service->get_selected());
components::player_command_button<"desync">(g_player_service->get_selected());
if (ImGui::IsItemHovered())
ImGui::SetTooltip("The kick can take around 10 seconds to work");

View File

@ -16,55 +16,18 @@ namespace big
{
if (ImGui::TreeNode("Misc"))
{
components::button("Join CEO/MC", []
{
scr_functions::join_ceo({ g_player_service->get_selected()->id(), 0, false, false });
});
components::button("Enter Interior", []
{
session::enter_player_interior(g_player_service->get_selected());
});
components::button("Steal Outfit", []
{
ped::steal_outfit(
PLAYER::GET_PLAYER_PED_SCRIPT_INDEX(g_player_service->get_selected()->id())
);
});
components::player_command_button<"joinceo">(g_player_service->get_selected());
components::player_command_button<"enterint">(g_player_service->get_selected());
components::player_command_button<"copyoutfit">(g_player_service->get_selected());
ImGui::SameLine();
components::button("Steal Identity", []
{
ped::steal_identity(
PLAYER::GET_PLAYER_PED_SCRIPT_INDEX(g_player_service->get_selected()->id())
);
});
components::button("Clear Wanted Level", []
{
globals::clear_wanted_player(g_player_service->get_selected()->id());
});
components::player_command_button<"copymodel">(g_player_service->get_selected());
components::player_command_button<"clearwanted">(g_player_service->get_selected());
ImGui::SameLine();
components::button("Give Health", []
{
g_pickup_service->give_player_health(g_player_service->get_selected()->id());
});
components::player_command_button<"givehealth">(g_player_service->get_selected());
ImGui::SameLine();
components::button("Give Armour", []
{
g_pickup_service->give_player_armour(g_player_service->get_selected()->id());
});
components::button("Give Ammo", []
{
g_pickup_service->give_player_ammo(g_player_service->get_selected()->id());
});
components::player_command_button<"givearmor">(g_player_service->get_selected());
ImGui::SameLine();
components::player_command_button<"giveammo">(g_player_service->get_selected());
ImGui::Checkbox("Off The Radar", &g_player_service->get_selected()->off_radar);
ImGui::Checkbox("Never Wanted", &g_player_service->get_selected()->never_wanted);

View File

@ -10,24 +10,21 @@ namespace big
{
if (ImGui::TreeNode("Toxic"))
{
components::button("Kill Player", []
{
toxic::kill_player(g_player_service->get_selected(), g_player_service->get_self());
});
components::player_command_button<"kill">(g_player_service->get_selected(), {});
components::button("CEO Kick", [] { toxic::ceo_kick(g_player_service->get_selected()); });
components::button("Kick From Vehicle", [] { toxic::kick_player_from_vehicle(g_player_service->get_selected()); });
components::player_command_button<"ceokick">(g_player_service->get_selected(), {});
ImGui::SameLine();
components::button("Ragdoll Player", [] { toxic::ragdoll_player(g_player_service->get_selected()); });
components::player_command_button<"vehkick">(g_player_service->get_selected(), {});
components::button("Kick From Interior", [] { toxic::kick_player_from_interior(g_player_service->get_selected()); });
components::button("Turn Into Beast", [] { toxic::turn_player_into_beast(g_player_service->get_selected()); });
components::player_command_button<"ragdoll">(g_player_service->get_selected(), {});
components::player_command_button<"intkick">(g_player_service->get_selected(), {});
components::player_command_button<"beast">(g_player_service->get_selected(), {});
static int wanted_level;
ImGui::SliderInt("Wanted Level", &wanted_level, 0, 5);
ImGui::SameLine();
components::button("Set", [] { toxic::set_wanted_level(g_player_service->get_selected(), wanted_level); });
components::player_command_button<"wanted">(g_player_service->get_selected(), { (uint64_t)wanted_level }, "Set");
components::small_text("Teleports");
@ -51,7 +48,7 @@ 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::player_command_button<"apartmenttp">(g_player_service->get_selected(), { (uint64_t)g.session.send_to_apartment_idx });
if (ImGui::BeginCombo("##warehouse", warehouse_names[g.session.send_to_warehouse_idx]))
{
@ -73,7 +70,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::player_command_button<"warehousetp">(g_player_service->get_selected(), { (uint64_t)g.session.send_to_warehouse_idx });
components::button("TP To Darts", [] { toxic::start_activity(g_player_service->get_selected(), eActivityType::Darts); });
ImGui::SameLine();
@ -83,31 +80,31 @@ namespace big
components::button("TP To Skydive", [] { toxic::start_activity(g_player_service->get_selected(), eActivityType::Skydive); });
ImGui::SameLine();
components::button("TP To Cayo Perico", [] { toxic::send_player_to_island(g_player_service->get_selected()); });
components::player_command_button<"cayotp">(g_player_service->get_selected(), { });
ImGui::SameLine();
components::button("TP To MOC", [] { toxic::send_player_to_interior(g_player_service->get_selected(), 81); });
components::player_command_button<"interiortp">(g_player_service->get_selected(), { 81 }, "TP To MOC");
components::button("TP To Casino", [] { toxic::send_player_to_interior(g_player_service->get_selected(), 123); });
components::player_command_button<"interiortp">(g_player_service->get_selected(), { 123 }, "TP To Casino");
ImGui::SameLine();
components::button("TP To Penthouse", [] { toxic::send_player_to_interior(g_player_service->get_selected(), 124); });
components::player_command_button<"interiortp">(g_player_service->get_selected(), { 124 }, "TP To Penthouse");
ImGui::SameLine();
components::button("TP To Arcade", [] { toxic::send_player_to_interior(g_player_service->get_selected(), 128); });
components::player_command_button<"interiortp">(g_player_service->get_selected(), { 128 }, "TP To Arcade");
components::button("TP To Music Locker", [] { toxic::send_player_to_interior(g_player_service->get_selected(), 146); });
components::player_command_button<"interiortp">(g_player_service->get_selected(), { 146 }, "TP To Music Locker");
ImGui::SameLine();
components::button("TP To Record A Studios", [] { toxic::send_player_to_interior(g_player_service->get_selected(), 148); });
components::player_command_button<"interiortp">(g_player_service->get_selected(), { 148 }, "TP To Record A Studios");
ImGui::SameLine();
components::button("TP To Custom Auto Shop", [] { toxic::send_player_to_interior(g_player_service->get_selected(), 149); });
components::player_command_button<"interiortp">(g_player_service->get_selected(), { 149 }, "TP To Custom Auto Shop");
components::button("TP To Agency", [] { toxic::send_player_to_interior(g_player_service->get_selected(), 155); });
components::player_command_button<"interiortp">(g_player_service->get_selected(), { 155 }, "TP To Agency");
ImGui::SameLine();
components::button("TP To Freakshop", [] { toxic::send_player_to_interior(g_player_service->get_selected(), 160); });
components::player_command_button<"interiortp">(g_player_service->get_selected(), { 160 }, "TP To Freakshop");
ImGui::SameLine();
components::button("TP To Multi-Floor Garage", [] { toxic::send_player_to_interior(g_player_service->get_selected(), 161); });
components::player_command_button<"interiortp">(g_player_service->get_selected(), { 161 }, "TP To Multi Floor Garage");
components::button("Give All Weapons", [] { toxic::give_all_weapons(g_player_service->get_selected()); });
components::player_command_button<"giveweaps">(g_player_service->get_selected(), { });
ImGui::SameLine();
components::button("Remove All Weapons", [] { toxic::remove_all_weapons(g_player_service->get_selected()); });
components::player_command_button<"remweaps">(g_player_service->get_selected(), { });
components::small_text("Warp Time (requires session host)");

View File

@ -8,40 +8,13 @@ namespace big
{
if (ImGui::TreeNode("Troll"))
{
components::button("Teleport", []
{
teleport::to_player(g_player_service->get_selected()->id());
});
components::player_command_button<"playertp">(g_player_service->get_selected());
ImGui::SameLine();
components::player_command_button<"bring">(g_player_service->get_selected());
components::button("Bring", []
{
teleport::bring_player(g_player_service->get_selected());
});
components::button("Teleport into Vehicle", []
{
Vehicle veh = PED::GET_VEHICLE_PED_IS_IN(PLAYER::GET_PLAYER_PED_SCRIPT_INDEX(g_player_service->get_selected()->id()), false);
teleport::into_vehicle(veh);
});
components::button("Remote Control Vehicle", []
{
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)
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");
return;
}
vehicle::remote_control_vehicle(veh);
g.player.spectating = false;
});
components::player_command_button<"playervehtp">(g_player_service->get_selected());
components::player_command_button<"rcplayer">(g_player_service->get_selected());
ImGui::TreePop();
}