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 | } |