feat: Added steal outfit, steal identity (#92)

Co-authored-by: Yimura <andreas.maerten@scarlet.be>
This commit is contained in:
Maddy 2022-03-08 12:52:00 -05:00 committed by GitHub
parent 5632c9d812
commit 1fcfd5e0c6
2 changed files with 55 additions and 0 deletions

View File

@ -0,0 +1,36 @@
#pragma once
#include "natives.hpp"
namespace big::ped
{
inline void steal_outfit(const Ped target)
{
if (ENTITY::GET_ENTITY_MODEL(PLAYER::PLAYER_PED_ID()) != ENTITY::GET_ENTITY_MODEL(target)) {
g_notification_service->push("Error", "Model mismatch, use steal identity instead.");
return;
}
for (int i = 0; i < 12; i++) {
PED::SET_PED_COMPONENT_VARIATION
(
PLAYER::PLAYER_PED_ID(),
i,
PED::GET_PED_DRAWABLE_VARIATION(target, i),
PED::GET_PED_TEXTURE_VARIATION(target, i),
PED::GET_PED_PALETTE_VARIATION(target, i)
);
}
}
inline void steal_identity(const Ped target)
{
const int max_health = ENTITY::GET_ENTITY_MAX_HEALTH(PLAYER::PLAYER_PED_ID());
const int current_health = ENTITY::GET_ENTITY_HEALTH(PLAYER::PLAYER_PED_ID());
const int current_armor = PED::GET_PED_ARMOUR(PLAYER::PLAYER_PED_ID());
PLAYER::SET_PLAYER_MODEL(PLAYER::PLAYER_ID(), ENTITY::GET_ENTITY_MODEL(target));
PED::CLONE_PED_TO_TARGET(target, PLAYER::PLAYER_PED_ID());
ENTITY::SET_ENTITY_MAX_HEALTH(PLAYER::PLAYER_PED_ID(), max_health);
ENTITY::SET_ENTITY_HEALTH(PLAYER::PLAYER_PED_ID(), current_health, 0);
PED::SET_PED_ARMOUR(PLAYER::PLAYER_PED_ID(), current_armor);
}
}

View File

@ -3,6 +3,7 @@
#include "services/player_service.hpp"
#include "gta_util.hpp"
#include "util/misc.hpp"
#include "util/ped.hpp"
#include "util/teleport.hpp"
namespace big
@ -17,6 +18,24 @@ namespace big
if (g_player_service->get_selected()->is_valid())
{
if (ImGui::TreeNode("Misc")) {
components::button("Steal Outfit", [] {
ped::steal_outfit(
PLAYER::GET_PLAYER_PED_SCRIPT_INDEX(g_player_service->get_selected()->id())
);
});
ImGui::SameLine();
components::button("Steal Identity", [] {
ped::steal_identity(
PLAYER::GET_PLAYER_PED_SCRIPT_INDEX(g_player_service->get_selected()->id())
);
});
ImGui::TreePop();
}
if (ImGui::TreeNode("Info")) {
ImGui::Text("Player ID: %d", g_player_service->get_selected()->id());