Made VacuumLoot more user configurable
This commit is contained in:
parent
728eb813c4
commit
77f654b15d
@ -11,8 +11,10 @@ namespace cheat::feature
|
|||||||
VacuumLoot::VacuumLoot() : Feature(),
|
VacuumLoot::VacuumLoot() : Feature(),
|
||||||
NF(f_Enabled, "Vacuum Loot", "VacuumLoot", false)
|
NF(f_Enabled, "Vacuum Loot", "VacuumLoot", false)
|
||||||
{
|
{
|
||||||
|
InstallFilters();
|
||||||
events::GameUpdateEvent += MY_METHOD_HANDLER(VacuumLoot::OnGameUpdate);
|
events::GameUpdateEvent += MY_METHOD_HANDLER(VacuumLoot::OnGameUpdate);
|
||||||
}
|
}
|
||||||
|
|
||||||
const FeatureGUIInfo& VacuumLoot::GetGUIInfo() const
|
const FeatureGUIInfo& VacuumLoot::GetGUIInfo() const
|
||||||
{
|
{
|
||||||
static const FeatureGUIInfo info{ "", "World", true };
|
static const FeatureGUIInfo info{ "", "World", true };
|
||||||
@ -21,7 +23,19 @@ namespace cheat::feature
|
|||||||
|
|
||||||
void VacuumLoot::DrawMain()
|
void VacuumLoot::DrawMain()
|
||||||
{
|
{
|
||||||
ConfigWidget("Vacuum Loot", f_Enabled, "Vacuum Loot drops");
|
if (ImGui::BeginGroupPanel("Vacuum Loot", false))
|
||||||
|
{
|
||||||
|
ConfigWidget("Enabled", f_Enabled, "Vacuum Loot drops");
|
||||||
|
ImGui::TreeNode(this, "Loot Types");
|
||||||
|
for (auto& [field, name] : m_Filters)
|
||||||
|
{
|
||||||
|
ImGui::PushID(name.c_str());
|
||||||
|
ConfigWidget(field);
|
||||||
|
ImGui::PopID();
|
||||||
|
}
|
||||||
|
ImGui::TreePop();
|
||||||
|
}
|
||||||
|
ImGui::EndGroupPanel();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool VacuumLoot::NeedStatusDraw() const
|
bool VacuumLoot::NeedStatusDraw() const
|
||||||
@ -46,34 +60,9 @@ namespace cheat::feature
|
|||||||
auto distance = manager.avatar()->distance(entity);
|
auto distance = manager.avatar()->distance(entity);
|
||||||
float radius = 100.0f;
|
float radius = 100.0f;
|
||||||
|
|
||||||
// TODO: Add more on the filter list in the future
|
for (const auto& lootItem : m_Filters)
|
||||||
static std::vector<std::string> dropList
|
if (lootItem.first.value())
|
||||||
{
|
if (entity->name().find(lootItem.second) != std::string::npos)
|
||||||
"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 distance <= radius;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@ -100,4 +89,37 @@ namespace cheat::feature
|
|||||||
nextTime = currentTime + 1000;
|
nextTime = currentTime + 1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void VacuumLoot::AddFilter(const std::string& friendName, const std::string& name)
|
||||||
|
{
|
||||||
|
m_Filters.push_back({
|
||||||
|
config::CreateField<bool>(friendName, name,
|
||||||
|
fmt::format("VacuumLoot::Filters::{}", name),
|
||||||
|
false, true),
|
||||||
|
name
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void VacuumLoot::InstallFilters()
|
||||||
|
{
|
||||||
|
AddFilter("General loot", "SceneObj_DropItem" );
|
||||||
|
AddFilter("Ore Drops", "SceneObj_Ore_Drop" );
|
||||||
|
AddFilter("Magic Crystal", "_DropMagicCrystal" );
|
||||||
|
AddFilter("???", "_Thundercrystaldrop" );
|
||||||
|
AddFilter("Electro Crystal", "_Ore_ElectricRock" );
|
||||||
|
AddFilter("Starsilver Ore", "_DropMoonMeteor_" );
|
||||||
|
AddFilter("Potatoes", "_Potato" );
|
||||||
|
AddFilter("Radish", "_Radish02_Clear" );
|
||||||
|
AddFilter("Cabbage", "_Cabbage" );
|
||||||
|
AddFilter("Carrot", "_Carrot02_Clear" );
|
||||||
|
AddFilter("Wheat", "_Wheat" );
|
||||||
|
AddFilter("Butterflies & Crystalflies", "Wisp" );
|
||||||
|
AddFilter("Meat", "Meat" );
|
||||||
|
AddFilter("Fishmeat", "Fishmeat" );
|
||||||
|
AddFilter("Swords", "Equip_Sword" );
|
||||||
|
AddFilter("Poles", "Equip_Pole" );
|
||||||
|
AddFilter("Bows", "Equip_Bow" );
|
||||||
|
AddFilter("Catalysts", "Equip_Catalyst" );
|
||||||
|
AddFilter("Claymores", "Equip_Claymore" );
|
||||||
|
AddFilter("???", "Eff_Animal" );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,11 +23,14 @@ namespace cheat::feature
|
|||||||
void DrawStatus() override;
|
void DrawStatus() override;
|
||||||
|
|
||||||
void OnGameUpdate();
|
void OnGameUpdate();
|
||||||
private:
|
|
||||||
|
|
||||||
std::vector<game::IEntityFilter*> m_Filters;
|
private:
|
||||||
|
std::vector<std::pair<config::Field<bool>, std::string>> m_Filters;
|
||||||
|
int nextTime = 0;
|
||||||
|
|
||||||
VacuumLoot();
|
VacuumLoot();
|
||||||
int nextTime{};
|
void InstallFilters();
|
||||||
|
void AddFilter(const std::string& friendName, const std::string& name);
|
||||||
bool IsEntityForVac(cheat::game::Entity* entity);
|
bool IsEntityForVac(cheat::game::Entity* entity);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user