merge
This commit is contained in:
commit
b0f98ccd09
51
README.md
51
README.md
@ -1,7 +1,17 @@
|
||||
<h1 align="center">Akebi GC</h1>
|
||||
The great software for some anime game which is for exploiting with girls (and boys).
|
||||
<p align="center">
|
||||
<a href="#"><img width="500" height="500" src="https://user-images.githubusercontent.com/67109235/176832758-7089defd-0edd-4c7a-bd69-60eeef99dca7.png"></a>
|
||||
<a href="#"><img width="690" height="133" src="https://user-images.githubusercontent.com/67109235/176832764-471a6bd5-405f-43dd-97ec-c11997880993.png"></a>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/Akebi-Group/Akebi-GC/releases/latest"><img src="https://img.shields.io/github/v/release/Akebi-Group/Akebi-GC?style=for-the-badge"></a>
|
||||
<a href="https://github.com/Akebi-Group/Akebi-GC/releases"><img src="https://img.shields.io/github/downloads/Akebi-Group/Akebi-GC/total.svg?style=for-the-badge"></a>
|
||||
<a href="https://github.com/Akebi-Group/Akebi-GC/graphs/contributors"><img src="https://img.shields.io/github/contributors/Akebi-Group/Akebi-GC?style=for-the-badge&color=red"></a>
|
||||
<a href="https://discord.gg/MmV8hNZB9S"><img src="https://img.shields.io/discord/440536354544156683?label=Discord&logo=discord&style=for-the-badge&color=blueviolet"></a>
|
||||
</p>
|
||||
|
||||
---
|
||||
|
||||
We opened a [Discord server](https://discord.gg/MmV8hNZB9S)
|
||||
<h1 align="center">Getting Started</h1>
|
||||
|
||||
## Building from source
|
||||
@ -17,8 +27,8 @@ As well as setting up **`cheat-library`** as startup project.
|
||||
1. Download the latest binaries
|
||||
|
||||
### Requirements
|
||||
- [Visual C++ Redistributable packages for Visual Studio 2015, 2017, 2019, 2022](https://aka.ms/vs/17/release/vc_redist.x64.exe) (x64)
|
||||
- [Visual C++ Redistributable packages for Visual Studio 2015, 2017, 2019, 2022](https://aka.ms/vs/17/release/vc_redist.x86.exe) (x86)
|
||||
- [Visual C++ Redistributable packages for Visual Studio 2015-2022](https://aka.ms/vs/17/release/vc_redist.x64.exe) (x64)
|
||||
- [Visual C++ Redistributable packages for Visual Studio 2015-2022](https://aka.ms/vs/17/release/vc_redist.x86.exe) (x86)
|
||||
|
||||
### Usage
|
||||
(1-2 are optional if you didn't build from source)
|
||||
@ -26,7 +36,7 @@ As well as setting up **`cheat-library`** as startup project.
|
||||
1. Open Compiled version (debug, release)
|
||||
|
||||
|
||||
1. Insure that `CLibrary.dll` is in the same folder that `injector.exe`.
|
||||
1. Ensure that `CLibrary.dll` is in the same folder that `injector.exe`.
|
||||
1. Run `injector.exe`.
|
||||
|
||||
<h1 align="center">Features</h1>
|
||||
@ -39,18 +49,25 @@ As well as setting up **`cheat-library`** as startup project.
|
||||
|
||||
#### Player
|
||||
- Invincible
|
||||
- Unlimited Stamina
|
||||
- Dumb Enemies
|
||||
- Attack Modifier
|
||||
- No Cooldown Skill/Ultimate/Sprint
|
||||
- Unlimited Stamina
|
||||
- No Clip
|
||||
|
||||
#### World
|
||||
- Auto Seelie
|
||||
- Vacuum Loot
|
||||
- Dumb Enemies
|
||||
- Auto Destroy Objects
|
||||
- Auto Loot
|
||||
- Pickup Range
|
||||
- Auto Talk
|
||||
- Killaura
|
||||
- Auto Tree Farm
|
||||
- Mob Vacuum
|
||||
- Auto Cook
|
||||
- Fake Time
|
||||
- Auto Fish
|
||||
- Kill Aura
|
||||
- Mob Vacuum
|
||||
- Music Event (temporary)
|
||||
|
||||
#### Teleport
|
||||
@ -62,11 +79,15 @@ As well as setting up **`cheat-library`** as startup project.
|
||||
- ESP
|
||||
- Interactive Map
|
||||
- Elemental Sight
|
||||
- Profile Changer
|
||||
- In-game Embedded Browser
|
||||
- Hide UI
|
||||
- Camera Zoom
|
||||
- No Fog
|
||||
- FPS Unlock
|
||||
- Camera Zoom
|
||||
- Chest Indicator
|
||||
- Hide UI
|
||||
- In-game Embedded Browser
|
||||
- Enable Peaking
|
||||
- Profile Changer
|
||||
- Texture Changer
|
||||
|
||||
#### Debugging
|
||||
- Entities Manager
|
||||
@ -102,7 +123,7 @@ As well as setting up **`cheat-library`** as startup project.
|
||||
<img src="https://github.com/CallowBlack/gif-demos/blob/main/genshin-cheat/auto-talk-demo.gif"/>
|
||||
</details>
|
||||
|
||||
# Bugs
|
||||
<h1 align="center">Bugs</h1>
|
||||
Welcome to the short explanation for bug reporting
|
||||
|
||||
1. You Found a bug.
|
||||
|
@ -21,6 +21,7 @@
|
||||
<ClInclude Include="src\user\cheat\misc\sniffer\pipe\PipeClient.h" />
|
||||
<ClInclude Include="src\user\cheat\misc\sniffer\pipe\PipeIO.h" />
|
||||
<ClInclude Include="src\user\cheat\visuals\TextureChanger.h" />
|
||||
<ClInclude Include="src\user\cheat\world\AutoSeelie.h" />
|
||||
<ClInclude Include="src\user\cheat\world\FakeTime.h" />
|
||||
<ClInclude Include="src\user\cheat\debugger.h">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WS|x64'">false</ExcludedFromBuild>
|
||||
@ -95,6 +96,7 @@
|
||||
<ClInclude Include="src\user\cheat\world\KillAura.h" />
|
||||
<ClInclude Include="src\user\cheat\world\MobVacuum.h" />
|
||||
<ClInclude Include="src\user\cheat\world\MusicEvent.h" />
|
||||
<ClInclude Include="src\user\cheat\world\VacuumLoot.h" />
|
||||
<ClInclude Include="src\user\main.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
@ -108,6 +110,7 @@
|
||||
<ClCompile Include="src\user\cheat\misc\sniffer\pipe\PipeClient.cpp" />
|
||||
<ClCompile Include="src\user\cheat\misc\sniffer\pipe\PipeIO.cpp" />
|
||||
<ClCompile Include="src\user\cheat\visuals\TextureChanger.cpp" />
|
||||
<ClCompile Include="src\user\cheat\world\AutoSeelie.cpp" />
|
||||
<ClCompile Include="src\user\cheat\world\FakeTime.cpp" />
|
||||
<ClCompile Include="src\user\cheat\debugger.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
|
||||
@ -179,6 +182,7 @@
|
||||
<ClCompile Include="src\user\cheat\world\KillAura.cpp" />
|
||||
<ClCompile Include="src\user\cheat\world\MobVacuum.cpp" />
|
||||
<ClCompile Include="src\user\cheat\world\MusicEvent.cpp" />
|
||||
<ClCompile Include="src\user\cheat\world\VacuumLoot.cpp" />
|
||||
<ClCompile Include="src\user\main.cpp" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup>
|
||||
|
@ -237,6 +237,12 @@
|
||||
<ClInclude Include="src\user\cheat\misc\sniffer\pipe\PipeIO.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\user\cheat\world\AutoSeelie.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\user\cheat\world\VacuumLoot.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Font Include="res\Ruda-Bold.ttf" />
|
||||
@ -417,6 +423,12 @@
|
||||
<ClCompile Include="src\user\cheat\visuals\TextureChanger.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\user\cheat\world\AutoSeelie.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\user\cheat\world\VacuumLoot.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\user\cheat\misc\sniffer\pipe\messages\PipeMessage.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
|
BIN
cheat-library/res/icons/Avatar.png
Normal file
BIN
cheat-library/res/icons/Avatar.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.1 KiB |
BIN
cheat-library/res/icons/Npc.png
Normal file
BIN
cheat-library/res/icons/Npc.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.4 KiB |
@ -668,6 +668,10 @@ ARCHAICSTONE PNG "icons\\ArchaicStone.png"
|
||||
|
||||
ARTIFACT PNG "icons\\Artifact.png"
|
||||
|
||||
AVATAROWN PNG "icons\\Avatar.png"
|
||||
|
||||
AVATARTEAMMATE PNG "icons\\Avatar.png"
|
||||
|
||||
BAKEDANUKI PNG "icons\\BakeDanuki.png"
|
||||
|
||||
BAMBOOSEGMENT PNG "icons\\BambooSegment.png"
|
||||
@ -974,6 +978,8 @@ NOBUSHI PNG "icons\\Nobushi.png"
|
||||
|
||||
NOCTILUCOUSJADE PNG "icons\\NoctilucousJade.png"
|
||||
|
||||
NPC PNG "icons\\Npc.png"
|
||||
|
||||
OCEANCRAB PNG "icons\\OceanCrab.png"
|
||||
|
||||
OCEANID PNG "icons\\Oceanid.png"
|
||||
|
@ -27,6 +27,8 @@
|
||||
#include <cheat/world/AutoTreeFarm.h>
|
||||
#include <cheat/world/AutoDestroy.h>
|
||||
#include <cheat/world/FakeTime.h>
|
||||
#include <cheat/world/AutoSeelie.h>
|
||||
#include <cheat/world/VacuumLoot.h>
|
||||
|
||||
#include <cheat/teleport/ChestTeleport.h>
|
||||
#include <cheat/teleport/MapTeleport.h>
|
||||
@ -83,6 +85,8 @@ namespace cheat
|
||||
FEAT_INST(AutoLoot),
|
||||
FEAT_INST(AutoTreeFarm),
|
||||
FEAT_INST(AutoDestroy),
|
||||
FEAT_INST(AutoSeelie),
|
||||
FEAT_INST(VacuumLoot),
|
||||
FEAT_INST(DialogSkip),
|
||||
FEAT_INST(DumbEnemies),
|
||||
FEAT_INST(ElementalSight),
|
||||
@ -90,6 +94,7 @@ namespace cheat
|
||||
FEAT_INST(MobVacuum),
|
||||
FEAT_INST(FakeTime),
|
||||
|
||||
|
||||
FEAT_INST(ChestTeleport),
|
||||
FEAT_INST(OculiTeleport),
|
||||
FEAT_INST(MapTeleport),
|
||||
|
@ -472,6 +472,8 @@ namespace cheat::feature
|
||||
ADD_FILTER_FIELD(guide, Stormstone);
|
||||
ADD_FILTER_FIELD(guide, TriangularMechanism);
|
||||
|
||||
ADD_FILTER_FIELD(living, AvatarTeammate);
|
||||
ADD_FILTER_FIELD(living, AvatarOwn);
|
||||
ADD_FILTER_FIELD(living, BakeDanuki);
|
||||
ADD_FILTER_FIELD(living, BirdEgg);
|
||||
ADD_FILTER_FIELD(living, Boar);
|
||||
@ -493,6 +495,7 @@ namespace cheat::feature
|
||||
ADD_FILTER_FIELD(living, LizardTail);
|
||||
ADD_FILTER_FIELD(living, LucklightFly);
|
||||
ADD_FILTER_FIELD(living, LuminescentSpine);
|
||||
ADD_FILTER_FIELD(living, Npc);
|
||||
ADD_FILTER_FIELD(living, Onikabuto);
|
||||
ADD_FILTER_FIELD(living, Pigeon);
|
||||
ADD_FILTER_FIELD(living, Salamander);
|
||||
|
@ -60,6 +60,8 @@ namespace cheat::game::filters
|
||||
|
||||
namespace living
|
||||
{
|
||||
SimpleFilter AvatarTeammate = { app::EntityType__Enum_1::Avatar, "authority :False" };
|
||||
SimpleFilter AvatarOwn = { app::EntityType__Enum_1::Avatar, "authority :True" };
|
||||
SimpleFilter BirdEgg = { app::EntityType__Enum_1::GatherObject, "BirdEgg" };
|
||||
SimpleFilter ButterflyWings = { app::EntityType__Enum_1::EnvAnimal, "Butterfly" };
|
||||
SimpleFilter Crab = { app::EntityType__Enum_1::EnvAnimal, "Crab" };
|
||||
@ -75,6 +77,8 @@ namespace cheat::game::filters
|
||||
SimpleFilter Boar = { app::EntityType__Enum_1::Monster, "Boar" };
|
||||
SimpleFilter Fox = { app::EntityType__Enum_1::Monster, "Fox" };
|
||||
SimpleFilter Squirrel = { app::EntityType__Enum_1::Monster, "Squirrel" };
|
||||
SimpleFilter Npc = { app::EntityType__Enum_1::NPC,
|
||||
std::vector<std::string> { "_Liyue", "_Mengde", "_Inazuma", "_Coop", "_Quest", "_Enkanomiya", "_Animal", "_Guide", "_Homeworld" } };
|
||||
SimpleFilter Crane = { app::EntityType__Enum_1::Monster, "Crane" };
|
||||
SimpleFilter Falcon = { app::EntityType__Enum_1::Monster, "Falcon" };
|
||||
SimpleFilter LucklightFly = { app::EntityType__Enum_1::EnvAnimal, "Boltbug_" };
|
||||
|
@ -63,6 +63,8 @@ namespace cheat::game::filters
|
||||
|
||||
namespace living
|
||||
{
|
||||
extern SimpleFilter AvatarOwn;
|
||||
extern SimpleFilter AvatarTeammate;
|
||||
extern SimpleFilter BirdEgg;
|
||||
extern SimpleFilter ButterflyWings;
|
||||
extern SimpleFilter Crab;
|
||||
@ -81,6 +83,7 @@ namespace cheat::game::filters
|
||||
extern SimpleFilter Crane;
|
||||
extern SimpleFilter Falcon;
|
||||
extern SimpleFilter LucklightFly;
|
||||
extern SimpleFilter Npc;
|
||||
extern SimpleFilter Salamander;
|
||||
extern SimpleFilter Pigeon;
|
||||
extern SimpleFilter Crow;
|
||||
|
@ -411,6 +411,14 @@ namespace cheat::feature
|
||||
}
|
||||
ImGui::CloseCurrentPopup();
|
||||
}
|
||||
if (ImGui::Button("Complete progress"))
|
||||
{
|
||||
for (auto& [pointID, point] : label.points)
|
||||
{
|
||||
CompletePoint(&point);
|
||||
}
|
||||
ImGui::CloseCurrentPopup();
|
||||
}
|
||||
|
||||
ImGui::EndPopup();
|
||||
}
|
||||
|
@ -27,8 +27,8 @@ namespace cheat::feature
|
||||
ConfigWidget("Enabled", f_Enabled, "Enables infinite stamina option.");
|
||||
|
||||
ConfigWidget("Move Sync Packet Replacement", f_PacketReplacement,
|
||||
"This mode prevents sending server packets with stamina cost actions,\n" \
|
||||
"e.g. swim, climb, sprint, etc.\n" \
|
||||
"This mode prevents sending server packets with stamina cost actions,\n"
|
||||
"e.g. swim, climb, sprint, etc.\n"
|
||||
"NOTE: This is may be more safe than the standard method. More testing is needed.");
|
||||
}
|
||||
|
||||
@ -55,11 +55,20 @@ namespace cheat::feature
|
||||
bool InfiniteStamina::OnPropertySet(app::PropType__Enum propType)
|
||||
{
|
||||
using PT = app::PropType__Enum;
|
||||
static bool override_cheat = true;
|
||||
|
||||
return !f_Enabled || f_PacketReplacement ||
|
||||
if (propType == PT::PROP_CUR_TEMPORARY_STAMINA)
|
||||
override_cheat = true;
|
||||
|
||||
const bool result = !f_Enabled || f_PacketReplacement || override_cheat ||
|
||||
(propType != PT::PROP_MAX_STAMINA &&
|
||||
propType != PT::PROP_CUR_PERSIST_STAMINA &&
|
||||
propType != PT::PROP_CUR_TEMPORARY_STAMINA);
|
||||
|
||||
if (propType == PT::PROP_MAX_STAMINA)
|
||||
override_cheat = false;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// Infinite stamina packet mode.
|
||||
|
@ -33,6 +33,7 @@ namespace cheat::feature
|
||||
ProfileChanger::ProfileChanger() : Feature(),
|
||||
NF(f_Enabled, "Custom Profile", "Visuals::ProfileChanger", false),
|
||||
NF(f_UID, "UID", "Visuals::ProfileChanger", false),
|
||||
NF(f_UIDWaterMarkPrefix, "UIDWaterMarkPrefix", "Visuals::ProfileChanger", false),
|
||||
NF(f_NickName, "NickName", "Visuals::ProfileChanger", false),
|
||||
NF(f_Level, "Level", "Visuals::ProfileChanger", false),
|
||||
NF(f_Exp, "Exp", "Visuals::ProfileChanger", false),
|
||||
@ -60,6 +61,7 @@ namespace cheat::feature
|
||||
{
|
||||
ConfigWidget(f_Enabled, "Custom Profile.");
|
||||
ConfigWidget(f_UID, "Changes the uid visually.");
|
||||
ConfigWidget("Append \"UID:\" prefix on the water-mark", f_UIDWaterMarkPrefix);
|
||||
ConfigWidget(f_NickName, "Changes the nickname visually.");
|
||||
ConfigWidget(f_Level, "Changes the level visually.");
|
||||
ConfigWidget(f_Exp, "Changes the exp visually.");
|
||||
@ -113,7 +115,7 @@ namespace cheat::feature
|
||||
Components::WaterMark = app::GameObject_GetComponentByName(GameObject::WaterMark, string_to_il2cppi("Text"), nullptr);
|
||||
|
||||
if (Components::WaterMark != nullptr)
|
||||
app::Text_set_text(reinterpret_cast<app::Text*>(Components::WaterMark), string_to_il2cppi(f_UID), nullptr);
|
||||
app::Text_set_text(reinterpret_cast<app::Text*>(Components::WaterMark), string_to_il2cppi(f_UID.value().value.empty() ? "" : std::string((f_UIDWaterMarkPrefix ? "UID: " : "") + f_UID.value().value)), nullptr);
|
||||
}
|
||||
|
||||
nextUpdate = currentTime + (int)f_DelayUpdate;
|
||||
|
@ -10,6 +10,7 @@ namespace cheat::feature
|
||||
public:
|
||||
config::Field<config::Toggle<Hotkey>> f_Enabled;
|
||||
config::Field<config::Toggle<std::string>> f_UID;
|
||||
config::Field<bool> f_UIDWaterMarkPrefix;
|
||||
config::Field<config::Toggle<std::string>> f_NickName;
|
||||
config::Field<config::Toggle<std::string>> f_Level;
|
||||
config::Field<config::Toggle<Hotkey>> f_Exp;
|
||||
|
81
cheat-library/src/user/cheat/world/AutoSeelie.cpp
Normal file
81
cheat-library/src/user/cheat/world/AutoSeelie.cpp
Normal file
@ -0,0 +1,81 @@
|
||||
#include "pch-il2cpp.h"
|
||||
#include "AutoSeelie.h"
|
||||
|
||||
#include <helpers.h>
|
||||
#include <cheat/events.h>
|
||||
#include <cheat/game/EntityManager.h>
|
||||
#include <cheat/game/util.h>
|
||||
|
||||
namespace cheat::feature
|
||||
{
|
||||
AutoSeelie::AutoSeelie() : Feature(),
|
||||
NF(f_Enabled, "Auto follow seelie", "AutoSeelie", false)
|
||||
{
|
||||
events::GameUpdateEvent += MY_METHOD_HANDLER(AutoSeelie::OnGameUpdate);
|
||||
}
|
||||
const FeatureGUIInfo& AutoSeelie::GetGUIInfo() const
|
||||
{
|
||||
static const FeatureGUIInfo info{ "", "World", true };
|
||||
return info;
|
||||
}
|
||||
|
||||
void AutoSeelie::DrawMain()
|
||||
{
|
||||
ConfigWidget("Auto seelie", f_Enabled, "Auto follow seelie to its home");
|
||||
ImGui::SameLine();
|
||||
ImGui::TextColored(ImColor(255, 165, 0, 255), "Don't work with Electro Seelies");
|
||||
}
|
||||
|
||||
bool AutoSeelie::NeedStatusDraw() const
|
||||
{
|
||||
return f_Enabled;
|
||||
}
|
||||
|
||||
void AutoSeelie::DrawStatus()
|
||||
{
|
||||
ImGui::Text ("AutoSeelie");
|
||||
}
|
||||
|
||||
AutoSeelie& AutoSeelie::GetInstance()
|
||||
{
|
||||
static AutoSeelie instance;
|
||||
return instance;
|
||||
}
|
||||
|
||||
bool AutoSeelie::IsEntityForVac(game::Entity* entity)
|
||||
{
|
||||
auto& manager = game::EntityManager::instance();
|
||||
auto distance = manager.avatar()->distance(entity);
|
||||
float radius = 100.0f;
|
||||
|
||||
if (entity->name().find("Gear_Seelie") != std::string::npos || entity->name().find("_FireSeelie") != std::string::npos ||
|
||||
entity->name().find("_LitSeelie") != std::string::npos)
|
||||
{
|
||||
return distance <= radius;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void AutoSeelie::OnGameUpdate()
|
||||
{
|
||||
if (!f_Enabled)
|
||||
return;
|
||||
|
||||
auto currentTime = util::GetCurrentTimeMillisec();
|
||||
if (currentTime < nextTime)
|
||||
return;
|
||||
|
||||
auto& manager = game::EntityManager::instance();
|
||||
auto avatarEntity = manager.avatar();
|
||||
for (const auto& entity : manager.entities())
|
||||
{
|
||||
if (!IsEntityForVac(entity))
|
||||
continue;
|
||||
|
||||
entity->setRelativePosition(avatarEntity->relativePosition());
|
||||
}
|
||||
nextTime = currentTime + 1000;
|
||||
}
|
||||
|
||||
}
|
33
cheat-library/src/user/cheat/world/AutoSeelie.h
Normal file
33
cheat-library/src/user/cheat/world/AutoSeelie.h
Normal file
@ -0,0 +1,33 @@
|
||||
#pragma once
|
||||
#include <cheat-base/cheat/Feature.h>
|
||||
#include <cheat-base/config/config.h>
|
||||
|
||||
#include <cheat/game/Entity.h>
|
||||
#include <cheat/game/filters.h>
|
||||
#include <il2cpp-appdata.h>
|
||||
|
||||
namespace cheat::feature
|
||||
{
|
||||
|
||||
class AutoSeelie : public Feature
|
||||
{
|
||||
public:
|
||||
config::Field<config::Toggle<Hotkey>> f_Enabled;
|
||||
|
||||
static AutoSeelie& GetInstance();
|
||||
|
||||
const FeatureGUIInfo& GetGUIInfo() const override;
|
||||
void DrawMain() override;
|
||||
|
||||
virtual bool NeedStatusDraw() const override;
|
||||
void DrawStatus() override;
|
||||
|
||||
void OnGameUpdate();
|
||||
private:
|
||||
|
||||
std::vector<game::IEntityFilter*> m_Filters;
|
||||
AutoSeelie();
|
||||
int nextTime{};
|
||||
bool IsEntityForVac(cheat::game::Entity* entity);
|
||||
};
|
||||
}
|
@ -13,7 +13,7 @@ namespace cheat::feature
|
||||
DialogSkip::DialogSkip() : Feature(),
|
||||
NF(f_Enabled, "Auto talk", "AutoTalk", false),
|
||||
NF(f_AutoSelectDialog, "Auto select dialog", "AutoTalk", true),
|
||||
NF(f_ExcludeImportant, "Exclude Katheryne/Tubby", "AutoTalk", true),
|
||||
NF(f_ExcludeImportant, "Exclude Katheryne/Tubby/Wagner", "AutoTalk", true),
|
||||
NF(f_FastDialog, "Fast dialog", "AutoTalk", false),
|
||||
NF(f_CutsceneUSM, "Skip Cutscenes", "AutoTalk", false),
|
||||
NF(f_TimeSpeedup, "Time Speed", "AutoTalk", 5.0f)
|
||||
@ -36,7 +36,7 @@ namespace cheat::feature
|
||||
if (f_AutoSelectDialog)
|
||||
{
|
||||
ImGui::Indent();
|
||||
ConfigWidget("Exclude Katheryne/Tubby", f_ExcludeImportant, "Exclude Kath/Tubby from auto-select.");
|
||||
ConfigWidget("Exclude Katheryne/Tubby/Wagner", f_ExcludeImportant, "Exclude Kath/Tubby/Wagner from auto-select.");
|
||||
ImGui::Unindent();
|
||||
}
|
||||
ConfigWidget("Fast Dialog", f_FastDialog, "Speeds up Time");
|
||||
@ -94,7 +94,8 @@ namespace cheat::feature
|
||||
// speeding up dialog on.
|
||||
std::vector<std::string> impEntitiesNames = {
|
||||
"Djinn",
|
||||
"Katheryne"
|
||||
"Katheryne",
|
||||
"Wagner"
|
||||
};
|
||||
auto dialogPartnerID = context->fields._inteeID;
|
||||
auto& manager = game::EntityManager::instance();
|
||||
@ -114,7 +115,9 @@ namespace cheat::feature
|
||||
{
|
||||
int32_t value = 0;
|
||||
auto object = il2cpp_value_box((Il2CppClass*)*app::Int32__TypeInfo, &value);
|
||||
auto notify = app::Notify_CreateNotify_1(app::MoleMole_NotifyTypes__Enum::DialogSelectItemNotify, (app::Object*)object, nullptr);
|
||||
app::Notify notify{};
|
||||
notify.type = app::MoleMole_NotifyTypes__Enum::DialogSelectNotify;
|
||||
notify.body = (app::Object*)object;
|
||||
app::MoleMole_TalkDialogContext_OnDialogSelectItem(talkDialog, ¬ify, nullptr);
|
||||
}
|
||||
else if (!talkDialog->fields._inSelect)
|
||||
|
103
cheat-library/src/user/cheat/world/VacuumLoot.cpp
Normal file
103
cheat-library/src/user/cheat/world/VacuumLoot.cpp
Normal file
@ -0,0 +1,103 @@
|
||||
#include "pch-il2cpp.h"
|
||||
#include "VacuumLoot.h"
|
||||
|
||||
#include <helpers.h>
|
||||
#include <cheat/events.h>
|
||||
#include <cheat/game/EntityManager.h>
|
||||
#include <cheat/game/util.h>
|
||||
|
||||
namespace cheat::feature
|
||||
{
|
||||
VacuumLoot::VacuumLoot() : Feature(),
|
||||
NF(f_Enabled, "Vacuum Loot", "VacuumLoot", false)
|
||||
{
|
||||
events::GameUpdateEvent += MY_METHOD_HANDLER(VacuumLoot::OnGameUpdate);
|
||||
}
|
||||
const FeatureGUIInfo& VacuumLoot::GetGUIInfo() const
|
||||
{
|
||||
static const FeatureGUIInfo info{ "", "World", true };
|
||||
return info;
|
||||
}
|
||||
|
||||
void VacuumLoot::DrawMain()
|
||||
{
|
||||
ConfigWidget("Vacuum Loot", f_Enabled, "Vacuum Loot drops");
|
||||
}
|
||||
|
||||
bool VacuumLoot::NeedStatusDraw() const
|
||||
{
|
||||
return f_Enabled;
|
||||
}
|
||||
|
||||
void VacuumLoot::DrawStatus()
|
||||
{
|
||||
ImGui::Text ("VacuumLoot");
|
||||
}
|
||||
|
||||
VacuumLoot& VacuumLoot::GetInstance()
|
||||
{
|
||||
static VacuumLoot instance;
|
||||
return instance;
|
||||
}
|
||||
|
||||
bool VacuumLoot::IsEntityForVac(game::Entity* entity)
|
||||
{
|
||||
auto& manager = game::EntityManager::instance();
|
||||
auto distance = manager.avatar()->distance(entity);
|
||||
float radius = 100.0f;
|
||||
|
||||
// TODO: Add more on the filter list in the future
|
||||
static std::vector<std::string> dropList
|
||||
{
|
||||
"SceneObj_DropItem",
|
||||
"SceneObj_Ore_Drop",
|
||||
"_DropMagicCrystal",
|
||||
"_Thundercrystaldrop",
|
||||
"_Ore_ElectricRock",
|
||||
"_DropMoonMeteor_",
|
||||
"_DropMagicCrystal",
|
||||
"_Potato",
|
||||
"_Radish02_Clear",
|
||||
"_Cabbage",
|
||||
"_Carrot02_Clear",
|
||||
"_Wheat",
|
||||
"Wisp",
|
||||
"Meat",
|
||||
"Fishmeat",
|
||||
"Equip_Sword",
|
||||
"Equip_Pole",
|
||||
"Equip_Bow",
|
||||
"Equip_Catalyst",
|
||||
"Equip_Claymore",
|
||||
"Eff_Animal"
|
||||
};
|
||||
|
||||
for (auto& dropListNames : dropList)
|
||||
if (entity->name().find(dropListNames) != std::string::npos)
|
||||
return distance <= radius;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void VacuumLoot::OnGameUpdate()
|
||||
{
|
||||
if (!f_Enabled)
|
||||
return;
|
||||
|
||||
auto currentTime = util::GetCurrentTimeMillisec();
|
||||
if (currentTime < nextTime)
|
||||
return;
|
||||
|
||||
auto& manager = game::EntityManager::instance();
|
||||
auto avatarEntity = manager.avatar();
|
||||
for (const auto& entity : manager.entities())
|
||||
{
|
||||
if (!IsEntityForVac(entity))
|
||||
continue;
|
||||
|
||||
entity->setRelativePosition(avatarEntity->relativePosition());
|
||||
}
|
||||
nextTime = currentTime + 1000;
|
||||
}
|
||||
|
||||
}
|
33
cheat-library/src/user/cheat/world/VacuumLoot.h
Normal file
33
cheat-library/src/user/cheat/world/VacuumLoot.h
Normal file
@ -0,0 +1,33 @@
|
||||
#pragma once
|
||||
#include <cheat-base/cheat/Feature.h>
|
||||
#include <cheat-base/config/config.h>
|
||||
|
||||
#include <cheat/game/Entity.h>
|
||||
#include <cheat/game/filters.h>
|
||||
#include <il2cpp-appdata.h>
|
||||
|
||||
namespace cheat::feature
|
||||
{
|
||||
|
||||
class VacuumLoot : public Feature
|
||||
{
|
||||
public:
|
||||
config::Field<config::Toggle<Hotkey>> f_Enabled;
|
||||
|
||||
static VacuumLoot& GetInstance();
|
||||
|
||||
const FeatureGUIInfo& GetGUIInfo() const override;
|
||||
void DrawMain() override;
|
||||
|
||||
virtual bool NeedStatusDraw() const override;
|
||||
void DrawStatus() override;
|
||||
|
||||
void OnGameUpdate();
|
||||
private:
|
||||
|
||||
std::vector<game::IEntityFilter*> m_Filters;
|
||||
VacuumLoot();
|
||||
int nextTime{};
|
||||
bool IsEntityForVac(cheat::game::Entity* entity);
|
||||
};
|
||||
}
|
1
cheat-library/vendor/protobuf
vendored
Submodule
1
cheat-library/vendor/protobuf
vendored
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 6f99f12a6b3e2a38f444d9d052eb29822f885913
|
Loading…
Reference in New Issue
Block a user