diff --git a/resource/common/locale/English.json b/resource/common/locale/English.json index 4e8bdfb..076c8b8 100644 --- a/resource/common/locale/English.json +++ b/resource/common/locale/English.json @@ -70,7 +70,7 @@ "QuickWepSpawnerCMDText": "Spawn weapons by typing their model names.\nExample: wep (wep_name)", "ResetConfig": "Reset config", "ResetConfigMSG": "Config has been reset. Restart the game for it to take effect.", - "ResetSize": "Reset sonfig", + "ResetSize": "Reset size", "SetHealthCMD": "Set health", "SetHealthCMDText": "Set player health.\nExample: hp (health).", "SetTimeCMD": "Set time", @@ -221,16 +221,37 @@ "WeaponIconPosY": "Weapon icon posY", "WhiteScanlines": "White scanlines" }, + "Weapon": { + "Ammo": "Ammo", + "DropAll": "Drop all", + "DropCurrent": "Drop current", + "DropWeapon": "Drop weapon", + "DualWeild": "Dual weild", + "DualWeildText": "Dual wield pistol, shawoff, uzi, tec9\n(Other weapons don't work)", + "FastAim": "Fast aim", + "FastAimText": "Enables aim assist on keyboard\n\nQ = left E = right\n\nPress Q and E to switch targets.\nMoving mouse removes the target!", + "FastReload": "Fast reload", + "HugeDamage": "Huge damage", + "HugeDamageText": "Also enable 'Long range' if weapon range is short", + "InfiniteAmmo": "Infinite ammo", + "LongRange": "Long range", + "MoveWhenAiming": "Move when aiming", + "MoveWhenFiring": "Move when firing", + "RapidFire": "Rapid fire", + "WeaponTweaksText": "Weapon tweaks apply globally\nto every ped weapon type" + }, "Window": { "AddNew": "Add new", "AnimationPage": "Animation", "CheckboxTab": "Checkboxes", "GamePage": "Game", + "Info": "Info", "MenuPage": "Menu", "MenusTab": "Menus", "PedPage": "Ped", "PlayerPage": "Player", "Search": "Search", + "SpawnTab": "Spawn", "TeleportPage": "Teleport", "VehiclePage": "Vehicle", "VisualPage": "Visual", diff --git a/src/cheatmenu.cpp b/src/cheatmenu.cpp index 4326d16..ee4c0c9 100644 --- a/src/cheatmenu.cpp +++ b/src/cheatmenu.cpp @@ -174,6 +174,25 @@ void CheatMenu::ProcessPages() } } +void CheatMenu::GenHeaderList() +{ + CheatMenu::m_headerList = + { + {TEXT_S("Window.TeleportPage"), &Teleport::ShowPage, eMenuPages::TELEPORT}, + {TEXT_S("Window.PlayerPage"), &Player::ShowPage, eMenuPages::PLAYER}, + {TEXT_S("Window.PedPage"), &Ped::ShowPage, eMenuPages::PED}, + {TEXT_S("Window.AnimationPage"), &Animation::ShowPage, eMenuPages::ANIMATION}, + {TEXT_S("Window.VehiclePage"), &Vehicle::ShowPage, eMenuPages::VEHICLE}, + {TEXT_S("Window.WeaponPage"), &Weapon::ShowPage, eMenuPages::WEAPON}, + {TEXT_S("Window.GamePage"), &Game::ShowPage, eMenuPages::GAME}, + {TEXT_S("Window.VisualPage"), &Visual::ShowPage, eMenuPages::VISUAL}, + {TEXT_S("Window.MenuPage"), &Menu::ShowPage, eMenuPages::MENU}, + {"Welcome", &ShowWelcomePage, eMenuPages::WELCOME, true}, + {"Update", &ShowUpdatePage, eMenuPages::UPDATE, true}, + {"Anniversary", &ShowAnniversaryPage, eMenuPages::ANNIVERSARY, true} + }; +} + void CheatMenu::Init() { if (!D3dHook::InjectHook(DrawWindow)) @@ -191,21 +210,7 @@ void CheatMenu::Init() Locale::Init("CheatMenu/locale/"); - CheatMenu::m_headerList = - { - {TEXT_S("Window.TeleportPage"), &Teleport::ShowPage, eMenuPages::TELEPORT}, - {TEXT_S("Window.PlayerPage"), &Player::ShowPage, eMenuPages::PLAYER}, - {TEXT_S("Window.PedPage"), &Ped::ShowPage, eMenuPages::PED}, - {TEXT_S("Window.AnimationPage"), &Animation::ShowPage, eMenuPages::ANIMATION}, - {TEXT_S("Window.VehiclePage"), &Vehicle::ShowPage, eMenuPages::VEHICLE}, - {TEXT_S("Window.WeaponPage"), &Weapon::ShowPage, eMenuPages::WEAPON}, - {TEXT_S("Window.GamePage"), &Game::ShowPage, eMenuPages::GAME}, - {TEXT_S("Window.VisualPage"), &Visual::ShowPage, eMenuPages::VISUAL}, - {TEXT_S("Window.MenuPage"), &Menu::ShowPage, eMenuPages::MENU}, - {"Welcome", &ShowWelcomePage, eMenuPages::WELCOME, true}, - {"Update", &ShowUpdatePage, eMenuPages::UPDATE, true}, - {"Anniversary", &ShowAnniversaryPage, eMenuPages::ANNIVERSARY, true} - }; + CheatMenu::GenHeaderList(); // Init menu parts Animation::Init(); diff --git a/src/cheatmenu.h b/src/cheatmenu.h index 62b0369..47a4e69 100644 --- a/src/cheatmenu.h +++ b/src/cheatmenu.h @@ -45,4 +45,5 @@ public: static void Init(); static void ResetMenuSize(); + static void GenHeaderList(); }; diff --git a/src/menu.cpp b/src/menu.cpp index 8f51545..f447aa1 100644 --- a/src/menu.cpp +++ b/src/menu.cpp @@ -374,7 +374,11 @@ void Menu::ShowPage() { if (Ui::ListBox(TEXT("Menu.Language"), vec, selected)) { - if (Locale::SetLocale(selected) != Locale::eReturnCodes::SUCCESS) + if (Locale::SetLocale(selected) == Locale::eReturnCodes::SUCCESS) + { + CheatMenu::GenHeaderList(); + } + else { SetHelpMessage(TEXT("Menu.LanguageChangeFailed")); } diff --git a/src/version.h b/src/version.h index c290a2a..e4c4689 100644 --- a/src/version.h +++ b/src/version.h @@ -2,5 +2,5 @@ #define MENU_NAME "Cheat Menu" #define MENU_VERSION_NUMBER "3.2" #define MENU_VERSION MENU_VERSION_NUMBER"-beta" -#define BUILD_NUMBER "20220218" +#define BUILD_NUMBER "20220221" #define MENU_TITLE MENU_NAME " v" MENU_VERSION diff --git a/src/weapon.cpp b/src/weapon.cpp index 64eab08..e6f7a01 100644 --- a/src/weapon.cpp +++ b/src/weapon.cpp @@ -231,7 +231,7 @@ void Weapon::ShowPage() uint hplayer = CPools::GetPedRef(pPlayer); ImGui::Spacing(); - if (ImGui::Button("Drop weapon", Ui::GetSize(3))) + if (ImGui::Button(TEXT("Weapon.DropWeapon"), Ui::GetSize(3))) { float x, y, z; Command(hplayer, 0.0, 3.0, 0.0, &x, &y, &z); @@ -260,13 +260,13 @@ void Weapon::ShowPage() } } ImGui::SameLine(); - if (ImGui::Button("Remove all", Ui::GetSize(3))) + if (ImGui::Button(TEXT("Weapon.DropAll"), Ui::GetSize(3))) { pPlayer->ClearWeapons(); } ImGui::SameLine(); - if (ImGui::Button("Remove current", Ui::GetSize(3))) + if (ImGui::Button(TEXT("Weapon.DropCurrent"), Ui::GetSize(3))) { #ifdef GTASA Command(hplayer, pPlayer->m_aWeapons[pPlayer->m_nActiveWeaponSlot].m_nType); @@ -280,19 +280,18 @@ void Weapon::ShowPage() if (ImGui::BeginTabBar("Ped", ImGuiTabBarFlags_NoTooltip + ImGuiTabBarFlags_FittingPolicyScroll)) { - if (ImGui::BeginTabItem("Checkboxes")) + if (ImGui::BeginTabItem(TEXT("Window.CheckboxTab"))) { ImGui::Spacing(); ImGui::BeginChild("CheckboxesChild"); ImGui::Spacing(); ImGui::SameLine(); - ImGui::Text("Info"); - Ui::ShowTooltip("Weapon tweaks apply globally\nto every ped weapon type"); + ImGui::Text(TEXT("Window.Info")); + Ui::ShowTooltip(TEXT("Weapon.WeaponTweaksText")); ImGui::Columns(2, 0, false); #ifdef GTASA - Ui::CheckboxWithHint("Fast aim", &m_bAutoAim, "Enables aim assist on keyboard\n\nQ = left E = right\n\nPress Q and E to switch targets.\nMoving mouse removes the target!"); - if (Ui::CheckboxWithHint("Dual wield", &m_bDualWeild, - "Dual wield pistol, shawoff, uzi, tec9\n(Other weapons don't work)")) + Ui::CheckboxWithHint(TEXT("Weapon.FastAim"), &m_bAutoAim, TEXT("Weapon.FastAimText")); + if (Ui::CheckboxWithHint(TEXT("Weapon.DualWeild"), &m_bDualWeild,TEXT("Weapon.DualWeildText"))) { if (!m_bDualWeild) { @@ -300,26 +299,26 @@ void Weapon::ShowPage() } } #endif - if (Ui::CheckboxWithHint("Huge damage", &m_bHugeDamage, "Also enable 'Long range' if weapon range is short")) + if (Ui::CheckboxWithHint(TEXT("Weapon.HugeDamage"), &m_bHugeDamage, TEXT("Weapon.HugeDamageText"))) { if (!m_bHugeDamage) { CWeaponInfo::LoadWeaponData(); } } - if (Ui::CheckboxWithHint("Fast reload", &m_bFastReload)) + if (Ui::CheckboxWithHint(TEXT("Weapon.FastReload"), &m_bFastReload)) { Command(hplayer, m_bFastReload); } #ifdef GTASA - Ui::CheckboxAddress("Infinite ammo", 0x969178); + Ui::CheckboxAddress(TEXT("Weapon.InfiniteAmmo"), 0x969178); ImGui::NextColumn(); #else ImGui::NextColumn(); - Ui::CheckboxWithHint("Infinite ammo", &m_bInfiniteAmmo); + Ui::CheckboxWithHint(TEXT("Weapon.InfiniteAmmo"), &m_bInfiniteAmmo); #endif - if (Ui::CheckboxWithHint("Long range", &m_bLongRange)) + if (Ui::CheckboxWithHint(TEXT("Weapon.LongRange"), &m_bLongRange)) { if (!m_bLongRange) { @@ -327,21 +326,21 @@ void Weapon::ShowPage() } } #ifdef GTASA - if (Ui::CheckboxWithHint("Move when aiming", &m_bMoveAim)) + if (Ui::CheckboxWithHint(TEXT("Weapon.MoveWhenAiming"), &m_bMoveAim)) { if (!m_bMoveAim) { CWeaponInfo::LoadWeaponData(); } } - if (Ui::CheckboxWithHint("Move when firing", &m_bMoveFire)) + if (Ui::CheckboxWithHint(TEXT("Weapon.MoveWhenFiring"), &m_bMoveFire)) { if (!m_bMoveFire) { CWeaponInfo::LoadWeaponData(); } } - if (Ui::CheckboxWithHint("Rapid fire", &m_bRapidFire)) + if (Ui::CheckboxWithHint(TEXT("Weapon.RapidFire"), &m_bRapidFire)) { if (!m_bRapidFire) { @@ -353,10 +352,10 @@ void Weapon::ShowPage() ImGui::EndChild(); ImGui::EndTabItem(); } - if (ImGui::BeginTabItem("Spawn")) + if (ImGui::BeginTabItem(TEXT("Window.SpawnTab"))) { ImGui::Spacing(); - if (ImGui::InputInt("Ammo", &m_nAmmoCount)) + if (ImGui::InputInt(TEXT("Weapon.Ammo"), &m_nAmmoCount)) { m_nAmmoCount = (m_nAmmoCount < 0) ? 0 : m_nAmmoCount; m_nAmmoCount = (m_nAmmoCount > 99999) ? 99999 : m_nAmmoCount; @@ -378,21 +377,21 @@ void Weapon::ShowPage() ImGui::EndTabItem(); } #ifdef GTASA - if (ImGui::BeginTabItem("Gang weapon editor")) + if (ImGui::BeginTabItem(TEXT("Weapon.GangWeaponEditor"))) { ImGui::Spacing(); - Ui::ListBox("Select gang", m_GangList, m_nSelectedGang); + Ui::ListBox(TEXT("Weapon.SelectGang"), m_GangList, m_nSelectedGang); ImGui::Columns(3, 0, false); - ImGui::RadioButton("Weap 1", &m_nSelectedWeapon, 0); + ImGui::RadioButton(TEXT("Weapon.Weapon1"), &m_nSelectedWeapon, 0); ImGui::NextColumn(); - ImGui::RadioButton("Weap 2", &m_nSelectedWeapon, 1); + ImGui::RadioButton(TEXT("Weapon.Weapon2"), &m_nSelectedWeapon, 1); ImGui::NextColumn(); - ImGui::RadioButton("Weap 3", &m_nSelectedWeapon, 2); + ImGui::RadioButton(TEXT("Weapon.Weapon3"), &m_nSelectedWeapon, 2); ImGui::Columns(1); ImGui::Spacing(); - ImGui::Text("Current weapon: %s", + ImGui::Text(TEXT("Weapon.CurrentWeapon"), m_WeaponData.m_pJson->m_Data[std::to_string(m_nGangWeaponList[m_nSelectedGang][m_nSelectedWeapon])].get< std::string>().c_str()); ImGui::Spacing();