Merge branch 'Akebi-Group:master' into master

This commit is contained in:
hellomykami 2022-07-21 22:06:41 +08:00 committed by GitHub
commit 592b80d430
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 144 additions and 50 deletions

View File

@ -146,6 +146,59 @@ namespace cheat::feature
return instance; return instance;
} }
void ESP::GetNpcName(std::string& name)
{
if (name.find("Avatar") != std::string::npos)
{
//cause name is like "Avatar_Catalyst_Boy_Heizo(Clone)" - We'll get name between 3rd underscore and 1st bracket
int j = 0; // j is the number of spaces before the name starts
int pos1 = 0;
int pos2 = 0;
for (int i = 0; i < name.length(); i++)
{
if (name[i] == '_')
{
j++;
if (j == 3)
{
pos1 = i;
}
}
if (name[i] == '(')
{
pos2 = i;
break;
}
}
name = name.substr(pos1 + 1, pos2 - pos1 - 1);
}
else
{
int j = 0; //number of underscores in the name
int pos1 = 0; //position of the first underscore in the name
int pos2 = 0; //position of the second underscore in the name
for (int i = 0; i < name.length(); i++)
{
if (name[i] == '_')
{
j++;
if (j == 4)
{
pos1 = i;
}
if (j == 5)
{
pos2 = i;
break;
}
}
}
name = name.substr(pos1 + 1, pos2 - pos1 - 1);
}
return;
}
void ESP::AddFilter(const std::string& section, const std::string& name, game::IEntityFilter* filter) void ESP::AddFilter(const std::string& section, const std::string& name, game::IEntityFilter* filter)
{ {
if (m_Sections.count(section) == 0) if (m_Sections.count(section) == 0)
@ -261,6 +314,14 @@ namespace cheat::feature
if (!entry.m_Enabled || !m_FilterExecutor.ApplyFilter(entity, filter)) if (!entry.m_Enabled || !m_FilterExecutor.ApplyFilter(entity, filter))
continue; continue;
if (entry.m_Name == "Npc" || "AvatarOwn" || "AvatarTeammate")
{
auto name = entity->name();
GetNpcName(name);
esp::render::DrawEntity(name, entity, entry.m_Color, entry.m_ContrastColor);
break;
}
esp::render::DrawEntity(entry.m_Name, entity, entry.m_Color, entry.m_ContrastColor); esp::render::DrawEntity(entry.m_Name, entity, entry.m_Color, entry.m_ContrastColor);
break; break;
} }

View File

@ -79,6 +79,8 @@ namespace cheat::feature
void DrawSection(const std::string& section, const Filters& filters); void DrawSection(const std::string& section, const Filters& filters);
void DrawFilterField(const config::Field<esp::ESPItem>& field); void DrawFilterField(const config::Field<esp::ESPItem>& field);
void GetNpcName(std::string& name);
void OnKeyUp(short key, bool& cancelled); void OnKeyUp(short key, bool& cancelled);
ESP(); ESP();

View File

@ -7,37 +7,46 @@
#include <cheat/game/util.h> #include <cheat/game/util.h>
#include <cheat-base/render/renderer.h> #include <cheat-base/render/renderer.h>
namespace cheat::feature namespace cheat::feature
{ {
static void HumanoidMoveFSM_LateTick_Hook(app::HumanoidMoveFSM* __this, float deltaTime, MethodInfo* method); static void HumanoidMoveFSM_LateTick_Hook(app::HumanoidMoveFSM* __this, float deltaTime, MethodInfo* method);
app::Vector3 zero; app::Vector3 zero;
NoClip::NoClip() : Feature(), NoClip::NoClip() : Feature(),
NF(f_Enabled, "No clip", "NoClip", false), NF(f_Enabled, "No clip", "NoClip", false),
NF(f_NoAnimation, "No Animation", "NoClip", true), NF(f_NoAnimation, "No Animation", "NoClip", true),
NF(f_Speed, "Speed", "NoClip", 5.5f), NF(f_UseCustomKeys, "Use Custom Hotkeys", "NoClip", false),
NF(f_CameraRelative, "Relative to camera", "NoClip", true), NF(f_ForwardKey, "Forward HotKey", "NoClip", Hotkey(ImGuiKey_W)),
NF(f_VelocityMode, "Velocity mode", "NoClip", false), NF(f_LeftKey, "Left HotKey", "NoClip", Hotkey(ImGuiKey_A)),
NF(f_FreeflightMode, "Freeflight mode", "NoClip", false), NF(f_BackKey, "Back HotKey", "NoClip", Hotkey(ImGuiKey_S)),
NF(f_AltSpeedEnabled, "Alt speed enabled", "NoClip", false), NF(f_RightKey, "Right HotKey", "NoClip", Hotkey(ImGuiKey_D)),
NF(f_AltSpeed, "Alt speed", "NoClip", 1.0f) NF(f_AscendKey, "Ascend HotKey", "NoClip", Hotkey(ImGuiKey_Space)),
{ NF(f_DescendKey, "Descend HotKey", "NoClip", Hotkey(ImGuiKey_ModShift)),
NF(f_AltSpeedKey, "Alt Speed Hotkey", "NoClip", Hotkey(ImGuiKey_ModCtrl)),
NF(f_Speed, "Speed", "NoClip", 5.5f),
NF(f_CameraRelative, "Relative to camera", "NoClip", true),
NF(f_VelocityMode, "Velocity mode", "NoClip", false),
NF(f_FreeflightMode, "Freeflight mode", "NoClip", false),
NF(f_AltSpeedEnabled, "Alt speed enabled", "NoClip", false),
NF(f_AltSpeed, "Alt speed", "NoClip", 1.0f)
{
HookManager::install(app::MoleMole_HumanoidMoveFSM_LateTick, HumanoidMoveFSM_LateTick_Hook); HookManager::install(app::MoleMole_HumanoidMoveFSM_LateTick, HumanoidMoveFSM_LateTick_Hook);
events::GameUpdateEvent += MY_METHOD_HANDLER(NoClip::OnGameUpdate); events::GameUpdateEvent += MY_METHOD_HANDLER(NoClip::OnGameUpdate);
events::MoveSyncEvent += MY_METHOD_HANDLER(NoClip::OnMoveSync); events::MoveSyncEvent += MY_METHOD_HANDLER(NoClip::OnMoveSync);
} }
const FeatureGUIInfo& NoClip::GetGUIInfo() const const FeatureGUIInfo& NoClip::GetGUIInfo() const
{ {
static const FeatureGUIInfo info{ "No-Clip", "Player", true }; static const FeatureGUIInfo info{ "No-Clip", "Player", true };
return info; return info;
} }
void NoClip::DrawMain() void NoClip::DrawMain()
{ {
ConfigWidget("Enabled", f_Enabled, "Enables no-clip (fast speed + no collision).\n" \ ConfigWidget("Enabled", f_Enabled, "Enables no-clip (fast speed + no collision).\n" \
"To move, use WASD, Space (go up), and Shift (go down)."); "To move, use WASD, Space (go up), and Shift (go down), or customize your own keys.");
ConfigWidget("No Animation", f_NoAnimation, "Disables player animations."); ConfigWidget("No Animation", f_NoAnimation, "Disables player animations.");
@ -51,36 +60,48 @@ namespace cheat::feature
ConfigWidget("Alternate No-clip", f_AltSpeedEnabled, ConfigWidget("Alternate No-clip", f_AltSpeedEnabled,
"Allows usage of alternate speed when holding down LeftCtrl key.\n" \ "Allows usage of alternate speed when holding down LeftCtrl key.\n" \
"Useful if you want to temporarily go faster/slower than the no-clip speed setting."); "Useful if you want to temporarily go faster/slower than the no-clip speed setting.");
if (f_AltSpeedEnabled) { if (f_AltSpeedEnabled) {
ConfigWidget("Alt Speed", f_AltSpeed, 0.1f, 2.0f, 100.0f, ConfigWidget("Alt Speed", f_AltSpeed, 0.1f, 2.0f, 100.0f,
"Alternate no-clip move speed.\n" \ "Alternate no-clip move speed.\n" \
"Not recommended setting above 5.0."); "Not recommended setting above 5.0.");
ConfigWidget("Velocity mode", f_VelocityMode,"Use velocity instead of position to move."); ConfigWidget("Velocity mode", f_VelocityMode, "Use velocity instead of position to move.");
ConfigWidget("Freeflight mode", f_FreeflightMode,"Don't remove collisions"); ConfigWidget("Freeflight mode", f_FreeflightMode, "Don't remove collisions");
} }
}
bool NoClip::NeedStatusDraw() const ConfigWidget("Use Custom Keys", f_UseCustomKeys, "Enable the Use of Custom HotKeys");
{
return f_Enabled;
}
void NoClip::DrawStatus() if (f_UseCustomKeys) {
{ ConfigWidget("Forward HotKey", f_ForwardKey, "Set Forward Key");
ConfigWidget("Left HotKey", f_LeftKey, "Set Left Key");
ConfigWidget("Back HotKey", f_BackKey, "Set Back Key");
ConfigWidget("Right HotKey", f_RightKey, "Set Right Key");
ConfigWidget("Ascend HotKey", f_AscendKey, "Set Ascend Key");
ConfigWidget("Descend HotKey", f_DescendKey, "Set Descend Key");
ConfigWidget("Alt Speed Key", f_AltSpeedKey, "Set AltSpeed HotKey");
}
}
bool NoClip::NeedStatusDraw() const
{
return f_Enabled;
}
void NoClip::DrawStatus()
{
ImGui::Text("NoClip%s[%.01f%s%|%s]", ImGui::Text("NoClip%s[%.01f%s%|%s]",
f_AltSpeedEnabled ? "+Alt " : " ", f_AltSpeedEnabled ? "+Alt " : " ",
f_Speed.value(), f_Speed.value(),
f_AltSpeedEnabled ? fmt::format("|{:.1f}", f_AltSpeed.value()).c_str() : "", f_AltSpeedEnabled ? fmt::format("|{:.1f}", f_AltSpeed.value()).c_str() : "",
f_CameraRelative ? "CR" : "PR"); f_CameraRelative ? "CR" : "PR");
} }
NoClip& NoClip::GetInstance() NoClip& NoClip::GetInstance()
{ {
static NoClip instance; static NoClip instance;
return instance; return instance;
} }
// No clip update function. // No clip update function.
// We just disabling collision detect and move avatar when no clip moving keys pressed. // We just disabling collision detect and move avatar when no clip moving keys pressed.
@ -89,7 +110,7 @@ namespace cheat::feature
static bool isApplied = false; static bool isApplied = false;
auto& manager = game::EntityManager::instance(); auto& manager = game::EntityManager::instance();
if (!f_Enabled && isApplied) if (!f_Enabled && isApplied)
{ {
auto avatarEntity = manager.avatar(); auto avatarEntity = manager.avatar();
@ -98,7 +119,7 @@ namespace cheat::feature
return; return;
app::Rigidbody_set_detectCollisions(rigidBody, true, nullptr); app::Rigidbody_set_detectCollisions(rigidBody, true, nullptr);
isApplied = false; isApplied = false;
} }
@ -120,34 +141,35 @@ namespace cheat::feature
return; return;
if (!f_FreeflightMode) if (!f_FreeflightMode)
app::Rigidbody_set_detectCollisions(rigidBody, false, nullptr); app::Rigidbody_set_detectCollisions(rigidBody, false, nullptr);
if (!f_VelocityMode) if (!f_VelocityMode)
app::Rigidbody_set_velocity(rigidBody, zero,nullptr); app::Rigidbody_set_velocity(rigidBody, zero, nullptr);
auto cameraEntity = game::Entity(reinterpret_cast<app::BaseEntity*>(manager.mainCamera())); auto cameraEntity = game::Entity(reinterpret_cast<app::BaseEntity*>(manager.mainCamera()));
auto relativeEntity = f_CameraRelative ? &cameraEntity : avatarEntity; auto relativeEntity = f_CameraRelative ? &cameraEntity : avatarEntity;
float speed = f_Speed.value(); float speed = f_Speed.value();
if (f_AltSpeedEnabled && Hotkey(VK_LCONTROL).IsPressed()) if (f_AltSpeedEnabled ? f_UseCustomKeys ? f_AltSpeedKey.value().IsPressed() : Hotkey(ImGuiKey_ModCtrl).IsPressed() : NULL)
speed = f_AltSpeed.value(); speed = f_AltSpeed.value();
app::Vector3 dir = {}; app::Vector3 dir = {};
if (Hotkey('W').IsPressed())
if (f_UseCustomKeys ? f_ForwardKey.value().IsPressed() : Hotkey(ImGuiKey_W).IsPressed())
dir = dir + relativeEntity->forward(); dir = dir + relativeEntity->forward();
if (Hotkey('S').IsPressed()) if (f_UseCustomKeys ? f_BackKey.value().IsPressed() : Hotkey(ImGuiKey_S).IsPressed())
dir = dir + relativeEntity->back(); dir = dir + relativeEntity->back();
if (Hotkey('D').IsPressed()) if (f_UseCustomKeys ? f_RightKey.value().IsPressed() : Hotkey(ImGuiKey_D).IsPressed())
dir = dir + relativeEntity->right(); dir = dir + relativeEntity->right();
if (Hotkey('A').IsPressed()) if (f_UseCustomKeys ? f_LeftKey.value().IsPressed() : Hotkey(ImGuiKey_A).IsPressed())
dir = dir + relativeEntity->left(); dir = dir + relativeEntity->left();
if (Hotkey(VK_SPACE).IsPressed()) if (f_UseCustomKeys ? f_AscendKey.value().IsPressed() : Hotkey(ImGuiKey_Space).IsPressed())
dir = dir + avatarEntity->up(); dir = dir + avatarEntity->up();
if (Hotkey(ImGuiKey_ModShift).IsPressed()) if (f_UseCustomKeys ? f_DescendKey.value().IsPressed() : Hotkey(ImGuiKey_ModShift).IsPressed())
dir = dir + avatarEntity->down(); dir = dir + avatarEntity->down();
app::Vector3 prevPos = avatarEntity->relativePosition(); app::Vector3 prevPos = avatarEntity->relativePosition();

View File

@ -13,6 +13,15 @@ namespace cheat::feature
config::Field<config::Toggle<Hotkey>> f_Enabled; config::Field<config::Toggle<Hotkey>> f_Enabled;
config::Field<config::Toggle<Hotkey>> f_NoAnimation; config::Field<config::Toggle<Hotkey>> f_NoAnimation;
config::Field<bool> f_UseCustomKeys;
config::Field<Hotkey> f_ForwardKey;
config::Field<Hotkey> f_LeftKey;
config::Field<Hotkey> f_RightKey;
config::Field<Hotkey> f_BackKey;
config::Field<Hotkey> f_AscendKey;
config::Field<Hotkey> f_DescendKey;
config::Field<Hotkey> f_AltSpeedKey;
config::Field<float> f_Speed; config::Field<float> f_Speed;
config::Field<bool> f_CameraRelative; config::Field<bool> f_CameraRelative;
config::Field<config::Toggle<Hotkey>> f_VelocityMode; config::Field<config::Toggle<Hotkey>> f_VelocityMode;