This repository has been archived on 2024-10-22. You can view files and clone it, but cannot push or open issues or pull requests.
YimMenu/src/views/network/view_spoofing.cpp

208 lines
6.6 KiB
C++

#include "core/data/blip_types.hpp"
#include "core/data/language_codes.hpp"
#include "core/data/region_codes.hpp"
#include "fiber_pool.hpp"
#include "util/teleport.hpp"
#include "views/view.hpp"
#include <network/ClanData.hpp>
namespace big
{
void view::spoofing()
{
ImGui::Checkbox("HIDE_FROM_PLAYER_LIST"_T.data(), &g.spoofing.hide_from_player_list);
components::script_patch_checkbox("SPOOF_BLIP_TYPE"_T, &g.spoofing.spoof_blip);
if (g.spoofing.spoof_blip)
{
ImGui::SameLine();
if (ImGui::BeginCombo("###blip_type_select", blip_types[g.spoofing.blip_type]))
{
for (int i = 0; i < blip_types.size(); i++)
{
if (ImGui::Selectable(blip_types[i], g.spoofing.blip_type == i))
{
g.spoofing.blip_type = i;
}
}
ImGui::EndCombo();
}
}
ImGui::Checkbox("SPOOF_RANK"_T.data(), &g.spoofing.spoof_rank);
if (g.spoofing.spoof_rank)
{
ImGui::SameLine();
if (ImGui::InputInt("###rank", &g.spoofing.rank))
{
*g_pointers->m_gta.m_force_player_card_refresh = true;
}
}
ImGui::Checkbox("SPOOF_KD"_T.data(), &g.spoofing.spoof_kd_ratio);
if (g.spoofing.spoof_kd_ratio)
{
ImGui::SameLine();
if (ImGui::InputFloat("###kd_ratio", &g.spoofing.kd_ratio))
{
*g_pointers->m_gta.m_force_player_card_refresh = true;
}
}
ImGui::Checkbox("SPOOF_BADSPORT"_T.data(), &g.spoofing.spoof_bad_sport);
if (g.spoofing.spoof_bad_sport)
{
ImGui::SameLine();
static const std::string badsport_options = std::string("CLEAN_PLAYER"_T.data()) + '\0' + std::string("VIEW_SPOOFING_DIRTY_PLAYER"_T.data()) + '\0' + std::string("BAD_SPORT"_T.data());
if (ImGui::Combo("###badsport_select", &g.spoofing.badsport_type, badsport_options.c_str()))
{
*g_pointers->m_gta.m_force_player_card_refresh = true;
}
}
ImGui::Checkbox("SPOOF_JOB_POINTS"_T.data(), &g.spoofing.spoof_job_points);
if (g.spoofing.spoof_job_points)
{
ImGui::SameLine();
ImGui::InputInt("###jp", &g.spoofing.job_points);
}
ImGui::Checkbox("SPOOF_PLAYER_MODEL"_T.data(), &g.spoofing.spoof_player_model);
if (g.spoofing.spoof_player_model)
{
static char model[32];
strcpy_s(model, sizeof(model), g.spoofing.player_model.c_str());
ImGui::SameLine();
components::input_text("##model_input", model, sizeof(model));
if (model != g.spoofing.player_model)
g.spoofing.player_model = std::string(model);
}
components::command_checkbox<"vcaudio">();
ImGui::SeparatorText("SPOOFING_HIDE_FEATURES"_T.data());
ImGui::Checkbox("SPOOFING_HIDE_GOD_MODE"_T.data(), &g.spoofing.spoof_hide_god);
ImGui::Checkbox("SPOOFING_HIDE_VEH_GOD_MODE"_T.data(), &g.spoofing.spoof_hide_veh_god);
ImGui::Checkbox("SPOOFING_HIDE_SPECTATE"_T.data(), &g.spoofing.spoof_hide_spectate);
ImGui::SeparatorText("CREW"_T.data());
ImGui::Checkbox("SPOOFING_CREW"_T.data(), &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());
ImGui::Text("SPOOFING_CREW_TAG"_T.data());
components::input_text("##crew_tag_input", crew_tag, sizeof(crew_tag));
if (crew_tag != g.spoofing.crew_tag)
g.spoofing.crew_tag = std::string(crew_tag);
ImGui::Checkbox("SPOOFING_CREW_ROCKSTAR"_T.data(), &g.spoofing.rockstar_crew);
ImGui::Checkbox("SPOOFING_CREW_SQUARE_TAG"_T.data(), &g.spoofing.square_crew_tag);
ImGui::SeparatorText("SPOOFING_SESSION_ATTRIBUTES"_T.data());
components::small_text("SPOOFING_ONLY_WORKS_AS_HOST"_T);
ImGui::Checkbox("SPOOFING_ATTRIBUTE_REGION"_T.data(), &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))
{
for (const auto& region : regions)
{
if (ImGui::Selectable(region.name, g.spoofing.session_region_type == region.id))
{
g.spoofing.session_region_type = region.id;
}
}
ImGui::EndCombo();
}
}
ImGui::Checkbox("SPOOFING_ATTRIBUTE_LANGUAGE"_T.data(), &g.spoofing.spoof_session_language);
if (g.spoofing.spoof_session_language)
{
ImGui::SameLine();
if (ImGui::BeginCombo("###language_select", languages.at(g.spoofing.session_language).data()))
{
for (const auto& [id, language] : languages)
{
if (ImGui::Selectable(language.data(), g.spoofing.session_language == id))
{
g.spoofing.session_language = id;
};
}
ImGui::EndCombo();
}
}
ImGui::Checkbox("SPOOFING_ATTRIBUTE_PLAYER_COUNT"_T.data(), &g.spoofing.spoof_session_player_count);
if (g.spoofing.spoof_session_player_count)
{
ImGui::SameLine();
ImGui::InputInt("###player_count", &g.spoofing.session_player_count);
}
components::small_text("VIEW_SPOOFING_SPOOF_SESSION_BAD_SPORT_STATUS"_T);
ImGui::RadioButton("VIEW_SPOOFING_SPORT_DEFAULT"_T.data(), &g.spoofing.spoof_session_bad_sport_status, 0);
ImGui::SameLine();
ImGui::RadioButton("VIEW_SPOOFING_SPORT_GOOD"_T.data(), &g.spoofing.spoof_session_bad_sport_status, 1);
ImGui::SameLine();
ImGui::RadioButton("VIEW_SPOOFING_SPORT_BAD"_T.data(), &g.spoofing.spoof_session_bad_sport_status, 2);
ImGui::Checkbox("MULTIPLEX_SESSION"_T.data(), &g.spoofing.multiplex_session);
if (ImGui::IsItemHovered())
ImGui::SetTooltip("MULTIPLEX_SESSION_DESC"_T.data());
if (g.spoofing.multiplex_session)
{
ImGui::SameLine();
ImGui::SliderInt("###multiplex_cnt", &g.spoofing.multiplex_count, 2, 5);
}
components::command_checkbox<"32players">();
ImGui::SeparatorText("SPOOFING_DATA_HASHES"_T.data());
components::command_checkbox<"spoofdatahash">();
if (g.spoofing.spoof_game_data_hash)
{
ImGui::SameLine();
components::command_button<"storecurrenthash">();
if (ImGui::TreeNode("DATA_HASHES"_T.data()))
{
for (int i = 0; i < 15; i++)
{
ImGui::PushID(i);
ImGui::SetNextItemWidth(200);
if (ImGui::InputScalar("##data_hash_value", ImGuiDataType_U32, &g.spoofing.game_data_hash[i], nullptr, nullptr, "%08X", ImGuiInputTextFlags_CharsHexadecimal | ImGuiInputTextFlags_CharsUppercase))
{
g.spoofing.game_data_hash_dirty = true;
}
ImGui::PopID();
if (((i - 1) % 3) != 0 && i != 14)
{
ImGui::SameLine();
}
}
ImGui::TreePop();
}
}
components::command_checkbox<"spoofdlchash">();
if (g.spoofing.spoof_dlc_hash)
{
ImGui::SameLine();
components::command_button<"storedlchash">();
ImGui::InputScalar("Value", ImGuiDataType_U32, &g.spoofing.dlc_hash, nullptr, nullptr, "%08X", ImGuiInputTextFlags_CharsHexadecimal | ImGuiInputTextFlags_CharsUppercase);
}
}
}