mirror of
https://github.com/YimMenu/YimMenuV2.git
synced 2026-10-10 03:43:15 +08:00
(Improvement/Feat) UI Improvements, Casino Bypass Cooldown, Icon Support, Remove Cyrillic, Etc. (#418)
* (feat) Bypass Casino Bans for all Tables/Slots * (feat) Bypass Casino Bans for all Tables/Slots (Fix) * (feat) Bypass Casino Bans (Refactor) added to a Tools section for global use instead of being directly in the slots section. * (feat) Casino Lucky Wheel * (feat) Casino Lucky Wheel Prizes * Refactor Casino Lucky Wheel * (feat) Refactor - Added Lucky Wheel Bypass * (feat) Removed Lucky Wheel Prize/Autospin for now. * (feat) Casino Rig Options - Removed Lucky Wheel and Slots Autospin (temporarily) Added notice on risk to bypassing the bans/cooldowns. * Removed Cyrillic due to crashing/bug issues Restyled UI to use FontAwesome * UI Updates * fix * UI alterations * Removed Cyrillic due to Crashing/Bugs Added FULL FontAwesome Icon support Altered UI with floating navigation. * Fix * (Improvement) UI Restyling with floating Navigation, Menu resizing/moving and full FontAwesome icon support. * (Fix) Explosive Ammo not working in SP + more * (Fix) Explosive Ammo - Added combo box for selecting different ammo types - Added magic_enum for dynamic Explosion type listings using ExplosionType.hpp * (Improved) Explosive Ammo with damage scale modifier and camera shake modifier In Progress - Weapon Damage modifier * (feat) Added Weapon Damage Modifier * Fixes: Moved Melee damage modifier from WeaponDamage to its own option Fixes reporting PAD natives in UIManager and restored them in GUI with proper impl Removed OnEnable from ExplosiveAmmo * Casino script work * Alterations: Removed casino bypass cooldown (per request) Removed magic_enum Added array of explosion types as an alternative * moved m_ShowContentWindow from public to private * Fixed Weapon Damage description Passed ExplosionTypeArray directly
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
#include "UIManager.hpp"
|
||||
#include "game/pointers/Pointers.hpp"
|
||||
#include "game/frontend/Menu.hpp"
|
||||
|
||||
namespace YimMenu
|
||||
{
|
||||
@@ -17,47 +19,120 @@ namespace YimMenu
|
||||
|
||||
void UIManager::DrawImpl()
|
||||
{
|
||||
auto pos = ImGui::GetCursorPos();
|
||||
ImGuiIO& io = ImGui::GetIO();
|
||||
ImDrawList* drawList = ImGui::GetBackgroundDrawList();
|
||||
|
||||
if (ImGui::BeginChild("##submenus", ImVec2(120, ImGui::GetContentRegionAvail().y - 20), true))
|
||||
float bubbleSpacing = 75.0f;
|
||||
float bubbleSize = 55.0f;
|
||||
float bgSize = 70.0f;
|
||||
float rounding = 8.0f;
|
||||
ImVec2 basePos((*Pointers.ScreenResX / 2.0f) - (bubbleSpacing * m_Submenus.size() / 2.0f), 80.0f);
|
||||
|
||||
ImGui::SetNextWindowPos(ImVec2(0, 0));
|
||||
ImGui::SetNextWindowSize(io.DisplaySize);
|
||||
ImGui::Begin("##BubbleInputWindow", nullptr, ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoBackground | ImGuiWindowFlags_NoBringToFrontOnFocus);
|
||||
|
||||
for (size_t i = 0; i < m_Submenus.size(); ++i)
|
||||
{
|
||||
for (auto& submenu : m_Submenus)
|
||||
auto& submenu = m_Submenus[i];
|
||||
ImVec2 bubblePos(basePos.x + i * bubbleSpacing, basePos.y + 2);
|
||||
ImVec2 center(bubblePos.x + bubbleSize / 2.0f, bubblePos.y + bubbleSize / 2.0f);
|
||||
|
||||
ImGui::SetCursorScreenPos(bubblePos);
|
||||
ImGui::PushID(static_cast<int>(i));
|
||||
|
||||
ImVec2 bgPos = ImVec2(center.x - bgSize / 2.0f, center.y - bgSize / 2.0f);
|
||||
drawList->AddRectFilled(bgPos, ImVec2(bgPos.x + bgSize, bgPos.y + bgSize), IM_COL32(10, 10, 10, 255), rounding);
|
||||
|
||||
drawList->AddRect(bgPos, ImVec2(bgPos.x + bgSize, bgPos.y + bgSize), IM_COL32(192, 192, 192, 32), rounding, ImDrawFlags_None, 1.0f);
|
||||
|
||||
ImU32 bubbleColor = IM_COL32(25, 25, 31, 255);
|
||||
ImU32 hoverColor = IM_COL32(46, 46, 51, 255);
|
||||
ImGui::InvisibleButton("##Bubble", ImVec2(bubbleSize, bubbleSize));
|
||||
bool hovered = ImGui::IsItemHovered();
|
||||
bool clicked = ImGui::IsItemClicked();
|
||||
drawList->AddRectFilled(bubblePos, ImVec2(bubblePos.x + bubbleSize, bubblePos.y + bubbleSize), hovered ? hoverColor : bubbleColor, rounding);
|
||||
|
||||
drawList->AddRect(bubblePos, ImVec2(bubblePos.x + bubbleSize, bubblePos.y + bubbleSize), IM_COL32(192, 192, 192, 16), rounding, ImDrawFlags_None, 1.0f);
|
||||
|
||||
if (clicked)
|
||||
{
|
||||
if (ImGui::Selectable(submenu->m_Name.data(), (submenu == m_ActiveSubmenu)))
|
||||
if (submenu == m_ActiveSubmenu)
|
||||
{
|
||||
m_ShowContentWindow = !m_ShowContentWindow;
|
||||
}
|
||||
else
|
||||
{
|
||||
SetActiveSubmenu(submenu);
|
||||
m_ShowContentWindow = true;
|
||||
}
|
||||
}
|
||||
|
||||
ImU32 defaultIconColor = IM_COL32(255, 255, 255, 255);
|
||||
ImU32 activeIconColor = IM_COL32(120, 90, 160, 255);
|
||||
ImU32 hoveredIconColor = IM_COL32(90, 70, 120, 255);
|
||||
|
||||
ImU32 iconColor = submenu == m_ActiveSubmenu ? activeIconColor : (ImGui::IsItemHovered() ? hoveredIconColor : defaultIconColor);
|
||||
|
||||
ImGui::PushFont(Menu::Font::g_AwesomeFont);
|
||||
ImVec2 iconSize = ImGui::CalcTextSize(submenu->m_Icon.c_str());
|
||||
ImVec2 iconPos(center.x - iconSize.x / 2, center.y - iconSize.y / 2);
|
||||
drawList->AddText(Menu::Font::g_AwesomeFont, 0.0f, iconPos, iconColor, submenu->m_Icon.c_str());
|
||||
ImGui::PopFont();
|
||||
|
||||
ImU32 defaultTextColor = IM_COL32(255, 255, 255, 255);
|
||||
ImU32 activeTextColor = IM_COL32(120, 90, 160, 255);
|
||||
ImU32 hoveredTextColor = IM_COL32(90, 70, 120, 255);
|
||||
|
||||
ImU32 textColor = submenu == m_ActiveSubmenu ? activeTextColor : (ImGui::IsItemHovered() ? hoveredTextColor : defaultTextColor);
|
||||
|
||||
ImVec2 labelSize = ImGui::CalcTextSize(submenu->m_Name.c_str());
|
||||
ImVec2 labelPos(center.x - labelSize.x / 2, bubblePos.y + bubbleSize + 15.0f);
|
||||
|
||||
ImVec2 bgMin = labelPos - ImVec2(6, 2);
|
||||
ImVec2 bgMax = labelPos + labelSize + ImVec2(6, 2);
|
||||
drawList->AddRectFilled(bgMin, bgMax, IM_COL32(26, 26, 31, 120));
|
||||
|
||||
drawList->AddRect(bgMin, bgMax, IM_COL32(192, 192, 192, 16), 4.0f);
|
||||
|
||||
drawList->AddText(labelPos, textColor, submenu->m_Name.c_str());
|
||||
|
||||
ImGui::PopID();
|
||||
}
|
||||
ImGui::EndChild();
|
||||
|
||||
ImGui::Text("YimMenuV2");
|
||||
ImGui::End();
|
||||
|
||||
pos.y -= 28;
|
||||
ImGui::SetCursorPos(ImVec2(pos.x + 130, pos.y));
|
||||
|
||||
if (ImGui::BeginChild("##minisubmenus", ImVec2(0, 50), true, ImGuiWindowFlags_NoScrollbar))
|
||||
if (m_ShowContentWindow && m_ActiveSubmenu)
|
||||
{
|
||||
if (m_ActiveSubmenu)
|
||||
m_ActiveSubmenu->DrawCategorySelectors();
|
||||
float windowWidth = *Pointers.ScreenResX / 2.5f;
|
||||
float centerX = (*Pointers.ScreenResX - windowWidth) / 2.0f;
|
||||
float centerY = *Pointers.ScreenResY / 5.0f;
|
||||
ImVec2 windowSize(windowWidth, *Pointers.ScreenResY / 2.5f);
|
||||
|
||||
ImGui::SetNextWindowSize(windowSize, ImGuiCond_Once);
|
||||
ImGui::SetNextWindowPos(ImVec2(centerX, centerY), ImGuiCond_Once);
|
||||
ImGuiWindowFlags flags = ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoCollapse;
|
||||
|
||||
if (ImGui::Begin("##Categories&Content", nullptr, flags))
|
||||
{
|
||||
if (ImGui::BeginChild("##categorySelectors", ImVec2(0, 60), true))
|
||||
{
|
||||
m_ActiveSubmenu->DrawCategorySelectors();
|
||||
}
|
||||
ImGui::EndChild();
|
||||
|
||||
if (ImGui::BeginChild("##options", ImVec2(0, 0), true))
|
||||
{
|
||||
if (m_OptionsFont)
|
||||
ImGui::PushFont(m_OptionsFont);
|
||||
m_ActiveSubmenu->Draw();
|
||||
if (m_OptionsFont)
|
||||
ImGui::PopFont();
|
||||
}
|
||||
ImGui::EndChild();
|
||||
}
|
||||
ImGui::End();
|
||||
}
|
||||
ImGui::EndChild();
|
||||
|
||||
ImGui::SetCursorPos(ImVec2(pos.x + 130, pos.y + 60));
|
||||
|
||||
if (ImGui::BeginChild("##options", ImVec2(0, 0), true))
|
||||
{
|
||||
if (m_OptionsFont)
|
||||
ImGui::PushFont(m_OptionsFont);
|
||||
|
||||
if (m_ActiveSubmenu)
|
||||
m_ActiveSubmenu->Draw();
|
||||
|
||||
if (m_OptionsFont)
|
||||
ImGui::PopFont();
|
||||
}
|
||||
|
||||
ImGui::EndChild();
|
||||
}
|
||||
|
||||
std::shared_ptr<Submenu> UIManager::GetActiveSubmenuImpl()
|
||||
|
||||
@@ -37,6 +37,11 @@ namespace YimMenu
|
||||
GetInstance().m_OptionsFont = font;
|
||||
}
|
||||
|
||||
static bool ShowingContentWindow()
|
||||
{
|
||||
return GetInstance().m_ShowContentWindow;
|
||||
}
|
||||
|
||||
private:
|
||||
static inline UIManager& GetInstance()
|
||||
{
|
||||
@@ -53,5 +58,6 @@ namespace YimMenu
|
||||
std::shared_ptr<Submenu> m_ActiveSubmenu;
|
||||
std::vector<std::shared_ptr<Submenu>> m_Submenus;
|
||||
ImFont* m_OptionsFont = nullptr;
|
||||
bool m_ShowContentWindow = false;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
#include "game/backend/Self.hpp"
|
||||
#include "game/gta/Natives.hpp"
|
||||
#include "game/gta/ScriptLocal.hpp"
|
||||
#include "game/gta/Stats.hpp"
|
||||
#include "core/commands/ListCommand.hpp"
|
||||
#include "game/backend/Tunables.hpp"
|
||||
|
||||
#include <set>
|
||||
|
||||
@@ -79,5 +82,4 @@ namespace YimMenu::Features
|
||||
};
|
||||
|
||||
static CasinoManipulateRigSlotMachines _CasinoManipulateRigSlotMachines{"casinomanipulaterigslotmachines", "Manipulate Rig Slot Machines", "Lets you win the Rig Slot Machines every time"};
|
||||
|
||||
}
|
||||
@@ -1,20 +1,156 @@
|
||||
#include "core/commands/LoopedCommand.hpp"
|
||||
#include "game/backend/Self.hpp"
|
||||
#include "game/gta/Pools.hpp"
|
||||
|
||||
#include "types/fx/ExplosionType.hpp"
|
||||
#include <game/gta/Natives.hpp>
|
||||
#include "core/commands/ListCommand.hpp"
|
||||
#include "core/commands/FloatCommand.hpp"
|
||||
|
||||
namespace YimMenu::Features
|
||||
{
|
||||
static constexpr std::pair<int, const char*> ExplosionTypeArray[] = {
|
||||
{static_cast<int>(ExplosionType::DONTCARE), "Don't Care"},
|
||||
{static_cast<int>(ExplosionType::GRENADE), "Grenade"},
|
||||
{static_cast<int>(ExplosionType::GRENADELAUNCHER), "Grenade Launcher"},
|
||||
{static_cast<int>(ExplosionType::STICKYBOMB), "Sticky Bomb"},
|
||||
{static_cast<int>(ExplosionType::MOLOTOV), "Molotov"},
|
||||
{static_cast<int>(ExplosionType::ROCKET), "Rocket"},
|
||||
{static_cast<int>(ExplosionType::TANKSHELL), "Tank Shell"},
|
||||
{static_cast<int>(ExplosionType::HI_OCTANE), "Hi Octane"},
|
||||
{static_cast<int>(ExplosionType::CAR), "Car"},
|
||||
{static_cast<int>(ExplosionType::PLANE), "Plane"},
|
||||
{static_cast<int>(ExplosionType::PETROL_PUMP), "Petrol Pump"},
|
||||
{static_cast<int>(ExplosionType::BIKE), "Bike"},
|
||||
{static_cast<int>(ExplosionType::DIR_STEAM), "Directional Steam"},
|
||||
{static_cast<int>(ExplosionType::DIR_FLAME), "Directional Flame"},
|
||||
{static_cast<int>(ExplosionType::DIR_WATER_HYDRANT), "Directional Water Hydrant"},
|
||||
{static_cast<int>(ExplosionType::DIR_GAS_CANISTER), "Directional Gas Canister"},
|
||||
{static_cast<int>(ExplosionType::BOAT), "Boat"},
|
||||
{static_cast<int>(ExplosionType::SHIP_DESTROY), "Ship Destroy"},
|
||||
{static_cast<int>(ExplosionType::TRUCK), "Truck"},
|
||||
{static_cast<int>(ExplosionType::BULLET), "Bullet"},
|
||||
{static_cast<int>(ExplosionType::SMOKEGRENADELAUNCHER), "Smoke Grenade Launcher"},
|
||||
{static_cast<int>(ExplosionType::SMOKEGRENADE), "Smoke Grenade"},
|
||||
{static_cast<int>(ExplosionType::BZGAS), "BZ Gas"},
|
||||
{static_cast<int>(ExplosionType::FLARE), "Flare"},
|
||||
{static_cast<int>(ExplosionType::GAS_CANISTER), "Gas Canister"},
|
||||
{static_cast<int>(ExplosionType::EXTINGUISHER), "Extinguisher"},
|
||||
{static_cast<int>(ExplosionType::PROGRAMMABLEAR), "Programmable AR"},
|
||||
{static_cast<int>(ExplosionType::TRAIN), "Train"},
|
||||
{static_cast<int>(ExplosionType::BARREL), "Barrel"},
|
||||
{static_cast<int>(ExplosionType::PROPANE), "Propane"},
|
||||
{static_cast<int>(ExplosionType::BLIMP), "Blimp"},
|
||||
{static_cast<int>(ExplosionType::DIR_FLAME_EXPLODE), "Directional Flame Explode"},
|
||||
{static_cast<int>(ExplosionType::TANKER), "Tanker"},
|
||||
{static_cast<int>(ExplosionType::PLANE_ROCKET), "Plane Rocket"},
|
||||
{static_cast<int>(ExplosionType::VEHICLE_BULLET), "Vehicle Bullet"},
|
||||
{static_cast<int>(ExplosionType::GAS_TANK), "Gas Tank"},
|
||||
{static_cast<int>(ExplosionType::BIRD_CRAP), "Bird Crap"},
|
||||
{static_cast<int>(ExplosionType::RAILGUN), "Railgun"},
|
||||
{static_cast<int>(ExplosionType::BLIMP2), "Blimp 2"},
|
||||
{static_cast<int>(ExplosionType::FIREWORK), "Firework"},
|
||||
{static_cast<int>(ExplosionType::SNOWBALL), "Snowball"},
|
||||
{static_cast<int>(ExplosionType::PROXMINE), "Proximity Mine"},
|
||||
{static_cast<int>(ExplosionType::VALKYRIE_CANNON), "Valkyrie Cannon"},
|
||||
{static_cast<int>(ExplosionType::AIR_DEFENCE), "Air Defence"},
|
||||
{static_cast<int>(ExplosionType::PIPEBOMB), "Pipe Bomb"},
|
||||
{static_cast<int>(ExplosionType::VEHICLEMINE), "Vehicle Mine"},
|
||||
{static_cast<int>(ExplosionType::EXPLOSIVEAMMO), "Explosive Ammo"},
|
||||
{static_cast<int>(ExplosionType::APCSHELL), "APC Shell"},
|
||||
{static_cast<int>(ExplosionType::BOMB_CLUSTER), "Cluster Bomb"},
|
||||
{static_cast<int>(ExplosionType::BOMB_GAS), "Gas Bomb"},
|
||||
{static_cast<int>(ExplosionType::BOMB_INCENDIARY), "Incendiary Bomb"},
|
||||
{static_cast<int>(ExplosionType::BOMB_STANDARD), "Standard Bomb"},
|
||||
{static_cast<int>(ExplosionType::TORPEDO), "Torpedo"},
|
||||
{static_cast<int>(ExplosionType::TORPEDO_UNDERWATER), "Underwater Torpedo"},
|
||||
{static_cast<int>(ExplosionType::BOMBUSHKA_CANNON), "Bombushka Cannon"},
|
||||
{static_cast<int>(ExplosionType::BOMB_CLUSTER_SECONDARY), "Cluster Bomb (Secondary)"},
|
||||
{static_cast<int>(ExplosionType::HUNTER_BARRAGE), "Hunter Barrage"},
|
||||
{static_cast<int>(ExplosionType::HUNTER_CANNON), "Hunter Cannon"},
|
||||
{static_cast<int>(ExplosionType::ROGUE_CANNON), "Rogue Cannon"},
|
||||
{static_cast<int>(ExplosionType::MINE_UNDERWATER), "Underwater Mine"},
|
||||
{static_cast<int>(ExplosionType::ORBITAL_CANNON), "Orbital Cannon"},
|
||||
{static_cast<int>(ExplosionType::BOMB_STANDARD_WIDE), "Standard Bomb (Wide)"},
|
||||
{static_cast<int>(ExplosionType::EXPLOSIVEAMMO_SHOTGUN), "Explosive Ammo (Shotgun)"},
|
||||
{static_cast<int>(ExplosionType::OPPRESSOR2_CANNON), "Oppressor Mk II Cannon"},
|
||||
{static_cast<int>(ExplosionType::MORTAR_KINETIC), "Kinetic Mortar"},
|
||||
{static_cast<int>(ExplosionType::VEHICLEMINE_KINETIC), "Vehicle Mine (Kinetic)"},
|
||||
{static_cast<int>(ExplosionType::VEHICLEMINE_EMP), "Vehicle Mine (EMP)"},
|
||||
{static_cast<int>(ExplosionType::VEHICLEMINE_SPIKE), "Vehicle Mine (Spike)"},
|
||||
{static_cast<int>(ExplosionType::VEHICLEMINE_SLICK), "Vehicle Mine (Slick)"},
|
||||
{static_cast<int>(ExplosionType::VEHICLEMINE_TAR), "Vehicle Mine (Tar)"},
|
||||
{static_cast<int>(ExplosionType::SCRIPT_DRONE), "Script Drone"},
|
||||
{static_cast<int>(ExplosionType::RAYGUN), "Ray Gun"},
|
||||
{static_cast<int>(ExplosionType::BURIEDMINE), "Buried Mine"},
|
||||
{static_cast<int>(ExplosionType::SCRIPT_MISSILE), "Script Missile"},
|
||||
{static_cast<int>(ExplosionType::RCTANK_ROCKET), "RC Tank Rocket"},
|
||||
{static_cast<int>(ExplosionType::BOMB_WATER), "Water Bomb"},
|
||||
{static_cast<int>(ExplosionType::BOMB_WATER_SECONDARY), "Water Bomb (Secondary)"},
|
||||
{static_cast<int>(ExplosionType::_0xF728C4A9), "Unknown Explosion F728C4A9"},
|
||||
{static_cast<int>(ExplosionType::_0xBAEC056F), "Unknown Explosion BAEC056F"},
|
||||
{static_cast<int>(ExplosionType::FLASHGRENADE), "Flash Grenade"},
|
||||
{static_cast<int>(ExplosionType::STUNGRENADE), "Stun Grenade"},
|
||||
{static_cast<int>(ExplosionType::_0x763D3B3B), "Unknown Explosion 763D3B3B"},
|
||||
{static_cast<int>(ExplosionType::SCRIPT_MISSILE_LARGE), "Script Missile (Large)"},
|
||||
{static_cast<int>(ExplosionType::SUBMARINE_BIG), "Submarine (Big)"},
|
||||
{static_cast<int>(ExplosionType::EMPLAUNCHER_EMP), "EMP Launcher"},
|
||||
};
|
||||
|
||||
static ListCommand _SelectedExplosion{
|
||||
"selectedexplosion",
|
||||
"Explosion Type",
|
||||
"Select an explosion type",
|
||||
std::begin(ExplosionTypeArray),
|
||||
std::end(ExplosionTypeArray),
|
||||
static_cast<int>(ExplosionType::BULLET)};
|
||||
|
||||
static FloatCommand _ExplosionDamageScale{
|
||||
"explosiondamage",
|
||||
"Explosion Damage Scale",
|
||||
"Sets the damage scale for explosions",
|
||||
0.0f,
|
||||
1000.0f,
|
||||
1.0f};
|
||||
|
||||
static FloatCommand _CameraShake{
|
||||
"explosioncamerashake",
|
||||
"Explosion Camera Shake",
|
||||
"Controls how much the camera shakes during explosions",
|
||||
0.0f,
|
||||
10.0f,
|
||||
0.1f};
|
||||
|
||||
class ExplosiveAmmo : public LoopedCommand
|
||||
{
|
||||
using LoopedCommand::LoopedCommand;
|
||||
virtual void OnTick() override
|
||||
|
||||
void OnTick() override
|
||||
{
|
||||
MISC::SET_EXPLOSIVE_AMMO_THIS_FRAME(Self::GetPlayer().GetId());
|
||||
TriggerExplosion();
|
||||
}
|
||||
|
||||
void TriggerExplosion()
|
||||
{
|
||||
Vector3 impactCoords;
|
||||
if (WEAPON::GET_PED_LAST_WEAPON_IMPACT_COORD(Self::GetPed().GetHandle(), &impactCoords))
|
||||
{
|
||||
auto explosionType = static_cast<ExplosionType>(_SelectedExplosion.GetState());
|
||||
float damageScale = _ExplosionDamageScale.GetState();
|
||||
float shake = _CameraShake.GetState();
|
||||
|
||||
FIRE::ADD_OWNED_EXPLOSION(
|
||||
Self::GetPed().GetHandle(),
|
||||
impactCoords.x,
|
||||
impactCoords.y,
|
||||
impactCoords.z,
|
||||
static_cast<int>(explosionType),
|
||||
damageScale,
|
||||
true, // isAudible
|
||||
false, // isInvisible
|
||||
shake);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
static ExplosiveAmmo _ExplosiveAmmo{"ExplosiveAmmo", "Explosive Ammo", "Every bullet you shoot explodes."};
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
#include "core/commands/LoopedCommand.hpp"
|
||||
#include "game/backend/Self.hpp"
|
||||
#include "game/gta/Pools.hpp"
|
||||
#include <game/gta/Natives.hpp>
|
||||
#include "core/commands/FloatCommand.hpp"
|
||||
|
||||
namespace YimMenu::Features
|
||||
{
|
||||
static FloatCommand _MeleeDamageScale{"meleedamagescale", "Melee Damage Scale", "Sets the damage scale for melee", 0.0f, 10.0f, 1.0f};
|
||||
|
||||
class MeleeDamage : public LoopedCommand
|
||||
{
|
||||
using LoopedCommand::LoopedCommand;
|
||||
|
||||
void OnTick() override
|
||||
{
|
||||
float scale = _MeleeDamageScale.GetState();
|
||||
if (scale > 0.0f)
|
||||
{
|
||||
Hash weapon;
|
||||
if (WEAPON::GET_CURRENT_PED_WEAPON(Self::GetPed().GetHandle(), &weapon, 0))
|
||||
{
|
||||
PLAYER::SET_PLAYER_MELEE_WEAPON_DAMAGE_MODIFIER(Self::GetPlayer().GetId(), scale, 0);
|
||||
|
||||
Hash target = PED::GET_MELEE_TARGET_FOR_PED(Self::GetPed().GetHandle());
|
||||
if (target != 0)
|
||||
{
|
||||
Vector3 forward = ENTITY::GET_ENTITY_FORWARD_VECTOR(Self::GetPed().GetHandle());
|
||||
|
||||
if (ENTITY::IS_ENTITY_A_PED(target))
|
||||
{
|
||||
float forceScale = scale * 1.0f; // Set ped force lower since they weigh less
|
||||
}
|
||||
float forceScale = scale * 5.0f;
|
||||
Vector3 force{
|
||||
forward.x * forceScale,
|
||||
forward.y * forceScale,
|
||||
0.1f // Small vertical lift
|
||||
};
|
||||
|
||||
ENTITY::APPLY_FORCE_TO_ENTITY(
|
||||
target,
|
||||
0,
|
||||
force.x,
|
||||
force.y,
|
||||
force.z,
|
||||
0.0f,
|
||||
0.0f,
|
||||
0.0f,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
false,
|
||||
true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
static MeleeDamage _MeleeDamage{"meleedamage", "Melee Damage", "Allows altering your melee damage output"};
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
#include "core/commands/LoopedCommand.hpp"
|
||||
#include "game/backend/Self.hpp"
|
||||
#include "game/gta/Pools.hpp"
|
||||
#include <game/gta/Natives.hpp>
|
||||
#include "core/commands/FloatCommand.hpp"
|
||||
|
||||
namespace YimMenu::Features
|
||||
{
|
||||
static FloatCommand _WeaponDamageScale{"weapondamagescale", "Weapon Damage Scale", "Sets the damage scale for weapons (including melee)", 0.0f, 10.0f, 1.0f};
|
||||
|
||||
class WeaponDamage : public LoopedCommand
|
||||
{
|
||||
using LoopedCommand::LoopedCommand;
|
||||
|
||||
void OnTick() override
|
||||
{
|
||||
float scale = _WeaponDamageScale.GetState();
|
||||
if (scale > 0.0f)
|
||||
{
|
||||
Hash weapon;
|
||||
if (WEAPON::GET_CURRENT_PED_WEAPON(Self::GetPed().GetHandle(), &weapon, 0))
|
||||
{
|
||||
WEAPON::SET_WEAPON_DAMAGE_MODIFIER(weapon, scale);
|
||||
WEAPON::_SET_WEAPON_PED_DAMAGE_MODIFIER(Self::GetPed().GetHandle(), scale);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
static WeaponDamage _WeaponDamage{"weapondamage", "Weapon Damage", "Allows altering your weapons damage output"};
|
||||
}
|
||||
+19
-14
@@ -1,3 +1,4 @@
|
||||
#include "core/frontend/manager/UIManager.hpp"
|
||||
#include "GUI.hpp"
|
||||
#include "Menu.hpp"
|
||||
#include "ESP.hpp"
|
||||
@@ -52,14 +53,15 @@ namespace YimMenu
|
||||
{
|
||||
auto& io = ImGui::GetIO();
|
||||
io.MouseDrawCursor = GUI::IsOpen() || GUI::IsOnboarding();
|
||||
GUI::IsOpen() || GUI::IsOnboarding() ? io.ConfigFlags &= ~ImGuiConfigFlags_NoMouse :
|
||||
io.ConfigFlags |= ImGuiConfigFlags_NoMouse;
|
||||
GUI::IsOpen() || GUI::IsOnboarding()
|
||||
? io.ConfigFlags &= ~ImGuiConfigFlags_NoMouse :
|
||||
io.ConfigFlags |= ImGuiConfigFlags_NoMouse;
|
||||
}
|
||||
|
||||
void GUI::WndProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
|
||||
{
|
||||
if (msg == WM_KEYUP
|
||||
&& (wparam == VK_INSERT || (wparam == VK_OEM_5 && (GetKeyState(VK_CONTROL) & 0x8000) != 0)))
|
||||
if (msg == WM_KEYUP
|
||||
&& (wparam == VK_INSERT || (wparam == VK_OEM_5 && (GetKeyState(VK_CONTROL) & 0x8000) != 0)))
|
||||
{
|
||||
// Persist and restore the cursor position between menu instances
|
||||
static POINT CursorCoords{};
|
||||
@@ -73,10 +75,10 @@ namespace YimMenu
|
||||
}
|
||||
if (!GUI::IsOnboarding())
|
||||
Toggle();
|
||||
ToggleMouse();
|
||||
ToggleMouse();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void GUI::SetOnboardingImpl(bool state)
|
||||
{
|
||||
m_Onboarding = state;
|
||||
@@ -89,16 +91,19 @@ namespace YimMenu
|
||||
{
|
||||
if (GUI::IsOpen())
|
||||
{
|
||||
if (GUI::IsUsingKeyboard())
|
||||
if (UIManager::ShowingContentWindow())
|
||||
{
|
||||
PAD::DISABLE_ALL_CONTROL_ACTIONS(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
static constexpr ControllerInputs controls[] = {ControllerInputs::INPUT_LOOK_LR, ControllerInputs::INPUT_LOOK_UD, ControllerInputs::INPUT_ATTACK, ControllerInputs::INPUT_AIM, ControllerInputs::INPUT_DUCK, ControllerInputs::INPUT_SELECT_WEAPON, ControllerInputs::INPUT_VEH_AIM, ControllerInputs::INPUT_VEH_ATTACK, ControllerInputs::INPUT_VEH_ATTACK2, ControllerInputs::INPUT_VEH_NEXT_RADIO, ControllerInputs::INPUT_VEH_PASSENGER_AIM, ControllerInputs::INPUT_VEH_PASSENGER_ATTACK, ControllerInputs::INPUT_VEH_SELECT_NEXT_WEAPON, ControllerInputs::INPUT_VEH_SELECT_PREV_WEAPON, ControllerInputs::INPUT_VEH_MOUSE_CONTROL_OVERRIDE, ControllerInputs::INPUT_MELEE_ATTACK_ALTERNATE, ControllerInputs::INPUT_FRONTEND_Y, ControllerInputs::INPUT_ATTACK2, ControllerInputs::INPUT_PREV_WEAPON, ControllerInputs::INPUT_NEXT_WEAPON, ControllerInputs::INPUT_VEH_DRIVE_LOOK, ControllerInputs::INPUT_VEH_DRIVE_LOOK2};
|
||||
if (GUI::IsUsingKeyboard())
|
||||
{
|
||||
PAD::DISABLE_ALL_CONTROL_ACTIONS(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
static constexpr ControllerInputs controls[] = {ControllerInputs::INPUT_LOOK_LR, ControllerInputs::INPUT_LOOK_UD, ControllerInputs::INPUT_ATTACK, ControllerInputs::INPUT_AIM, ControllerInputs::INPUT_DUCK, ControllerInputs::INPUT_SELECT_WEAPON, ControllerInputs::INPUT_VEH_AIM, ControllerInputs::INPUT_VEH_ATTACK, ControllerInputs::INPUT_VEH_ATTACK2, ControllerInputs::INPUT_VEH_NEXT_RADIO, ControllerInputs::INPUT_VEH_PASSENGER_AIM, ControllerInputs::INPUT_VEH_PASSENGER_ATTACK, ControllerInputs::INPUT_VEH_SELECT_NEXT_WEAPON, ControllerInputs::INPUT_VEH_SELECT_PREV_WEAPON, ControllerInputs::INPUT_VEH_MOUSE_CONTROL_OVERRIDE, ControllerInputs::INPUT_MELEE_ATTACK_ALTERNATE, ControllerInputs::INPUT_FRONTEND_Y, ControllerInputs::INPUT_ATTACK2, ControllerInputs::INPUT_PREV_WEAPON, ControllerInputs::INPUT_NEXT_WEAPON, ControllerInputs::INPUT_VEH_DRIVE_LOOK, ControllerInputs::INPUT_VEH_DRIVE_LOOK2};
|
||||
|
||||
for (const auto& control : controls)
|
||||
PAD::DISABLE_CONTROL_ACTION(0, static_cast<int>(control), true);
|
||||
for (const auto& control : controls)
|
||||
PAD::DISABLE_CONTROL_ACTION(0, static_cast<int>(control), true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+24
-45
@@ -39,37 +39,13 @@ namespace YimMenu
|
||||
Renderer::AddRendererCallBack(
|
||||
[&] {
|
||||
ProcessOnboarding();
|
||||
|
||||
if (!GUI::IsOpen())
|
||||
return;
|
||||
|
||||
ImGui::PushFont(Menu::Font::g_DefaultFont);
|
||||
ImGui::PushStyleColor(ImGuiCol_WindowBg, ImU32(ImColor(15, 15, 15)));
|
||||
|
||||
ImGui::SetNextWindowSize(ImVec2((*Pointers.ScreenResX / 2.5), (*Pointers.ScreenResY / 2.5)), ImGuiCond_Once);
|
||||
if (ImGui::Begin("YimMenuV2", nullptr, ImGuiWindowFlags_NoDecoration & ~(ImGuiWindowFlags_NoResize)))
|
||||
{
|
||||
// TODO: should we just remove unload?
|
||||
ImGui::BeginDisabled(*Pointers.IsSessionStarted || ModuleMgr.IsManualMapped());
|
||||
if (ImGui::Button("Unload", ImVec2(120, 0)))
|
||||
{
|
||||
if (true)
|
||||
{
|
||||
FiberPool::Push([] {
|
||||
Commands::Shutdown();
|
||||
g_Running = false;
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
g_Running = false;
|
||||
}
|
||||
}
|
||||
ImGui::EndDisabled();
|
||||
|
||||
UIManager::Draw();
|
||||
}
|
||||
ImGui::End();
|
||||
UIManager::Draw();
|
||||
|
||||
ImGui::PopStyleColor();
|
||||
ImGui::PopFont();
|
||||
@@ -84,35 +60,35 @@ namespace YimMenu
|
||||
style.Colors[ImGuiCol_Text] = ImVec4(0.90f, 0.90f, 0.90f, 1.00f);
|
||||
style.Colors[ImGuiCol_TextDisabled] = ImVec4(0.50f, 0.50f, 0.50f, 1.00f);
|
||||
|
||||
style.Colors[ImGuiCol_WindowBg] = ImVec4(0.10f, 0.10f, 0.12f, 1.00f);
|
||||
style.Colors[ImGuiCol_ChildBg] = ImVec4(0.12f, 0.12f, 0.14f, 1.00f);
|
||||
style.Colors[ImGuiCol_PopupBg] = ImVec4(0.08f, 0.08f, 0.10f, 0.95f);
|
||||
style.Colors[ImGuiCol_WindowBg] = ImVec4(0.08f, 0.08f, 0.09f, 1.00f);
|
||||
style.Colors[ImGuiCol_ChildBg] = ImVec4(0.10f, 0.10f, 0.12f, 1.00f);
|
||||
style.Colors[ImGuiCol_PopupBg] = ImVec4(0.07f, 0.07f, 0.09f, 0.95f);
|
||||
|
||||
style.Colors[ImGuiCol_Border] = ImVec4(0.28f, 0.28f, 0.28f, 0.25f);
|
||||
style.Colors[ImGuiCol_FrameBg] = ImVec4(0.18f, 0.18f, 0.20f, 1.00f);
|
||||
style.Colors[ImGuiCol_FrameBgHovered] = ImVec4(0.35f, 0.40f, 0.50f, 0.75f);
|
||||
style.Colors[ImGuiCol_FrameBgActive] = ImVec4(0.45f, 0.50f, 0.60f, 0.85f);
|
||||
style.Colors[ImGuiCol_FrameBg] = ImVec4(0.15f, 0.15f, 0.17f, 1.00f);
|
||||
style.Colors[ImGuiCol_FrameBgHovered] = ImVec4(0.40f, 0.30f, 0.50f, 0.75f);
|
||||
style.Colors[ImGuiCol_FrameBgActive] = ImVec4(0.45f, 0.35f, 0.60f, 0.85f);
|
||||
|
||||
style.Colors[ImGuiCol_Button] = ImVec4(0.40f, 0.25f, 0.50f, 1.00f);
|
||||
style.Colors[ImGuiCol_ButtonHovered] = ImVec4(0.50f, 0.35f, 0.60f, 1.00f);
|
||||
style.Colors[ImGuiCol_ButtonActive] = ImVec4(0.60f, 0.45f, 0.75f, 1.00f);
|
||||
style.Colors[ImGuiCol_Button] = ImVec4(0.40f, 0.30f, 0.50f, 1.00f);
|
||||
style.Colors[ImGuiCol_ButtonHovered] = ImVec4(0.50f, 0.40f, 0.60f, 1.00f);
|
||||
style.Colors[ImGuiCol_ButtonActive] = ImVec4(0.60f, 0.45f, 0.70f, 1.00f);
|
||||
|
||||
style.Colors[ImGuiCol_TitleBg] = ImVec4(0.08f, 0.08f, 0.10f, 1.00f);
|
||||
style.Colors[ImGuiCol_TitleBgActive] = ImVec4(0.10f, 0.12f, 0.14f, 1.00f);
|
||||
style.Colors[ImGuiCol_TitleBgCollapsed] = ImVec4(0.05f, 0.05f, 0.06f, 1.00f);
|
||||
style.Colors[ImGuiCol_TitleBg] = ImVec4(0.06f, 0.06f, 0.07f, 1.00f);
|
||||
style.Colors[ImGuiCol_TitleBgActive] = ImVec4(0.09f, 0.09f, 0.11f, 1.00f);
|
||||
style.Colors[ImGuiCol_TitleBgCollapsed] = ImVec4(0.04f, 0.04f, 0.05f, 1.00f);
|
||||
|
||||
style.Colors[ImGuiCol_Tab] = ImVec4(0.25f, 0.20f, 0.45f, 0.85f);
|
||||
style.Colors[ImGuiCol_TabHovered] = ImVec4(0.35f, 0.30f, 0.65f, 0.85f);
|
||||
style.Colors[ImGuiCol_TabActive] = ImVec4(0.40f, 0.35f, 0.75f, 1.00f);
|
||||
style.Colors[ImGuiCol_Tab] = ImVec4(0.35f, 0.30f, 0.45f, 0.85f);
|
||||
style.Colors[ImGuiCol_TabHovered] = ImVec4(0.50f, 0.40f, 0.60f, 0.85f);
|
||||
style.Colors[ImGuiCol_TabActive] = ImVec4(0.60f, 0.45f, 0.70f, 1.00f);
|
||||
|
||||
style.Colors[ImGuiCol_Header] = ImVec4(0.20f, 0.25f, 0.35f, 1.00f);
|
||||
style.Colors[ImGuiCol_HeaderHovered] = ImVec4(0.35f, 0.40f, 0.50f, 1.00f);
|
||||
style.Colors[ImGuiCol_HeaderActive] = ImVec4(0.45f, 0.50f, 0.60f, 1.00f);
|
||||
style.Colors[ImGuiCol_Header] = ImVec4(0.30f, 0.25f, 0.40f, 1.00f);
|
||||
style.Colors[ImGuiCol_HeaderHovered] = ImVec4(0.45f, 0.35f, 0.60f, 1.00f);
|
||||
style.Colors[ImGuiCol_HeaderActive] = ImVec4(0.55f, 0.40f, 0.65f, 1.00f);
|
||||
|
||||
style.Colors[ImGuiCol_PlotLines] = ImVec4(0.80f, 0.80f, 0.00f, 0.00f);
|
||||
style.Colors[ImGuiCol_PlotLinesHovered] = ImVec4(1.00f, 0.85f, 0.00f, 1.00f);
|
||||
style.Colors[ImGuiCol_PlotHistogram] = ImVec4(0.90f, 0.70f, 0.20f, 1.00f);
|
||||
style.Colors[ImGuiCol_PlotHistogramHovered] = ImVec4(1.00f, 0.80f, 0.40f, 1.00f);
|
||||
style.Colors[ImGuiCol_PlotHistogram] = ImVec4(0.40f, 0.30f, 0.50f, 1.00f);
|
||||
style.Colors[ImGuiCol_PlotHistogramHovered] = ImVec4(0.60f, 0.45f, 0.70f, 1.00f);
|
||||
|
||||
style.GrabRounding = style.FrameRounding = style.ChildRounding = style.WindowRounding = 8.0f;
|
||||
}
|
||||
@@ -132,6 +108,9 @@ namespace YimMenu
|
||||
Menu::Font::g_ChildTitleFont = IO.Fonts->AddFontFromMemoryTTF(const_cast<std::uint8_t*>(Fonts::MainFont), sizeof(Fonts::MainFont), Menu::Font::g_ChildTitleFontSize, &FontCfg);
|
||||
Menu::Font::g_ChatFont = IO.Fonts->AddFontFromMemoryTTF(const_cast<std::uint8_t*>(Fonts::MainFont), sizeof(Fonts::MainFont), Menu::Font::g_ChatFontSize, &FontCfg);
|
||||
Menu::Font::g_OverlayFont = IO.Fonts->AddFontFromMemoryTTF(const_cast<std::uint8_t*>(Fonts::MainFont), sizeof(Fonts::MainFont), Menu::Font::g_OverlayFontSize, &FontCfg);
|
||||
static const ImWchar full_range[] = {0x0020, 0xFFFF, 0};
|
||||
Menu::Font::g_AwesomeFont = IO.Fonts->AddFontFromMemoryTTF(const_cast<std::uint8_t*>(Fonts::IconFont), sizeof(Fonts::IconFont), Menu::Font::g_AwesomeFontSize, &FontCfg, full_range);
|
||||
|
||||
UIManager::SetOptionsFont(Menu::Font::g_OptionsFont);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,5 +23,8 @@ namespace YimMenu::Menu
|
||||
|
||||
inline ImFont* g_OverlayFont = nullptr;
|
||||
inline float g_OverlayFontSize = 30.0f;
|
||||
|
||||
inline ImFont* g_AwesomeFont = nullptr;
|
||||
inline float g_AwesomeFontSize = 30.0f;
|
||||
}
|
||||
}
|
||||
@@ -3,4 +3,5 @@
|
||||
namespace YimMenu::Fonts
|
||||
{
|
||||
extern const uint8_t MainFont[78948];
|
||||
extern const uint8_t IconFont[1049188];
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -9,7 +9,8 @@
|
||||
namespace YimMenu::Submenus
|
||||
{
|
||||
Debug::Debug() :
|
||||
Submenu::Submenu("Debug")
|
||||
#define ICON_FA_ARROW_RIGHT "\xef\x84\xa0"
|
||||
Submenu::Submenu("Debug", ICON_FA_ARROW_RIGHT)
|
||||
{
|
||||
AddCategory(BuildMiscMenu());
|
||||
AddCategory(BuildGlobalsMenu());
|
||||
|
||||
@@ -9,7 +9,8 @@
|
||||
namespace YimMenu::Submenus
|
||||
{
|
||||
Network::Network() :
|
||||
Submenu::Submenu("Network")
|
||||
#define ICON_FA_ROUTE "\xef\x9b\xbf"
|
||||
Submenu::Submenu("Network", ICON_FA_ROUTE)
|
||||
{
|
||||
// TODO: this needs a rework
|
||||
auto session = std::make_shared<Category>("Session");
|
||||
|
||||
@@ -114,7 +114,8 @@ namespace YimMenu::Submenus
|
||||
}
|
||||
|
||||
Players::Players() :
|
||||
Submenu::Submenu("Players")
|
||||
#define ICON_FA_USERS "\xef\x83\x80"
|
||||
Submenu::Submenu("Players", ICON_FA_USERS)
|
||||
{
|
||||
AddCategory(std::move(BuildInfoMenu()));
|
||||
AddCategory(std::move(BuildTrollMenu()));
|
||||
|
||||
@@ -8,7 +8,8 @@
|
||||
namespace YimMenu::Submenus
|
||||
{
|
||||
Recovery::Recovery() :
|
||||
Submenu::Submenu("Recovery")
|
||||
#define ICON_FA_SACK_DOLLAR "\xef\x93\x80"
|
||||
Submenu::Submenu("Recovery", ICON_FA_SACK_DOLLAR)
|
||||
{
|
||||
auto missions = std::make_shared<Category>("Missions");
|
||||
auto businesses = std::make_shared<Category>("Businesses");
|
||||
@@ -16,7 +17,10 @@ namespace YimMenu::Submenus
|
||||
|
||||
auto generalGroup = std::make_shared<Group>("General");
|
||||
auto businessGroup = std::make_shared<Group>("General");
|
||||
auto casinoGroup = std::make_shared<Group>("Slot Machines");
|
||||
auto casinoSlots = std::make_shared<Group>("Slot Machines");
|
||||
//auto casinoWheel = std::make_shared<Group>("Lucky Wheel");
|
||||
//auto casinoBlackJack = std::make_shared<Group>("Blackjack");
|
||||
//auto casinoRoulette = std::make_shared<Group>("Roulette");
|
||||
|
||||
generalGroup->AddItem(std::make_shared<BoolCommandItem>("playallmissionssolo"_J));
|
||||
generalGroup->AddItem(std::make_shared<CommandItem>("forcelaunchheist"_J));
|
||||
@@ -32,11 +36,12 @@ namespace YimMenu::Submenus
|
||||
businessGroup->AddItem(std::make_shared<ListCommandItem>("businesssafe"_J));
|
||||
businessGroup->AddItem(std::make_shared<CommandItem>("claimsafeearnings"_J));
|
||||
|
||||
casinoGroup->AddItem(std::make_shared<BoolCommandItem>("casinomanipulaterigslotmachines"_J));
|
||||
casinoSlots->AddItem(std::make_shared<BoolCommandItem>("casinomanipulaterigslotmachines"_J));
|
||||
|
||||
|
||||
missions->AddItem(generalGroup);
|
||||
businesses->AddItem(businessGroup);
|
||||
casino->AddItem(casinoGroup);
|
||||
casino->AddItem(casinoSlots);
|
||||
|
||||
AddCategory(std::move(missions));
|
||||
AddCategory(std::move(businesses));
|
||||
|
||||
@@ -8,7 +8,8 @@
|
||||
namespace YimMenu::Submenus
|
||||
{
|
||||
Self::Self() :
|
||||
Submenu::Submenu("Self")
|
||||
#define ICON_FA_USER "\xef\x80\x87"
|
||||
Submenu::Submenu("Self", ICON_FA_USER)
|
||||
{
|
||||
auto main = std::make_shared<Category>("Main");
|
||||
auto globalsGroup = std::make_shared<Group>("Globals");
|
||||
|
||||
@@ -177,6 +177,13 @@ namespace YimMenu::Submenus
|
||||
weaponsGlobalsGroup->AddItem(std::make_shared<BoolCommandItem>("rapidfire"_J));
|
||||
weaponsGlobalsGroup->AddItem(std::make_shared<BoolCommandItem>("infiniteparachutes"_J));
|
||||
weaponsGlobalsGroup->AddItem(std::make_shared<BoolCommandItem>("ExplosiveAmmo"_J));
|
||||
weaponsGlobalsGroup->AddItem(std::make_shared<ConditionalItem>("ExplosiveAmmo"_J, std::make_shared<ListCommandItem>("selectedexplosion"_J)));
|
||||
weaponsGlobalsGroup->AddItem(std::make_shared<ConditionalItem>("ExplosiveAmmo"_J, std::make_shared<FloatCommandItem>("explosiondamage"_J, std::nullopt, false)));
|
||||
weaponsGlobalsGroup->AddItem(std::make_shared<ConditionalItem>("ExplosiveAmmo"_J, std::make_shared<FloatCommandItem>("explosioncamerashake"_J, std::nullopt, false)));
|
||||
weaponsGlobalsGroup->AddItem(std::make_shared<BoolCommandItem>("weapondamage"_J));
|
||||
weaponsGlobalsGroup->AddItem(std::make_shared<ConditionalItem>("weapondamage"_J, std::make_shared<FloatCommandItem>("weapondamagescale"_J, std::nullopt, false)));
|
||||
weaponsGlobalsGroup->AddItem(std::make_shared<BoolCommandItem>("meleedamage"_J));
|
||||
weaponsGlobalsGroup->AddItem(std::make_shared<ConditionalItem>("meleedamage"_J, std::make_shared<FloatCommandItem>("meleedamagescale"_J, std::nullopt, false)));
|
||||
|
||||
weaponsToolsGroup->AddItem(std::make_shared<CommandItem>("giveallweapons"_J));
|
||||
weaponsToolsGroup->AddItem(std::make_shared<CommandItem>("givemaxammo"_J));
|
||||
|
||||
@@ -32,7 +32,8 @@ namespace YimMenu::Submenus
|
||||
};
|
||||
|
||||
Settings::Settings() :
|
||||
Submenu::Submenu("Settings")
|
||||
#define ICON_FA_GEARS "\xef\x80\x93"
|
||||
Submenu::Submenu("Settings", ICON_FA_GEARS)
|
||||
{
|
||||
auto hotkeys = std::make_shared<Category>("Hotkeys");
|
||||
auto gui = std::make_shared<Category>("GUI");
|
||||
|
||||
@@ -166,7 +166,8 @@ namespace YimMenu::Submenus
|
||||
}
|
||||
|
||||
Teleport::Teleport() :
|
||||
Submenu::Submenu("Teleport")
|
||||
#define ICON_FA_TELEPORT "\xef\x8f\x85"
|
||||
Submenu::Submenu("Teleport", ICON_FA_TELEPORT)
|
||||
{
|
||||
auto main = std::make_shared<Category>("Main");
|
||||
auto miscGroup = std::make_shared<Group>("Misc");
|
||||
|
||||
@@ -7,7 +7,8 @@
|
||||
namespace YimMenu::Submenus
|
||||
{
|
||||
Vehicle::Vehicle() :
|
||||
Submenu::Submenu("Vehicle")
|
||||
#define ICON_FA_CAR "\xef\x86\xb9"
|
||||
Submenu::Submenu("Vehicle", ICON_FA_CAR)
|
||||
{
|
||||
auto main = std::make_shared<Category>("Main");
|
||||
|
||||
|
||||
@@ -4,7 +4,8 @@
|
||||
namespace YimMenu::Submenus
|
||||
{
|
||||
World::World() :
|
||||
Submenu::Submenu("World")
|
||||
#define ICON_FA_GLOBE "\xef\x82\xac"
|
||||
Submenu::Submenu("World", ICON_FA_GLOBE)
|
||||
{
|
||||
auto main = std::make_shared<Category>("Main");
|
||||
auto spawnersGroup = std::make_shared<Category>("Spawners");
|
||||
|
||||
Reference in New Issue
Block a user