Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include "Natives.h"
- #include "NativeDLL.h"
- #pragma region Definitions
- #define TOC 0x835B0530 //idk if is TOC really,if not please comment
- #define OBJECT_ID_FREED_EVENT 0x835DB1F0
- #define OBJECT_ID_REQUEST_EVENT 0x835DB328
- #define ARRAY_DATA_VERIFY_EVENT 0x835DB290
- #define SCRIPT_ARRAY_DATA_VERIFY_EVENT 0x830EA558
- #define REQUEST_CONTROL_EVENT 0x830D7330
- #define GIVE_CONTROL_EVENT 0x830D77A8
- #define WEAPON_DAMAGE_EVENT 0x830F5318
- #define REQUEST_PICKUP_EVENT 0x830D7D78
- #define REQUEST_MAP_PICKUP_EVENT 0x830F1FC0
- #define GAME_CLOCK_EVENT 0x830D80B8
- #define GAME_WEATHER_EVENT 0x830D8178
- #define RESPAWN_PLAYER_PED_EVENT 0x830D8380
- #define GIVE_WEAPON_EVENT 0x830D8400
- #define REMOVE_WEAPON_EVENT 0x830D84F8
- #define REMOVE_ALL_WEAPONS_EVENT 0x830D8600
- #define VEHICLE_COMPONENT_CONTROL_EVENT 0x830D8720
- #define FIRE_EVENT 0x830D8B38
- #define EXPLOSION_EVENT 0x830F2BB8
- #define START_PROJECTILE_EVENT 0x830D8CE0
- #define ALTER_WANTED_LEVEL_EVENT 0x830D9010
- #define CHANGE_RADIO_STATION_EVENT 0x830D91F0
- #define RAGDOLL_REQUEST_EVENT 0x830D9380
- #define PLAYER_TAUNT_EVENT 0x830D94A0
- #define PLAYER_CARD_STAT_EVENT 0x830D97F8
- #define DOOR_BREAK_EVENT 0x830D9BA8
- #define SCRIPTED_GAME_EVENT 0x830D9E90
- #define REMOTE_SCRIPT_INFO_EVENT 0x830E3FE0
- #define REMOTE_SCRIPT_LEAVE_EVENT 0x830DA0E8
- #define MARK_AS_NO_LONGER_NEEDED_EVENT 0x830DA378
- #define CONVERT_TO_SCRIPT_ENTITY_EVENT 0x830EBEB0
- #define SCRIPT_WORLD_STATE_EVENT 0x830DA5E8
- #define INCIDENT_ENTITY_EVENT 0x830DA710
- #define CLEAR_AREA_EVENT 0x830DA8F0
- #define NETWORK_REQUEST_SYNCED_SCENE_EVENT 0x830DAAA8
- #define NETWORK_START_SYNCED_SCENE_EVENT 0x830DAB60
- #define NETWORK_UPDATE_SYNCED_SCENE_EVENT 0x830DADC8
- #define NETWORK_STOP_SYNCED_SCENE_EVENT 0x830DAC90
- #define GIVE_PED_SCRIPTED_TASK_EVENT 0x830EC1F0
- #define GIVE_PED_SEQUENCE_TASK_EVENT 0x830EC408
- #define NETWORK_CLEAR_PED_TASKS_EVENT 0x830DB100
- #define NETWORK_START_PED_ARREST_EVENT 0x830DB250
- #define NETWORK_START_PED_UNCUFF_EVENT 0x830DB2F0
- #define NETWORK_SOUND_CAR_HORN_EVENT 0x830DB390
- #define NETWORK_ENTITY_AREA_STATUS_EVENT 0x830DB598
- #define NETWORK_GARAGE_OCCUPIED_STATUS_EVENT 0x830DB798
- #define PED_CONVERSATION_NE_EVENT 0x830D9908
- #define SCRIPT_ENTITY_STATE_CHANGE_EVENT 0x830DC448
- #define NETWORK_PLAY_SOUND_EVENT 0x830DC958
- #define NETWORK_STOP_SOUND_EVENT 0x830DC9D8
- #define NETWORK_BANK_REQUEST_EVENT 0x830DCB48
- #define REQUEST_DOOR_EVENT 0x830DCD78
- #define NETWORK_TRAIN_REQUEST_EVENT 0x830DCF80
- #define NETWORK_TRAIN_REPORT_EVENT 0x830DD0C0
- #define NETWORK_INCREMENT_STAT_EVENT 0x830DD390
- #define REQUEST_PHONE_EXPLOSION_EVENT 0x830DD498
- #define REQUEST_DETACHMENT_EVENT 0x830DD5A8
- #define KICK_VOTES_EVENT 0x830DD6A0
- #define GIVE_PICKUP_REWARDS_EVENT 0x830DD840
- #define NETWORK_CRC_HASH_CHECK_EVENT 0x830DD950
- #define BLOW_UP_VEHICLE_EVENT 0x830DDBE8 //possible protection of give badsport loop (blow-up cars)
- #define NETWORK_RESPONDED_TO_THREAT_EVENT 0x830DE170
- #define PICKUP_DESTROYED_EVENT 0x830E7C88
- #define UPDATE_PLAYER_SCARS_EVENT 0x830DE5E8
- #define NETWORK_CHECK_EXE_SIZE_EVENT 0x830DE6E0
- #define NETWORK_PTFX_EVENT 0x830DEB58
- #define NETWORK_PED_SEEN_DEAD_PED_EVENT 0x830DEC48
- #define REMOVE_STICKY_BOMB_EVENT 0x830DEEB0
- #define NETWORK_CHECK_CODE_CRCS_EVENT 0x830DE7F0
- #define INFORM_SILENCED_GUNSHOT_EVENT 0x830DF160
- #define PED_PLAY_PAIN_EVENT 0x830DF328
- #define CACHE_PLAYER_HEAD_END_DATA_EVENT 0x830DF418
- #define REMOVE_PED_FROM_PEDGROUP_EVENT 0x830E8C98
- #define REPORT_CASH_SPAWN_EVENT 0x830DF6D0
- #define OFFHOST_KICK_PROTECTION 0x8308AA78 //thanks to Subliminal Dev for subliminal source 0x830D9E90
- #define ADMIN_KICK_PROTECTION 0x83FC7889 //thanks to kiwi2014566 for enable is 0x60000000
- #define MODIFY_VEHICLE_LOCK_WORD_STATE_DATA 0x830DD278 //thanks BModzMasterTM,I already had this but I did not know it was a protection event xD
- #define NETWORK_SHOUT_TARGET_POSITION 0x830DE400 //thanks BModzMasterTM,I already had this but I did not know it was a protection event xD
- #define NETWORK_SPECIAL_FIRE_EQUIPPED_WEAPON 0x830DDF80
- #define VOICE_DRIVEN_MOUTH_MOVEMENT_FINISHED_EVENT 0x830DB430
- #define ADMIN_KICK_PROTECTION_2 0x830C8F2C //thanks to BModzMasterTM,enable with NOP
- #define GHOST_MODE_1 0x8300FC4C //thanks to RF0oDxM0Dz
- #define GHOST_MODE_2 0x8300FC50 //thanks to RF0oDxM0Dz
- #define DISABLE_GHOST_MODE_1 0x485CAF6D //thanks to RF0oDxM0Dz
- #define DISABLE_GHOST_MODE_2 0x4B608089 //thanks to RF0oDxM0Dz
- #define DETROYING_EVENT 0x830E31A0 //thanks to BModzMasterTM
- #pragma endregion
- #pragma region Variables
- bool UnlimitedAmmo = false;
- bool NeverWanted = false;
- bool StatProtection = false;
- int submenu = 0;
- int submenuLevel;
- int lastSubmenu[20];
- int lastOption[20];
- int currentOption;
- int optionCount;
- char *infoText;
- bool optionPress = false;
- bool rightPress = false;
- bool leftPress = false;
- bool fastRightPress = false;
- bool fastLeftPress = false;
- bool squarePress = false;
- bool rsPress = false;
- bool rbPress = false;
- bool menuSounds = true;
- bool keyboardActive = false;
- int keyboardAction;
- int *keyboardVar = 0;
- int selectedPlayer;
- char* scriptToLoad;
- bool vehSpawnNeeded = false;
- Hash vehToSpawnHash;
- bool noVehicleGravity = false;
- bool instructions = true;
- int instructCount;
- int mov;
- bool instructionsSetupThisFrame;
- bool xInstruction;
- bool squareInstruction;
- bool lrInstruction;
- int bannerTextRed = 255;
- int bannerTextGreen = 255;
- int bannerTextBlue = 255;
- int bannerTextOpacity = 255;
- int bannerTextFont = 1;
- int bannerRectRed = 0;
- int bannerRectGreen = 255;
- int bannerRectBlue = 255;
- int bannerRectOpacity = 255;
- int backgroundRed = 16;
- int backgroundGreen = 16;
- int backgroundBlue = 16;
- int backgroundOpacity = 70;
- int optionsRed = 255;
- int optionsGreen = 255;
- int optionsBlue = 255;
- int optionsOpacity = 255;
- int optionsFont = 0;
- int scrollerRed = 255;
- int scrollerGreen = 255;
- int scrollerBlue = 255;
- int scrollerOpacity = 50;
- int indicatorRed = 255;
- int indicatorGreen = 255;
- int indicatorBlue = 255;
- int indicatorOpacity = 255;
- float menuXCoord = 0.845f;
- float textXCoord = 0.76f;
- int maxOptions = 18;
- int frameCache = 0;
- DWORD SaveVMPassed[100];
- DWORD VMPassed[100];
- DWORD VMReturned[5];
- DWORD *VMArgs[3] = { VMReturned, 0, VMPassed };
- XOVERLAPPED Overlapped2;
- WCHAR Username2[15];
- BOOL bInitialized = FALSE;
- XINPUT_STATE InputState;
- #pragma endregion
- #pragma region Enums
- enum ExlposionType {
- GRENADE,
- GRENADELAUNCHER,
- STICKYBOMB,
- MOLOTOV,
- ROCKET,
- TANKSHELL,
- HI_OCTANE,
- CAR,
- PLANE,
- PETROL_PUMP,
- BIKE,
- DIR_STEAM,
- DIR_FLAME,
- DIR_WATER_HYDRANT,
- DIR_GAS_CANISTER,
- BOAT,
- SHIP_DESTROY,
- TRUCK,
- BULLET,
- SMOKEGRENADELAUNCHER,
- SMOKEGRENADE,
- BZGAS,
- FLARE,
- GAS_CANISTER,
- EXTINGUISHER,
- PROGRAMMABLEAR,
- TRAIN,
- BARREL,
- PROPANE,
- BLIMP,
- DIR_FLAME_EXPLODE,
- TANKER,
- PLANE_ROCKET,
- VEHICLE_BULLET,
- GAS_TANK
- };
- enum Submenus
- {
- Closed,
- Main_Menu,
- Players_List,
- All_Players,
- Weather_All,
- Player_Options,
- Self_Options,
- Vehicle_Spawner,
- Teleport_Options,
- Beta_Shit,
- Modder_Protection,
- Settings,
- Settings_Banners,
- Settings_Body,
- Settings_Scroller,
- Settings_Indicators
- };
- enum Buttons
- {
- Button_A = 0xC1,
- Button_B = 0xC3,
- Button_X = 0xC2,
- Button_Y = 0xC0,
- Button_Back = 0xBF,
- Button_L1 = 0xC4,
- Button_L2 = 0xC6,
- Button_L3 = 0xC8,
- Button_R1 = 0xC5,
- Button_R2 = 0xC7,
- Button_R3 = 0xC9,
- Dpad_Up = 0xCA,
- Dpad_Down = 0xCB,
- Dpad_Left = 0xCC,
- Dpad_Right = 0xCD
- };
- enum ScaleformButtons
- {
- ARROW_UP,
- ARROW_DOWN,
- ARROW_LEFT,
- ARROW_RIGHT,
- BUTTON_DPAD_UP,
- BUTTON_DPAD_DOWN,
- BUTTON_DPAD_RIGHT,
- BUTTON_DPAD_LEFT,
- BUTTON_DPAD_BLANK,
- BUTTON_DPAD_ALL,
- BUTTON_DPAD_UP_DOWN,
- BUTTON_DPAD_LEFT_RIGHT,
- BUTTON_LSTICK_UP,
- BUTTON_LSTICK_DOWN,
- BUTTON_LSTICK_LEFT,
- BUTTON_LSTICK_RIGHT,
- BUTTON_LSTICK,
- BUTTON_LSTICK_ALL,
- BUTTON_LSTICK_UP_DOWN,
- BUTTON_LSTICK_LEFT_RIGHT,
- BUTTON_LSTICK_ROTATE,
- BUTTON_RSTICK_UP,
- BUTTON_RSTICK_DOWN,
- BUTTON_RSTICK_LEFT,
- BUTTON_RSTICK_RIGHT,
- BUTTON_RSTICK,
- BUTTON_RSTICK_ALL,
- BUTTON_RSTICK_UP_DOWN,
- BUTTON_RSTICK_LEFT_RIGHT,
- BUTTON_RSTICK_ROTATE,
- BUTTON_A,
- BUTTON_B,
- BUTTON_X,
- BUTTON_Y,
- BUTTON_LB,
- BUTTON_LT,
- BUTTON_RB,
- BUTTON_RT,
- BUTTON_START,
- BUTTON_BACK,
- RED_BOX,
- RED_BOX_1,
- RED_BOX_2,
- RED_BOX_3,
- LOADING_HALF_CIRCLE_LEFT,
- ARROW_UP_DOWN,
- ARROW_LEFT_RIGHT,
- ARROW_ALL,
- LOADING_HALF_CIRCLE_LEFT_2,
- SAVE_HALF_CIRCLE_LEFT,
- LOADING_HALF_CIRCLE_RIGHT,
- };
- #pragma endregion
- #pragma region Internals
- #pragma region Hook & Execution
- void Reset()
- {
- bInitialized = FALSE;
- }
- __declspec(naked) void NativeHookStub(NativeArg_s* pArg)
- {
- __asm
- {
- li r3, 1
- nop
- nop
- nop
- nop
- nop
- nop
- blr
- }
- }
- #pragma endregion
- #pragma region Text
- int snprintf(char *buffer, size_t len, const char *fmt, ...)
- {
- va_list args;
- int i;
- va_start(args, fmt);
- i = vsnprintf(buffer, len, fmt, args);
- va_end(args);
- return i;
- }
- void drawNotification(char* msg)
- {
- if (menuXCoord == 0.845f)
- {
- UI::_0x574EE85C("STRING");
- UI::_ADD_TEXT_COMPONENT_STRING(msg);
- UI::_SET_NOTIFICATION_MESSAGE("CHAR_SOCIAL_CLUB", "CHAR_SOCIAL_CLUB", true, 4, "Menu Base", "");
- UI::_DRAW_NOTIFICATION(false, true);
- }
- else
- {
- UI::_0xF42C43C7("STRING");
- UI::_ADD_TEXT_COMPONENT_STRING(msg);
- UI::_0x38F82261(3000, 1);
- }
- }
- bool isNumericChar(char x)
- {
- return (x >= '0' && x <= '9') ? true : false;
- }
- int StoI(char *str)
- {
- if (*str == NULL)
- return 0;
- int res = 0,
- sign = 1,
- i = 0;
- if (str[0] == '-')
- {
- sign = -1;
- i++;
- }
- for (; str[i] != '\0'; ++i)
- {
- if (isNumericChar(str[i]) == false)
- return 0;
- res = res * 10 + str[i] - '0';
- }
- return sign*res;
- }
- char *ItoS(int num)
- {
- char buf[30];
- snprintf(buf, sizeof(buf), "%i", num);
- return buf;
- }
- char* FtoS(float input)
- {
- char returnvalue[64];
- int wholenumber = (int)input;
- input -= wholenumber;
- input *= 100;
- sprintf(returnvalue, "%d.%d", wholenumber, (int)input);
- return returnvalue;
- }
- void drawText(char * text, int font, float x, float y, float scalex, float scaley, int r, int b, int g, int a, bool center)
- {
- UI::SET_TEXT_FONT(font);
- UI::SET_TEXT_SCALE(scalex, scaley);
- UI::SET_TEXT_COLOUR(r, g, b, a);
- UI::SET_TEXT_WRAP(0.0f, 1.0f);
- UI::SET_TEXT_CENTRE(center);
- UI::SET_TEXT_DROPSHADOW(0, 0, 0, 0, 0);
- UI::SET_TEXT_OUTLINE();
- UI::_SET_TEXT_ENTRY("STRING");
- UI::_ADD_TEXT_COMPONENT_STRING(text);
- UI::_DRAW_TEXT(x, y);
- }
- void startKeyboard(int action, char *defaultText, int maxLength)
- {
- GAMEPLAY::DISPLAY_ONSCREEN_KEYBOARD(0, "FMMC_KEY_TIP8", "", defaultText, "", "", "", maxLength);
- keyboardAction = action;
- keyboardActive = true;
- }
- Hash getHashKey(char *str)
- {
- return GAMEPLAY::GET_HASH_KEY(str);
- }
- #pragma endregion
- #pragma region Instructions
- void set_text_component(char *text)
- {
- GRAPHICS::_0x3AC9CB55("STRING");
- UI::_ADD_TEXT_COMPONENT_STRING(text);
- GRAPHICS::_0x386CE0B8();
- }
- void instructionsSetup()
- {
- mov = GRAPHICS::REQUEST_SCALEFORM_MOVIE("instructional_buttons");
- GRAPHICS::_0x7B48E696(mov, 255, 255, 255, 0);
- GRAPHICS::_0x215ABBE8(mov, "CLEAR_ALL");
- GRAPHICS::_0x02DBF2D7();
- GRAPHICS::_0x215ABBE8(mov, "SET_CLEAR_SPACE");
- GRAPHICS::_0x716777CB(200);
- GRAPHICS::_0x02DBF2D7();
- instructCount = 0;
- }
- void addInstruction(int button, char *text)
- {
- if (!instructionsSetupThisFrame)
- {
- instructionsSetup();
- instructionsSetupThisFrame = true;
- }
- GRAPHICS::_0x215ABBE8(mov, "SET_DATA_SLOT");
- GRAPHICS::_0x716777CB(instructCount);
- GRAPHICS::_0x716777CB(button);
- set_text_component(text);
- GRAPHICS::_0x02DBF2D7();
- instructCount++;
- }
- void instructionsClose()
- {
- GRAPHICS::_0x215ABBE8(mov, "DRAW_INSTRUCTIONAL_BUTTONS");
- GRAPHICS::_0x02DBF2D7();
- GRAPHICS::_0x215ABBE8(mov, "SET_BACKGROUND_COLOUR");
- GRAPHICS::_0x716777CB(0);
- GRAPHICS::_0x716777CB(0);
- GRAPHICS::_0x716777CB(0);
- GRAPHICS::_0x716777CB(80);
- GRAPHICS::_0x02DBF2D7();
- }
- #pragma endregion
- #pragma region Misc
- void playSound(char* sound)
- {
- if (menuSounds)
- AUDIO::PLAY_SOUND_FRONTEND(-1, sound, "HUD_FRONTEND_DEFAULT_SOUNDSET");
- }
- void teleport(float x, float y, float z)
- {
- Ped ped = PLAYER::PLAYER_PED_ID();
- Entity entityToTele = ped;
- if (PED::IS_PED_SITTING_IN_ANY_VEHICLE(ped))
- entityToTele = PED::GET_VEHICLE_PED_IS_USING(ped);
- ENTITY::SET_ENTITY_COORDS(entityToTele, x, y, z, true, false, false, true);
- }
- #pragma endregion
- #pragma region Vehicle
- //addVehicleSpawnOption in Menu/Option Helpers pragma
- void spawnVehicle(char *vehicle)
- {
- Hash veh = getHashKey(vehicle);
- if (STREAMING::IS_MODEL_VALID(veh) && STREAMING::IS_MODEL_A_VEHICLE(veh))
- {
- vehSpawnNeeded = true;
- vehToSpawnHash = veh;
- STREAMING::REQUEST_MODEL(veh);
- }
- else
- drawNotification("~r~Invalid vehicle");
- }
- #pragma endregion
- #pragma region Menu
- void changeSubmenu(int newSubmenu)
- {
- lastSubmenu[submenuLevel] = submenu;
- lastOption[submenuLevel] = currentOption;
- currentOption = 1;
- submenu = newSubmenu;
- submenuLevel++;
- }
- void addTitle(char *title)
- {
- drawText(title, bannerTextFont, menuXCoord, 0.1f, 0.75f, 0.75f, bannerTextRed, bannerTextGreen, bannerTextBlue, bannerTextOpacity, true);
- GRAPHICS::DRAW_RECT(menuXCoord, 0.1175f, 0.19f, 0.083f, bannerRectRed, bannerRectGreen, bannerRectBlue, bannerRectOpacity);
- }
- void normalMenuActions()
- {
- UI::HIDE_HELP_TEXT_THIS_FRAME();
- CAM::SET_CINEMATIC_BUTTON_ACTIVE(0);
- UI::HIDE_HUD_COMPONENT_THIS_FRAME(10);
- UI::HIDE_HUD_COMPONENT_THIS_FRAME(6);
- UI::HIDE_HUD_COMPONENT_THIS_FRAME(7);
- UI::HIDE_HUD_COMPONENT_THIS_FRAME(9);
- UI::HIDE_HUD_COMPONENT_THIS_FRAME(8);
- CONTROLS::DISABLE_CONTROL_ACTION(0, 19);
- CONTROLS::DISABLE_CONTROL_ACTION(0, 20);
- CONTROLS::DISABLE_CONTROL_ACTION(0, 21);
- CONTROLS::DISABLE_CONTROL_ACTION(0, 27);
- CONTROLS::DISABLE_CONTROL_ACTION(0, 54);
- CONTROLS::DISABLE_CONTROL_ACTION(0, 123);
- CONTROLS::DISABLE_CONTROL_ACTION(0, 124);
- CONTROLS::DISABLE_CONTROL_ACTION(0, 125);
- CONTROLS::DISABLE_CONTROL_ACTION(0, 126);
- CONTROLS::DISABLE_CONTROL_ACTION(0, 138);
- CONTROLS::DISABLE_CONTROL_ACTION(0, 139);
- CONTROLS::DISABLE_CONTROL_ACTION(0, 140);
- CONTROLS::DISABLE_CONTROL_ACTION(0, 177);
- CONTROLS::DISABLE_CONTROL_ACTION(0, 178);
- CONTROLS::DISABLE_CONTROL_ACTION(0, 179);
- CONTROLS::DISABLE_CONTROL_ACTION(0, 207);
- CONTROLS::SET_INPUT_EXCLUSIVE(2, 166);
- CONTROLS::SET_INPUT_EXCLUSIVE(2, 167);
- CONTROLS::SET_INPUT_EXCLUSIVE(2, 177);
- CONTROLS::SET_INPUT_EXCLUSIVE(2, 178);
- CONTROLS::SET_INPUT_EXCLUSIVE(2, 193);
- CONTROLS::SET_INPUT_EXCLUSIVE(2, 194);
- CONTROLS::SET_INPUT_EXCLUSIVE(2, 195);
- CONTROLS::SET_INPUT_EXCLUSIVE(2, 202);
- CONTROLS::SET_INPUT_EXCLUSIVE(2, 203);
- CONTROLS::SET_INPUT_EXCLUSIVE(2, 204);
- CONTROLS::SET_INPUT_EXCLUSIVE(2, 205);
- if (optionCount > maxOptions)
- {
- GRAPHICS::DRAW_RECT(menuXCoord, (((maxOptions * 0.035f) / 2) + 0.159f), 0.19f, (maxOptions * 0.035f), backgroundRed, backgroundGreen, backgroundBlue, backgroundOpacity); //Background
- if (currentOption > maxOptions)
- {
- GRAPHICS::DRAW_RECT(menuXCoord, ((maxOptions * 0.035f) + 0.1415f), 0.19f, 0.035f, scrollerRed, scrollerGreen, scrollerBlue, scrollerOpacity); //Scroller
- GRAPHICS::DRAW_RECT(menuXCoord, 0.156f, 0.19f, 0.005f, indicatorRed, indicatorGreen, indicatorBlue, indicatorOpacity); //Up Indicator
- }
- else
- {
- GRAPHICS::DRAW_RECT(menuXCoord, ((currentOption * 0.035f) + 0.1415f), 0.19f, 0.035f, scrollerRed, scrollerGreen, scrollerBlue, scrollerOpacity); //Scroller
- }
- if (currentOption != optionCount)
- {
- GRAPHICS::DRAW_RECT(menuXCoord, ((maxOptions * 0.035f) + 0.161f), 0.19f, 0.005f, indicatorRed, indicatorGreen, indicatorBlue, indicatorOpacity); //Down Indicator
- }
- }
- else
- {
- GRAPHICS::DRAW_RECT(menuXCoord, (((optionCount * 0.035f) / 2) + 0.159f), 0.19f, (optionCount * 0.035f), backgroundRed, backgroundGreen, backgroundBlue, backgroundOpacity); //Background
- GRAPHICS::DRAW_RECT(menuXCoord, ((currentOption * 0.035f) + 0.1415f), 0.19f, 0.035f, scrollerRed, scrollerGreen, scrollerBlue, scrollerOpacity); //Scroller
- }
- if (!GAMEPLAY::IS_STRING_NULL_OR_EMPTY(infoText))
- {
- if (optionCount > maxOptions)
- {
- drawText(infoText, optionsFont, menuXCoord, ((maxOptions + 1) * 0.035f + 0.125f), 0.4f, 0.4f, bannerTextRed, bannerTextGreen, bannerTextBlue, bannerTextOpacity, true);
- GRAPHICS::DRAW_RECT(menuXCoord, (((maxOptions + 1) * 0.035f) + 0.1415f), 0.19f, 0.035f, bannerRectRed, bannerRectGreen, bannerRectBlue, bannerRectOpacity); //Info Box
- }
- else
- {
- drawText(infoText, optionsFont, menuXCoord, ((optionCount + 1) * 0.035f + 0.125f), 0.4f, 0.4f, bannerTextRed, bannerTextGreen, bannerTextBlue, bannerTextOpacity, true);
- GRAPHICS::DRAW_RECT(menuXCoord, (((optionCount + 1) * 0.035f) + 0.1415f), 0.19f, 0.035f, bannerRectRed, bannerRectGreen, bannerRectBlue, bannerRectOpacity); //Info Box
- }
- }
- if (instructions)
- {
- if (xInstruction)
- addInstruction(BUTTON_A, "Select");
- if (squareInstruction)
- addInstruction(BUTTON_X, "Keyboard");
- if (lrInstruction)
- addInstruction(BUTTON_DPAD_LEFT_RIGHT, "Scroll");
- addInstruction(BUTTON_DPAD_UP_DOWN, "Scroll");
- addInstruction(BUTTON_B, "Back");
- instructionsClose();
- }
- }
- void monitorButtons()
- {
- if (submenu == Closed)
- {
- if (CONTROLS::IS_CONTROL_PRESSED(0, Button_X) && CONTROLS::IS_CONTROL_PRESSED(0, Dpad_Right))
- {
- submenu = Main_Menu;
- submenuLevel = 0;
- currentOption = 1;
- playSound("YES");
- }
- else if (CONTROLS::IS_CONTROL_JUST_PRESSED(0, Button_A))
- {
- optionPress = true;
- }
- else if (CONTROLS::IS_CONTROL_PRESSED(0, Button_R1))
- {
- rbPress = true;
- }
- else if (CONTROLS::IS_CONTROL_PRESSED(0, Button_R3))
- {
- rsPress = true;
- }
- }
- else {
- if (CONTROLS::IS_CONTROL_JUST_PRESSED(0, Button_B))
- {
- if (submenu == Main_Menu)
- {
- submenu = Closed;
- }
- else {
- submenu = lastSubmenu[submenuLevel - 1];
- currentOption = lastOption[submenuLevel - 1];
- submenuLevel--;
- }
- playSound("Back");
- }
- else if (CONTROLS::IS_CONTROL_JUST_PRESSED(0, Button_A))
- {
- optionPress = true;
- playSound("SELECT");
- }
- else if (CONTROLS::IS_CONTROL_JUST_PRESSED(0, Dpad_Up))
- {
- currentOption--;
- if (currentOption < 1)
- {
- currentOption = optionCount;
- }
- playSound("NAV_UP_DOWN");
- }
- else if (CONTROLS::IS_CONTROL_JUST_PRESSED(0, Dpad_Down))
- {
- currentOption++;
- if (currentOption > optionCount)
- {
- currentOption = 1;
- }
- playSound("NAV_UP_DOWN");
- }
- else if (CONTROLS::IS_CONTROL_JUST_PRESSED(0, Dpad_Right))
- {
- rightPress = true;
- }
- else if (CONTROLS::IS_CONTROL_JUST_PRESSED(0, Dpad_Left))
- {
- leftPress = true;
- }
- else if (CONTROLS::IS_CONTROL_PRESSED(0, Dpad_Right))
- {
- fastRightPress = true;
- }
- else if (CONTROLS::IS_CONTROL_PRESSED(0, Dpad_Left))
- {
- fastLeftPress = true;
- }
- else if (CONTROLS::IS_CONTROL_JUST_PRESSED(0, Button_X))
- {
- squarePress = true;
- }
- else if (CONTROLS::IS_CONTROL_PRESSED(0, Button_R1))
- {
- rbPress = true;
- }
- else if (CONTROLS::IS_CONTROL_PRESSED(0, Button_R3))
- {
- rsPress = true;
- }
- }
- }
- void resetVars()
- {
- if (submenu != Closed)
- normalMenuActions();
- optionPress = false;
- rightPress = false;
- leftPress = false;
- fastRightPress = false;
- fastLeftPress = false;
- squarePress = false;
- rsPress = false;
- rbPress = false;
- infoText = NULL;
- instructionsSetupThisFrame = false;
- squareInstruction = false;
- xInstruction = false;
- lrInstruction = false;
- }
- int getOption()
- {
- xInstruction = true;
- if (optionPress)
- return currentOption;
- else return 0;
- }
- #pragma region Option Helpers
- void addOption(char *option, char *info = NULL)
- {
- optionCount++;
- if (currentOption == optionCount)
- infoText = info;
- if (currentOption <= maxOptions && optionCount <= maxOptions)
- drawText(option, optionsFont, textXCoord, (optionCount * 0.035f + 0.125f), 0.4f, 0.4f, optionsRed, optionsGreen, optionsBlue, optionsOpacity, false);
- else if ((optionCount > (currentOption - maxOptions)) && optionCount <= currentOption)
- drawText(option, optionsFont, textXCoord, ((optionCount - (currentOption - maxOptions)) * 0.035f + 0.125f), 0.4f, 0.4f, optionsRed, optionsGreen, optionsBlue, optionsOpacity, false);
- }
- void addSubmenuOption(char *option, int newSubmenu, char *info = NULL)
- {
- addOption(option, info);
- if (currentOption == optionCount)
- {
- xInstruction = true;
- if (optionPress)
- changeSubmenu(newSubmenu);
- }
- }
- void addBoolOption(char *option, bool b00l, char *info = NULL)
- {
- char buf[30];
- if (b00l)
- {
- snprintf(buf, sizeof(buf), "%s: On", option);
- addOption(buf, info);
- }
- else
- {
- snprintf(buf, sizeof(buf), "%s: Off", option);
- addOption(buf, info);
- }
- }
- template<typename TYPE>
- void addCustomBoolOption(char *option, TYPE value, TYPE match, char *info = NULL)
- {
- char buf[30];
- if (value == match)
- {
- snprintf(buf, sizeof(buf), "%s: On", option);
- addOption(buf, info);
- }
- else
- {
- snprintf(buf, sizeof(buf), "%s: Off", option);
- addOption(buf, info);
- }
- }
- void addIntOption(char *option, int *var, int min, int max, bool keyboard, char *info = NULL)
- {
- char buf[30];
- snprintf(buf, sizeof(buf), "%s: < %i >", option, *var);
- addOption(buf, info);
- if (currentOption == optionCount)
- {
- lrInstruction = true;
- if (rightPress)
- {
- playSound("NAV_UP_DOWN");
- if (*var >= max)
- *var = min;
- else
- *var = *var + 1;
- }
- else if (leftPress)
- {
- playSound("NAV_UP_DOWN");
- if (*var <= min)
- *var = max;
- else
- *var = *var - 1;
- }
- if (keyboard)
- {
- squareInstruction = true;
- if (squarePress)
- {
- startKeyboard(0, "", (strlen(ItoS(max)) + 1));
- keyboardVar = var;
- }
- }
- }
- }
- void addFloatOption(char *option, float *var, float min, float max, bool holdPress, char *info = NULL)
- {
- char buf[30];
- snprintf(buf, sizeof(buf), "%s: < %s >", option, FtoS(*var));
- addOption(buf, info);
- if (currentOption == optionCount)
- {
- lrInstruction = true;
- if (holdPress)
- {
- if (fastRightPress)
- {
- playSound("NAV_UP_DOWN");
- if (*var >= max)
- *var = min;
- else
- *var = *var + 0.01f;
- }
- else if (fastLeftPress)
- {
- playSound("NAV_UP_DOWN");
- if (*var <= min)
- *var = max;
- else
- *var = *var - 0.01f;
- }
- }
- else
- {
- if (rightPress)
- {
- playSound("NAV_UP_DOWN");
- if (*var >= max)
- *var = min;
- else
- *var = *var + 0.01f;
- }
- else if (leftPress)
- {
- playSound("NAV_UP_DOWN");
- if (*var <= min)
- *var = max;
- else
- *var = *var - 0.01f;
- }
- }
- }
- }
- void addKeyboardOption(char *option, int action, char *defaultText, int maxLength, char *info = NULL)
- {
- addOption(option, info);
- if (currentOption == optionCount)
- {
- xInstruction = true;
- if (optionPress)
- startKeyboard(action, defaultText, maxLength);
- }
- }
- void addVehicleSpawnOption(char *option, char *vehicle, char *info = NULL)
- {
- addOption(option, info);
- if (currentOption == optionCount)
- {
- xInstruction = true;
- if (optionPress)
- spawnVehicle(vehicle);
- }
- }
- void addTeleportOption(char *option, float x, float y, float z, char *info = NULL)
- {
- addOption(option, info);
- if (currentOption == optionCount)
- {
- xInstruction = true;
- if (optionPress)
- teleport(x, y, z);
- }
- }
- void addScriptOption(char* option, char* script, char* info = NULL)
- {
- bool ScriptRunning = (SCRIPT::_0x029D3841(GAMEPLAY::GET_HASH_KEY(script)) > 0);
- addBoolOption(option, ScriptRunning, info);
- if (currentOption == optionCount)
- {
- xInstruction = true;
- if (optionPress)
- {
- if (ScriptRunning)
- GAMEPLAY::TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME(script);
- else
- {
- scriptToLoad = script;
- SCRIPT::REQUEST_SCRIPT(script);
- }
- }
- }
- }
- #pragma endregion
- #pragma endregion
- #pragma endregion
- #pragma region Other Loop
- void otherLoop()
- {
- if (keyboardActive)
- {
- if (GAMEPLAY::UPDATE_ONSCREEN_KEYBOARD() == 1)
- {
- keyboardActive = false;
- switch (keyboardAction)
- {
- case 0: //addIntOption
- *keyboardVar = StoI(GAMEPLAY::GET_ONSCREEN_KEYBOARD_RESULT());
- break;
- case 1: //Vehicle Spawner
- spawnVehicle(GAMEPLAY::GET_ONSCREEN_KEYBOARD_RESULT());
- break;
- }
- }
- else if (GAMEPLAY::UPDATE_ONSCREEN_KEYBOARD() == 2 || GAMEPLAY::UPDATE_ONSCREEN_KEYBOARD() == 3)
- {
- keyboardActive = false;
- }
- }
- if (vehSpawnNeeded)
- {
- if (STREAMING::HAS_MODEL_LOADED(vehToSpawnHash))
- {
- Ped ped = PLAYER::PLAYER_PED_ID();
- Vector3 coords = ENTITY::GET_ENTITY_COORDS(ped, true);
- float heading = ENTITY::GET_ENTITY_HEADING(ped);
- Vehicle veh = VEHICLE::CREATE_VEHICLE(vehToSpawnHash, coords.x, coords.y, coords.z, heading, true, false);
- if (ENTITY::DOES_ENTITY_EXIST(veh))
- {
- PED::SET_PED_INTO_VEHICLE(ped, veh, -1);
- STREAMING::SET_MODEL_AS_NO_LONGER_NEEDED(vehToSpawnHash);
- vehSpawnNeeded = false;
- }
- }
- }
- if (!GAMEPLAY::IS_STRING_NULL_OR_EMPTY(scriptToLoad))
- {
- if (SCRIPT::HAS_SCRIPT_LOADED(scriptToLoad))
- {
- SYSTEM::START_NEW_SCRIPT(scriptToLoad, 1024);
- SCRIPT::SET_SCRIPT_AS_NO_LONGER_NEEDED(scriptToLoad);
- scriptToLoad = "";
- }
- }
- }
- #pragma endregion
- void Main()
- {
- monitorButtons();
- otherLoop();
- optionCount = 0;
- switch (submenu)
- {
- #pragma region Main Menu
- case Main_Menu:
- addTitle("Destinizz Menu");
- addSubmenuOption("Online Players", Players_List);
- addSubmenuOption("Self Options", Self_Options);
- addSubmenuOption("Vehicle Spawner", Vehicle_Spawner);
- addSubmenuOption("Teleport Options", Teleport_Options);
- addSubmenuOption("Beta Shit", Beta_Shit, "prepare...");
- addSubmenuOption("Settings", Settings, "Customize the menu");
- break;
- #pragma endregion
- #pragma region Players List
- case Players_List:
- addTitle("Players List");
- addSubmenuOption("All Players", All_Players);
- for (int i = 1; i < 19; i++)
- {
- addOption(PLAYER::GET_PLAYER_NAME(i));
- }
- if (PLAYER::IS_PLAYER_PLAYING(currentOption - 1))
- {
- xInstruction = true;
- if (optionPress)
- {
- selectedPlayer = currentOption - 1;
- changeSubmenu(Player_Options);
- }
- }
- break;
- #pragma endregion
- #pragma region All Players
- addTitle("All Players");
- addSubmenuOption("Wheather All", Wheather_All);
- #pragma endregion
- #pragma region Player Options
- case Player_Options:
- addTitle(PLAYER::GET_PLAYER_NAME(selectedPlayer));
- //various player options here
- //use PLAYER::GET_PLAYER_PED(selectedPlayer) to get the ped rather than player.
- break;
- #pragma endregion
- #pragma region Self Options
- case Self_Options:
- addTitle("Self Options");
- addBoolOption("Godmode", PLAYER::GET_PLAYER_INVINCIBLE(PLAYER::PLAYER_ID()));
- addBoolOption("Invisibility", !ENTITY::IS_ENTITY_VISIBLE(PLAYER::PLAYER_PED_ID()));
- addBoolOption("Unlimited Ammo", UnlimitedAmmo);
- addBoolOption("Never Wanted", NeverWanted);
- addOption("Clear Wanted Level");
- addOption("Give All Weapons");
- switch (getOption())
- {
- case 1: PLAYER::SET_PLAYER_INVINCIBLE(PLAYER::PLAYER_ID(), !PLAYER::GET_PLAYER_INVINCIBLE(PLAYER::PLAYER_ID())); break;
- case 2: ENTITY::SET_ENTITY_VISIBLE(PLAYER::PLAYER_PED_ID(), !ENTITY::IS_ENTITY_VISIBLE(PLAYER::PLAYER_PED_ID())); break;
- case 3:
- UnlimitedAmmo = !UnlimitedAmmo;
- WEAPON::SET_PED_INFINITE_AMMO_CLIP(PLAYER::PLAYER_PED_ID(), UnlimitedAmmo);
- break;
- case 4:
- NeverWanted = !NeverWanted;
- PLAYER::SET_POLICE_IGNORE_PLAYER(PLAYER::PLAYER_ID(), NeverWanted);
- case 5:
- PLAYER::SET_PLAYER_WANTED_LEVEL(PLAYER::PLAYER_ID(), 0, false);
- PLAYER::SET_PLAYER_WANTED_LEVEL_NOW(PLAYER::PLAYER_ID(), false);
- break;
- case 6:
- WEAPON::GIVE_DELAYED_WEAPON_TO_PED(PLAYER::PLAYER_PED_ID(), 0x0, 9999, true);
- break;
- }
- break;
- #pragma endregion
- #pragma region Vehicle Spawner
- case Vehicle_Spawner:
- addTitle("Vehicle Spawner");
- addKeyboardOption("Custom Imput", 1, "", 255); //Example use of how you use the keyboard. Check Other Loops for what happens when the use ends the keyboard.
- addVehicleSpawnOption("Adder", "adder");
- addVehicleSpawnOption("Police Maverick", "polmav");
- break;
- #pragma endregion
- #pragma region Teleport Options
- case Teleport_Options:
- addTitle("Teleport Options");
- addTeleportOption("Eclipse Towers", -797.4699f, 298.6f, 85.8399f);
- addTeleportOption("Los Santos Customs", -367.7338f, -130.8593f, 38.1165f);
- break;
- #pragma endregion
- #pragma region Beta Shit
- case Beta_Shit:
- addTitle("Beta Shit");
- addSubmenuOption("Modder Protection", Modder_Protection, "Get dem hoes");
- #pragma endregion
- #pragma region Modder Protection
- case Modder_Protection:
- addTitle("Be safe...");
- #pragma endregion
- #pragma region Settings
- case Settings:
- addTitle("Settings");
- addSubmenuOption("Banners", Settings_Banners);
- addSubmenuOption("Body", Settings_Body);
- addSubmenuOption("Scroller", Settings_Scroller);
- addSubmenuOption("Indicators", Settings_Indicators);
- addBoolOption("Sounds", menuSounds);
- addBoolOption("Instructions", instructions);
- addCustomBoolOption("Left Sided", menuXCoord, 0.145f);
- addIntOption("Max Options", &maxOptions, 1, 20, false);
- switch (getOption())
- {
- case 5: menuSounds = !menuSounds; break;
- case 6: instructions = !instructions; break;
- case 7:
- if (menuXCoord == 0.145f)
- {
- menuXCoord = 0.845f;
- textXCoord = 0.76f;
- }
- else
- {
- menuXCoord = 0.145f;
- textXCoord = 0.06f;
- }
- break;
- }
- break;
- case Settings_Banners:
- addTitle("Banners");
- addIntOption("Text Red", &bannerTextRed, 0, 255, true);
- addIntOption("Text Green", &bannerTextGreen, 0, 255, true);
- addIntOption("Text Blue", &bannerTextBlue, 0, 255, true);
- addIntOption("Text Opacity", &bannerTextOpacity, 0, 255, true);
- addIntOption("Text Font", &bannerTextFont, 0, 7, false);
- addIntOption("Rect Red", &bannerRectRed, 0, 255, true);
- addIntOption("Rect Green", &bannerRectGreen, 0, 255, true);
- addIntOption("Rect Blue", &bannerRectBlue, 0, 255, true);
- addIntOption("Rect Opacity", &bannerRectOpacity, 0, 255, true);
- break;
- case Settings_Body:
- addTitle("Body");
- addIntOption("Text Red", &optionsRed, 0, 255, true);
- addIntOption("Text Green", &optionsGreen, 0, 255, true);
- addIntOption("Text Blue", &optionsBlue, 0, 255, true);
- addIntOption("Text Opacity", &optionsOpacity, 0, 255, true);
- addIntOption("Text Font", &optionsFont, 0, 7, false);
- addIntOption("Rect Red", &backgroundRed, 0, 255, true);
- addIntOption("Rect Green", &backgroundGreen, 0, 255, true);
- addIntOption("Rect Blue", &backgroundBlue, 0, 255, true);
- addIntOption("Rect Opacity", &backgroundOpacity, 0, 255, true);
- break;
- case Settings_Scroller:
- addTitle("Scroller");
- addIntOption("Red", &scrollerRed, 0, 255, true);
- addIntOption("Green", &scrollerGreen, 0, 255, true);
- addIntOption("Blue", &scrollerBlue, 0, 255, true);
- addIntOption("Opacity", &scrollerOpacity, 0, 255, true);
- break;
- case Settings_Indicators:
- addTitle("Indicators");
- addIntOption("Red", &indicatorRed, 0, 255, true);
- addIntOption("Green", &indicatorGreen, 0, 255, true);
- addIntOption("Blue", &indicatorBlue, 0, 255, true);
- addIntOption("Opacity", &indicatorOpacity, 0, 255, true);
- break;
- #pragma endregion
- }
- resetVars();
- }
- void NativeHook(NativeArg_s* pArg)
- {
- if (frameCache < GAMEPLAY::GET_FRAME_COUNT())
- {
- frameCache = GAMEPLAY::GET_FRAME_COUNT();
- Main();
- }
- NativeHookStub(pArg);
- }
- void NativeDLL()
- {
- Sleep(1000);
- for(;;)
- {
- if(XamGetCurrentTitleId() == 0xFFFE07D1) // XBOX 360 Dashboard
- {
- if(bInitialized == TRUE)
- {
- bInitialized = FALSE;
- }
- }
- else if(XamGetCurrentTitleId() == 0x545408A7) // GTA V
- {
- if(bInitialized == FALSE)
- {
- XNotify(L"Destinizz Menu Ready...");
- // IS_PLAYER_ONLINE - TU27
- bInitialized = TRUE;
- }
- }
- else
- { Reset(); };
- Sleep(100);
- }
- }
- BOOL WINAPI DllMain(HANDLE hModule, DWORD dwReason, LPVOID lpReserved)
- {
- switch(dwReason)
- {
- case DLL_PROCESS_ATTACH:
- HANDLE hThread; DWORD hThreadID;
- ExCreateThread(&hThread, 0, &hThreadID, (PVOID)XapiThreadStartup , (LPTHREAD_START_ROUTINE)NativeDLL, NULL, 0x2);
- XSetThreadProcessor(hThread, 4);
- ResumeThread(hThread);
- CloseHandle(hThread);
- Sleep(45);
- break;
- case DLL_PROCESS_DETACH:
- break;
- case DLL_THREAD_ATTACH:
- break;
- case DLL_THREAD_DETACH:
- break;
- }
- return TRUE;
- }
Add Comment
Please, Sign In to add comment