SHOW:
|
|
- or go back to the newest paste.
| 1 | #include "script.h" | |
| 2 | #include "keyboard.h" | |
| 3 | #include <string> | |
| 4 | #include <ctime> | |
| 5 | #pragma warning(disable : 4244 4305) // double <-> float conversions | |
| 6 | ||
| 7 | namespace SUB{enum{
| |
| 8 | // Define submenu (enum) indices here. | |
| 9 | CLOSED, | |
| 10 | MAINMENU, | |
| 11 | SETTINGS, | |
| 12 | SETTINGS_COLOURS, | |
| 13 | SETTINGS_COLOURS2, | |
| 14 | SETTINGS_FONTS, | |
| 15 | SETTINGS_FONTS2, | |
| 16 | // Others: | |
| 17 | SAMPLE, | |
| 18 | YOURSUB, | |
| 19 | ||
| 20 | ||
| 21 | };}; | |
| 22 | namespace{
| |
| 23 | // Declare/Initialise global variables here. | |
| 24 | char str[50]; | |
| 25 | bool controllerinput_bool = 1, menujustopened = 1, null; | |
| 26 | enum ControllerInputs | |
| 27 | {
| |
| 28 | INPUT_NEXT_CAMERA = 0, | |
| 29 | INPUT_LOOK_LR = 1, | |
| 30 | INPUT_LOOK_UD = 2, | |
| 31 | INPUT_LOOK_UP_ONLY = 3, | |
| 32 | INPUT_LOOK_DOWN_ONLY = 4, | |
| 33 | INPUT_LOOK_LEFT_ONLY = 5, | |
| 34 | INPUT_LOOK_RIGHT_ONLY = 6, | |
| 35 | INPUT_CINEMATIC_SLOWMO = 7, | |
| 36 | INPUT_SCRIPTED_FLY_UD = 8, | |
| 37 | INPUT_SCRIPTED_FLY_LR = 9, | |
| 38 | INPUT_SCRIPTED_FLY_ZUP = 10, | |
| 39 | INPUT_SCRIPTED_FLY_ZDOWN = 11, | |
| 40 | INPUT_WEAPON_WHEEL_UD = 12, | |
| 41 | INPUT_WEAPON_WHEEL_LR = 13, | |
| 42 | INPUT_WEAPON_WHEEL_NEXT = 14, | |
| 43 | INPUT_WEAPON_WHEEL_PREV = 15, | |
| 44 | INPUT_SELECT_NEXT_WEAPON = 16, | |
| 45 | INPUT_SELECT_PREV_WEAPON = 17, | |
| 46 | INPUT_SKIP_CUTSCENE = 18, | |
| 47 | INPUT_CHARACTER_WHEEL = 19, | |
| 48 | INPUT_MULTIPLAYER_INFO = 20, | |
| 49 | INPUT_SPRINT = 21, | |
| 50 | INPUT_JUMP = 22, | |
| 51 | INPUT_ENTER = 23, | |
| 52 | INPUT_ATTACK = 24, | |
| 53 | INPUT_AIM = 25, | |
| 54 | INPUT_LOOK_BEHIND = 26, | |
| 55 | INPUT_PHONE = 27, | |
| 56 | INPUT_SPECIAL_ABILITY = 28, | |
| 57 | INPUT_SPECIAL_ABILITY_SECONDARY = 29, | |
| 58 | INPUT_MOVE_LR = 30, | |
| 59 | INPUT_MOVE_UD = 31, | |
| 60 | INPUT_MOVE_UP_ONLY = 32, | |
| 61 | INPUT_MOVE_DOWN_ONLY = 33, | |
| 62 | INPUT_MOVE_LEFT_ONLY = 34, | |
| 63 | INPUT_MOVE_RIGHT_ONLY = 35, | |
| 64 | INPUT_DUCK = 36, | |
| 65 | INPUT_SELECT_WEAPON = 37, | |
| 66 | INPUT_PICKUP = 38, | |
| 67 | INPUT_SNIPER_ZOOM = 39, | |
| 68 | INPUT_SNIPER_ZOOM_IN_ONLY = 40, | |
| 69 | INPUT_SNIPER_ZOOM_OUT_ONLY = 41, | |
| 70 | INPUT_SNIPER_ZOOM_IN_SECONDARY = 42, | |
| 71 | INPUT_SNIPER_ZOOM_OUT_SECONDARY = 43, | |
| 72 | INPUT_COVER = 44, | |
| 73 | INPUT_RELOAD = 45, | |
| 74 | INPUT_TALK = 46, | |
| 75 | INPUT_DETONATE = 47, | |
| 76 | INPUT_HUD_SPECIAL = 48, | |
| 77 | INPUT_ARREST = 49, | |
| 78 | INPUT_ACCURATE_AIM = 50, | |
| 79 | INPUT_CONTEXT = 51, | |
| 80 | INPUT_CONTEXT_SECONDARY = 52, | |
| 81 | INPUT_WEAPON_SPECIAL = 53, | |
| 82 | INPUT_WEAPON_SPECIAL_TWO = 54, | |
| 83 | INPUT_DIVE = 55, | |
| 84 | INPUT_DROP_WEAPON = 56, | |
| 85 | INPUT_DROP_AMMO = 57, | |
| 86 | INPUT_THROW_GRENADE = 58, | |
| 87 | INPUT_VEH_MOVE_LR = 59, | |
| 88 | INPUT_VEH_MOVE_UD = 60, | |
| 89 | INPUT_VEH_MOVE_UP_ONLY = 61, | |
| 90 | INPUT_VEH_MOVE_DOWN_ONLY = 62, | |
| 91 | INPUT_VEH_MOVE_LEFT_ONLY = 63, | |
| 92 | INPUT_VEH_MOVE_RIGHT_ONLY = 64, | |
| 93 | INPUT_VEH_SPECIAL = 65, | |
| 94 | INPUT_VEH_GUN_LR = 66, | |
| 95 | INPUT_VEH_GUN_UD = 67, | |
| 96 | INPUT_VEH_AIM = 68, | |
| 97 | INPUT_VEH_ATTACK = 69, | |
| 98 | INPUT_VEH_ATTACK2 = 70, | |
| 99 | INPUT_VEH_ACCELERATE = 71, | |
| 100 | INPUT_VEH_BRAKE = 72, | |
| 101 | INPUT_VEH_DUCK = 73, | |
| 102 | INPUT_VEH_HEADLIGHT = 74, | |
| 103 | INPUT_VEH_EXIT = 75, | |
| 104 | INPUT_VEH_HANDBRAKE = 76, | |
| 105 | INPUT_VEH_HOTWIRE_LEFT = 77, | |
| 106 | INPUT_VEH_HOTWIRE_RIGHT = 78, | |
| 107 | INPUT_VEH_LOOK_BEHIND = 79, | |
| 108 | INPUT_VEH_CIN_CAM = 80, | |
| 109 | INPUT_VEH_NEXT_RADIO = 81, | |
| 110 | INPUT_VEH_PREV_RADIO = 82, | |
| 111 | INPUT_VEH_NEXT_RADIO_TRACK = 83, | |
| 112 | INPUT_VEH_PREV_RADIO_TRACK = 84, | |
| 113 | INPUT_VEH_RADIO_WHEEL = 85, | |
| 114 | INPUT_VEH_HORN = 86, | |
| 115 | INPUT_VEH_FLY_THROTTLE_UP = 87, | |
| 116 | INPUT_VEH_FLY_THROTTLE_DOWN = 88, | |
| 117 | INPUT_VEH_FLY_YAW_LEFT = 89, | |
| 118 | INPUT_VEH_FLY_YAW_RIGHT = 90, | |
| 119 | INPUT_VEH_PASSENGER_AIM = 91, | |
| 120 | INPUT_VEH_PASSENGER_ATTACK = 92, | |
| 121 | INPUT_VEH_SPECIAL_ABILITY_FRANKLIN = 93, | |
| 122 | INPUT_VEH_STUNT_UD = 94, | |
| 123 | INPUT_VEH_CINEMATIC_UD = 95, | |
| 124 | INPUT_VEH_CINEMATIC_UP_ONLY = 96, | |
| 125 | INPUT_VEH_CINEMATIC_DOWN_ONLY = 97, | |
| 126 | INPUT_VEH_CINEMATIC_LR = 98, | |
| 127 | INPUT_VEH_SELECT_NEXT_WEAPON = 99, | |
| 128 | INPUT_VEH_SELECT_PREV_WEAPON = 100, | |
| 129 | INPUT_VEH_ROOF = 101, | |
| 130 | INPUT_VEH_JUMP = 102, | |
| 131 | INPUT_VEH_GRAPPLING_HOOK = 103, | |
| 132 | INPUT_VEH_SHUFFLE = 104, | |
| 133 | INPUT_VEH_DROP_PROJECTILE = 105, | |
| 134 | INPUT_VEH_MOUSE_CONTROL_OVERRIDE = 106, | |
| 135 | INPUT_VEH_FLY_ROLL_LR = 107, | |
| 136 | INPUT_VEH_FLY_ROLL_LEFT_ONLY = 108, | |
| 137 | INPUT_VEH_FLY_ROLL_RIGHT_ONLY = 109, | |
| 138 | INPUT_VEH_FLY_PITCH_UD = 110, | |
| 139 | INPUT_VEH_FLY_PITCH_UP_ONLY = 111, | |
| 140 | INPUT_VEH_FLY_PITCH_DOWN_ONLY = 112, | |
| 141 | INPUT_VEH_FLY_UNDERCARRIAGE = 113, | |
| 142 | INPUT_VEH_FLY_ATTACK = 114, | |
| 143 | INPUT_VEH_FLY_SELECT_NEXT_WEAPON = 115, | |
| 144 | INPUT_VEH_FLY_SELECT_PREV_WEAPON = 116, | |
| 145 | INPUT_VEH_FLY_SELECT_TARGET_LEFT = 117, | |
| 146 | INPUT_VEH_FLY_SELECT_TARGET_RIGHT = 118, | |
| 147 | INPUT_VEH_FLY_VERTICAL_FLIGHT_MODE = 119, | |
| 148 | INPUT_VEH_FLY_DUCK = 120, | |
| 149 | INPUT_VEH_FLY_ATTACK_CAMERA = 121, | |
| 150 | INPUT_VEH_FLY_MOUSE_CONTROL_OVERRIDE = 122, | |
| 151 | INPUT_VEH_SUB_TURN_LR = 123, | |
| 152 | INPUT_VEH_SUB_TURN_LEFT_ONLY = 124, | |
| 153 | INPUT_VEH_SUB_TURN_RIGHT_ONLY = 125, | |
| 154 | INPUT_VEH_SUB_PITCH_UD = 126, | |
| 155 | INPUT_VEH_SUB_PITCH_UP_ONLY = 127, | |
| 156 | INPUT_VEH_SUB_PITCH_DOWN_ONLY = 128, | |
| 157 | INPUT_VEH_SUB_THROTTLE_UP = 129, | |
| 158 | INPUT_VEH_SUB_THROTTLE_DOWN = 130, | |
| 159 | INPUT_VEH_SUB_ASCEND = 131, | |
| 160 | INPUT_VEH_SUB_DESCEND = 132, | |
| 161 | INPUT_VEH_SUB_TURN_HARD_LEFT = 133, | |
| 162 | INPUT_VEH_SUB_TURN_HARD_RIGHT = 134, | |
| 163 | INPUT_VEH_SUB_MOUSE_CONTROL_OVERRIDE = 135, | |
| 164 | INPUT_VEH_PUSHBIKE_PEDAL = 136, | |
| 165 | INPUT_VEH_PUSHBIKE_SPRINT = 137, | |
| 166 | INPUT_VEH_PUSHBIKE_FRONT_BRAKE = 138, | |
| 167 | INPUT_VEH_PUSHBIKE_REAR_BRAKE = 139, | |
| 168 | INPUT_MELEE_ATTACK_LIGHT = 140, | |
| 169 | INPUT_MELEE_ATTACK_HEAVY = 141, | |
| 170 | INPUT_MELEE_ATTACK_ALTERNATE = 142, | |
| 171 | INPUT_MELEE_BLOCK = 143, | |
| 172 | INPUT_PARACHUTE_DEPLOY = 144, | |
| 173 | INPUT_PARACHUTE_DETACH = 145, | |
| 174 | INPUT_PARACHUTE_TURN_LR = 146, | |
| 175 | INPUT_PARACHUTE_TURN_LEFT_ONLY = 147, | |
| 176 | INPUT_PARACHUTE_TURN_RIGHT_ONLY = 148, | |
| 177 | INPUT_PARACHUTE_PITCH_UD = 149, | |
| 178 | INPUT_PARACHUTE_PITCH_UP_ONLY = 150, | |
| 179 | INPUT_PARACHUTE_PITCH_DOWN_ONLY = 151, | |
| 180 | INPUT_PARACHUTE_BRAKE_LEFT = 152, | |
| 181 | INPUT_PARACHUTE_BRAKE_RIGHT = 153, | |
| 182 | INPUT_PARACHUTE_SMOKE = 154, | |
| 183 | INPUT_PARACHUTE_PRECISION_LANDING = 155, | |
| 184 | INPUT_MAP = 156, | |
| 185 | INPUT_SELECT_WEAPON_UNARMED = 157, | |
| 186 | INPUT_SELECT_WEAPON_MELEE = 158, | |
| 187 | INPUT_SELECT_WEAPON_HANDGUN = 159, | |
| 188 | INPUT_SELECT_WEAPON_SHOTGUN = 160, | |
| 189 | INPUT_SELECT_WEAPON_SMG = 161, | |
| 190 | INPUT_SELECT_WEAPON_AUTO_RIFLE = 162, | |
| 191 | INPUT_SELECT_WEAPON_SNIPER = 163, | |
| 192 | INPUT_SELECT_WEAPON_HEAVY = 164, | |
| 193 | INPUT_SELECT_WEAPON_SPECIAL = 165, | |
| 194 | INPUT_SELECT_CHARACTER_MICHAEL = 166, | |
| 195 | INPUT_SELECT_CHARACTER_FRANKLIN = 167, | |
| 196 | INPUT_SELECT_CHARACTER_TREVOR = 168, | |
| 197 | INPUT_SELECT_CHARACTER_MULTIPLAYER = 169, | |
| 198 | INPUT_SAVE_REPLAY_CLIP = 170, | |
| 199 | INPUT_SPECIAL_ABILITY_PC = 171, | |
| 200 | INPUT_CELLPHONE_UP = 172, | |
| 201 | INPUT_CELLPHONE_DOWN = 173, | |
| 202 | INPUT_CELLPHONE_LEFT = 174, | |
| 203 | INPUT_CELLPHONE_RIGHT = 175, | |
| 204 | INPUT_CELLPHONE_SELECT = 176, | |
| 205 | INPUT_CELLPHONE_CANCEL = 177, | |
| 206 | INPUT_CELLPHONE_OPTION = 178, | |
| 207 | INPUT_CELLPHONE_EXTRA_OPTION = 179, | |
| 208 | INPUT_CELLPHONE_SCROLL_FORWARD = 180, | |
| 209 | INPUT_CELLPHONE_SCROLL_BACKWARD = 181, | |
| 210 | INPUT_CELLPHONE_CAMERA_FOCUS_LOCK = 182, | |
| 211 | INPUT_CELLPHONE_CAMERA_GRID = 183, | |
| 212 | INPUT_CELLPHONE_CAMERA_SELFIE = 184, | |
| 213 | INPUT_CELLPHONE_CAMERA_DOF = 185, | |
| 214 | INPUT_CELLPHONE_CAMERA_EXPRESSION = 186, | |
| 215 | INPUT_FRONTEND_DOWN = 187, | |
| 216 | INPUT_FRONTEND_UP = 188, | |
| 217 | INPUT_FRONTEND_LEFT = 189, | |
| 218 | INPUT_FRONTEND_RIGHT = 190, | |
| 219 | INPUT_FRONTEND_RDOWN = 191, | |
| 220 | INPUT_FRONTEND_RUP = 192, | |
| 221 | INPUT_FRONTEND_RLEFT = 193, | |
| 222 | INPUT_FRONTEND_RRIGHT = 194, | |
| 223 | INPUT_FRONTEND_AXIS_X = 195, | |
| 224 | INPUT_FRONTEND_AXIS_Y = 196, | |
| 225 | INPUT_FRONTEND_RIGHT_AXIS_X = 197, | |
| 226 | INPUT_FRONTEND_RIGHT_AXIS_Y = 198, | |
| 227 | INPUT_FRONTEND_PAUSE = 199, | |
| 228 | INPUT_FRONTEND_PAUSE_ALTERNATE = 200, | |
| 229 | INPUT_FRONTEND_ACCEPT = 201, | |
| 230 | INPUT_FRONTEND_CANCEL = 202, | |
| 231 | INPUT_FRONTEND_X = 203, | |
| 232 | INPUT_FRONTEND_Y = 204, | |
| 233 | INPUT_FRONTEND_LB = 205, | |
| 234 | INPUT_FRONTEND_RB = 206, | |
| 235 | INPUT_FRONTEND_LT = 207, | |
| 236 | INPUT_FRONTEND_RT = 208, | |
| 237 | INPUT_FRONTEND_LS = 209, | |
| 238 | INPUT_FRONTEND_RS = 210, | |
| 239 | INPUT_FRONTEND_LEADERBOARD = 211, | |
| 240 | INPUT_FRONTEND_SOCIAL_CLUB = 212, | |
| 241 | INPUT_FRONTEND_SOCIAL_CLUB_SECONDARY = 213, | |
| 242 | INPUT_FRONTEND_DELETE = 214, | |
| 243 | INPUT_FRONTEND_ENDSCREEN_ACCEPT = 215, | |
| 244 | INPUT_FRONTEND_ENDSCREEN_EXPAND = 216, | |
| 245 | INPUT_FRONTEND_SELECT = 217, | |
| 246 | INPUT_SCRIPT_LEFT_AXIS_X = 218, | |
| 247 | INPUT_SCRIPT_LEFT_AXIS_Y = 219, | |
| 248 | INPUT_SCRIPT_RIGHT_AXIS_X = 220, | |
| 249 | INPUT_SCRIPT_RIGHT_AXIS_Y = 221, | |
| 250 | INPUT_SCRIPT_RUP = 222, | |
| 251 | INPUT_SCRIPT_RDOWN = 223, | |
| 252 | INPUT_SCRIPT_RLEFT = 224, | |
| 253 | INPUT_SCRIPT_RRIGHT = 225, | |
| 254 | INPUT_SCRIPT_LB = 226, | |
| 255 | INPUT_SCRIPT_RB = 227, | |
| 256 | INPUT_SCRIPT_LT = 228, | |
| 257 | INPUT_SCRIPT_RT = 229, | |
| 258 | INPUT_SCRIPT_LS = 230, | |
| 259 | INPUT_SCRIPT_RS = 231, | |
| 260 | INPUT_SCRIPT_PAD_UP = 232, | |
| 261 | INPUT_SCRIPT_PAD_DOWN = 233, | |
| 262 | INPUT_SCRIPT_PAD_LEFT = 234, | |
| 263 | INPUT_SCRIPT_PAD_RIGHT = 235, | |
| 264 | INPUT_SCRIPT_SELECT = 236, | |
| 265 | INPUT_CURSOR_ACCEPT = 237, | |
| 266 | INPUT_CURSOR_CANCEL = 238, | |
| 267 | INPUT_CURSOR_X = 239, | |
| 268 | INPUT_CURSOR_Y = 240, | |
| 269 | INPUT_CURSOR_SCROLL_UP = 241, | |
| 270 | INPUT_CURSOR_SCROLL_DOWN = 242, | |
| 271 | INPUT_ENTER_CHEAT_CODE = 243, | |
| 272 | INPUT_INTERACTION_MENU = 244, | |
| 273 | INPUT_MP_TEXT_CHAT_ALL = 245, | |
| 274 | INPUT_MP_TEXT_CHAT_TEAM = 246, | |
| 275 | INPUT_MP_TEXT_CHAT_FRIENDS = 247, | |
| 276 | INPUT_MP_TEXT_CHAT_CREW = 248, | |
| 277 | INPUT_PUSH_TO_TALK = 249, | |
| 278 | INPUT_CREATOR_LS = 250, | |
| 279 | INPUT_CREATOR_RS = 251, | |
| 280 | INPUT_CREATOR_LT = 252, | |
| 281 | INPUT_CREATOR_RT = 253, | |
| 282 | INPUT_CREATOR_MENU_TOGGLE = 254, | |
| 283 | INPUT_CREATOR_ACCEPT = 255, | |
| 284 | INPUT_CREATOR_DELETE = 256, | |
| 285 | INPUT_ATTACK2 = 257, | |
| 286 | INPUT_RAPPEL_JUMP = 258, | |
| 287 | INPUT_RAPPEL_LONG_JUMP = 259, | |
| 288 | INPUT_RAPPEL_SMASH_WINDOW = 260, | |
| 289 | INPUT_PREV_WEAPON = 261, | |
| 290 | INPUT_NEXT_WEAPON = 262, | |
| 291 | INPUT_MELEE_ATTACK1 = 263, | |
| 292 | INPUT_MELEE_ATTACK2 = 264, | |
| 293 | INPUT_WHISTLE = 265, | |
| 294 | INPUT_MOVE_LEFT = 266, | |
| 295 | INPUT_MOVE_RIGHT = 267, | |
| 296 | INPUT_MOVE_UP = 268, | |
| 297 | INPUT_MOVE_DOWN = 269, | |
| 298 | INPUT_LOOK_LEFT = 270, | |
| 299 | INPUT_LOOK_RIGHT = 271, | |
| 300 | INPUT_LOOK_UP = 272, | |
| 301 | INPUT_LOOK_DOWN = 273, | |
| 302 | INPUT_SNIPER_ZOOM_IN = 274, | |
| 303 | INPUT_SNIPER_ZOOM_OUT = 275, | |
| 304 | INPUT_SNIPER_ZOOM_IN_ALTERNATE = 276, | |
| 305 | INPUT_SNIPER_ZOOM_OUT_ALTERNATE = 277, | |
| 306 | INPUT_VEH_MOVE_LEFT = 278, | |
| 307 | INPUT_VEH_MOVE_RIGHT = 279, | |
| 308 | INPUT_VEH_MOVE_UP = 280, | |
| 309 | INPUT_VEH_MOVE_DOWN = 281, | |
| 310 | INPUT_VEH_GUN_LEFT = 282, | |
| 311 | INPUT_VEH_GUN_RIGHT = 283, | |
| 312 | INPUT_VEH_GUN_UP = 284, | |
| 313 | INPUT_VEH_GUN_DOWN = 285, | |
| 314 | INPUT_VEH_LOOK_LEFT = 286, | |
| 315 | INPUT_VEH_LOOK_RIGHT = 287, | |
| 316 | INPUT_REPLAY_START_STOP_RECORDING = 288, | |
| 317 | INPUT_REPLAY_START_STOP_RECORDING_SECONDARY = 289, | |
| 318 | INPUT_SCALED_LOOK_LR = 290, | |
| 319 | INPUT_SCALED_LOOK_UD = 291, | |
| 320 | INPUT_SCALED_LOOK_UP_ONLY = 292, | |
| 321 | INPUT_SCALED_LOOK_DOWN_ONLY = 293, | |
| 322 | INPUT_SCALED_LOOK_LEFT_ONLY = 294, | |
| 323 | INPUT_SCALED_LOOK_RIGHT_ONLY = 295, | |
| 324 | INPUT_REPLAY_MARKER_DELETE = 296, | |
| 325 | INPUT_REPLAY_CLIP_DELETE = 297, | |
| 326 | INPUT_REPLAY_PAUSE = 298, | |
| 327 | INPUT_REPLAY_REWIND = 299, | |
| 328 | INPUT_REPLAY_FFWD = 300, | |
| 329 | INPUT_REPLAY_NEWMARKER = 301, | |
| 330 | INPUT_REPLAY_RECORD = 302, | |
| 331 | INPUT_REPLAY_SCREENSHOT = 303, | |
| 332 | INPUT_REPLAY_HIDEHUD = 304, | |
| 333 | INPUT_REPLAY_STARTPOINT = 305, | |
| 334 | INPUT_REPLAY_ENDPOINT = 306, | |
| 335 | INPUT_REPLAY_ADVANCE = 307, | |
| 336 | INPUT_REPLAY_BACK = 308, | |
| 337 | INPUT_REPLAY_TOOLS = 309, | |
| 338 | INPUT_REPLAY_RESTART = 310, | |
| 339 | INPUT_REPLAY_SHOWHOTKEY = 311, | |
| 340 | INPUT_REPLAY_CYCLEMARKERLEFT = 312, | |
| 341 | INPUT_REPLAY_CYCLEMARKERRIGHT = 313, | |
| 342 | INPUT_REPLAY_FOVINCREASE = 314, | |
| 343 | INPUT_REPLAY_FOVDECREASE = 315, | |
| 344 | INPUT_REPLAY_CAMERAUP = 316, | |
| 345 | INPUT_REPLAY_CAMERADOWN = 317, | |
| 346 | INPUT_REPLAY_SAVE = 318, | |
| 347 | INPUT_REPLAY_TOGGLETIME = 319, | |
| 348 | INPUT_REPLAY_TOGGLETIPS = 320, | |
| 349 | INPUT_REPLAY_PREVIEW = 321, | |
| 350 | INPUT_REPLAY_TOGGLE_TIMELINE = 322, | |
| 351 | INPUT_REPLAY_TIMELINE_PICKUP_CLIP = 323, | |
| 352 | INPUT_REPLAY_TIMELINE_DUPLICATE_CLIP = 324, | |
| 353 | INPUT_REPLAY_TIMELINE_PLACE_CLIP = 325, | |
| 354 | INPUT_REPLAY_CTRL = 326, | |
| 355 | INPUT_REPLAY_TIMELINE_SAVE = 327, | |
| 356 | INPUT_REPLAY_PREVIEW_AUDIO = 328, | |
| 357 | INPUT_VEH_DRIVE_LOOK = 329, | |
| 358 | INPUT_VEH_DRIVE_LOOK2 = 330, | |
| 359 | INPUT_VEH_FLY_ATTACK2 = 331, | |
| 360 | INPUT_RADIO_WHEEL_UD = 332, | |
| 361 | INPUT_RADIO_WHEEL_LR = 333, | |
| 362 | INPUT_VEH_SLOWMO_UD = 334, | |
| 363 | INPUT_VEH_SLOWMO_UP_ONLY = 335, | |
| 364 | INPUT_VEH_SLOWMO_DOWN_ONLY = 336, | |
| 365 | INPUT_MAP_POI = 337 | |
| 366 | }; | |
| 367 | int *settings_font, inull; | |
| 368 | RGBA *settings_rgba; | |
| 369 | RGBA titlebox = { 167, 23, 172, 255 };
| |
| 370 | RGBA BG = { 20, 20, 20, 200 };
| |
| 371 | RGBA titletext = { 255, 255, 255, 255 };
| |
| 372 | RGBA optiontext = { 255, 255, 255, 255 };
| |
| 373 | RGBA optioncount = { 255, 255, 255, 255 };
| |
| 374 | RGBA selectedtext = { 255, 255, 255, 255 };
| |
| 375 | RGBA optionbreaks = { 255, 255, 255, 240 };
| |
| 376 | RGBA selectionhi = { 255, 255, 255, 140 };
| |
| 377 | int font_title = 7, font_options = 4, font_selection = 4, font_breaks = 1; | |
| 378 | float menuPos = 0, OptionY; | |
| 379 | int screen_res_x, screen_res_y; | |
| 380 | DWORD myVeh, cam_gta2; | |
| 381 | float current_timescale = 1.0f; | |
| 382 | ||
| 383 | ||
| 384 | ||
| 385 | // Booleans for loops go here: | |
| 386 | bool loop_massacre_mode = 0, loop_RainbowBoxes = 0, loop_gravity_gun = 0, loop_gta2cam = 0; | |
| 387 | } | |
| 388 | namespace{
| |
| 389 | // Declare subroutines here. | |
| 390 | ||
| 391 | ||
| 392 | ||
| 393 | } | |
| 394 | namespace{
| |
| 395 | // Define subroutines here. | |
| 396 | ||
| 397 | void VectorToFloat(Vector3 unk, float *Out) | |
| 398 | {
| |
| 399 | Out[0] = unk.x; | |
| 400 | Out[1] = unk.y; | |
| 401 | Out[2] = unk.z; | |
| 402 | } | |
| 403 | int RandomRGB() | |
| 404 | {
| |
| 405 | srand(GetTickCount()); | |
| 406 | return (GET_RANDOM_INT_IN_RANGE(0, 255)); | |
| 407 | } | |
| 408 | bool get_key_pressed(int nVirtKey) | |
| 409 | {
| |
| 410 | return (GetAsyncKeyState(nVirtKey) & 0x8000) != 0; | |
| 411 | } | |
| 412 | bool Check_self_in_vehicle() | |
| 413 | {
| |
| 414 | if (IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID(), 0)) return true; else return false; | |
| 415 | } | |
| 416 | int FindFreeCarSeat(DWORD vehicle) | |
| 417 | {
| |
| 418 | int max = GET_VEHICLE_MAX_NUMBER_OF_PASSENGERS(vehicle) - 2; | |
| 419 | for (static int tick = -1; tick <= max; tick++) | |
| 420 | {
| |
| 421 | if (IS_VEHICLE_SEAT_FREE(vehicle, tick)) | |
| 422 | {
| |
| 423 | return tick; | |
| 424 | } | |
| 425 | } | |
| 426 | ||
| 427 | return -1; | |
| 428 | } | |
| 429 | void offset_from_entity(int entity, float X, float Y, float Z, float * Out) | |
| 430 | {
| |
| 431 | VectorToFloat(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(entity, X, Y, Z), Out); | |
| 432 | } | |
| 433 | void RequestControlOfEnt(DWORD entity) | |
| 434 | {
| |
| 435 | int tick = 0; | |
| 436 | ||
| 437 | while (!NETWORK_HAS_CONTROL_OF_ENTITY(entity) && tick <= 12) | |
| 438 | {
| |
| 439 | NETWORK_REQUEST_CONTROL_OF_ENTITY(entity); | |
| 440 | tick++; | |
| 441 | } | |
| 442 | } | |
| 443 | void RequestControlOfid(DWORD netid) | |
| 444 | {
| |
| 445 | int tick = 0; | |
| 446 | ||
| 447 | while (!NETWORK_HAS_CONTROL_OF_NETWORK_ID(netid) && tick <= 12) | |
| 448 | {
| |
| 449 | NETWORK_REQUEST_CONTROL_OF_NETWORK_ID(netid); | |
| 450 | tick++; | |
| 451 | } | |
| 452 | } | |
| 453 | void RequestModel(DWORD Hash) | |
| 454 | {
| |
| 455 | REQUEST_MODEL(Hash); | |
| 456 | while (!(HAS_MODEL_LOADED(Hash))) | |
| 457 | {
| |
| 458 | WAIT(5); | |
| 459 | } | |
| 460 | } | |
| 461 | int PlaceObject(DWORD Hash, float X, float Y, float Z, float Pitch, float Roll, float Yaw) | |
| 462 | {
| |
| 463 | RequestModel(Hash); | |
| 464 | static DWORD object = CREATE_OBJECT(Hash, X, Y, Z, 1, 1, 0); | |
| 465 | SET_ENTITY_ROTATION(object, Pitch, Roll, Yaw, 2, 1); | |
| 466 | FREEZE_ENTITY_POSITION(object, 1); | |
| 467 | SET_ENTITY_LOD_DIST(object, 696969); | |
| 468 | SET_MODEL_AS_NO_LONGER_NEEDED(Hash); | |
| 469 | SET_OBJECT_AS_NO_LONGER_NEEDED(&object); | |
| 470 | ||
| 471 | return object; | |
| 472 | } | |
| 473 | void setupdraw() | |
| 474 | {
| |
| 475 | SET_TEXT_FONT(0); | |
| 476 | SET_TEXT_SCALE(0.4f, 0.4f); | |
| 477 | SET_TEXT_COLOUR(255, 255, 255, 255); | |
| 478 | SET_TEXT_WRAP(0.0f, 1.0f); | |
| 479 | SET_TEXT_CENTRE(0); | |
| 480 | SET_TEXT_DROPSHADOW(0, 0, 0, 0, 0); | |
| 481 | SET_TEXT_EDGE(0, 0, 0, 0, 0); | |
| 482 | SET_TEXT_OUTLINE(); | |
| 483 | } | |
| 484 | void drawstring(char* text, float X, float Y) | |
| 485 | {
| |
| 486 | _SET_TEXT_ENTRY("STRING");
| |
| 487 | _ADD_TEXT_COMPONENT_STRING(text); | |
| 488 | _DRAW_TEXT(X, Y); | |
| 489 | } | |
| 490 | void drawinteger(int text, float X, float Y) | |
| 491 | {
| |
| 492 | _SET_TEXT_ENTRY("NUMBER");
| |
| 493 | ADD_TEXT_COMPONENT_INTEGER(text); | |
| 494 | _DRAW_TEXT(X, Y); | |
| 495 | } | |
| 496 | void drawfloat(float text, DWORD decimal_places, float X, float Y) | |
| 497 | {
| |
| 498 | _SET_TEXT_ENTRY("NUMBER");
| |
| 499 | ADD_TEXT_COMPONENT_FLOAT(text, decimal_places); | |
| 500 | _DRAW_TEXT(X, Y); | |
| 501 | } | |
| 502 | void PlaySoundFrontend(char* sound_dict, char* sound_name) | |
| 503 | {
| |
| 504 | PLAY_SOUND_FRONTEND(-1, sound_name, sound_dict, 0); | |
| 505 | } | |
| 506 | void PlaySoundFrontend_default(char* sound_name) | |
| 507 | {
| |
| 508 | PLAY_SOUND_FRONTEND(-1, sound_name, "HUD_FRONTEND_DEFAULT_SOUNDSET", 0); | |
| 509 | } | |
| 510 | bool Check_compare_string_length(char* unk1, size_t max_length) | |
| 511 | {
| |
| 512 | if (strlen(unk1) <= max_length) return true; else return false; | |
| 513 | } | |
| 514 | char* AddStrings(char* string1, char* string2) | |
| 515 | {
| |
| 516 | memset(str, 0, sizeof(str)); | |
| 517 | strcpy_s(str, ""); | |
| 518 | strcpy_s(str, string1); | |
| 519 | strcat_s(str, string2); | |
| 520 | return str; | |
| 521 | } | |
| 522 | char* AddInt_S(char* string1, int int2) | |
| 523 | {
| |
| 524 | static char* Return; | |
| 525 | printf(Return, "%i", int2); | |
| 526 | Return = AddStrings(string1, Return); | |
| 527 | return Return; | |
| 528 | ||
| 529 | /*std::string string2 = string1; | |
| 530 | string2 += std::to_string(int2); | |
| 531 | ||
| 532 | char * Char = new char[string2.size() + 1]; | |
| 533 | std::copy(string2.begin(), string2.end(), Char); | |
| 534 | Char[string2.size()] = '\0'; | |
| 535 | ||
| 536 | static char* Return = Char; | |
| 537 | delete[] Char; | |
| 538 | return Return;*/ | |
| 539 | } | |
| 540 | char* keyboard() | |
| 541 | {
| |
| 542 | float i = 2.0000f; | |
| 543 | while (i > 0.4750f) | |
| 544 | {
| |
| 545 | WAIT(10); | |
| 546 | DRAW_RECT(i, 0.9389f, 0.3875f, 0.736f, titlebox.R, titlebox.G, titlebox.B, 120); | |
| 547 | i -= 0.0050f; | |
| 548 | } | |
| 549 | ||
| 550 | static char* tempChar; | |
| 551 | bool j; | |
| 552 | if (Check_self_in_vehicle()) j = true; else j = false; | |
| 553 | ||
| 554 | while (!IsKeyDown(VK_RETURN)) | |
| 555 | {
| |
| 556 | WAIT(5); | |
| 557 | DRAW_RECT(i, 0.9389f, 0.3875f, 0.736f, titlebox.R, titlebox.G, titlebox.B, 120); | |
| 558 | setupdraw(); | |
| 559 | SET_TEXT_FONT(1); | |
| 560 | drawstring("INPUT:", 0.2836f, 0.9129f);
| |
| 561 | ||
| 562 | ||
| 563 | if (IsKeyJustUp('1')) AddStrings(tempChar, "1");
| |
| 564 | else if (IsKeyJustUp('2')) AddStrings(tempChar, "2");
| |
| 565 | else if (IsKeyJustUp('3')) AddStrings(tempChar, "3");
| |
| 566 | else if (IsKeyJustUp('4')) AddStrings(tempChar, "4");
| |
| 567 | else if (IsKeyJustUp('5')) AddStrings(tempChar, "5");
| |
| 568 | else if (IsKeyJustUp('6')) AddStrings(tempChar, "6");
| |
| 569 | else if (IsKeyJustUp('7')) AddStrings(tempChar, "7");
| |
| 570 | else if (IsKeyJustUp('8')) AddStrings(tempChar, "8");
| |
| 571 | else if (IsKeyJustUp('9')) AddStrings(tempChar, "9");
| |
| 572 | else if (IsKeyJustUp('0')) AddStrings(tempChar, "0");
| |
| 573 | else if (IsKeyJustUp('A')) AddStrings(tempChar, "A");
| |
| 574 | else if (IsKeyJustUp('B')) AddStrings(tempChar, "B");
| |
| 575 | else if (IsKeyJustUp('C')) AddStrings(tempChar, "C");
| |
| 576 | else if (IsKeyJustUp('D')) AddStrings(tempChar, "D");
| |
| 577 | else if (IsKeyJustUp('E')) AddStrings(tempChar, "E");
| |
| 578 | else if (IsKeyJustUp('F')){ AddStrings(tempChar, "F"); if (j) SET_PED_INTO_VEHICLE(PLAYER_PED_ID(), myVeh, FindFreeCarSeat(myVeh)); }
| |
| 579 | else if (IsKeyJustUp('G')) AddStrings(tempChar, "G");
| |
| 580 | else if (IsKeyJustUp('H')) AddStrings(tempChar, "H");
| |
| 581 | else if (IsKeyJustUp('I')) AddStrings(tempChar, "I");
| |
| 582 | else if (IsKeyJustUp('J')) AddStrings(tempChar, "J");
| |
| 583 | else if (IsKeyJustUp('K')) AddStrings(tempChar, "K");
| |
| 584 | else if (IsKeyJustUp('L')) AddStrings(tempChar, "L");
| |
| 585 | else if (IsKeyJustUp('M')) AddStrings(tempChar, "M");
| |
| 586 | else if (IsKeyJustUp('N')) AddStrings(tempChar, "N");
| |
| 587 | else if (IsKeyJustUp('O')) AddStrings(tempChar, "O");
| |
| 588 | else if (IsKeyJustUp('P')) AddStrings(tempChar, "P");
| |
| 589 | else if (IsKeyJustUp('Q')) AddStrings(tempChar, "Q");
| |
| 590 | else if (IsKeyJustUp('R')) AddStrings(tempChar, "R");
| |
| 591 | else if (IsKeyJustUp('S')) AddStrings(tempChar, "S");
| |
| 592 | else if (IsKeyJustUp('T')) AddStrings(tempChar, "T");
| |
| 593 | else if (IsKeyJustUp('U')) AddStrings(tempChar, "U");
| |
| 594 | else if (IsKeyJustUp('V')) AddStrings(tempChar, "V");
| |
| 595 | else if (IsKeyJustUp('W')) AddStrings(tempChar, "W");
| |
| 596 | else if (IsKeyJustUp('X')) AddStrings(tempChar, "X");
| |
| 597 | else if (IsKeyJustUp('Y')) AddStrings(tempChar, "Y");
| |
| 598 | else if (IsKeyJustUp('Z')) AddStrings(tempChar, "Z");
| |
| 599 | else if (IsKeyJustUp(VK_ESCAPE)) return ""; | |
| 600 | else if (IsKeyJustUp(VK_SPACE)) AddStrings(tempChar, " "); | |
| 601 | else if (IsKeyJustUp(VK_BACK) && strlen(tempChar) > 0) | |
| 602 | {
| |
| 603 | std::string tempStr(tempChar); tempStr.pop_back(); | |
| 604 | char *tempChar2 = new char[tempStr.length() + 1]; | |
| 605 | std::strcpy(tempChar2, tempStr.c_str()); | |
| 606 | tempChar = tempChar2; | |
| 607 | delete[] tempChar2; | |
| 608 | } | |
| 609 | ||
| 610 | setupdraw(); | |
| 611 | SET_TEXT_FONT(14); | |
| 612 | SET_TEXT_CENTRE(1); | |
| 613 | drawstring(tempChar, 0.46, 0.9); | |
| 614 | ||
| 615 | } | |
| 616 | return tempChar; | |
| 617 | } | |
| 618 | int StringToInt(char* text) | |
| 619 | {
| |
| 620 | static DWORD tempp; | |
| 621 | if (text == "") return NULL; | |
| 622 | if (STRING_TO_INT((DWORD*)text, &tempp)) return NULL; | |
| 623 | ||
| 624 | return tempp; | |
| 625 | } | |
| 626 | void PrintStringBottomCentre(char* text) | |
| 627 | {
| |
| 628 | _0xB87A37EEB7FAA67D("STRING");
| |
| 629 | _ADD_TEXT_COMPONENT_STRING(text); | |
| 630 | _0x9D77056A530643F6(2000, 1); | |
| 631 | } | |
| 632 | void PrintFloatBottomCentre(float text, __int8 decimal_places) | |
| 633 | {
| |
| 634 | _0xB87A37EEB7FAA67D("NUMBER");
| |
| 635 | ADD_TEXT_COMPONENT_FLOAT(text, (DWORD)decimal_places); | |
| 636 | _0x9D77056A530643F6(2000, 1); | |
| 637 | } | |
| 638 | void PrintBottomLeft(char* text) | |
| 639 | {
| |
| 640 | _0x202709F4C58A0424("STRING");
| |
| 641 | _ADD_TEXT_COMPONENT_STRING(text); | |
| 642 | _0x44FA03975424A0EE(0, 1); // Not sure if right native | |
| 643 | } | |
| 644 | void PrintError_InvalidInput() | |
| 645 | {
| |
| 646 | PrintStringBottomCentre("~r~Error:~s~ Invalid Input.");
| |
| 647 | } | |
| 648 | class menu | |
| 649 | {
| |
| 650 | public: | |
| 651 | static unsigned __int16 currentsub; | |
| 652 | static unsigned __int16 currentop; | |
| 653 | static unsigned __int16 currentop_w_breaks; | |
| 654 | static unsigned __int16 totalop; | |
| 655 | static unsigned __int16 printingop; | |
| 656 | static unsigned __int16 breakcount; | |
| 657 | static unsigned __int16 totalbreaks; | |
| 658 | static unsigned __int8 breakscroll; | |
| 659 | static __int16 currentsub_ar_index; | |
| 660 | static int currentsub_ar[20]; | |
| 661 | static int currentop_ar[20]; | |
| 662 | static int SetSub_delayed; | |
| 663 | static unsigned long int livetimer; | |
| 664 | static bool bit_centre_title, bit_centre_options, bit_centre_breaks; | |
| 665 | ||
| 666 | static void loops(); | |
| 667 | static void sub_handler(); | |
| 668 | static void submenu_switch(); | |
| 669 | static void DisableControls() | |
| 670 | {
| |
| 671 | HIDE_HELP_TEXT_THIS_FRAME(); | |
| 672 | SET_CINEMATIC_BUTTON_ACTIVE(1); | |
| 673 | DISABLE_CONTROL_ACTION(0, INPUT_NEXT_CAMERA, controllerinput_bool); | |
| 674 | DISABLE_CONTROL_ACTION(0, INPUT_VEH_SELECT_NEXT_WEAPON, controllerinput_bool); | |
| 675 | DISABLE_CONTROL_ACTION(0, INPUT_VEH_CIN_CAM, controllerinput_bool); | |
| 676 | SET_INPUT_EXCLUSIVE(2, INPUT_FRONTEND_X); | |
| 677 | SET_INPUT_EXCLUSIVE(2, INPUT_FRONTEND_ACCEPT); | |
| 678 | SET_INPUT_EXCLUSIVE(2, INPUT_FRONTEND_CANCEL); | |
| 679 | DISABLE_CONTROL_ACTION(0, INPUT_HUD_SPECIAL, controllerinput_bool); | |
| 680 | SET_INPUT_EXCLUSIVE(2, INPUT_FRONTEND_DOWN); | |
| 681 | SET_INPUT_EXCLUSIVE(2, INPUT_FRONTEND_UP); | |
| 682 | DISABLE_CONTROL_ACTION(2, INPUT_FRONTEND_ACCEPT, controllerinput_bool); | |
| 683 | DISABLE_CONTROL_ACTION(2, INPUT_FRONTEND_CANCEL, controllerinput_bool); | |
| 684 | DISABLE_CONTROL_ACTION(2, INPUT_FRONTEND_LEFT, controllerinput_bool); | |
| 685 | DISABLE_CONTROL_ACTION(2, INPUT_FRONTEND_RIGHT, controllerinput_bool); | |
| 686 | DISABLE_CONTROL_ACTION(2, INPUT_FRONTEND_DOWN, controllerinput_bool); | |
| 687 | DISABLE_CONTROL_ACTION(2, INPUT_FRONTEND_UP, controllerinput_bool); | |
| 688 | DISABLE_CONTROL_ACTION(2, INPUT_FRONTEND_RDOWN, controllerinput_bool); | |
| 689 | DISABLE_CONTROL_ACTION(2, INPUT_FRONTEND_ACCEPT, controllerinput_bool); | |
| 690 | HIDE_HUD_COMPONENT_THIS_FRAME(10); | |
| 691 | HIDE_HUD_COMPONENT_THIS_FRAME(6); | |
| 692 | HIDE_HUD_COMPONENT_THIS_FRAME(7); | |
| 693 | HIDE_HUD_COMPONENT_THIS_FRAME(9); | |
| 694 | HIDE_HUD_COMPONENT_THIS_FRAME(8); | |
| 695 | SET_INPUT_EXCLUSIVE(2, INPUT_FRONTEND_LEFT); | |
| 696 | SET_INPUT_EXCLUSIVE(2, INPUT_FRONTEND_RIGHT); | |
| 697 | DISABLE_CONTROL_ACTION(0, INPUT_SELECT_WEAPON, controllerinput_bool); | |
| 698 | DISABLE_CONTROL_ACTION(0, INPUT_SELECT_WEAPON_UNARMED, controllerinput_bool); | |
| 699 | DISABLE_CONTROL_ACTION(0, INPUT_SELECT_WEAPON_MELEE, controllerinput_bool); | |
| 700 | DISABLE_CONTROL_ACTION(0, INPUT_SELECT_WEAPON_HANDGUN, controllerinput_bool); | |
| 701 | DISABLE_CONTROL_ACTION(0, INPUT_SELECT_WEAPON_SHOTGUN, controllerinput_bool); | |
| 702 | DISABLE_CONTROL_ACTION(0, INPUT_SELECT_WEAPON_SMG, controllerinput_bool); | |
| 703 | DISABLE_CONTROL_ACTION(0, INPUT_SELECT_WEAPON_AUTO_RIFLE, controllerinput_bool); | |
| 704 | DISABLE_CONTROL_ACTION(0, INPUT_SELECT_WEAPON_SNIPER, controllerinput_bool); | |
| 705 | DISABLE_CONTROL_ACTION(0, INPUT_SELECT_WEAPON_HEAVY, controllerinput_bool); | |
| 706 | DISABLE_CONTROL_ACTION(0, INPUT_SELECT_WEAPON_SPECIAL, controllerinput_bool); | |
| 707 | DISABLE_CONTROL_ACTION(0, INPUT_WEAPON_WHEEL_NEXT, controllerinput_bool); | |
| 708 | DISABLE_CONTROL_ACTION(0, INPUT_WEAPON_WHEEL_PREV, controllerinput_bool); | |
| 709 | DISABLE_CONTROL_ACTION(0, INPUT_WEAPON_SPECIAL_TWO, controllerinput_bool); | |
| 710 | DISABLE_CONTROL_ACTION(0, INPUT_DIVE, controllerinput_bool); | |
| 711 | DISABLE_CONTROL_ACTION(0, INPUT_MELEE_ATTACK_LIGHT, controllerinput_bool); | |
| 712 | DISABLE_CONTROL_ACTION(0, INPUT_MELEE_ATTACK_HEAVY, controllerinput_bool); | |
| 713 | DISABLE_CONTROL_ACTION(0, INPUT_MELEE_BLOCK, controllerinput_bool); | |
| 714 | DISABLE_CONTROL_ACTION(0, INPUT_ARREST, controllerinput_bool); | |
| 715 | DISABLE_CONTROL_ACTION(0, INPUT_VEH_HEADLIGHT, controllerinput_bool); | |
| 716 | DISABLE_CONTROL_ACTION(0, INPUT_VEH_RADIO_WHEEL, controllerinput_bool); | |
| 717 | DISABLE_CONTROL_ACTION(0, INPUT_CONTEXT, controllerinput_bool); | |
| 718 | DISABLE_CONTROL_ACTION(0, INPUT_RELOAD, controllerinput_bool); | |
| 719 | DISABLE_CONTROL_ACTION(0, INPUT_DIVE, controllerinput_bool); | |
| 720 | DISABLE_CONTROL_ACTION(0, INPUT_VEH_CIN_CAM, controllerinput_bool); | |
| 721 | DISABLE_CONTROL_ACTION(0, INPUT_JUMP, controllerinput_bool); | |
| 722 | DISABLE_CONTROL_ACTION(0, INPUT_VEH_SELECT_NEXT_WEAPON, controllerinput_bool); | |
| 723 | DISABLE_CONTROL_ACTION(0, INPUT_VEH_FLY_SELECT_NEXT_WEAPON, controllerinput_bool); | |
| 724 | DISABLE_CONTROL_ACTION(0, INPUT_SELECT_CHARACTER_FRANKLIN, controllerinput_bool); | |
| 725 | DISABLE_CONTROL_ACTION(0, INPUT_SELECT_CHARACTER_MICHAEL, controllerinput_bool); | |
| 726 | DISABLE_CONTROL_ACTION(0, INPUT_SELECT_CHARACTER_TREVOR, controllerinput_bool); | |
| 727 | DISABLE_CONTROL_ACTION(0, INPUT_SELECT_CHARACTER_MULTIPLAYER, controllerinput_bool); | |
| 728 | DISABLE_CONTROL_ACTION(0, INPUT_CHARACTER_WHEEL, controllerinput_bool); | |
| 729 | } | |
| 730 | static void base() | |
| 731 | {
| |
| 732 | GET_SCREEN_RESOLUTION(&screen_res_x, &screen_res_y); // Get screen res | |
| 733 | if (menu::currentsub != SUB::CLOSED) | |
| 734 | {
| |
| 735 | DWORD dword = (DWORD)("CommonMenu");
| |
| 736 | if (!HAS_STREAMED_TEXTURE_DICT_LOADED(&dword)){ REQUEST_STREAMED_TEXTURE_DICT(&dword, 0); }
| |
| 737 | background(); | |
| 738 | optionhi(); | |
| 739 | } | |
| 740 | } | |
| 741 | static void background() | |
| 742 | {
| |
| 743 | float temp; | |
| 744 | if (totalop > 14) temp = 14; else temp = (float)totalop; // Calculate last option number to draw rect | |
| 745 | ||
| 746 | // Calculate Y Coord | |
| 747 | float bg_Y = ((temp * 0.035f) / 2.0f) + 0.159f; | |
| 748 | float bg_length = temp * 0.035f; | |
| 749 | ||
| 750 | // Draw titlebox | |
| 751 | DRAW_RECT(0.16f + menuPos, 0.1175f, 0.20f, 0.083f, titlebox.R, titlebox.G, titlebox.B, titlebox.A); | |
| 752 | ||
| 753 | // Draw background | |
| 754 | DRAW_RECT(0.16f + menuPos, bg_Y, 0.20f, bg_length, BG.R, BG.G, BG.B, BG.A); | |
| 755 | ||
| 756 | // Draw scroller indicator rect | |
| 757 | if (totalop > 14) temp = 14.0f; else temp = (float)totalop; | |
| 758 | float scr_rect_Y = ((temp + 1.0f) * 0.035f) + 0.1415f; | |
| 759 | DRAW_RECT(0.16f + menuPos, scr_rect_Y, 0.20f, 0.0345f, BG.R, BG.G, BG.B, BG.A); | |
| 760 | ||
| 761 | // Draw thin line over scroller indicator rect | |
| 762 | if (totalop < 14) DRAW_RECT(0.16f + menuPos, (float)(totalop)* 0.035f + 0.16f, 0.20f, 0.0022f, 255, 255, 255, 255); | |
| 763 | else DRAW_RECT(0.16f + menuPos, 14.0f * 0.035f + 0.16f, 0.20f, 0.0022f, 255, 255, 255, 255); | |
| 764 | ||
| 765 | // Draw scroller indicator | |
| 766 | DWORD dword = (DWORD)("CommonMenu");
| |
| 767 | if ((totalop > 14) && HAS_STREAMED_TEXTURE_DICT_LOADED(&dword)) | |
| 768 | {
| |
| 769 | DWORD dword2 = (DWORD)"shop_arrows_upANDdown"; | |
| 770 | DWORD dword3 = (DWORD)"arrowright"; | |
| 771 | Vector3 texture_res = GET_TEXTURE_RESOLUTION(&dword, &dword2); | |
| 772 | ||
| 773 | temp = ((14.0f + 1.0f) * 0.035f) + 0.1259f; | |
| 774 | ||
| 775 | if (currentop == 1) DRAW_SPRITE(dword, dword3, 0.16f + menuPos, temp, texture_res.x / (float)screen_res_x, texture_res.y / (float)screen_res_y, 270.0f, titlebox.R, titlebox.G, titlebox.B, 255); | |
| 776 | else if (currentop == totalop) DRAW_SPRITE(dword, dword3, 0.16f + menuPos, temp, texture_res.x / (float)screen_res_x, texture_res.y / (float)screen_res_y, 90.0f, titlebox.R, titlebox.G, titlebox.B, 255); | |
| 777 | else DRAW_SPRITE(dword, dword2, 0.16f + menuPos, temp, texture_res.x / (float)screen_res_x, texture_res.y / (float)screen_res_y, 0.0f, titlebox.R, titlebox.G, titlebox.B, 255); | |
| 778 | ||
| 779 | } | |
| 780 | ||
| 781 | // Draw option count | |
| 782 | temp = scr_rect_Y - 0.0124f; | |
| 783 | setupdraw(); | |
| 784 | SET_TEXT_FONT(0); | |
| 785 | SET_TEXT_SCALE(0.0f, 0.26f); | |
| 786 | SET_TEXT_COLOUR(optioncount.R, optioncount.G, optioncount.B, optioncount.A); | |
| 787 | ||
| 788 | _SET_TEXT_ENTRY("CM_ITEM_COUNT");
| |
| 789 | ADD_TEXT_COMPONENT_INTEGER(currentop); // ! currentop_w_breaks | |
| 790 | ADD_TEXT_COMPONENT_INTEGER(totalop); // ! totalop - totalbreaks | |
| 791 | _DRAW_TEXT(0.2205f + menuPos, temp); | |
| 792 | } | |
| 793 | static void optionhi() | |
| 794 | {
| |
| 795 | float Y_coord; | |
| 796 | if (currentop > 14) Y_coord = 14.0f; else Y_coord = (float)currentop; | |
| 797 | ||
| 798 | Y_coord = (Y_coord * 0.035f) + 0.1415f; | |
| 799 | DRAW_RECT(0.16f + menuPos, Y_coord, 0.20f, 0.035f, selectionhi.R, selectionhi.G, selectionhi.B, selectionhi.A); | |
| 800 | } | |
| 801 | static bool isBinds() | |
| 802 | {
| |
| 803 | // Open menu - RB + LB / NUM4 + NUM6 | |
| 804 | return ((IS_DISABLED_CONTROL_PRESSED(2, INPUT_FRONTEND_RB) && IS_DISABLED_CONTROL_PRESSED(2, INPUT_FRONTEND_LB)) || (IsKeyDown(VK_NUMPAD4) && IsKeyDown(VK_NUMPAD6))); | |
| 805 | } | |
| 806 | static void while_closed() | |
| 807 | {
| |
| 808 | if (isBinds()) | |
| 809 | {
| |
| 810 | PlaySoundFrontend("FocusIn", "HintCamSounds");
| |
| 811 | currentsub = 1; | |
| 812 | currentsub_ar_index = 0; | |
| 813 | currentop = 1; | |
| 814 | } | |
| 815 | } | |
| 816 | static void while_opened() | |
| 817 | {
| |
| 818 | totalop = printingop; printingop = 0; | |
| 819 | totalbreaks = breakcount; breakcount = 0; breakscroll = 0; | |
| 820 | ||
| 821 | if (IS_PAUSE_MENU_ACTIVE()) SetSub_closed(); | |
| 822 | ||
| 823 | DISPLAY_AMMO_THIS_FRAME(0); | |
| 824 | DISPLAY_CASH(0); | |
| 825 | SET_RADAR_ZOOM(0); | |
| 826 | ||
| 827 | DisableControls(); | |
| 828 | ||
| 829 | // Scroll up | |
| 830 | if (IS_DISABLED_CONTROL_JUST_PRESSED(2, INPUT_SCRIPT_PAD_UP) || IsKeyJustUp(VK_NUMPAD8)) | |
| 831 | {
| |
| 832 | if (currentop == 1) Bottom(); else Up(); | |
| 833 | } | |
| 834 | ||
| 835 | // Scroll down | |
| 836 | if (IS_DISABLED_CONTROL_JUST_PRESSED(2, INPUT_SCRIPT_PAD_DOWN) || IsKeyJustUp(VK_NUMPAD2)) | |
| 837 | {
| |
| 838 | if (currentop == totalop) Top(); else Down(); | |
| 839 | } | |
| 840 | ||
| 841 | // B press | |
| 842 | if (IS_DISABLED_CONTROL_JUST_PRESSED(2, INPUT_SCRIPT_RRIGHT) || IsKeyJustUp(VK_NUMPAD0)) | |
| 843 | {
| |
| 844 | if (currentsub == SUB::MAINMENU) SetSub_closed(); else SetSub_previous(); | |
| 845 | } | |
| 846 | ||
| 847 | // Binds press | |
| 848 | if (currentsub != SUB::MAINMENU && isBinds()) | |
| 849 | {
| |
| 850 | SetSub_closed(); | |
| 851 | } | |
| 852 | } | |
| 853 | static void Up() | |
| 854 | {
| |
| 855 | currentop--; currentop_w_breaks--; | |
| 856 | PlaySoundFrontend_default("NAV_UP_DOWN");
| |
| 857 | breakscroll = 1; | |
| 858 | } | |
| 859 | static void Down() | |
| 860 | {
| |
| 861 | currentop++; currentop_w_breaks++; | |
| 862 | PlaySoundFrontend_default("NAV_UP_DOWN");
| |
| 863 | breakscroll = 2; | |
| 864 | } | |
| 865 | static void Bottom() | |
| 866 | {
| |
| 867 | currentop = totalop; currentop_w_breaks = totalop; | |
| 868 | PlaySoundFrontend_default("NAV_UP_DOWN");
| |
| 869 | breakscroll = 3; | |
| 870 | } | |
| 871 | static void Top() | |
| 872 | {
| |
| 873 | currentop = 1; currentop_w_breaks = 1; | |
| 874 | PlaySoundFrontend_default("NAV_UP_DOWN");
| |
| 875 | breakscroll = 4; | |
| 876 | } | |
| 877 | static void SetSub_previous() | |
| 878 | {
| |
| 879 | currentsub = currentsub_ar[currentsub_ar_index]; // Get previous submenu from array and set as current submenu | |
| 880 | currentop = currentop_ar[currentsub_ar_index]; // Get last selected option from array and set as current selected option | |
| 881 | currentsub_ar_index--; // Decrement array index by 1 | |
| 882 | printingop = 0; // Reset option print variable | |
| 883 | PlaySoundFrontend_default("BACK"); // Play sound
| |
| 884 | } | |
| 885 | static void SetSub_new(int sub_index) | |
| 886 | {
| |
| 887 | currentsub_ar_index++; // Increment array index | |
| 888 | currentsub_ar[currentsub_ar_index] = currentsub; // Store current submenu index in array | |
| 889 | currentsub = sub_index; // Set new submenu as current submenu (Static_1) | |
| 890 | ||
| 891 | currentop_ar[currentsub_ar_index] = currentop; // Store currently selected option in array | |
| 892 | currentop = 1; currentop_w_breaks = 1; // Set new selected option as first option in submenu | |
| 893 | ||
| 894 | printingop = 0; // Reset currently printing option var | |
| 895 | } | |
| 896 | static void SetSub_closed() | |
| 897 | {
| |
| 898 | ENABLE_ALL_CONTROL_ACTIONS(2); | |
| 899 | PlaySoundFrontend_default("BACK");
| |
| 900 | currentsub = SUB::CLOSED; | |
| 901 | } | |
| 902 | ||
| 903 | }; unsigned __int16 menu::currentsub = 0; unsigned __int16 menu::currentop = 0; unsigned __int16 menu::currentop_w_breaks = 0; unsigned __int16 menu::totalop = 0; unsigned __int16 menu::printingop = 0; unsigned __int16 menu::breakcount = 0; unsigned __int16 menu::totalbreaks = 0; unsigned __int8 menu::breakscroll = 0; __int16 menu::currentsub_ar_index = 0; int menu::currentsub_ar[20] = {}; int menu::currentop_ar[20] = {}; int menu::SetSub_delayed = 0; unsigned long int menu::livetimer; bool menu::bit_centre_title = 1, menu::bit_centre_options = 0, menu::bit_centre_breaks = 1;
| |
| 904 | bool CheckAJPressed() | |
| 905 | {
| |
| 906 | if (IS_DISABLED_CONTROL_JUST_PRESSED(2, INPUT_SCRIPT_RDOWN) || IsKeyJustUp(VK_NUMPAD5)) return true; else return false; | |
| 907 | } | |
| 908 | bool CheckRPressed() | |
| 909 | {
| |
| 910 | if (IS_DISABLED_CONTROL_PRESSED(2, INPUT_FRONTEND_RIGHT) || IsKeyDown(VK_NUMPAD6)) return true; else return false; | |
| 911 | } | |
| 912 | bool CheckRJPressed() | |
| 913 | {
| |
| 914 | if (IS_DISABLED_CONTROL_JUST_PRESSED(2, INPUT_FRONTEND_RIGHT) || IsKeyJustUp(VK_NUMPAD6)) return true; else return false; | |
| 915 | } | |
| 916 | bool CheckLPressed() | |
| 917 | {
| |
| 918 | if (IS_DISABLED_CONTROL_PRESSED(2, INPUT_FRONTEND_LEFT) || IsKeyDown(VK_NUMPAD4)) return true; else return false; | |
| 919 | } | |
| 920 | bool CheckLJPressed() | |
| 921 | {
| |
| 922 | if (IS_DISABLED_CONTROL_JUST_PRESSED(2, INPUT_FRONTEND_LEFT) || IsKeyJustUp(VK_NUMPAD4)) return true; else return false; | |
| 923 | } | |
| 924 | bool IsOptionPressed() | |
| 925 | {
| |
| 926 | if (CheckAJPressed()) | |
| 927 | {
| |
| 928 | PlaySoundFrontend_default("SELECT");
| |
| 929 | return true; | |
| 930 | } | |
| 931 | else return false; | |
| 932 | } | |
| 933 | bool IsOptionRPressed() | |
| 934 | {
| |
| 935 | if (CheckRPressed()) | |
| 936 | {
| |
| 937 | PlaySoundFrontend_default("NAV_LEFT_RIGHT");
| |
| 938 | return true; | |
| 939 | } | |
| 940 | else return false; | |
| 941 | } | |
| 942 | bool IsOptionRJPressed() | |
| 943 | {
| |
| 944 | if (CheckRJPressed()) | |
| 945 | {
| |
| 946 | PlaySoundFrontend_default("NAV_LEFT_RIGHT");
| |
| 947 | return true; | |
| 948 | } | |
| 949 | else return false; | |
| 950 | } | |
| 951 | bool IsOptionLPressed() | |
| 952 | {
| |
| 953 | if (CheckLPressed()) | |
| 954 | {
| |
| 955 | PlaySoundFrontend_default("NAV_LEFT_RIGHT");
| |
| 956 | return true; | |
| 957 | } | |
| 958 | else return false; | |
| 959 | } | |
| 960 | bool IsOptionLJPressed() | |
| 961 | {
| |
| 962 | if (CheckLJPressed()) | |
| 963 | {
| |
| 964 | PlaySoundFrontend_default("NAV_LEFT_RIGHT");
| |
| 965 | return true; | |
| 966 | } | |
| 967 | else return false; | |
| 968 | } | |
| 969 | void AddTitle(char* text) | |
| 970 | {
| |
| 971 | setupdraw(); | |
| 972 | SET_TEXT_FONT(font_title); | |
| 973 | ||
| 974 | SET_TEXT_COLOUR(titletext.R, titletext.G, titletext.B, titletext.A); | |
| 975 | ||
| 976 | if (menu::bit_centre_title) | |
| 977 | {
| |
| 978 | SET_TEXT_CENTRE(1); | |
| 979 | OptionY = 0.16f + menuPos; // X coord | |
| 980 | } | |
| 981 | else OptionY = 0.066f + menuPos; // X coord | |
| 982 | ||
| 983 | if (Check_compare_string_length(text, 14)) | |
| 984 | {
| |
| 985 | SET_TEXT_SCALE(0.75f, 0.75f); | |
| 986 | drawstring(text, OptionY, 0.1f); | |
| 987 | } | |
| 988 | else drawstring(text, OptionY, 0.13f); | |
| 989 | ||
| 990 | } | |
| 991 | void nullFunc(){ return; }
| |
| 992 | void AddOption(char* text, bool &option_code_bool = null, void (&Func)() = nullFunc, int submenu_index = -1) | |
| 993 | {
| |
| 994 | char* tempChar; | |
| 995 | if (font_options == 2 || font_options == 7) tempChar = " ------"; // Font unsafe | |
| 996 | else tempChar = " ~b~>"; // Font safe | |
| 997 | ||
| 998 | if (menu::printingop + 1 == menu::currentop && (font_selection == 2 || font_selection == 7)) tempChar = " ------"; // Font unsafe | |
| 999 | else tempChar = " ~b~>"; // Font safe | |
| 1000 | ||
| 1001 | menu::printingop++; | |
| 1002 | ||
| 1003 | OptionY = 0.0f; | |
| 1004 | if (menu::currentop <= 14) | |
| 1005 | {
| |
| 1006 | if (menu::printingop > 14) return; | |
| 1007 | else OptionY = ((float)(menu::printingop) * 0.035f) + 0.125f; | |
| 1008 | } | |
| 1009 | else | |
| 1010 | {
| |
| 1011 | if (menu::printingop < (menu::currentop - 13) || menu::printingop > menu::currentop) return; | |
| 1012 | else OptionY = ((float)(menu::printingop - (menu::currentop - 14))* 0.035f) + 0.125f; | |
| 1013 | } | |
| 1014 | ||
| 1015 | setupdraw(); | |
| 1016 | SET_TEXT_FONT(font_options); | |
| 1017 | SET_TEXT_COLOUR(optiontext.R, optiontext.G, optiontext.B, optiontext.A); | |
| 1018 | if (menu::printingop == menu::currentop) | |
| 1019 | {
| |
| 1020 | SET_TEXT_FONT(font_selection); | |
| 1021 | SET_TEXT_COLOUR(selectedtext.R, selectedtext.G, selectedtext.B, selectedtext.A); | |
| 1022 | if (IsOptionPressed()) | |
| 1023 | {
| |
| 1024 | /*if (&option_code_bool != &null)*/ option_code_bool = true; | |
| 1025 | Func(); | |
| 1026 | if (submenu_index != -1) menu::SetSub_delayed = submenu_index; | |
| 1027 | } | |
| 1028 | } | |
| 1029 | ||
| 1030 | if (submenu_index != -1) text = AddStrings(text, tempChar); | |
| 1031 | if (menu::bit_centre_options) | |
| 1032 | {
| |
| 1033 | SET_TEXT_CENTRE(1); | |
| 1034 | drawstring(text, 0.16f + menuPos, OptionY); | |
| 1035 | } | |
| 1036 | else drawstring(text, 0.066f + menuPos, OptionY); | |
| 1037 | } | |
| 1038 | void OptionStatus(int status) | |
| 1039 | {
| |
| 1040 | if (OptionY < 0.6325f && OptionY > 0.1425f) | |
| 1041 | {
| |
| 1042 | char* tempChar; | |
| 1043 | SET_TEXT_FONT(4); | |
| 1044 | SET_TEXT_SCALE(0.34f, 0.34f); | |
| 1045 | SET_TEXT_CENTRE(1); | |
| 1046 | ||
| 1047 | if (status == 0){
| |
| 1048 | SET_TEXT_COLOUR(255, 102, 102, 250); //RED | |
| 1049 | tempChar = "OFF"; | |
| 1050 | } | |
| 1051 | else if (status == 1){
| |
| 1052 | SET_TEXT_COLOUR(102, 255, 102, 250); //GREEN | |
| 1053 | tempChar = "ON"; | |
| 1054 | } | |
| 1055 | else{
| |
| 1056 | SET_TEXT_COLOUR(255, 255, 102, 250); //YELLOW | |
| 1057 | tempChar = "??"; | |
| 1058 | } | |
| 1059 | ||
| 1060 | drawstring(tempChar, 0.233f + menuPos, OptionY); | |
| 1061 | ||
| 1062 | } | |
| 1063 | } | |
| 1064 | void AddToggle(char* text, bool &loop_variable, bool &extra_option_code_ON = null, bool &extra_option_code_OFF = null) | |
| 1065 | {
| |
| 1066 | null = 0; | |
| 1067 | AddOption(text, null); | |
| 1068 | ||
| 1069 | if (null){
| |
| 1070 | loop_variable = !loop_variable; | |
| 1071 | if (loop_variable != 0) extra_option_code_ON = true; | |
| 1072 | else extra_option_code_OFF = true; | |
| 1073 | } | |
| 1074 | ||
| 1075 | OptionStatus((int)loop_variable); // Display ON/OFF | |
| 1076 | } | |
| 1077 | void AddLocal(char* text, Void condition, bool &option_code_ON, bool &option_code_OFF) | |
| 1078 | {
| |
| 1079 | null = 0; | |
| 1080 | AddOption(text, null); | |
| 1081 | if (null) | |
| 1082 | { if (condition == 0) option_code_ON = true; else option_code_OFF = true; }
| |
| 1083 | ||
| 1084 | if (condition == 0) OptionStatus(0); // Display OFF | |
| 1085 | else OptionStatus(1); // Display ON | |
| 1086 | } | |
| 1087 | void AddBreak(char* text) | |
| 1088 | {
| |
| 1089 | menu::printingop++; menu::breakcount++; | |
| 1090 | ||
| 1091 | OptionY = 0.0f; | |
| 1092 | if (menu::currentop <= 14) | |
| 1093 | {
| |
| 1094 | if (menu::printingop > 14) return; | |
| 1095 | else OptionY = ((float)(menu::printingop) * 0.035f) + 0.125f; | |
| 1096 | } | |
| 1097 | else | |
| 1098 | {
| |
| 1099 | if (menu::printingop < (menu::currentop - 13) || menu::printingop > menu::currentop) return; | |
| 1100 | else OptionY = ((float)(menu::printingop - (menu::currentop - 14))* 0.035f) + 0.125f; | |
| 1101 | } | |
| 1102 | ||
| 1103 | setupdraw(); | |
| 1104 | SET_TEXT_FONT(font_breaks); | |
| 1105 | SET_TEXT_COLOUR(optionbreaks.R, optionbreaks.G, optionbreaks.B, optionbreaks.A); | |
| 1106 | if (menu::printingop == menu::currentop) | |
| 1107 | {
| |
| 1108 | switch (menu::breakscroll) | |
| 1109 | {
| |
| 1110 | case 1: | |
| 1111 | menu::currentop_w_breaks = menu::currentop_w_breaks + 1; | |
| 1112 | menu::currentop--; break; | |
| 1113 | case 2: | |
| 1114 | menu::currentop_w_breaks = menu::currentop - menu::breakcount; | |
| 1115 | menu::currentop++; break; | |
| 1116 | case 3: | |
| 1117 | menu::currentop_w_breaks = menu::totalop - (menu::totalbreaks - 1); | |
| 1118 | menu::currentop--; break; | |
| 1119 | case 4: | |
| 1120 | menu::currentop_w_breaks = 1; | |
| 1121 | menu::currentop++; break; | |
| 1122 | } | |
| 1123 | ||
| 1124 | } | |
| 1125 | if (menu::bit_centre_breaks) | |
| 1126 | {
| |
| 1127 | SET_TEXT_CENTRE(1); | |
| 1128 | drawstring(text, 0.16f + menuPos, OptionY); | |
| 1129 | } | |
| 1130 | else | |
| 1131 | {
| |
| 1132 | drawstring(text, 0.066f + menuPos, OptionY); | |
| 1133 | } | |
| 1134 | ||
| 1135 | } | |
| 1136 | void AddNumber(char* text, long value, __int8 decimal_places, bool &A_PRESS = null, bool &RIGHT_PRESS = null, bool &LEFT_PRESS = null) | |
| 1137 | {
| |
| 1138 | null = 0; | |
| 1139 | AddOption(text, null); | |
| 1140 | ||
| 1141 | if (OptionY < 0.6325 && OptionY > 0.1425) | |
| 1142 | {
| |
| 1143 | SET_TEXT_FONT(0); | |
| 1144 | SET_TEXT_SCALE(0.26f, 0.26f); | |
| 1145 | SET_TEXT_CENTRE(1); | |
| 1146 | ||
| 1147 | drawfloat(value, (DWORD)decimal_places, 0.233f + menuPos, OptionY); | |
| 1148 | } | |
| 1149 | ||
| 1150 | if (menu::printingop == menu::currentop) | |
| 1151 | {
| |
| 1152 | if (null) A_PRESS = true; | |
| 1153 | else if (IsOptionRJPressed()) RIGHT_PRESS = true; | |
| 1154 | else if (IsOptionRPressed()) RIGHT_PRESS = true; | |
| 1155 | else if (IsOptionLJPressed()) LEFT_PRESS = true; | |
| 1156 | else if (IsOptionLPressed()) LEFT_PRESS = true; | |
| 1157 | ||
| 1158 | } | |
| 1159 | ||
| 1160 | } | |
| 1161 | void AddTele(char* text, float X, float Y, float Z, bool &extra_option_code = null) | |
| 1162 | {
| |
| 1163 | null = 0; | |
| 1164 | AddOption(text, null); | |
| 1165 | if (menu::printingop == menu::currentop) | |
| 1166 | {
| |
| 1167 | if (null) | |
| 1168 | {
| |
| 1169 | if (!Check_self_in_vehicle()) | |
| 1170 | {
| |
| 1171 | SET_ENTITY_COORDS(PLAYER_PED_ID(), X, Y, Z, 0, 0, 0, 1); | |
| 1172 | } | |
| 1173 | else | |
| 1174 | {
| |
| 1175 | RequestControlOfEnt(myVeh); | |
| 1176 | SET_ENTITY_COORDS(myVeh, X, Y, Z, 0, 0, 0, 1); | |
| 1177 | } | |
| 1178 | LOAD_ALL_OBJECTS_NOW(); | |
| 1179 | extra_option_code = true; | |
| 1180 | } | |
| 1181 | } | |
| 1182 | ||
| 1183 | } | |
| 1184 | ||
| 1185 | ||
| 1186 | // Hax functions: | |
| 1187 | void set_massacre_mode() | |
| 1188 | {
| |
| 1189 | float tempCoords1[3]; | |
| 1190 | DWORD tempHash; | |
| 1191 | DWORD tempPed = PLAYER_PED_ID(); | |
| 1192 | DWORD tempVehicle; | |
| 1193 | bool tick = 0; | |
| 1194 | ||
| 1195 | offset_from_entity(tempPed, GET_RANDOM_FLOAT_IN_RANGE(5.0f, 25.0f), GET_RANDOM_FLOAT_IN_RANGE(5.0f, 25.0f), GET_RANDOM_FLOAT_IN_RANGE(0.4f, 20.0f), tempCoords1); | |
| 1196 | ||
| 1197 | // Kick away naughty players | |
| 1198 | for (int i = 0; i <= 29; i++) | |
| 1199 | {
| |
| 1200 | if (IS_PLAYER_TARGETTING_ENTITY(i, tempPed) || IS_PLAYER_FREE_AIMING_AT_ENTITY(i, tempPed)) | |
| 1201 | {
| |
| 1202 | if (!tick) | |
| 1203 | {
| |
| 1204 | PrintStringBottomCentre("~h~You~s~ are being aimed at. Taking care of it!");
| |
| 1205 | tick = true; | |
| 1206 | } | |
| 1207 | APPLY_FORCE_TO_ENTITY(GET_PLAYER_PED(i), 1, 5.0f, 5.0f, 5.0f, 5.0f, 5.0f, 5.0f, 1, 1, 1, 1, 0, 1); | |
| 1208 | } | |
| 1209 | } | |
| 1210 | ||
| 1211 | // Kick away nearest vehicle | |
| 1212 | tempVehicle = GET_CLOSEST_VEHICLE(tempCoords1[0], tempCoords1[1], tempCoords1[2], 400.0f, 0, 4); | |
| 1213 | if (DOES_ENTITY_EXIST(tempVehicle)) APPLY_FORCE_TO_ENTITY(tempVehicle, 1, 5.0f, 5.0f, 5.0f, 5.0f, 13.0f, 6.5f, 1, 1, 1, 1, 0, 1); | |
| 1214 | ||
| 1215 | // Exploding vehicles | |
| 1216 | switch (GET_RANDOM_INT_IN_RANGE(1, 10)) | |
| 1217 | {
| |
| 1218 | case 1: tempHash = 3945366167; break; | |
| 1219 | case 2: tempHash = 92612664; break; | |
| 1220 | case 3: tempHash = 1488164764; break; | |
| 1221 | case 4: tempHash = 117401876; break; | |
| 1222 | case 5: tempHash = 408192225; break; | |
| 1223 | case 6: tempHash = 3863274624; break; | |
| 1224 | case 7: tempHash = 165154707; break; | |
| 1225 | case 8: tempHash = 1011753235; break; | |
| 1226 | case 9: tempHash = 941800958; break; | |
| 1227 | case 10: tempHash = 970385471; break; | |
| 1228 | } | |
| 1229 | ||
| 1230 | tempVehicle = CREATE_VEHICLE(tempHash, tempCoords1[0], tempCoords1[1], tempCoords1[2], GET_RANDOM_FLOAT_IN_RANGE(0.0f, 360.0f), 1, 1); | |
| 1231 | APPLY_FORCE_TO_ENTITY(tempVehicle, 1, 5.0f, 5.0f, 5.0f, 5.0f, 13.0f, 6.5f, 1, 1, 1, 1, 0, 1); | |
| 1232 | NETWORK_EXPLODE_VEHICLE(tempVehicle, 1, 1, 1); | |
| 1233 | ||
| 1234 | // Dying peds | |
| 1235 | switch (GET_RANDOM_INT_IN_RANGE(1, 10)) | |
| 1236 | {
| |
| 1237 | case 1: tempHash = 1682622302; break; | |
| 1238 | case 2: tempHash = 113504370; break; | |
| 1239 | case 3: tempHash = 4244282910; break; | |
| 1240 | case 4: tempHash = 808859815; break; | |
| 1241 | case 5: tempHash = 1004114196; break; | |
| 1242 | case 6: tempHash = 3696858125; break; | |
| 1243 | case 7: tempHash = 921110016; break; | |
| 1244 | case 8: tempHash = 880829941; break; | |
| 1245 | case 9: tempHash = 1462895032; break; | |
| 1246 | case 10: tempHash = 773063444; break; | |
| 1247 | } | |
| 1248 | ||
| 1249 | offset_from_entity(tempPed, GET_RANDOM_FLOAT_IN_RANGE(5.0f, 25.0f), GET_RANDOM_FLOAT_IN_RANGE(5.0f, 25.0f), GET_RANDOM_FLOAT_IN_RANGE(0.4f, 20.0f), tempCoords1); | |
| 1250 | tempPed = CREATE_PED(22, tempHash, tempCoords1[0], tempCoords1[1], tempCoords1[2], GET_RANDOM_FLOAT_IN_RANGE(0.0f, 360.0f), 1, 1); | |
| 1251 | APPLY_FORCE_TO_ENTITY(tempPed, 1, 5.0f, 5.0f, 5.0f, 5.0f, 13.0f, 6.5f, 1, 1, 1, 1, 0, 1); | |
| 1252 | EXPLODE_PED_HEAD(tempPed, 324506233); | |
| 1253 | ADD_EXPLOSION(tempCoords1[0], tempCoords1[1], tempCoords1[2], 26, 4.0f, 1, 0, 3.0f); | |
| 1254 | ||
| 1255 | // Water hydrants | |
| 1256 | offset_from_entity(tempPed, GET_RANDOM_FLOAT_IN_RANGE(5.0f, 25.0f), GET_RANDOM_FLOAT_IN_RANGE(5.0f, 25.0f), GET_RANDOM_FLOAT_IN_RANGE(0.4f, 20.0f), tempCoords1); | |
| 1257 | ADD_EXPLOSION(tempCoords1[0], tempCoords1[1], tempCoords1[2], 13, 8.0f, 1, 0, 3.0f); | |
| 1258 | ||
| 1259 | // Zombies | |
| 1260 | offset_from_entity(tempPed, GET_RANDOM_FLOAT_IN_RANGE(5.0f, 25.0f), GET_RANDOM_FLOAT_IN_RANGE(5.0f, 25.0f), GET_RANDOM_FLOAT_IN_RANGE(0.4f, 20.0f), tempCoords1); | |
| 1261 | tempPed = CREATE_PED(22, -1404353274, tempCoords1[0], tempCoords1[1], tempCoords1[2], GET_RANDOM_FLOAT_IN_RANGE(0.0f, 360.0f), 1, 1); | |
| 1262 | PED_TO_NET(tempPed); | |
| 1263 | SET_PED_COMBAT_ABILITY(tempPed, 100); | |
| 1264 | TASK_COMBAT_HATED_TARGETS_AROUND_PED(tempPed, 400.0f, 0); | |
| 1265 | } | |
| 1266 | void sample_createEscort() | |
| 1267 | {
| |
| 1268 | if (!IS_WAYPOINT_ACTIVE()) PrintStringBottomCentre("~r~Error:~s~ No waypoint set.");
| |
| 1269 | else | |
| 1270 | {
| |
| 1271 | float Pos[3]; | |
| 1272 | Vector3 Coord = GET_BLIP_COORDS(GET_FIRST_BLIP_INFO_ID(_GET_BLIP_INFO_ID_ITERATOR())); | |
| 1273 | GET_GROUND_Z_FOR_3D_COORD(Coord.x, Coord.y, Coord.z, &Coord.z); | |
| 1274 | VectorToFloat(GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(PLAYER_PED_ID(), 0.0f, 5.0f, 1.0f), Pos); | |
| 1275 | WAIT(10); | |
| 1276 | DWORD tempPed = CREATE_PED(1, GET_HASH_KEY("A_C_CHIMP"), Pos[0], Pos[1], Pos[2], 0.0f, 1, 1);
| |
| 1277 | DWORD tempVehicle = CREATE_VEHICLE(GET_HASH_KEY("KURUMA2"), Pos[0], Pos[1], Pos[2] + 2.0f, GET_ENTITY_HEADING(PLAYER_PED_ID()), 1, 1);
| |
| 1278 | RequestControlOfEnt(tempVehicle); | |
| 1279 | SET_VEHICLE_COLOURS(tempVehicle, 0, 0); | |
| 1280 | SET_VEHICLE_NUMBER_PLATE_TEXT(tempVehicle, (DWORD*)"VIP"); | |
| 1281 | for (int i = -1; i <= 20; i++) | |
| 1282 | {
| |
| 1283 | if (!IS_VEHICLE_SEAT_FREE(tempVehicle, i)) continue; | |
| 1284 | TASK_WARP_PED_INTO_VEHICLE(PLAYER_PED_ID(), tempVehicle, i); break; | |
| 1285 | } | |
| 1286 | TASK_VEHICLE_MISSION_COORS_TARGET(tempPed, tempVehicle, Coord.x, Coord.y, Coord.z, 4, 20.0f, 786469, 20.0f, 10.0f, 1); | |
| 1287 | } | |
| 1288 | } | |
| 1289 | DWORD grav_partfx, grav_entity; bool grav_toggled = 0, grav_target_locked = 0; | |
| 1290 | Vector3 get_coords_from_cam(float distance) | |
| 1291 | {
| |
| 1292 | Vector3 Rot = GET_GAMEPLAY_CAM_ROT(2); | |
| 1293 | static Vector3 Coord = GET_GAMEPLAY_CAM_COORD(); | |
| 1294 | ||
| 1295 | Rot.y = distance * cos(Rot.x); | |
| 1296 | Coord.x = Coord.x + Rot.y * sin(Rot.z * -1.0f); | |
| 1297 | Coord.y = Coord.y + Rot.y * cos(Rot.z * -1.0f); | |
| 1298 | Coord.z = Coord.z + distance * sin(Rot.x); | |
| 1299 | ||
| 1300 | return Coord; | |
| 1301 | } | |
| 1302 | void set_gravity_gun() | |
| 1303 | {
| |
| 1304 | DWORD tempPed, tempWeap; | |
| 1305 | ||
| 1306 | if (!grav_target_locked) GET_PLAYER_TARGET_ENTITY(PLAYER_ID(), &grav_entity); | |
| 1307 | ||
| 1308 | tempPed = PLAYER_ID(); GET_CURRENT_PED_WEAPON(PLAYER_PED_ID(), &tempWeap, 1); | |
| 1309 | if ((IS_PLAYER_FREE_AIMING(tempPed) || IS_PLAYER_TARGETTING_ANYTHING(tempPed)) && DOES_ENTITY_EXIST(grav_entity) && tempWeap == 453432689) | |
| 1310 | {
| |
| 1311 | if (!grav_target_locked) GET_PLAYER_TARGET_ENTITY(PLAYER_ID(), &grav_entity); grav_target_locked = true; | |
| 1312 | float Coord[3]; VectorToFloat(get_coords_from_cam(5.5f), Coord); | |
| 1313 | ||
| 1314 | if (!DOES_PARTICLE_FX_LOOPED_EXIST(grav_partfx)) | |
| 1315 | {
| |
| 1316 | REQUEST_PTFX_ASSET(); | |
| 1317 | if (HAS_PTFX_ASSET_LOADED()) | |
| 1318 | {
| |
| 1319 | grav_partfx = START_PARTICLE_FX_LOOPED_AT_COORD((DWORD*)"scr_drug_traffic_flare_L", Coord[0], Coord[1], Coord[2], 0.0f, 0.0f, 0.0f, 0.5f, 0, 0, 0, 0); | |
| 1320 | SET_PARTICLE_FX_LOOPED_COLOUR(grav_partfx, 1.0f, 0.84f, 0.0f, 0); | |
| 1321 | } | |
| 1322 | } | |
| 1323 | ||
| 1324 | //RequestControlOfid(NETWORK_GET_NETWORK_ID_FROM_ENTITY(grav_entity)); | |
| 1325 | RequestControlOfEnt(grav_entity); | |
| 1326 | SET_ENTITY_COORDS_NO_OFFSET(grav_entity, Coord[0], Coord[1], Coord[2], 0, 0, 0); | |
| 1327 | if (IS_ENTITY_A_VEHICLE(grav_entity)) SET_ENTITY_HEADING(grav_entity, GET_ENTITY_HEADING(PLAYER_PED_ID()) + 90.0f); | |
| 1328 | ||
| 1329 | if (IS_PED_SHOOTING(PLAYER_PED_ID())) | |
| 1330 | {
| |
| 1331 | PLAY_SOUND_FROM_ENTITY(-1, (DWORD*)"Foot_Swish", grav_entity, (DWORD*)"docks_heist_finale_2a_sounds", 0, 0); | |
| 1332 | SET_ENTITY_HEADING(grav_entity, GET_ENTITY_HEADING(PLAYER_PED_ID())); | |
| 1333 | APPLY_FORCE_TO_ENTITY(grav_entity, 1, 0.0f, 350.0f, 2.0f, 2.0f, 0.0f, 0.0f, 0, 1, 1, 1, 0, 1); | |
| 1334 | grav_target_locked = false; | |
| 1335 | } | |
| 1336 | } | |
| 1337 | else if (DOES_PARTICLE_FX_LOOPED_EXIST(grav_partfx)) | |
| 1338 | {
| |
| 1339 | STOP_PARTICLE_FX_LOOPED(grav_partfx, 0); | |
| 1340 | REMOVE_PARTICLE_FX(grav_partfx, 0); | |
| 1341 | REMOVE_PTFX_ASSET(); | |
| 1342 | } | |
| 1343 | if (!IS_PLAYER_FREE_AIMING_AT_ENTITY(tempPed, grav_entity) || !IS_PLAYER_TARGETTING_ENTITY(tempPed, grav_entity)) grav_target_locked = false; | |
| 1344 | ||
| 1345 | } | |
| 1346 | void set_gta2_cam_rot() | |
| 1347 | {
| |
| 1348 | Vector3 Rot = GET_GAMEPLAY_CAM_ROT(2); | |
| 1349 | if (!Check_self_in_vehicle()){
| |
| 1350 | SET_ENTITY_ROTATION(PLAYER_PED_ID(), Rot.x, Rot.y, Rot.z, 2, 1); | |
| 1351 | } | |
| 1352 | else{
| |
| 1353 | SET_ENTITY_ROTATION(myVeh, Rot.x, Rot.y, Rot.z, 2, 1); | |
| 1354 | } | |
| 1355 | } | |
| 1356 | ||
| 1357 | ||
| 1358 | } | |
| 1359 | ||
| 1360 | ||
| 1361 | ||
| 1362 | namespace sub{
| |
| 1363 | // Define submenus here. | |
| 1364 | ||
| 1365 | void MainMenu() | |
| 1366 | {
| |
| 1367 | AddTitle("Menya Baes");
| |
| 1368 | AddOption("Sample Submenu", null, nullFunc, SUB::SAMPLE);
| |
| 1369 | AddOption("Large Submenu", null, nullFunc, SUB::YOURSUB);
| |
| 1370 | AddOption("Settings", null, nullFunc, SUB::SETTINGS);
| |
| 1371 | ||
| 1372 | if (menujustopened) | |
| 1373 | {
| |
| 1374 | PrintBottomLeft(AddStrings("Menya Base by ", "MAFINS.")); // Your opening message goes here.
| |
| 1375 | menujustopened = false; | |
| 1376 | } | |
| 1377 | } | |
| 1378 | ||
| 1379 | void Settings() | |
| 1380 | {
| |
| 1381 | bool settings_pos_plus = 0, settings_pos_minus = 0; | |
| 1382 | ||
| 1383 | AddTitle("Settings");
| |
| 1384 | AddOption("Menu Colours", null, nullFunc, SUB::SETTINGS_COLOURS);
| |
| 1385 | AddOption("Menu Fonts", null, nullFunc, SUB::SETTINGS_FONTS);
| |
| 1386 | AddToggle("Centre Title", menu::bit_centre_title);
| |
| 1387 | AddToggle("Centre Options", menu::bit_centre_options);
| |
| 1388 | AddToggle("Centre Breaks", menu::bit_centre_breaks);
| |
| 1389 | AddNumber("Menu Position", (DWORD)menuPos / 100, 0, null, settings_pos_plus, settings_pos_minus);
| |
| 1390 | ||
| 1391 | if (settings_pos_plus){
| |
| 1392 | if (menuPos < 0.68f) menuPos += 0.01f; | |
| 1393 | return; | |
| 1394 | } | |
| 1395 | else if (settings_pos_minus){
| |
| 1396 | if (menuPos > 0.0f) menuPos -= 0.01f; | |
| 1397 | return; | |
| 1398 | } | |
| 1399 | ||
| 1400 | } | |
| 1401 | void AddsettingscolOption(char* text, RGBA &feature) | |
| 1402 | {
| |
| 1403 | AddOption(text, null, nullFunc, SUB::SETTINGS_COLOURS2); | |
| 1404 | ||
| 1405 | if (menu::printingop == menu::currentop) settings_rgba = &feature; | |
| 1406 | } | |
| 1407 | void SettingsColours() | |
| 1408 | {
| |
| 1409 | AddTitle("Menu Colours");
| |
| 1410 | AddsettingscolOption("Title Box", titlebox);
| |
| 1411 | AddsettingscolOption("Background", BG);
| |
| 1412 | AddsettingscolOption("Title Text", titletext);
| |
| 1413 | AddsettingscolOption("Option Text", optiontext);
| |
| 1414 | AddsettingscolOption("Selected Text", selectedtext);
| |
| 1415 | AddsettingscolOption("Option Breaks", optionbreaks);
| |
| 1416 | AddsettingscolOption("Option Count", optioncount);
| |
| 1417 | AddsettingscolOption("Selection Box", selectionhi);
| |
| 1418 | AddToggle("Rainbow", loop_RainbowBoxes);
| |
| 1419 | } | |
| 1420 | void SettingsColours2() | |
| 1421 | {
| |
| 1422 | bool settings_r_input = 0, settings_r_plus = 0, settings_r_minus = 0; | |
| 1423 | int *settings_rgba2; | |
| 1424 | ||
| 1425 | AddTitle("Set Colour");
| |
| 1426 | AddNumber("Red", settings_rgba->R, 0, settings_r_input, settings_r_plus, settings_r_minus);
| |
| 1427 | AddNumber("Green", settings_rgba->G, 0, settings_r_input, settings_r_plus, settings_r_minus);
| |
| 1428 | AddNumber("Blue", settings_rgba->B, 0, settings_r_input, settings_r_plus, settings_r_minus);
| |
| 1429 | AddNumber("Opacity", settings_rgba->A, 0, settings_r_input, settings_r_plus, settings_r_minus);
| |
| 1430 | ||
| 1431 | switch (menu::currentop) | |
| 1432 | {
| |
| 1433 | case 1: settings_rgba2 = &settings_rgba->R; break; | |
| 1434 | case 2: settings_rgba2 = &settings_rgba->G; break; | |
| 1435 | case 3: settings_rgba2 = &settings_rgba->B; break; | |
| 1436 | case 4: settings_rgba2 = &settings_rgba->A; break; | |
| 1437 | } | |
| 1438 | ||
| 1439 | if (settings_r_input){
| |
| 1440 | int tempHash = abs(StringToInt(keyboard())); | |
| 1441 | if (!(tempHash >= 0 && tempHash <= 255)) PrintError_InvalidInput(); | |
| 1442 | else *settings_rgba2 = tempHash; | |
| 1443 | return; | |
| 1444 | } | |
| 1445 | ||
| 1446 | if (settings_r_plus){
| |
| 1447 | if (*settings_rgba2 < 255) (*settings_rgba2)++; | |
| 1448 | else *settings_rgba2 = 0; | |
| 1449 | return; | |
| 1450 | } | |
| 1451 | else if (settings_r_minus){
| |
| 1452 | if (*settings_rgba2 > 0) (*settings_rgba2)--; | |
| 1453 | else *settings_rgba2 = 255; | |
| 1454 | return; | |
| 1455 | } | |
| 1456 | } | |
| 1457 | void AddsettingsfonOption(char* text, int font_index = -1, int &feature = inull) | |
| 1458 | {
| |
| 1459 | bool bit_changefont = 0, bit_setfeature = 0; | |
| 1460 | if (font_index == -1) AddOption(text, bit_setfeature, nullFunc, SUB::SETTINGS_FONTS2); | |
| 1461 | else AddOption(text, bit_changefont); | |
| 1462 | ||
| 1463 | if (bit_setfeature) settings_font = &feature; | |
| 1464 | else if (bit_changefont) *settings_font = font_index; | |
| 1465 | } | |
| 1466 | void SettingsFonts() | |
| 1467 | {
| |
| 1468 | AddTitle("Menu Fonts");
| |
| 1469 | AddsettingsfonOption("Title", -1, font_title);
| |
| 1470 | AddsettingsfonOption("Options", -1, font_options);
| |
| 1471 | AddsettingsfonOption("Selected Option", -1, font_selection);
| |
| 1472 | AddsettingsfonOption("Option Breaks", -1, font_breaks);
| |
| 1473 | } | |
| 1474 | void SettingsFonts2() | |
| 1475 | {
| |
| 1476 | bool fonts2_input = 0; | |
| 1477 | ||
| 1478 | AddTitle("Set Font");
| |
| 1479 | AddsettingsfonOption("Normalish", 0);
| |
| 1480 | AddsettingsfonOption("Impactish", 4);
| |
| 1481 | AddsettingsfonOption("Italic", 1);
| |
| 1482 | AddsettingsfonOption("Pricedown", 7);
| |
| 1483 | AddsettingsfonOption("Caps", 2);
| |
| 1484 | AddOption("Input Index", fonts2_input);
| |
| 1485 | ||
| 1486 | if (fonts2_input){
| |
| 1487 | int tempInt = abs(StringToInt(keyboard())); | |
| 1488 | *settings_font = tempInt; | |
| 1489 | return; | |
| 1490 | } | |
| 1491 | } | |
| 1492 | ||
| 1493 | ||
| 1494 | ||
| 1495 | void SampleSub() | |
| 1496 | {
| |
| 1497 | bool sample_mapmod = 0, hour_plus = 0, hour_minus = 0, timescale_plus = 0, timescale_minus = 0, sample_invisible = 0, sample_gravity_gun_on = 0, | |
| 1498 | sample_gta2cam = 0; | |
| 1499 | ||
| 1500 | int sample_hour = GET_CLOCK_HOURS(); | |
| 1501 | ||
| 1502 | AddTitle("SHRUNKEN TITLE FEATURE");
| |
| 1503 | ||
| 1504 | AddBreak("---Map---");
| |
| 1505 | AddOption("Load Map Mod", sample_mapmod);
| |
| 1506 | AddTele("Teleport to Map Mod", 509.8423f, 5589.2422f, 792.0000f);
| |
| 1507 | ||
| 1508 | AddBreak("---Weather---");
| |
| 1509 | AddNumber("Hour", GET_CLOCK_HOURS(), 0, null, hour_plus, hour_minus);
| |
| 1510 | AddNumber("Time Scale", current_timescale, 2, null, timescale_plus, timescale_minus);
| |
| 1511 | ||
| 1512 | AddBreak("---Others---");
| |
| 1513 | AddLocal("Invisibility", !IS_ENTITY_VISIBLE(PLAYER_PED_ID()), sample_invisible, sample_invisible);
| |
| 1514 | AddToggle("Gravity Gun", loop_gravity_gun, sample_gravity_gun_on);
| |
| 1515 | AddToggle("GTA 2 Cam", loop_gta2cam, sample_gta2cam, sample_gta2cam);
| |
| 1516 | AddToggle("Massacre Mode", loop_massacre_mode);
| |
| 1517 | AddOption("Create Escort", null, sample_createEscort);
| |
| 1518 | ||
| 1519 | AddBreak("---deez breaks r ugly---");
| |
| 1520 | ||
| 1521 | ||
| 1522 | if (sample_mapmod){
| |
| 1523 | Any tempHash = GET_HASH_KEY("prop_container_01a");
| |
| 1524 | PlaceObject(tempHash, 509.8423f, 5589.2422f, 791.0656f, 0.1410f, 0.0f, 65.3998f); | |
| 1525 | PlaceObject(tempHash, 520.5002f, 5584.3774f, 790.5033f, 5.4410f, 0.0f, 65.3998f); | |
| 1526 | PlaceObject(tempHash, 531.0571f, 5579.5405f, 788.6912f, 12.4410f, 0.0f, 65.3998f); | |
| 1527 | PlaceObject(tempHash, 541.3253f, 5574.8403f, 785.4896f, 19.4409f, 0.0f, 65.3998f); | |
| 1528 | PlaceObject(tempHash, 551.0662f, 5570.3701f, 780.7990f, 27.5407f, 0.0f, 65.3998f); | |
| 1529 | PlaceObject(tempHash, 560.1738f, 5566.2046f, 774.6979f, 35.0403f, 0.0f, 65.3998f); | |
| 1530 | PlaceObject(tempHash, 568.6718f, 5562.3198f, 767.4281f, 40.7396f, 0.0f, 65.3998f); | |
| 1531 | PlaceObject(tempHash, 576.9716f, 5558.5269f, 759.5663f, 40.7396f, 0.0f, 65.3998f); | |
| 1532 | PlaceObject(tempHash, 585.2493f, 5554.7471f, 751.7451f, 40.7396f, 0.0f, 65.3998f); | |
| 1533 | PlaceObject(tempHash, 593.5072f, 5550.9722f, 743.9170f, 40.7396f, 0.0f, 65.3998f); | |
| 1534 | PlaceObject(tempHash, 601.7770f, 5547.1912f, 736.0764f, 40.7396f, 0.0f, 65.3998f); | |
| 1535 | PlaceObject(tempHash, 610.0651f, 5543.3994f, 728.2167f, 40.7396f, 0.0f, 65.3998f); | |
| 1536 | PlaceObject(tempHash, 618.3337f, 5539.6226f, 720.3861f, 40.7936f, 0.0f, 65.3998f); | |
| 1537 | PlaceObject(tempHash, 626.6017f, 5535.8477f, 712.5473f, 40.7396f, 0.0f, 65.3998f); | |
| 1538 | PlaceObject(tempHash, 634.8616f, 5532.0669f, 704.7252f, 40.7396f, 0.0f, 65.3998f); | |
| 1539 | PlaceObject(tempHash, 643.1213f, 5528.2861f, 696.8940f, 40.7936f, 0.0f, 65.3998f); | |
| 1540 | PlaceObject(tempHash, 651.3914f, 5524.5059f, 689.0526f, 40.7396f, 0.0f, 65.3998f); | |
| 1541 | PlaceObject(tempHash, 659.6512f, 5520.7275f, 681.2211f, 40.7396f, 0.0f, 65.3998f); | |
| 1542 | PlaceObject(tempHash, 667.9110f, 5516.9424f, 673.3893f, 40.7396f, 0.0f, 65.3998f); | |
| 1543 | PlaceObject(tempHash, 676.1708f, 5513.1670f, 665.5580f, 40.7396f, 0.0f, 65.3998f); | |
| 1544 | PlaceObject(tempHash, 684.4307f, 5509.3789f, 657.7266f, 40.7396f, 0.0f, 65.3998f); | |
| 1545 | PlaceObject(tempHash, 692.6906f, 5505.6079f, 649.9052f, 40.7396f, 0.0f, 65.3998f); | |
| 1546 | PlaceObject(tempHash, 700.9504f, 5501.8271f, 642.0737f, 40.7396f, 0.0f, 65.3998f); | |
| 1547 | PlaceObject(tempHash, 709.2201f, 5498.0464f, 634.2426f, 40.7396f, 0.0f, 65.3998f); | |
| 1548 | PlaceObject(tempHash, 717.4602f, 5494.2759f, 626.4309f, 40.7396f, 0.0f, 65.3998f); | |
| 1549 | PlaceObject(tempHash, 725.7202f, 5490.4980f, 618.5996f, 40.7396f, 0.0f, 65.3998f); | |
| 1550 | PlaceObject(tempHash, 733.9800f, 5486.7226f, 610.7783f, 40.7396f, 0.0f, 65.3998f); | |
| 1551 | PlaceObject(tempHash, 742.5997f, 5482.7764f, 603.1669f, 36.9395f, 0.0f, 65.3998f); | |
| 1552 | PlaceObject(tempHash, 751.8304f, 5478.5518f, 596.3347f, 31.0392f, 0.0f, 65.3998f); | |
| 1553 | PlaceObject(tempHash, 761.7103f, 5474.0220f, 590.6132f, 24.5989f, 0.0f, 65.3998f); | |
| 1554 | PlaceObject(tempHash, 772.0702f, 5469.2827f, 586.0803f, 18.9288f, 0.0f, 65.3998f); | |
| 1555 | PlaceObject(tempHash, 782.8400f, 5464.3433f, 582.8604f, 11.5788f, 0.0f, 65.3998f); | |
| 1556 | PlaceObject(tempHash, 793.8899f, 5459.2847f, 581.1174f, 5.0787f, 0.0f, 65.3998f); | |
| 1557 | PlaceObject(tempHash, 805.1001f, 5454.1479f, 580.8762f, -2.5212f, 0.0f, 65.3998f); | |
| 1558 | PlaceObject(tempHash, 816.1702f, 5449.0796f, 581.9746f, -7.6213f, 0.0f, 65.3998f); | |
| 1559 | PlaceObject(tempHash, 827.1907f, 5444.0405f, 584.5823f, -16.6212f, 0.0f, 65.3998f); | |
| 1560 | PlaceObject(tempHash, 837.6807f, 5439.2407f, 588.8990f, -24.4210f, 0.0f, 65.3998f); | |
| 1561 | PrintBottomLeft(AddStrings("Hax by ~b~", "XBLToothpik"));
| |
| 1562 | return; | |
| 1563 | } | |
| 1564 | ||
| 1565 | if (hour_plus){
| |
| 1566 | if (sample_hour + 1 == 24) NETWORK_OVERRIDE_CLOCK_TIME(0, 0, 0); | |
| 1567 | else NETWORK_OVERRIDE_CLOCK_TIME((sample_hour + 1), 0, 0); | |
| 1568 | return; | |
| 1569 | } | |
| 1570 | else if (hour_minus){
| |
| 1571 | if ((sample_hour - 1) == -1) NETWORK_OVERRIDE_CLOCK_TIME(23, 0, 0); | |
| 1572 | else NETWORK_OVERRIDE_CLOCK_TIME((sample_hour - 1), 0, 0); | |
| 1573 | return; | |
| 1574 | } | |
| 1575 | ||
| 1576 | if (timescale_plus){
| |
| 1577 | if (current_timescale < 2.0f) current_timescale += 0.1f; | |
| 1578 | SET_TIME_SCALE(current_timescale); | |
| 1579 | return; | |
| 1580 | } | |
| 1581 | else if (timescale_minus){
| |
| 1582 | if (current_timescale > 0.0f) current_timescale -= 0.1f; | |
| 1583 | SET_TIME_SCALE(current_timescale); | |
| 1584 | return; | |
| 1585 | } | |
| 1586 | ||
| 1587 | if (sample_invisible){
| |
| 1588 | if (IS_ENTITY_VISIBLE(PLAYER_PED_ID())) SET_ENTITY_VISIBLE(PLAYER_PED_ID(), 0); | |
| 1589 | else SET_ENTITY_VISIBLE(PLAYER_PED_ID(), 1); | |
| 1590 | return; | |
| 1591 | } | |
| 1592 | ||
| 1593 | if (sample_gravity_gun_on){
| |
| 1594 | PrintStringBottomCentre("Use Mr ~b~Pistol~s~ for Hax!");
| |
| 1595 | return; | |
| 1596 | } | |
| 1597 | ||
| 1598 | if (sample_gta2cam){
| |
| 1599 | if (loop_gta2cam) | |
| 1600 | {
| |
| 1601 | if (DOES_CAM_EXIST(cam_gta2)) SET_CAM_ACTIVE(cam_gta2, 1); | |
| 1602 | else | |
| 1603 | {
| |
| 1604 | cam_gta2 = CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", 1);
| |
| 1605 | ATTACH_CAM_TO_ENTITY(cam_gta2, PLAYER_PED_ID(), 0.0f, 0.0f, 8.5f, 1); | |
| 1606 | Vector3 Pos = GET_ENTITY_COORDS(PLAYER_PED_ID(), 1); | |
| 1607 | POINT_CAM_AT_COORD(cam_gta2, Pos.x, Pos.y, -1000000); | |
| 1608 | SET_CAM_ACTIVE(cam_gta2, 1); | |
| 1609 | } | |
| 1610 | RENDER_SCRIPT_CAMS(1, 0, 3000, 1, 0); | |
| 1611 | } | |
| 1612 | else if (DOES_CAM_EXIST(cam_gta2)) | |
| 1613 | {
| |
| 1614 | SET_CAM_ACTIVE(cam_gta2, 0); | |
| 1615 | DESTROY_CAM(cam_gta2, 0); | |
| 1616 | RENDER_SCRIPT_CAMS(0, 0, 3000, 1, 0); | |
| 1617 | } | |
| 1618 | return; | |
| 1619 | } | |
| 1620 | ||
| 1621 | ||
| 1622 | ||
| 1623 | } | |
| 1624 | ||
| 1625 | void YourSub() | |
| 1626 | ||
| 1627 | {
| |
| 1628 | // Initialise local variables here: | |
| 1629 | bool print_deez_nuts = 0; | |
| 1630 | ||
| 1631 | // Options' text here: | |
| 1632 | AddTitle("Timone n Pumba");
| |
| 1633 | AddOption("Option 1", print_deez_nuts);
| |
| 1634 | AddOption("Option 2", print_deez_nuts);
| |
| 1635 | AddOption("Option 3", print_deez_nuts);
| |
| 1636 | AddOption("Option 4", print_deez_nuts);
| |
| 1637 | AddOption("Option 5", print_deez_nuts);
| |
| 1638 | AddOption("Option 6", print_deez_nuts);
| |
| 1639 | AddOption("Option 7", print_deez_nuts);
| |
| 1640 | AddOption("Option 8", print_deez_nuts);
| |
| 1641 | AddOption("Option 9", print_deez_nuts);
| |
| 1642 | AddOption("Option 10", print_deez_nuts);
| |
| 1643 | AddOption("Option 11", print_deez_nuts);
| |
| 1644 | AddOption("Option 12", print_deez_nuts);
| |
| 1645 | AddOption("Option 13", print_deez_nuts);
| |
| 1646 | AddOption("Option 14", print_deez_nuts);
| |
| 1647 | AddOption("Option 15", print_deez_nuts);
| |
| 1648 | AddOption("Option 16", print_deez_nuts);
| |
| 1649 | AddOption("Option 17", print_deez_nuts);
| |
| 1650 | AddOption("Option 18", print_deez_nuts);
| |
| 1651 | AddOption("Option 19", print_deez_nuts);
| |
| 1652 | AddOption("Option 20", print_deez_nuts);
| |
| 1653 | AddOption("Option 21", print_deez_nuts);
| |
| 1654 | AddOption("Option 22", print_deez_nuts);
| |
| 1655 | AddOption("Option 23", print_deez_nuts);
| |
| 1656 | AddOption("Option 24", print_deez_nuts);
| |
| 1657 | AddOption("Option 25", print_deez_nuts);
| |
| 1658 | AddOption("Option 26", print_deez_nuts);
| |
| 1659 | AddOption("Option 27", print_deez_nuts);
| |
| 1660 | AddOption("Option 28", print_deez_nuts);
| |
| 1661 | AddOption("Option 29", print_deez_nuts);
| |
| 1662 | AddOption("Option 30", print_deez_nuts);
| |
| 1663 | AddOption("Option 31", print_deez_nuts);
| |
| 1664 | AddOption("Option 32", print_deez_nuts);
| |
| 1665 | ||
| 1666 | // Options' code here: | |
| 1667 | if (print_deez_nuts) | |
| 1668 | {
| |
| 1669 | PrintStringBottomCentre( AddStrings( AddInt_S( "Option ", menu::currentop ), " ~b~selected!" ) ); | |
| 1670 | return; // Either use return; to exit to the switch if you don't have code below that you want executed. | |
| 1671 | } | |
| 1672 | ||
| 1673 | ||
| 1674 | } | |
| 1675 | ||
| 1676 | ||
| 1677 | ||
| 1678 | ||
| 1679 | ||
| 1680 | ||
| 1681 | } | |
| 1682 | ||
| 1683 | ||
| 1684 | ||
| 1685 | ||
| 1686 | ||
| 1687 | ||
| 1688 | void menu::loops() | |
| 1689 | {
| |
| 1690 | /* Make calls to functions that you want looped over here, e.g. ambient lights, whale guns, explosions, checks, flying deers, etc. | |
| 1691 | Can also be used for (bool) options that are to be executed from many parts of the script. */ | |
| 1692 | ||
| 1693 | myVeh = GET_VEHICLE_PED_IS_IN(PLAYER_PED_ID(), 0); // Store current vehicle | |
| 1694 | ||
| 1695 | if (loop_massacre_mode) set_massacre_mode(); // Massacre mode | |
| 1696 | ||
| 1697 | if (loop_RainbowBoxes && GET_GAME_TIMER() >= livetimer) | |
| 1698 | { titlebox.R = RandomRGB(); titlebox.G = RandomRGB(); titlebox.B = RandomRGB();
| |
| 1699 | BG.R = RandomRGB(); BG.G = RandomRGB(); BG.B = RandomRGB(); | |
| 1700 | selectedtext.R = RandomRGB(); selectedtext.G = RandomRGB(); selectedtext.B = RandomRGB(); | |
| 1701 | } | |
| 1702 | ||
| 1703 | ||
| 1704 | if (loop_gravity_gun) set_gravity_gun(); | |
| 1705 | ||
| 1706 | if (loop_gta2cam) set_gta2_cam_rot(); | |
| 1707 | ||
| 1708 | } | |
| 1709 | ||
| 1710 | void menu::submenu_switch() | |
| 1711 | { // Make calls to submenus over here.
| |
| 1712 | ||
| 1713 | switch (currentsub) | |
| 1714 | {
| |
| 1715 | case SUB::MAINMENU: sub::MainMenu(); break; | |
| 1716 | case SUB::SETTINGS: sub::Settings(); break; | |
| 1717 | case SUB::SETTINGS_COLOURS: sub::SettingsColours(); break; | |
| 1718 | case SUB::SETTINGS_COLOURS2: sub::SettingsColours2(); break; | |
| 1719 | case SUB::SETTINGS_FONTS: sub::SettingsFonts(); break; | |
| 1720 | case SUB::SETTINGS_FONTS2: sub::SettingsFonts2(); break; | |
| 1721 | case SUB::SAMPLE: sub::SampleSub(); break; | |
| 1722 | case SUB::YOURSUB: sub::YourSub(); break; | |
| 1723 | // case SUB::NAME sub::name(); break; | |
| 1724 | ||
| 1725 | } | |
| 1726 | } | |
| 1727 | ||
| 1728 | ||
| 1729 | void menu::sub_handler() | |
| 1730 | {
| |
| 1731 | if (currentsub == SUB::CLOSED){
| |
| 1732 | while_closed(); | |
| 1733 | } | |
| 1734 | ||
| 1735 | else{
| |
| 1736 | submenu_switch(); | |
| 1737 | if (SetSub_delayed != NULL) | |
| 1738 | {
| |
| 1739 | SetSub_new(SetSub_delayed); | |
| 1740 | SetSub_delayed = NULL; | |
| 1741 | } | |
| 1742 | ||
| 1743 | while_opened(); | |
| 1744 | ||
| 1745 | if (GET_GAME_TIMER() >= livetimer) livetimer = GET_GAME_TIMER() + 1800; // 1.8s delay for rainbow related loops | |
| 1746 | } | |
| 1747 | } | |
| 1748 | void main() | |
| 1749 | {
| |
| 1750 | srand(GetTickCount()); | |
| 1751 | while (true) | |
| 1752 | {
| |
| 1753 | WAIT(0); | |
| 1754 | menu::base(); | |
| 1755 | menu::loops(); | |
| 1756 | menu::sub_handler(); | |
| 1757 | } | |
| 1758 | } |