Guest User

Untitled

a guest
Apr 11th, 2021
461
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.36 KB | None | 0 0
  1. #include "MainScript.hpp"
  2. #include "ScriptCallback.hpp"
  3. #include "Lists.hpp"
  4. #include "Natives.hpp"
  5. #include "Timer.hpp"
  6. #include "Translation.hpp"
  7. #include "CustomText.hpp"
  8. #include "UI/UIManager.hpp"
  9. #include "UI/BoolOption.hpp"
  10. #include "UI/ChooseOption.hpp"
  11. #include "UI/NumberOption.hpp"
  12. #include "UI/RegularOption.hpp"
  13. #include "UI/SubOption.hpp"
  14. #include "UI/RegularSubmenu.hpp"
  15. #include "UI/PlayerSubmenu.hpp"
  16.  
  17.  
  18. #define PICKUP_MONEY_CASE 0xCE6FDD6B
  19. #define PROP_MONEY_BAG_01 0x113FD533
  20. #define MAIN_PERSISTENT 0x5700179C
  21. #define PICKUP_MONEY_VARIABLE 0xEA888D49
  22. #define PICKUP_MONEY_CASE 0xCE6FDD6B
  23.  
  24. namespace Big
  25. {
  26. enum Submenu : std::uint32_t
  27. {
  28. SubmenuHome,
  29. SubmenuSettings,
  30. SubmenuSettingsHeader,
  31. SubmenuSettingsHeaderStaticBackground,
  32. SubmenuSettingsHeaderGradientBackground,
  33. SubmenuSettingsHeaderText,
  34. SubmenuSettingsSubmenuBar,
  35. SubmenuSettingsOption,
  36. SubmenuSettingsFooter,
  37. SubmenuSettingsDescription,
  38. SubmenuSettingsInput,
  39. SubmenuSettingsLanguage,
  40. SubmenuSelectedPlayer,
  41. SubmenuPlayerList,
  42. self,
  43. SubmenuTest
  44. };
  45.  
  46. bool MainScript::IsInitialized()
  47. {
  48. return m_Initialized;
  49. }
  50.  
  51. ScriptType MainScript::GetType()
  52. {
  53. return ScriptType::Game;
  54. }
  55.  
  56.  
  57.  
  58.  
  59.  
  60. bool TinyPlayerBool = false;
  61. void TinyPlayer()
  62. {
  63. PED::SET_PED_CONFIG_FLAG(PLAYER::PLAYER_PED_ID(), 223, TinyPlayerBool);
  64. }
  65. bool GodModeBool = false;
  66. void Godmode()
  67. {
  68. if (GodModeBool)
  69. ENTITY::SET_ENTITY_INVINCIBLE(PLAYER::PLAYER_PED_ID(), true);
  70. else
  71. ENTITY::SET_ENTITY_INVINCIBLE(PLAYER::PLAYER_PED_ID(), false);
  72. }
  73.  
  74.  
  75. bool invisibleBool = false;
  76. void invisible() {
  77. if (invisibleBool)
  78. ENTITY::SET_ENTITY_VISIBLE(PLAYER::PLAYER_PED_ID(), false, 0);
  79. else
  80. ENTITY::SET_ENTITY_VISIBLE(PLAYER::PLAYER_PED_ID(), true, 0);
  81.  
  82. }
  83.  
  84. bool SUPERJUMP = false;
  85. void superjump() {
  86. if (SUPERJUMP) {
  87. MISC::SET_SUPER_JUMP_THIS_FRAME(PLAYER::PLAYER_PED_ID());
  88. MISC::SET_SUPER_JUMP_THIS_FRAME(PLAYER::PLAYER_ID());
  89. }
  90. else {
  91. NULL;
  92. }
  93. }
  94.  
  95. int markedPlayer;
  96. bool moneydropbool = false;
  97. void moneydrop() {
  98. if (moneydropbool)
  99. {
  100. STREAMING::REQUEST_MODEL(0x113FD533);
  101. Vector3 player = ENTITY::GET_ENTITY_COORDS(PLAYER::GET_PLAYER_PED(markedPlayer), true);
  102. if (STREAMING::HAS_MODEL_LOADED(0x113FD533))
  103. {
  104. OBJECT::CREATE_AMBIENT_PICKUP(PICKUP_MONEY_CASE, player.x, player.y, player.z + 1, 0, 2500, 0x113FD533, true, false);
  105. STREAMING::SET_MODEL_AS_NO_LONGER_NEEDED(0x113FD533);
  106. }
  107. }
  108. else {
  109. NULL;
  110. }
  111. }
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118. void MainScript::Initialize()
  119. {
  120. m_Initialized = true;
  121. using namespace UserInterface;
  122.  
  123. g_CustomText->AddText(CONSTEXPR_JOAAT("HUD_JOINING"), "Isn't " BIGBASE_NAME " the fucking best?");
  124. g_CustomText->AddText(CONSTEXPR_JOAAT("HUD_TRANSP"), "Isn't " BIGBASE_NAME " the fucking best?");
  125.  
  126. g_UiManager->AddSubmenu<RegularSubmenu>("Home", SubmenuHome, [](RegularSubmenu* sub)
  127. {
  128. sub->AddOption<SubOption>("Self", nullptr, self);
  129. sub->AddOption<SubOption>(BIG_TRANSLATE("Demo_sub"), nullptr, SubmenuTest);
  130. sub->AddOption<SubOption>("Players", nullptr, SubmenuPlayerList);
  131. sub->AddOption<SubOption>("Settings", nullptr, SubmenuSettings);
  132. sub->AddOption<RegularOption>(std::move(RegularOption("Version").SetRightText(g_GameVariables->m_GameBuild)));
  133.  
  134. sub->AddOption<BoolOption<bool>>("Log Script Events", nullptr, &g_LogScriptEvents, BoolDisplay::OnOff);
  135.  
  136. sub->AddOption<RegularOption>("Unload", "Unload the menu.", []
  137. {
  138. g_Running = false;
  139. });
  140. });
  141.  
  142.  
  143.  
  144.  
  145. g_UiManager->AddSubmenu<RegularSubmenu>("Self", self, [](RegularSubmenu* sub)
  146. {
  147. sub->AddOption<BoolOption<bool>>("Godmode", nullptr, &GodModeBool, BoolDisplay::OnOff, false, [] {Godmode(); });
  148. sub->AddOption<BoolOption<bool>>("Invisible", nullptr, &invisibleBool, BoolDisplay::OnOff, false, [] {invisible(); });
  149. sub->AddOption<BoolOption<bool>>("Super Jump", nullptr, &SUPERJUMP, BoolDisplay::OnOff, false, [] {superjump(); });
  150. sub->AddOption<BoolOption<bool>>("Tiny", nullptr, &TinyPlayerBool, BoolDisplay::OnOff, false, [] {TinyPlayer(); });
  151. });
  152.  
  153.  
  154.  
  155.  
  156. g_UiManager->AddSubmenu<RegularSubmenu>(BIG_TRANSLATE("Demo_sub"), SubmenuTest, [](RegularSubmenu* sub)
  157. {
  158. sub->AddOption<RegularOption>(BIG_TRANSLATE("RegularOption_demo"), "A regular option.", []
  159. {
  160. g_Logger->Info("You pressed the test option");
  161. });
  162.  
  163. static bool testBool1{};
  164. sub->AddOption<BoolOption<bool>>(BIG_TRANSLATE("BoolOnOff_demo"), nullptr, &testBool1, BoolDisplay::OnOff);
  165. static bool testBool2{};
  166. sub->AddOption<BoolOption<bool>>(BIG_TRANSLATE("BoolYesNo_demo"), nullptr, &testBool2, BoolDisplay::YesNo);
  167.  
  168. static std::int32_t int32Test{ 69 };
  169. sub->AddOption<NumberOption<std::int32_t>>("Int32", nullptr, &int32Test, 0, 100);
  170.  
  171. static std::int64_t int64Test{ 420 };
  172. sub->AddOption<NumberOption<std::int64_t>>("Int64", nullptr, &int64Test, 0, 1000, 10);
  173.  
  174. static float floatTest{ 6.9f };
  175. sub->AddOption<NumberOption<float>>("Float", nullptr, &floatTest, 0.f, 10.f, 0.1f, 1);
  176.  
  177. static std::vector<std::uint64_t> vector{ 1, 2, 3 };
  178. static std::size_t vectorPos{};
  179.  
  180. sub->AddOption<ChooseOption<const char*, std::size_t>>("Array", nullptr, &Lists::DemoList, &Lists::DemoListPos);
  181. sub->AddOption<ChooseOption<std::uint64_t, std::size_t>>("Vector", nullptr, &vector, &vectorPos);
  182. });
  183.  
  184. g_UiManager->AddSubmenu<RegularSubmenu>("Settings", SubmenuSettings, [](RegularSubmenu* sub)
  185. {
  186. sub->AddOption<SubOption>("Header", nullptr, SubmenuSettingsHeader);
  187. sub->AddOption<SubOption>("Infobar", nullptr, SubmenuSettingsSubmenuBar);
  188. sub->AddOption<SubOption>("Options", nullptr, SubmenuSettingsOption);
  189. sub->AddOption<SubOption>("Footer", nullptr, SubmenuSettingsFooter);
  190. sub->AddOption<SubOption>("Description", nullptr, SubmenuSettingsDescription);
  191. sub->AddOption<SubOption>("Input", nullptr, SubmenuSettingsInput);
  192. sub->AddOption<SubOption>("Language", nullptr, SubmenuSettingsLanguage);
  193. sub->AddOption<NumberOption<float>>("X Position", nullptr, &g_UiManager->m_PosX, 0.f, 1.f, 0.01f, 2);
  194. sub->AddOption<NumberOption<float>>("Y Position", nullptr, &g_UiManager->m_PosY, 0.f, 1.f, 0.01f, 2);
  195. sub->AddOption<NumberOption<float>>("Width", nullptr, &g_UiManager->m_Width, 0.01f, 1.f, 0.01f, 2);
  196. sub->AddOption<BoolOption<bool>>("Sounds", nullptr, &g_UiManager->m_Sounds, BoolDisplay::OnOff);
  197. sub->AddOption<BoolOption<std::atomic_bool>>("Log Window", nullptr, &g_Settings.m_LogWindow, BoolDisplay::OnOff);
  198. });
  199.  
  200. g_UiManager->AddSubmenu<RegularSubmenu>("Language", SubmenuSettingsLanguage, [](RegularSubmenu* sub)
  201. {
  202. namespace fs = std::filesystem;
  203. fs::directory_iterator dirIt{ g_TranslationManager->GetTranslationDirectory() };
  204. for (auto&& dirEntry : dirIt)
  205. {
  206. if (dirEntry.is_regular_file())
  207. {
  208. auto path = dirEntry.path();
  209. if (path.has_filename())
  210. {
  211. sub->AddOption<RegularOption>(path.stem().u8string().c_str(), nullptr, [=]
  212. {
  213. g_TranslationManager->LoadTranslations(path.stem().u8string().c_str());
  214. });
  215. }
  216. }
  217. }
  218.  
  219. });
  220.  
  221. g_UiManager->AddSubmenu<RegularSubmenu>("Infobar", SubmenuSettingsSubmenuBar, [](RegularSubmenu* sub)
  222. {
  223. sub->AddOption<NumberOption<float>>("Height", nullptr, &g_UiManager->m_SubmenuBarHeight, 0.01f, 0.1f, 0.001f, 3);
  224. sub->AddOption<NumberOption<float>>("Text Size", nullptr, &g_UiManager->m_SubmenuBarTextSize, 0.01f, 1.f, 0.01f, 2);
  225.  
  226. sub->AddOption<NumberOption<std::uint8_t>>("Background R", nullptr, &g_UiManager->m_SubmenuBarBackgroundColor.r, '\0', static_cast<std::uint8_t>(255));
  227. sub->AddOption<NumberOption<std::uint8_t>>("Background G", nullptr, &g_UiManager->m_SubmenuBarBackgroundColor.g, '\0', static_cast<std::uint8_t>(255));
  228. sub->AddOption<NumberOption<std::uint8_t>>("Background B", nullptr, &g_UiManager->m_SubmenuBarBackgroundColor.b, '\0', static_cast<std::uint8_t>(255));
  229. sub->AddOption<NumberOption<std::uint8_t>>("Background A", nullptr, &g_UiManager->m_SubmenuBarBackgroundColor.a, '\0', static_cast<std::uint8_t>(255));
  230. sub->AddOption<NumberOption<std::uint8_t>>("Text R", nullptr, &g_UiManager->m_SubmenuBarTextColor.r, '\0', static_cast<std::uint8_t>(255));
  231. sub->AddOption<NumberOption<std::uint8_t>>("Text G", nullptr, &g_UiManager->m_SubmenuBarTextColor.g, '\0', static_cast<std::uint8_t>(255));
  232. sub->AddOption<NumberOption<std::uint8_t>>("Text B", nullptr, &g_UiManager->m_SubmenuBarTextColor.b, '\0', static_cast<std::uint8_t>(255));
  233. sub->AddOption<NumberOption<std::uint8_t>>("Text A", nullptr, &g_UiManager->m_SubmenuBarTextColor.a, '\0', static_cast<std::uint8_t>(255));
  234. });
  235.  
  236. g_UiManager->AddSubmenu<RegularSubmenu>("Options", SubmenuSettingsOption, [](RegularSubmenu* sub)
  237. {
  238. sub->AddOption<NumberOption<float>>("Height", nullptr, &g_UiManager->m_OptionHeight, 0.01f, 0.1f, 0.001f, 3);
  239. sub->AddOption<NumberOption<float>>("Text Size", nullptr, &g_UiManager->m_OptionTextSize, 0.01f, 1.f, 0.01f, 2);
  240.  
  241. sub->AddOption<NumberOption<std::uint8_t>>("Selected Background R", nullptr, &g_UiManager->m_OptionSelectedBackgroundColor.r, '\0', static_cast<std::uint8_t>(255));
  242. sub->AddOption<NumberOption<std::uint8_t>>("Selected Background G", nullptr, &g_UiManager->m_OptionSelectedBackgroundColor.g, '\0', static_cast<std::uint8_t>(255));
  243. sub->AddOption<NumberOption<std::uint8_t>>("Selected Background B", nullptr, &g_UiManager->m_OptionSelectedBackgroundColor.b, '\0', static_cast<std::uint8_t>(255));
  244. sub->AddOption<NumberOption<std::uint8_t>>("Selected Background A", nullptr, &g_UiManager->m_OptionSelectedBackgroundColor.a, '\0', static_cast<std::uint8_t>(255));
  245. sub->AddOption<NumberOption<std::uint8_t>>("Unselected Background R", nullptr, &g_UiManager->m_OptionUnselectedBackgroundColor.r, '\0', static_cast<std::uint8_t>(255));
  246. sub->AddOption<NumberOption<std::uint8_t>>("Unselected Background G", nullptr, &g_UiManager->m_OptionUnselectedBackgroundColor.g, '\0', static_cast<std::uint8_t>(255));
  247. sub->AddOption<NumberOption<std::uint8_t>>("Unselected Background B", nullptr, &g_UiManager->m_OptionUnselectedBackgroundColor.b, '\0', static_cast<std::uint8_t>(255));
  248. sub->AddOption<NumberOption<std::uint8_t>>("Unselected Background A", nullptr, &g_UiManager->m_OptionUnselectedBackgroundColor.a, '\0', static_cast<std::uint8_t>(255));
  249.  
  250. sub->AddOption<NumberOption<std::uint8_t>>("Selected Text R", nullptr, &g_UiManager->m_OptionSelectedTextColor.r, '\0', static_cast<std::uint8_t>(255));
  251. sub->AddOption<NumberOption<std::uint8_t>>("Selected Text G", nullptr, &g_UiManager->m_OptionSelectedTextColor.g, '\0', static_cast<std::uint8_t>(255));
  252. sub->AddOption<NumberOption<std::uint8_t>>("Selected Text B", nullptr, &g_UiManager->m_OptionSelectedTextColor.b, '\0', static_cast<std::uint8_t>(255));
  253. sub->AddOption<NumberOption<std::uint8_t>>("Selected Text A", nullptr, &g_UiManager->m_OptionSelectedTextColor.a, '\0', static_cast<std::uint8_t>(255));
  254. sub->AddOption<NumberOption<std::uint8_t>>("Unselected Text R", nullptr, &g_UiManager->m_OptionUnselectedTextColor.r, '\0', static_cast<std::uint8_t>(255));
  255. sub->AddOption<NumberOption<std::uint8_t>>("Unselected Text G", nullptr, &g_UiManager->m_OptionUnselectedTextColor.g, '\0', static_cast<std::uint8_t>(255));
  256. sub->AddOption<NumberOption<std::uint8_t>>("Unselected Text B", nullptr, &g_UiManager->m_OptionUnselectedTextColor.b, '\0', static_cast<std::uint8_t>(255));
  257. sub->AddOption<NumberOption<std::uint8_t>>("Unselected Text A", nullptr, &g_UiManager->m_OptionUnselectedTextColor.a, '\0', static_cast<std::uint8_t>(255));
  258. });
  259.  
  260. g_UiManager->AddSubmenu<RegularSubmenu>("Footer", SubmenuSettingsFooter, [](RegularSubmenu* sub)
  261. {
  262. sub->AddOption<NumberOption<float>>("Height", nullptr, &g_UiManager->m_FooterHeight, 0.01f, 0.1f, 0.001f, 3);
  263. sub->AddOption<NumberOption<float>>("Sprite Size", nullptr, &g_UiManager->m_FooterSpriteSize, 0.01f, 1.f, 0.001f, 3);
  264.  
  265. sub->AddOption<NumberOption<std::uint8_t>>("Background R", nullptr, &g_UiManager->m_FooterBackgroundColor.r, '\0', static_cast<std::uint8_t>(255));
  266. sub->AddOption<NumberOption<std::uint8_t>>("Background G", nullptr, &g_UiManager->m_FooterBackgroundColor.g, '\0', static_cast<std::uint8_t>(255));
  267. sub->AddOption<NumberOption<std::uint8_t>>("Background B", nullptr, &g_UiManager->m_FooterBackgroundColor.b, '\0', static_cast<std::uint8_t>(255));
  268. sub->AddOption<NumberOption<std::uint8_t>>("Background A", nullptr, &g_UiManager->m_FooterBackgroundColor.a, '\0', static_cast<std::uint8_t>(255));
  269. sub->AddOption<NumberOption<std::uint8_t>>("Sprite R", nullptr, &g_UiManager->m_FooterSpriteColor.r, '\0', static_cast<std::uint8_t>(255));
  270. sub->AddOption<NumberOption<std::uint8_t>>("Sprite G", nullptr, &g_UiManager->m_FooterSpriteColor.g, '\0', static_cast<std::uint8_t>(255));
  271. sub->AddOption<NumberOption<std::uint8_t>>("Sprite B", nullptr, &g_UiManager->m_FooterSpriteColor.b, '\0', static_cast<std::uint8_t>(255));
  272. sub->AddOption<NumberOption<std::uint8_t>>("Sprite A", nullptr, &g_UiManager->m_FooterSpriteColor.a, '\0', static_cast<std::uint8_t>(255));
  273. });
  274.  
  275. g_UiManager->AddSubmenu<RegularSubmenu>("Header", SubmenuSettingsHeader, [](RegularSubmenu* sub)
  276. {
  277. sub->AddOption<ChooseOption<const char*, std::size_t>>("Type", nullptr, &Lists::HeaderTypesFrontend, &Lists::HeaderTypesPosition, true, []
  278. {
  279. g_UiManager->m_HeaderType = Lists::HeaderTypesBackend[Lists::HeaderTypesPosition];
  280. });
  281.  
  282. switch (g_UiManager->m_HeaderType)
  283. {
  284. case HeaderType::Static:
  285. sub->AddOption<SubOption>("Background", nullptr, SubmenuSettingsHeaderStaticBackground);
  286. break;
  287. case HeaderType::Gradient:
  288. sub->AddOption<SubOption>("Gradient", nullptr, SubmenuSettingsHeaderGradientBackground);
  289. break;
  290. }
  291.  
  292. sub->AddOption<SubOption>("Text", nullptr, SubmenuSettingsHeaderText);
  293. sub->AddOption<NumberOption<float>>("Height", nullptr, &g_UiManager->m_HeaderHeight, 0.01f, 0.2f, 0.001f, 3);
  294. });
  295.  
  296. g_UiManager->AddSubmenu<RegularSubmenu>("Header Background", SubmenuSettingsHeaderStaticBackground, [](RegularSubmenu* sub)
  297. {
  298. sub->AddOption<NumberOption<std::uint8_t>>("R", nullptr, &g_UiManager->m_HeaderBackgroundColor.r, '\0', static_cast<std::uint8_t>(255));
  299. sub->AddOption<NumberOption<std::uint8_t>>("G", nullptr, &g_UiManager->m_HeaderBackgroundColor.g, '\0', static_cast<std::uint8_t>(255));
  300. sub->AddOption<NumberOption<std::uint8_t>>("B", nullptr, &g_UiManager->m_HeaderBackgroundColor.b, '\0', static_cast<std::uint8_t>(255));
  301. sub->AddOption<NumberOption<std::uint8_t>>("A", nullptr, &g_UiManager->m_HeaderBackgroundColor.a, '\0', static_cast<std::uint8_t>(255));
  302. });
  303.  
  304. g_UiManager->AddSubmenu<RegularSubmenu>("Header Gradient", SubmenuSettingsHeaderGradientBackground, [](RegularSubmenu* sub)
  305. {
  306. sub->AddOption<BoolOption<bool>>("Transparent", nullptr, &g_UiManager->m_HeaderGradientTransparent, BoolDisplay::YesNo);
  307. sub->AddOption<BoolOption<bool>>("Flip", nullptr, &g_UiManager->m_HeaderGradientFlip, BoolDisplay::YesNo);
  308.  
  309. sub->AddOption<NumberOption<std::uint8_t>>("R1", nullptr, &g_UiManager->m_HeaderGradientColorLeft.r, '\0', static_cast<std::uint8_t>(255));
  310. sub->AddOption<NumberOption<std::uint8_t>>("G1", nullptr, &g_UiManager->m_HeaderGradientColorLeft.g, '\0', static_cast<std::uint8_t>(255));
  311. sub->AddOption<NumberOption<std::uint8_t>>("B1", nullptr, &g_UiManager->m_HeaderGradientColorLeft.b, '\0', static_cast<std::uint8_t>(255));
  312. sub->AddOption<NumberOption<std::uint8_t>>("A1", nullptr, &g_UiManager->m_HeaderGradientColorLeft.a, '\0', static_cast<std::uint8_t>(255));
  313. sub->AddOption<NumberOption<std::uint8_t>>("R2", nullptr, &g_UiManager->m_HeaderGradientColorRight.r, '\0', static_cast<std::uint8_t>(255));
  314. sub->AddOption<NumberOption<std::uint8_t>>("G2", nullptr, &g_UiManager->m_HeaderGradientColorRight.g, '\0', static_cast<std::uint8_t>(255));
  315. sub->AddOption<NumberOption<std::uint8_t>>("B2", nullptr, &g_UiManager->m_HeaderGradientColorRight.b, '\0', static_cast<std::uint8_t>(255));
  316. sub->AddOption<NumberOption<std::uint8_t>>("A2", nullptr, &g_UiManager->m_HeaderGradientColorRight.a, '\0', static_cast<std::uint8_t>(255));
  317. });
  318.  
  319. g_UiManager->AddSubmenu<RegularSubmenu>("Header Text", SubmenuSettingsHeaderText, [](RegularSubmenu* sub)
  320. {
  321. sub->AddOption<BoolOption<bool>>("Enable", nullptr, &g_UiManager->m_HeaderText, BoolDisplay::OnOff);
  322. sub->AddOption<NumberOption<float>>("Size", nullptr, &g_UiManager->m_HeaderTextSize, 0.1f, 2.f, 0.01f, 2);
  323. sub->AddOption<NumberOption<std::uint8_t>>("R", nullptr, &g_UiManager->m_HeaderTextColor.r, '\0', static_cast<std::uint8_t>(255));
  324. sub->AddOption<NumberOption<std::uint8_t>>("G", nullptr, &g_UiManager->m_HeaderTextColor.g, '\0', static_cast<std::uint8_t>(255));
  325. sub->AddOption<NumberOption<std::uint8_t>>("B", nullptr, &g_UiManager->m_HeaderTextColor.b, '\0', static_cast<std::uint8_t>(255));
  326. sub->AddOption<NumberOption<std::uint8_t>>("A", nullptr, &g_UiManager->m_HeaderTextColor.a, '\0', static_cast<std::uint8_t>(255));
  327. });
  328.  
  329. g_UiManager->AddSubmenu<RegularSubmenu>("Description", SubmenuSettingsDescription, [](RegularSubmenu* sub)
  330. {
  331. sub->AddOption<NumberOption<float>>("Padding", "Padding before the description rect.", &g_UiManager->m_DescriptionHeightPadding, 0.01f, 1.f, 0.001f,
  332. 3);
  333. sub->AddOption<NumberOption<float>>("Height", "Size of the description rect.", &g_UiManager->m_DescriptionHeight, 0.01f, 1.f, 0.001f, 3);
  334. sub->AddOption<NumberOption<float>>("Text Size", "Size of the description text.", &g_UiManager->m_DescriptionTextSize, 0.1f, 2.f, 0.01f, 2);
  335. });
  336.  
  337. g_UiManager->AddSubmenu<RegularSubmenu>("Input", SubmenuSettingsInput, [](RegularSubmenu* sub)
  338. {
  339. sub->AddOption<NumberOption<std::int32_t>>("Open Delay", nullptr, &g_UiManager->m_OpenDelay, 10, 1000, 10, 0);
  340. sub->AddOption<NumberOption<std::int32_t>>("Back Delay", nullptr, &g_UiManager->m_BackDelay, 10, 1000, 10, 0);
  341. sub->AddOption<NumberOption<std::int32_t>>("Enter Delay", nullptr, &g_UiManager->m_EnterDelay, 10, 1000, 10, 0);
  342. sub->AddOption<NumberOption<std::int32_t>>("Vertical Delay", nullptr, &g_UiManager->m_VerticalDelay, 10, 1000, 10, 0);
  343. sub->AddOption<NumberOption<std::int32_t>>("Horizontal Delay", nullptr, &g_UiManager->m_HorizontalDelay, 10, 1000, 10, 0);
  344. });
  345.  
  346. g_UiManager->AddSubmenu<RegularSubmenu>("Players", SubmenuPlayerList, [](RegularSubmenu* sub)
  347. {
  348. for (std::uint32_t i = 0; i < 32; ++i)
  349. {
  350. if (auto ped = PLAYER::GET_PLAYER_PED_SCRIPT_INDEX(i))
  351. {
  352. sub->AddOption<SubOption>(PLAYER::GET_PLAYER_NAME(i), nullptr, SubmenuSelectedPlayer, [=]
  353. {
  354. g_SelectedPlayer = i;
  355. });
  356. }
  357. }
  358. });
  359.  
  360. g_UiManager->AddSubmenu<PlayerSubmenu>(&g_SelectedPlayer, SubmenuSelectedPlayer, [](PlayerSubmenu* sub)
  361. {
  362. sub->AddOption<RegularOption>(BIG_TRANSLATE("Drop Money Once"), "Drop 1 Money Bag", []
  363. {
  364. STREAMING::REQUEST_MODEL(0x113FD533);
  365. Vector3 player = ENTITY::GET_ENTITY_COORDS(PLAYER::GET_PLAYER_PED(markedPlayer), true);
  366. if (STREAMING::HAS_MODEL_LOADED(0x113FD533));
  367. {
  368. OBJECT::CREATE_AMBIENT_PICKUP(PICKUP_MONEY_CASE, player.x, player.y, player.z + 2, 0, 2500, 0x113FD533, true, false);
  369. STREAMING::SET_MODEL_AS_NO_LONGER_NEEDED(0x113FD533);
  370. }
  371. g_Logger->Info("Money spawned on " + g_SelectedPlayer);
  372. });
  373. });
  374. }
  375.  
  376. void MainScript::Destroy()
  377. {
  378. g_UiManager.reset();
  379. }
  380.  
  381. void MainScript::Tick()
  382. {
  383. Godmode();
  384. moneydrop();
  385. g_UiManager->OnTick();
  386. }
  387. }
  388.  
Add Comment
Please, Sign In to add comment