llBeastModell

Stealth Bomber

Jun 24th, 2016
686
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 35.53 KB | None | 0 0
  1. ///Includes
  2. #include <natives.h>
  3. #include <common.h>
  4. #include <consts.h>
  5. #include <types.h>
  6. #include <strings.h>
  7.  
  8. ///Defines
  9. #define BUTTON_SELECT 0xD
  10. #define BUTTON_START 0xC
  11. #define BUTTON_X 0xE
  12. #define BUTTON_Y 0xF
  13. #define BUTTON_A 0x10
  14. #define BUTTON_B 0x11
  15. #define DPAD_UP 0x8
  16. #define DPAD_DOWN 0x9
  17. #define DPAD_LEFT 0xA
  18. #define DPAD_RIGHT 0xB
  19. #define BUTTON_L 0x5
  20. #define BUTTON_R 0x7
  21. #define BUTTON_LB 0x4
  22. #define BUTTON_RB 0x6
  23. #define STICK_LEFT 0x12
  24. #define STICK_RIGHT 0x13
  25.  
  26. ///Bools
  27. bool modon = false;
  28. bool controlling = false;
  29. bool coords = false;
  30. bool circle = false;
  31. bool turnoff = false;
  32. bool wander = false;
  33. bool showSelection = false;
  34. bool mm25 = true;
  35. bool mm50 = false;
  36. bool mm105 = false;
  37.  
  38. ///Declarations
  39. Ped pilot, driver;
  40. Vehicle pveh;
  41. Vector3 position;
  42. Object plane, dum, projectilesmm105;
  43. Object projectilesmm25[30], projectilesmm50[5];
  44.  
  45. ///Integers
  46. int maxDistance = 100;
  47. int task = 1, select = 1, pedID;
  48. int mm25number = 0, mm50number = 0;
  49. int projectileIDmm25, anotherNumber = 0;
  50. int projectileIDmm50, projectileIDmm105;
  51. uint projectile = 0x501811B6;
  52.  
  53. ///Floats
  54. float a, x, y, z, cx, cy, cz;
  55. float px, py, pz, ox, oy, oz, objHeading;
  56. float zGround, distance, dist, heading;
  57. float objRotX, objRotZ, objX, objY, objZ;
  58. float ch1X = 1232, ch1Y = 1822; //top right corner of the map
  59. float ch2X = 2786, ch2Y = 424; //airport
  60. float ch3X = 987, ch3Y = -497; //carnival area
  61. float ch4X = -43, ch4Y = -796; //bottom middle of the map
  62. float ch5X = -1534, ch5Y = -480; //bottom left corner of the map
  63. float ch6X = -1088, ch6Y = 1687; //top left corner of the map
  64.  
  65.  
  66. ////////////////////////////////////////////////////////////////////////////Start Source////////////////////////////////////////////////////////////////////////////
  67.  
  68. /*------------------------------------Control Panel------------------------------------*/
  69. void SET_UP_DRAW(float width, float height, uint r, uint g, uint b, uint a){
  70. #ifdef PC
  71.     SET_TEXT_FONT(7);
  72. #else
  73.     SET_TEXT_FONT(6);
  74. #endif
  75.     SET_TEXT_BACKGROUND(0);
  76.     SET_TEXT_DROPSHADOW(0, 0, 0, 0, 255);
  77.     SET_TEXT_EDGE(1, 0, 0, 0, 255);
  78.     SET_TEXT_COLOUR(r, g, b, a);
  79.     SET_TEXT_SCALE(width, height);
  80.     SET_TEXT_PROPORTIONAL(1);
  81.     SET_TEXT_JUSTIFY(0);
  82.     SET_TEXT_CENTRE(0);
  83.     SET_TEXT_RIGHT_JUSTIFY(0);
  84. }
  85.  
  86. void SET_UP_DRAW_1(float width, float height, uint r, uint g, uint b, uint a){
  87. #ifdef PC
  88.     SET_TEXT_FONT(7);
  89. #else
  90.     SET_TEXT_FONT(2);
  91. #endif
  92.     SET_TEXT_BACKGROUND(0);
  93.     SET_TEXT_DROPSHADOW(0, 0, 0, 0, 255);
  94.     SET_TEXT_EDGE(1, 0, 0, 0, 255);
  95.     SET_TEXT_COLOUR(r, g, b, a);
  96.     SET_TEXT_SCALE(width, height);
  97.     SET_TEXT_PROPORTIONAL(1);
  98.     SET_TEXT_JUSTIFY(0);
  99.     SET_TEXT_CENTRE(0);
  100.     SET_TEXT_RIGHT_JUSTIFY(0);
  101. }
  102.  
  103. void rect(void){
  104.     DRAW_RECT(0.0, 0.0, 0.8900, 0.6400, 0, 0, 0, 150);
  105. }
  106.  
  107. void control_show(void){
  108.     SET_UP_DRAW(0.3100, 0.4550, 255, 0, 0, 255);
  109.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.1150, 0.0340, "STRING", "CONTROLS");
  110. }
  111.  
  112. void close_show(void){
  113.     SET_UP_DRAW(0.3100, 0.4550, 255, 0, 0, 255);
  114.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.2900, 0.0340, "STRING", "CLOSE - ~PAD_RB~ + ~PAD_B~");
  115. }
  116.  
  117. void instructions(void){
  118.     SET_UP_DRAW_1(0.3100, 0.4550, 0, 160, 34, 255);
  119.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.0600, 0.0590, "STRING", "Set a waypoint or fly in auto pilot");
  120. }
  121.  
  122. void pilotPrint(void){
  123.     SET_UP_DRAW_1(0.3100, 0.4550, 76, 151, 176, 255);
  124.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.0600, 0.0890, "STRING", "Pilot AC-130");
  125. }
  126.  
  127. void pilotButton(void){
  128.     SET_UP_DRAW_1(0.3150, 0.4550, 0, 0, 255, 255);
  129.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.1900, 0.0890, "STRING", "~PAD_RB~ + ~PAD_X~");
  130. }
  131.  
  132. void openWeaponPrint(void){
  133.     SET_UP_DRAW_1(0.3100, 0.4550, 161, 148, 51, 255);
  134.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.0600, 0.1190, "STRING", "Open weapon options");
  135. }
  136.  
  137. void openWeaponButton(void){
  138.     SET_UP_DRAW_1(0.3150, 0.4550, 0, 0, 255, 255);
  139.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.2850, 0.1190, "STRING", "~PAD_LB~ + ~PAD_X~");
  140. }
  141.  
  142. void weaponScrollPrint(void){
  143.     SET_UP_DRAW_1(0.3100, 0.4550, 0, 255, 0, 201);
  144.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.0750, 0.1490, "STRING", "Scroll through weapons");
  145. }
  146.  
  147. void weaponScrollButton(void){
  148.     SET_UP_DRAW_1(0.3100, 0.4550, 0, 0, 255, 255);
  149.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.3150, 0.1490, "STRING", "~PAD_DPAD_LEFT~ + ~PAD_DPAD_RIGHT~");
  150. }
  151.  
  152. void selectPrint(void){
  153.     SET_UP_DRAW_1(0.3100, 0.4550, 34, 201, 133, 255);
  154.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.0750, 0.1790, "STRING", "Select weapon");
  155. }
  156.  
  157. void selectButton(void){
  158.     SET_UP_DRAW_1(0.3100, 0.4550, 0, 0, 255, 255);
  159.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.2300, 0.1790, "STRING", "~PAD_A~");
  160. }
  161.  
  162. void zoomPrint(void){
  163.     SET_UP_DRAW_1(0.3100, 0.4550, 114, 41, 138, 255);
  164.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.0750, 0.2090, "STRING", "Zoom In/Out");
  165. }
  166.  
  167. void zoomButton(void){
  168.     SET_UP_DRAW_1(0.3100, 0.4550, 0, 0, 255, 255);
  169.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.2100, 0.2090, "STRING", "~PAD_LSTICK_ALL~");
  170. }
  171.  
  172. void aimPrint(void){
  173.     SET_UP_DRAW_1(0.3100, 0.4550,  234, 245, 0, 255);
  174.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.0750, 0.2390, "STRING", "Aim Guns");
  175. }
  176.  
  177. void aimButton(void){
  178.     SET_UP_DRAW_1(0.3100, 0.4550, 0, 0, 255, 255);
  179.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.1800, 0.2390, "STRING", "~PAD_LT~");
  180. }
  181.  
  182. void shootPrint(void){
  183.     SET_UP_DRAW_1(0.3100, 0.4550, 245, 20, 192, 255);
  184.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.0750, 0.2690, "STRING", "Shoot Guns");
  185. }
  186.  
  187. void shootButton(void){
  188.     SET_UP_DRAW_1(0.3100, 0.4550, 0, 0, 255, 255);
  189.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.2000, 0.2690, "STRING", "~PAD_X~");
  190. }
  191.  
  192. void controlsLoop(void){
  193.     if(IS_BUTTON_PRESSED(0, BUTTON_RB) && IS_BUTTON_JUST_PRESSED(0, BUTTON_B)){
  194.         if(controlling){
  195.             controlling = false;
  196.         }
  197.         else{
  198.             controlling = true;
  199.         }
  200.     }
  201.     if(controlling){
  202.         rect();
  203.         control_show();
  204.         close_show();
  205.         instructions();
  206.         pilotPrint();
  207.         pilotButton();
  208.         openWeaponPrint();
  209.         openWeaponButton();
  210.         weaponScrollPrint();
  211.         weaponScrollButton();
  212.         selectPrint();
  213.         selectButton();
  214.         zoomPrint();
  215.         zoomButton();
  216.         aimPrint();
  217.         aimButton();
  218.         shootPrint();
  219.         shootButton();
  220.     }
  221. }
  222.  
  223.  
  224. /*--------------------------------------Functions--------------------------------------*/
  225. void printShort(char* text){
  226.     CLEAR_PRINTS();
  227.     PRINT_STRING_WITH_LITERAL_STRING_NOW("STRING", text,200, true);
  228. }
  229.  
  230. void print(char* text){
  231.     CLEAR_PRINTS();
  232.     PRINT_STRING_WITH_LITERAL_STRING_NOW("STRING", text,3000, true);
  233. }
  234.  
  235. bool NETWORK_CONTROL(int ID){
  236.     int tick = 0;
  237.     REQUEST_CONTROL_OF_NETWORK_ID(ID);
  238.     while(!HAS_CONTROL_OF_NETWORK_ID(ID) && tick <= 250){
  239.         tick++;
  240.     }
  241.     if(HAS_CONTROL_OF_NETWORK_ID(ID)){
  242.         return HAS_CONTROL_OF_NETWORK_ID(ID);
  243.     }
  244.     else{
  245.         return !HAS_CONTROL_OF_NETWORK_ID(ID);
  246.     }
  247. }
  248.  
  249. void SPAWN_PLANE(void){
  250.     Group groupName;
  251.     float h;
  252.     int pass;
  253.     print("~b~Loading.");
  254.     GET_CHAR_COORDINATES(GetPlayerPed(), &x, &y, &z);
  255.     if(IS_CHAR_IN_ANY_CAR(GetPlayerPed())){
  256.         GET_CAR_CHAR_IS_USING(GetPlayerPed(), &pveh);
  257.         GET_DRIVER_OF_CAR(pveh, &driver);
  258.         if(!DOES_CHAR_EXIST(driver) || GetPlayerPed() == driver){
  259.             WARP_CHAR_FROM_CAR_TO_COORD(GetPlayerPed(), x, y, z + 1);
  260.             DELETE_CAR(&pveh);
  261.             MARK_CAR_AS_NO_LONGER_NEEDED(&pveh);
  262.         }
  263.     }
  264.     REQUEST_MODEL(MODEL_ANNIHILATOR);
  265.     while(!HAS_MODEL_LOADED(MODEL_ANNIHILATOR)) WAIT(0);
  266.     CREATE_CAR(MODEL_ANNIHILATOR, x, y, z + maxDistance, &pveh, true);
  267.     MARK_MODEL_AS_NO_LONGER_NEEDED(MODEL_ANNIHILATOR);
  268.     SET_CAR_ENGINE_ON(pveh, false, false);
  269.     SET_CHAR_VISIBLE(GetPlayerPed(), false);
  270.     SET_CAR_AS_MISSION_CAR(pveh);
  271.     SET_HELI_BLADES_FULL_SPEED(pveh);
  272.     SET_CAR_COLLISION(pveh, true);
  273.     SET_CAR_HEADING(pveh, h);
  274.     SET_CAR_VISIBLE(pveh, false);
  275.     SET_CAR_CAN_BE_DAMAGED(pveh, false);
  276.     SET_CAR_CAN_BE_VISIBLY_DAMAGED(pveh, false);
  277.     SET_CAN_BURST_CAR_TYRES(pveh, false);
  278.     for(pass = 0;pass <= 2;pass++){
  279.         if(IS_CAR_PASSENGER_SEAT_FREE(pveh, pass)){
  280.             WARP_CHAR_INTO_CAR_AS_PASSENGER(GetPlayerPed(), pveh, pass);
  281.             LOCK_CAR_DOORS(pveh, VEHICLE_DOOR_LOCKED_BOTH_SIDES);
  282.         }
  283.     }
  284.     print("~b~Loading..");
  285.     REQUEST_MODEL(MODEL_CJ_PLANE_1);
  286.     while(!HAS_MODEL_LOADED(MODEL_CJ_PLANE_1)) WAIT(0);
  287.     CREATE_OBJECT(MODEL_CJ_PLANE_1, x, y, z + maxDistance, &plane, true);
  288.     SET_OBJECT_VISIBLE(plane, true);
  289.     MARK_MODEL_AS_NO_LONGER_NEEDED(MODEL_CJ_PLANE_1);
  290.     ATTACH_OBJECT_TO_CAR(plane, pveh, 0, 2, 12, 8, 0, 0, -3.150);
  291.     SET_OBJECT_LIGHTS(plane, true);
  292.     SET_OBJECT_INVINCIBLE(plane, true);
  293.     SET_OBJECT_COLLISION(plane, false);
  294.     GET_PLAYER_GROUP(GetPlayerIndex(), &groupName);
  295.     if(!DOES_GROUP_EXIST(groupName)){
  296.         CREATE_GROUP(0, groupName, true);
  297.         SET_GROUP_LEADER(groupName, GetPlayerPed());
  298.         SET_GROUP_FORMATION(groupName, 2);
  299.         SET_GROUP_FORMATION_SPACING(groupName, 5);
  300.     }  
  301.     if(!DOES_CHAR_EXIST(pilot)){
  302.         print("~b~Loading...");
  303.         REQUEST_MODEL(MODEL_M_M_HELIPILOT_01);
  304.         while(!HAS_MODEL_LOADED(MODEL_M_M_HELIPILOT_01)) WAIT(0);
  305.         GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS(GetPlayerPed(), 0, 2, 0, &x, &y, &z);
  306.         CREATE_CHAR(26, MODEL_M_M_HELIPILOT_01, x,y,z, &pilot, true);
  307.         WAIT(100);
  308.         SET_CHAR_VISIBLE(pilot, false);
  309.         SET_CHAR_RANDOM_COMPONENT_VARIATION(pilot);
  310.         SET_GROUP_MEMBER(groupName, pilot);
  311.         SET_CHAR_NEVER_LEAVES_GROUP(pilot, true);
  312.         SET_CHAR_RELATIONSHIP_GROUP(pilot, 24);
  313.         SET_CHAR_RELATIONSHIP(pilot, 5, 0);
  314.         SET_CHAR_ACCURACY(pilot, 100);
  315.         SET_CHAR_KEEP_TASK(pilot, true);
  316.         GET_NETWORK_ID_FROM_PED(pilot, &pedID);
  317.         SET_NETWORK_ID_CAN_MIGRATE(pilot, false);
  318.         SET_SENSE_RANGE(pilot, 150.0);
  319.         SET_PED_GENERATES_DEAD_BODY_EVENTS(pilot, true);
  320.         SET_CHAR_SHOOT_RATE(pilot, 100);
  321.         SET_CHAR_WILL_USE_COVER(pilot, false);
  322.         SET_CHAR_WILL_DO_DRIVEBYS(pilot, true);
  323.         SET_CHAR_SIGNAL_AFTER_KILL(pilot, true);
  324.         SET_CHAR_WILL_USE_CARS_IN_COMBAT(pilot, true);
  325.         SET_CHAR_WILL_FLY_THROUGH_WINDSCREEN(pilot, false);
  326.         SET_CHAR_INVINCIBLE(pilot, true);
  327.         SET_CHAR_PROOFS(pilot, true, true, true, true, true);
  328.         SET_CHAR_PROVIDE_COVERING_FIRE(pilot, true);
  329.         SET_CHAR_CANT_BE_DRAGGED_OUT(pilot, true);
  330.         SET_CHAR_STAY_IN_CAR_WHEN_JACKED(pilot, true);
  331.         SET_PED_DONT_DO_EVASIVE_DIVES(pilot, true);
  332.         SET_PED_PATH_MAY_DROP_FROM_HEIGHT(pilot, true);
  333.         SET_PED_PATH_MAY_USE_CLIMBOVERS(pilot, true);
  334.         SET_PED_PATH_MAY_USE_LADDERS(pilot, true);
  335.         WARP_CHAR_INTO_CAR(pilot, pveh);
  336.         SET_CHAR_WILL_LEAVE_CAR_IN_COMBAT(pilot, false);
  337.         SET_CHAR_CAN_BE_SHOT_IN_VEHICLE(pilot, false);
  338.         SET_GROUP_CHAR_DUCKS_WHEN_AIMED_AT(pilot, false);
  339.         SET_CHAR_BULLETPROOF_VEST(pilot, true);
  340.         SET_PED_DIES_WHEN_INJURED(pilot, false);
  341.         SET_CHAR_CAN_SMASH_GLASS(pilot, false);
  342.     }
  343. }
  344.  
  345. void RESET_EVERYTHING(void){
  346.     SET_CHAR_VISIBLE(GetPlayerPed(), true);
  347.     if(DOES_OBJECT_EXIST(plane)){
  348.         DELETE_OBJECT(&plane);
  349.         MARK_OBJECT_AS_NO_LONGER_NEEDED(&plane);
  350.     }
  351.     if(DOES_CHAR_EXIST(pilot)){
  352.         GET_NETWORK_ID_FROM_PED(pilot, &pedID);
  353.         if(!NETWORK_CONTROL(pedID)){
  354.             print("~r~Error deleting pilot!");
  355.         }
  356.         FORCE_CHAR_TO_DROP_WEAPON(pilot);
  357.         WAIT(10);
  358.         DELETE_CHAR(&pilot);
  359.         MARK_CHAR_AS_NO_LONGER_NEEDED(&pilot);
  360.     }
  361.     LOCK_CAR_DOORS(pveh, VEHICLE_DOOR_UNLOCKED);
  362.     if(DOES_VEHICLE_EXIST(pveh)){
  363.         int vehID;
  364.         GET_NETWORK_ID_FROM_VEHICLE(pveh, &vehID);
  365.         if(!NETWORK_CONTROL(vehID)){
  366.             print("~r~Error deleting AC-130!");
  367.         }
  368.         WAIT(10);
  369.         DETACH_CAR(pveh);
  370.         DELETE_CAR(&pveh);
  371.         MARK_CAR_AS_NO_LONGER_NEEDED(&pveh);
  372.     }
  373.     GET_CHAR_COORDINATES(GetPlayerPed(), &x, &y, &z);
  374.     GET_GROUND_Z_FOR_3D_COORD(x, y, z, &zGround);
  375.     SET_CHAR_COORDINATES(GetPlayerPed(), x, y, zGround);
  376.     SET_GAME_CAM_HEADING(0.0);
  377.     LOAD_ALL_OBJECTS_NOW();
  378.     REQUEST_COLLISION_AT_POSN(x, y, zGround);
  379.     if(DOES_OBJECT_EXIST(dum)){
  380.         DELETE_OBJECT(&dum);
  381.         MARK_OBJECT_AS_NO_LONGER_NEEDED(&dum);
  382.     }
  383.     mm25number = 0;
  384.     mm50number = 0;
  385.     modon = false;
  386.     circle = false;
  387.     coords = false;
  388.     wander = false;
  389.     turnoff = false;
  390.     print("~r~AC-130 is now off!");
  391. }
  392.  
  393. void DUMMY(Vehicle veh, float x, float y, float z){
  394.     CREATE_OBJECT(0xFE520830, x, y, z, &dum, true);
  395.     SET_OBJECT_VISIBLE(dum, false);
  396.     MARK_MODEL_AS_NO_LONGER_NEEDED(0xFE520830);
  397.     FREEZE_OBJECT_POSITION(dum, true);
  398.     ATTACH_CAR_TO_OBJECT(veh, dum, 0, -maxDistance, 0, maxDistance, 0, 12.8, 0);
  399. }
  400.  
  401. void AIM(float *RotX, float *RotZ, float *createX, float *createY, float *createZ){
  402.     Camera game_cam;
  403.     GET_GAME_CAM(&game_cam);
  404.     if(IS_CAM_ACTIVE(game_cam)){
  405.         float camRotX, camRotY, camRotZ, camPosX, camPosY, camPosZ, adjacent;
  406.         GET_CAM_ROT(game_cam, &camRotX, &camRotY, &camRotZ);
  407.         GET_CAM_POS(game_cam, &camPosX, &camPosY, &camPosZ);
  408.         if (camRotX < 0.0)
  409.         {
  410.             *RotX = camRotX + 360.0;
  411.         }
  412.         else
  413.         {
  414.             *RotX = camRotX;
  415.         }
  416.         if (camRotZ < 0.0)
  417.         {
  418.             *RotZ = camRotZ + 360.0;
  419.         }
  420.         else
  421.         {
  422.             *RotZ = camRotZ;
  423.         }
  424.         adjacent = (6 * COS(camRotX));
  425.         *createX = camPosX - (adjacent * SIN(camRotZ));
  426.         *createY = camPosY + (adjacent * COS(camRotZ));
  427.         *createZ = camPosZ + (6 * SIN(camRotX));
  428.     }
  429. }
  430.  
  431. void EXPLODE_SMALL(float X,float Y,float Z){
  432.     ADD_EXPLOSION(X, Y, Z, EXPLOSION_GRENADE, 0.8f, 1, 0, 0.1f);
  433. }
  434.  
  435. void EXPLODE_MEDIUM(float X,float Y,float Z){
  436.     ADD_EXPLOSION(X, Y, Z, EXPLOSION_PETROL_PUMP, 0.8f, 1, 0, 0.1f);
  437. }
  438.  
  439. void EXPLODE_BIG(float X,float Y,float Z){
  440.     ADD_EXPLOSION(X, Y, Z, EXPLOSION_SHIP_DESTROY, 0.8f, 1, 0, 0.1f);
  441. }
  442.  
  443.  
  444. /*---------------------------------------Actions---------------------------------------*/
  445. void selectionLoop(void){
  446.     if(select == 1){
  447.         if(mm25){
  448.             if(IS_BUTTON_PRESSED(0, BUTTON_L)){
  449.                 if(IS_BUTTON_PRESSED(0, BUTTON_X)){
  450.                     if(mm25number < 30){
  451.                         REQUEST_MODEL(projectile);
  452.                         while(!HAS_MODEL_LOADED(projectile)){
  453.                             WAIT(0);
  454.                         }
  455.                         AIM(&objRotX, &objRotZ, &objX, &objY, &objZ);
  456.                         CREATE_OBJECT(projectile, objX, objY, objZ, &projectilesmm25[mm25number], true);
  457.                         SET_OBJECT_VISIBLE(projectilesmm25[mm25number], true);
  458.                         MARK_MODEL_AS_NO_LONGER_NEEDED(projectile);
  459.                         if(DOES_OBJECT_EXIST(projectilesmm25[mm25number])){
  460.                             GET_NETWORK_ID_FROM_OBJECT(projectilesmm25[mm25number], &projectileIDmm25);
  461.                             SET_NETWORK_ID_CAN_MIGRATE(projectileIDmm25, false);
  462.                             FREEZE_OBJECT_POSITION(projectilesmm25[mm25number], false);
  463.                             SET_OBJECT_QUATERNION(projectilesmm25[mm25number], 0, 0, 0, 0);
  464.                             SET_OBJECT_INVINCIBLE(projectilesmm25[mm25number], true);
  465.                             SET_OBJECT_DYNAMIC(projectilesmm25[mm25number], true);
  466.                             SET_OBJECT_COLLISION(projectilesmm25[mm25number], true);
  467.                             SET_OBJECT_RECORDS_COLLISIONS(projectilesmm25[mm25number], true);
  468.                             SET_OBJECT_AS_STEALABLE(projectilesmm25[mm25number], false);
  469.                             GET_CHAR_HEADING(GetPlayerPed(), &heading);
  470.                             if(heading < 90){
  471.                                 heading = (heading - 90) + 360;
  472.                             }
  473.                             else{
  474.                                 heading = heading - 90;
  475.                             }
  476.                             SET_OBJECT_HEADING(projectilesmm25[mm25number], heading);
  477.                             SET_OBJECT_ROTATION(projectilesmm25[mm25number], objRotX, 0.0, objRotZ);
  478.                             PLAY_SOUND_FROM_OBJECT(-1, "general_explosions_debris_1", projectilesmm25[mm25number]);
  479.                             STOP_SOUND(-1);
  480.                             WAIT(0); //not a mistake
  481.                             APPLY_FORCE_TO_OBJECT(projectilesmm25[mm25number], true, 0, 1000, 0, 0, 0, 0, true, true, true, true);
  482.                             mm25number++;
  483.                         }
  484.                     }
  485.                     else{
  486.                         print("~r~Reloading...");
  487.                     }
  488.                 }
  489.             }
  490.             anotherNumber++;
  491.             if(anotherNumber > 29){
  492.                 anotherNumber = 0;
  493.             }
  494.             if(DOES_OBJECT_EXIST(projectilesmm25[anotherNumber])){
  495.                 if(HAS_OBJECT_COLLIDED_WITH_ANYTHING(projectilesmm25[anotherNumber]) || IS_OBJECT_IN_WATER(projectilesmm25[anotherNumber]) || !IS_OBJECT_ON_SCREEN(projectilesmm25[anotherNumber])){
  496.                     FREEZE_OBJECT_POSITION(projectilesmm25[anotherNumber], true);
  497.                     GET_OBJECT_COORDINATES(projectilesmm25[anotherNumber], &ox, &oy, &oz);
  498.                     EXPLODE_SMALL(ox, oy, oz);
  499.                     DELETE_OBJECT(&projectilesmm25[anotherNumber]);
  500.                     MARK_OBJECT_AS_NO_LONGER_NEEDED(&projectilesmm25[anotherNumber]);
  501.                     mm25number--;
  502.                     anotherNumber--;
  503.                     if(anotherNumber < 0){
  504.                         anotherNumber = 0;
  505.                     }
  506.                     if(mm25number < 0){
  507.                         mm25number = 0;
  508.                     }
  509.                 }
  510.                 else{
  511.                     APPLY_FORCE_TO_OBJECT(projectilesmm25[anotherNumber], true, 0, 1000, 0, 0, 0, 0, true, true, true, true);
  512.                 }
  513.             }
  514.         }
  515.     }
  516.     if(select == 2){
  517.         if(mm50){
  518.             if(IS_BUTTON_PRESSED(0, BUTTON_L)){
  519.                 if(IS_BUTTON_JUST_PRESSED(0, BUTTON_X)){
  520.                     if(mm50number < 5){
  521.                         REQUEST_MODEL(projectile);
  522.                         while(!HAS_MODEL_LOADED(projectile)){
  523.                             WAIT(0);
  524.                         }
  525.                         AIM(&objRotX, &objRotZ, &objX, &objY, &objZ);
  526.                         CREATE_OBJECT(projectile, objX, objY, objZ, &projectilesmm50[mm50number], true);
  527.                         SET_OBJECT_VISIBLE(projectilesmm50[mm50number], true);
  528.                         MARK_MODEL_AS_NO_LONGER_NEEDED(projectile);
  529.                         if(DOES_OBJECT_EXIST(projectilesmm50[mm50number])){
  530.                             GET_NETWORK_ID_FROM_OBJECT(projectilesmm50[mm50number], &projectileIDmm50);
  531.                             SET_NETWORK_ID_CAN_MIGRATE(projectileIDmm50, false);
  532.                             FREEZE_OBJECT_POSITION(projectilesmm50[mm50number], false);
  533.                             SET_OBJECT_QUATERNION(projectilesmm50[mm50number], 0, 0, 0, 0);
  534.                             SET_OBJECT_INVINCIBLE(projectilesmm50[mm50number], true);
  535.                             SET_OBJECT_DYNAMIC(projectilesmm50[mm50number], true);
  536.                             SET_OBJECT_COLLISION(projectilesmm50[mm50number], true);
  537.                             SET_OBJECT_RECORDS_COLLISIONS(projectilesmm50[mm50number], true);
  538.                             SET_OBJECT_AS_STEALABLE(projectilesmm50[mm50number], false);
  539.                             GET_CHAR_HEADING(GetPlayerPed(), &heading);
  540.                             if(heading < 90){
  541.                                 heading = (heading - 90) + 360;
  542.                             }
  543.                             else{
  544.                                 heading = heading - 90;
  545.                             }
  546.                             SET_OBJECT_HEADING(projectilesmm50[mm50number], heading);
  547.                             SET_OBJECT_ROTATION(projectilesmm50[mm50number], objRotX, 0.0, objRotZ);
  548.                             PLAY_SOUND_FROM_OBJECT(-1, "shotgun_fire", projectilesmm50[mm50number]);
  549.                             STOP_SOUND(-1);
  550.                             START_PTFX_ON_OBJ("weap_molotov_trail", projectilesmm50[mm50number], 0.00000000, -0.04000000, 0.00000000, 0.00000000, 0.00000000, 2.00000000, 1);
  551.                             WAIT(0); //not a mistake
  552.                             APPLY_FORCE_TO_OBJECT(projectilesmm50[mm50number], true, 0, 1000, 0, 0, 0, 0, true, true, true, true);
  553.                             mm50number++;
  554.                         }
  555.                     }
  556.                     else{
  557.                         print("~r~Reloading...");
  558.                     }
  559.                 }
  560.             }
  561.             anotherNumber++;
  562.             if(anotherNumber > 4){
  563.                 anotherNumber = 0;
  564.             }
  565.             if(DOES_OBJECT_EXIST(projectilesmm50[anotherNumber])){
  566.                 if(HAS_OBJECT_COLLIDED_WITH_ANYTHING(projectilesmm50[anotherNumber]) || IS_OBJECT_IN_WATER(projectilesmm50[anotherNumber]) || !IS_OBJECT_ON_SCREEN(projectilesmm50[anotherNumber])){
  567.                     FREEZE_OBJECT_POSITION(projectilesmm50[anotherNumber], true);
  568.                     GET_OBJECT_COORDINATES(projectilesmm50[anotherNumber], &ox, &oy, &oz);
  569.                     EXPLODE_MEDIUM(ox, oy, oz);
  570.                     DELETE_OBJECT(&projectilesmm50[anotherNumber]);
  571.                     MARK_OBJECT_AS_NO_LONGER_NEEDED(&projectilesmm50[anotherNumber]);
  572.                     anotherNumber--;
  573.                     mm50number--;
  574.                     if(anotherNumber < 0){
  575.                         anotherNumber = 0;
  576.                     }
  577.                     if(mm50number < 0){
  578.                         mm50number = 0;
  579.                     }
  580.                 }
  581.                 else{
  582.                     APPLY_FORCE_TO_OBJECT(projectilesmm50[anotherNumber], true, 0, 1000, 0, 0, 0, 0, true, true, true, true);
  583.                 }
  584.             }
  585.         }
  586.     }
  587.     if(select == 3){
  588.         if(mm105){
  589.             if(IS_BUTTON_PRESSED(0, BUTTON_L)){
  590.                 if(IS_BUTTON_JUST_PRESSED(0, BUTTON_X)){
  591.                     if(!DOES_OBJECT_EXIST(projectilesmm105)){
  592.                         REQUEST_MODEL(projectile);
  593.                         while(!HAS_MODEL_LOADED(projectile)){
  594.                             WAIT(0);
  595.                         }
  596.                         AIM(&objRotX, &objRotZ, &objX, &objY, &objZ);
  597.                         CREATE_OBJECT(projectile, objX, objY, objZ, &projectilesmm105, true);
  598.                         SET_OBJECT_VISIBLE(projectilesmm105, true);
  599.                         MARK_MODEL_AS_NO_LONGER_NEEDED(projectile);
  600.                         if(DOES_OBJECT_EXIST(projectilesmm105)){
  601.                             GET_NETWORK_ID_FROM_OBJECT(projectilesmm105, &projectileIDmm105);
  602.                             SET_NETWORK_ID_CAN_MIGRATE(projectileIDmm105, false);
  603.                             FREEZE_OBJECT_POSITION(projectilesmm105, false);
  604.                             SET_OBJECT_QUATERNION(projectilesmm105, 0, 0, 0, 0);
  605.                             SET_OBJECT_INVINCIBLE(projectilesmm105, true);
  606.                             SET_OBJECT_DYNAMIC(projectilesmm105, true);
  607.                             SET_OBJECT_COLLISION(projectilesmm105, true);
  608.                             SET_OBJECT_RECORDS_COLLISIONS(projectilesmm105, true);
  609.                             SET_OBJECT_AS_STEALABLE(projectilesmm105, false);
  610.                             GET_CHAR_HEADING(GetPlayerPed(), &heading);
  611.                             if(heading < 90){
  612.                                 heading = (heading - 90) + 360;
  613.                             }
  614.                             else{
  615.                                 heading = heading - 90;
  616.                             }
  617.                             SET_OBJECT_HEADING(projectilesmm105, heading);
  618.                             SET_OBJECT_ROTATION(projectilesmm105, objRotX, 0.0, objRotZ);
  619.                             PLAY_SOUND_FROM_OBJECT(-1, "ROCKET_LAUNCH", projectilesmm105);
  620.                             STOP_SOUND(-1);
  621.                             START_PTFX_ON_OBJ("weap_rocket_player", projectilesmm105, 0.00000000, -0.04000000, 0.00000000, 0.00000000, 0.00000000, 2.00000000, 1);
  622.                             WAIT(0); //not a mistake
  623.                             APPLY_FORCE_TO_OBJECT(projectilesmm105, true, 0, 1000, 0, 0, 0, 0, true, true, true, true);
  624.                         }
  625.                     }
  626.                     else{
  627.                         print("~r~Reloading...");
  628.                     }
  629.                 }
  630.             }
  631.             if(DOES_OBJECT_EXIST(projectilesmm105)){
  632.                 if(HAS_OBJECT_COLLIDED_WITH_ANYTHING(projectilesmm105) || IS_OBJECT_IN_WATER(projectilesmm105) || !IS_OBJECT_ON_SCREEN(projectilesmm105)){
  633.                     FREEZE_OBJECT_POSITION(projectilesmm105, true);
  634.                     GET_OBJECT_COORDINATES(projectilesmm105, &ox, &oy, &oz);
  635.                     EXPLODE_BIG(ox, oy, oz);
  636.                     DELETE_OBJECT(&projectilesmm105);
  637.                     MARK_OBJECT_AS_NO_LONGER_NEEDED(&projectilesmm105);
  638.                 }
  639.                 else{
  640.                     APPLY_FORCE_TO_OBJECT(projectilesmm105, true, 0, 1000, 0, 0, 0, 0, true, true, true, true);
  641.                 }
  642.             }
  643.         }
  644.     }
  645. }
  646.  
  647. void selections(void){
  648.     if(modon){
  649.         if(DOES_VEHICLE_EXIST(pveh) && DOES_CHAR_EXIST(pilot) && IS_CHAR_IN_ANY_HELI(pilot)){
  650.             if(IS_BUTTON_PRESSED(0, BUTTON_LB) && IS_BUTTON_JUST_PRESSED(0, BUTTON_X)){
  651.                 if(showSelection){
  652.                     showSelection = false;
  653.                 }
  654.                 else{
  655.                     showSelection = true;
  656.                 }
  657.             }
  658.             if(showSelection){
  659.                 if(IS_BUTTON_JUST_PRESSED(0, BUTTON_B)){
  660.                     showSelection = false;
  661.                 }
  662.                 if(IS_BUTTON_JUST_PRESSED(0, DPAD_LEFT)){
  663.                     select--;
  664.                 }
  665.                 if(IS_BUTTON_JUST_PRESSED(0, DPAD_RIGHT)){
  666.                     select++;
  667.                 }
  668.                 if(select > 3){
  669.                     select = 1;
  670.                 }
  671.                 if(select < 1){
  672.                     select = 3;
  673.                 }
  674.                 if(select == 1){
  675.                     if(mm25){
  676.                         printShort("~b~25mm Cannons ~g~[Enabled]");
  677.                     }
  678.                     else{
  679.                         printShort("~b~25mm Cannons ~r~[Disabled]");
  680.                     }
  681.                     if(IS_BUTTON_JUST_PRESSED(0, BUTTON_A)){
  682.                         if(mm25){
  683.                             mm25 = false;
  684.                         }
  685.                         else{
  686.                             print("~g~25mm Cannons are now actiavted! Hold ~PAD_X~ to shoot!");
  687.                             showSelection = false;
  688.                             mm25 = true;
  689.                             mm50 = false;
  690.                             mm105 = false;
  691.                         }
  692.                     }
  693.                 }
  694.                 if(select == 2){
  695.                     if(mm50){
  696.                         printShort("~b~50mm Cannons ~g~[Enabled]");
  697.                     }
  698.                     else{
  699.                         printShort("~b~50mm Cannons ~r~[Disabled]");
  700.                     }
  701.                     if(IS_BUTTON_JUST_PRESSED(0, BUTTON_A)){
  702.                         if(mm50){
  703.                             mm50 = false;
  704.                         }
  705.                         else{
  706.                             print("~g~50mm Cannons are now actiavted! Press ~PAD_X~ to shoot!");
  707.                             showSelection = false;
  708.                             mm50 = true;
  709.                             mm25 = false;
  710.                             mm105 = false;
  711.                         }
  712.                     }
  713.                 }
  714.                 if(select == 3){
  715.                     if(mm105){
  716.                         printShort("~b~105mm Cannons ~g~[Enabled]");
  717.                     }
  718.                     else{
  719.                         printShort("~b~105mm Cannons ~r~[Disabled]");
  720.                     }
  721.                     if(IS_BUTTON_JUST_PRESSED(0, BUTTON_A)){
  722.                         if(mm105){
  723.                             mm105 = false;
  724.                         }
  725.                         else{
  726.                             print("~g~105mm Cannons are now actiavted! Press ~PAD_X~ to shoot!");
  727.                             showSelection = false;
  728.                             mm105 = true;
  729.                             mm25 = false;
  730.                             mm50 = false;
  731.                         }
  732.                     }
  733.                 }
  734.             }
  735.         }
  736.     }
  737. }
  738.  
  739. void drawShootingScreenCircle(void){
  740.     //Shoot screen will glitch if they are set to if statements for the pilots task
  741.     HIDE_HELP_TEXT_THIS_FRAME();
  742.     SET_UP_DRAW_1(0.4000, 0.5100, 145, 151, 153, 255);
  743.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.3900, 0.0500, "STRING", "Circling Waypoint");
  744.     if(mm25){
  745.         SET_UP_DRAW_1(0.3100, 0.4550, 145, 151, 153, 255);
  746.         DISPLAY_TEXT_WITH_LITERAL_STRING(0.4280, 0.1000, "STRING", "25mm Cannons");
  747.         DRAW_RECT(0.5125, 0.5000, 0.0300, 0.0100, 0, 0, 0, 50); //x cross
  748.         DRAW_RECT(0.5000, 0.5213, 0.0050, 0.0500, 0, 0, 0, 50); //y cross
  749.     }
  750.     if(mm50){
  751.         SET_UP_DRAW_1(0.3100, 0.4550, 145, 151, 153, 255);
  752.         DISPLAY_TEXT_WITH_LITERAL_STRING(0.4280, 0.1000, "STRING", "50mm Cannons");
  753.         DRAW_RECT(0.5000, 0.5000, 0.0300, 0.0100, 0, 0, 0, 50); //x cross
  754.         DRAW_RECT(0.5000, 0.5000, 0.0050, 0.0500, 0, 0, 0, 50); //y cross
  755.     }
  756.     if(mm105){
  757.         SET_UP_DRAW_1(0.3100, 0.4550, 145, 151, 153, 255);
  758.         DISPLAY_TEXT_WITH_LITERAL_STRING(0.4200, 0.1000, "STRING", "105mm Cannons");
  759.         DRAW_RECT(0.5000, 0.5200, 0.0300, 0.0100, 0, 0, 0, 50); //bottom x line
  760.         DRAW_RECT(0.5175, 0.5000, 0.0050, 0.0500, 0, 0, 0, 50); //right y line
  761.         DRAW_RECT(0.5000, 0.4800, 0.0300, 0.0100, 0, 0, 0, 50); //top x line
  762.         DRAW_RECT(0.4825, 0.5000, 0.0050, 0.0500, 0, 0, 0, 50); //left y line
  763.     }
  764. }
  765.  
  766. void drawShootingScreenTravel(void){
  767.     HIDE_HELP_TEXT_THIS_FRAME();
  768.     SET_UP_DRAW_1(0.4000, 0.5100, 145, 151, 153, 255);
  769.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.3700, 0.0500, "STRING", "Traveling to Waypoint");
  770.         if(mm25){
  771.         SET_UP_DRAW_1(0.3100, 0.4550, 145, 151, 153, 255);
  772.         DISPLAY_TEXT_WITH_LITERAL_STRING(0.4280, 0.1000, "STRING", "25mm Cannons");
  773.         DRAW_RECT(0.5125, 0.5000, 0.0300, 0.0100, 0, 0, 0, 50); //x cross
  774.         DRAW_RECT(0.5000, 0.5213, 0.0050, 0.0500, 0, 0, 0, 50); //y cross
  775.     }
  776.     if(mm50){
  777.         SET_UP_DRAW_1(0.3100, 0.4550, 145, 151, 153, 255);
  778.         DISPLAY_TEXT_WITH_LITERAL_STRING(0.4280, 0.1000, "STRING", "50mm Cannons");
  779.         DRAW_RECT(0.5000, 0.5000, 0.0300, 0.0100, 0, 0, 0, 50); //x cross
  780.         DRAW_RECT(0.5000, 0.5000, 0.0050, 0.0500, 0, 0, 0, 50); //y cross
  781.     }
  782.     if(mm105){
  783.         SET_UP_DRAW_1(0.3100, 0.4550, 145, 151, 153, 255);
  784.         DISPLAY_TEXT_WITH_LITERAL_STRING(0.4200, 0.1000, "STRING", "105mm Cannons");
  785.         DRAW_RECT(0.5000, 0.5200, 0.0300, 0.0100, 0, 0, 0, 50); //bottom x line
  786.         DRAW_RECT(0.5175, 0.5000, 0.0050, 0.0500, 0, 0, 0, 50); //right y line
  787.         DRAW_RECT(0.5000, 0.4800, 0.0300, 0.0100, 0, 0, 0, 50); //top x line
  788.         DRAW_RECT(0.4825, 0.5000, 0.0050, 0.0500, 0, 0, 0, 50); //left y line
  789.     }
  790. }
  791.  
  792. void drawShootingScreenWander(void){
  793.     HIDE_HELP_TEXT_THIS_FRAME();
  794.     SET_UP_DRAW_1(0.4000, 0.5100, 145, 151, 153, 255);
  795.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.4370, 0.0500, "STRING", "Auto Pilot");
  796.         if(mm25){
  797.         SET_UP_DRAW_1(0.3100, 0.4550, 145, 151, 153, 255);
  798.         DISPLAY_TEXT_WITH_LITERAL_STRING(0.4280, 0.1000, "STRING", "25mm Cannons");
  799.         DRAW_RECT(0.5125, 0.5000, 0.0300, 0.0100, 0, 0, 0, 50); //x cross
  800.         DRAW_RECT(0.5000, 0.5213, 0.0050, 0.0500, 0, 0, 0, 50); //y cross
  801.     }
  802.     if(mm50){
  803.         SET_UP_DRAW_1(0.3100, 0.4550, 145, 151, 153, 255);
  804.         DISPLAY_TEXT_WITH_LITERAL_STRING(0.4280, 0.1000, "STRING", "50mm Cannons");
  805.         DRAW_RECT(0.5000, 0.5000, 0.0300, 0.0100, 0, 0, 0, 50); //x cross
  806.         DRAW_RECT(0.5000, 0.5000, 0.0050, 0.0500, 0, 0, 0, 50); //y cross
  807.     }
  808.     if(mm105){
  809.         SET_UP_DRAW_1(0.3100, 0.4550, 145, 151, 153, 255);
  810.         DISPLAY_TEXT_WITH_LITERAL_STRING(0.4200, 0.1000, "STRING", "105mm Cannons");
  811.         DRAW_RECT(0.5000, 0.5200, 0.0300, 0.0100, 0, 0, 0, 50); //bottom x line
  812.         DRAW_RECT(0.5175, 0.5000, 0.0050, 0.0500, 0, 0, 0, 50); //right y line
  813.         DRAW_RECT(0.5000, 0.4800, 0.0300, 0.0100, 0, 0, 0, 50); //top x line
  814.         DRAW_RECT(0.4825, 0.5000, 0.0050, 0.0500, 0, 0, 0, 50); //left y line
  815.     }
  816. }
  817.  
  818. void characterLoop(void){
  819.     if(HAS_CHAR_GOT_WEAPON(GetPlayerPed(), WEAPON_DEAGLE)){
  820.         SET_CURRENT_CHAR_WEAPON(GetPlayerPed(), WEAPON_DEAGLE, true);
  821.         BLOCK_PED_WEAPON_SWITCHING(GetPlayerPed(), true);
  822.     }
  823.     else{
  824.         GIVE_WEAPON_TO_CHAR(GetPlayerPed(), WEAPON_DEAGLE, 9999, false);
  825.     }
  826. }
  827.  
  828. void soundsLoop(void){
  829.     if(modon){
  830.         DISABLE_FRONTEND_RADIO();
  831.     }
  832.     else{
  833.         ENABLE_FRONTEND_RADIO();
  834.     }
  835. }
  836.  
  837. void toggleLoop(void){
  838.     if(IS_BUTTON_PRESSED(0, BUTTON_RB) && IS_BUTTON_JUST_PRESSED(0, BUTTON_X)){
  839.         if(!modon){
  840.             modon = true;
  841.             SPAWN_PLANE();
  842.         }
  843.     }
  844. }
  845.  
  846. void circleCoords(void){
  847.     if(modon){
  848.         if(DOES_VEHICLE_EXIST(pveh) && DOES_CHAR_EXIST(pilot) && IS_CHAR_IN_ANY_HELI(pilot) && IS_CHAR_IN_ANY_HELI(GetPlayerPed())){
  849.             if(DOES_BLIP_EXIST(GET_FIRST_BLIP_INFO_ID(BLIP_WAYPOINT))){
  850.                 while(circle){
  851.                     WAIT(0);
  852.                     for(a = 360; a >= 0;a = a - 0.3){
  853.                         WAIT(0); //not a mistake must be here otherwise you will lag like a motherfucker
  854.                         if(a == 0){
  855.                             a = 360;
  856.                         }
  857.                         drawShootingScreenCircle();
  858.                         selections();
  859.                         selectionLoop();
  860.                         controlsLoop();
  861.                         characterLoop();
  862.                         SET_OBJECT_HEADING(dum, a);
  863.                         if(IS_BUTTON_PRESSED(0, BUTTON_RB) && IS_BUTTON_JUST_PRESSED(0, BUTTON_X)){
  864.                             DETACH_CAR(pveh);
  865.                             if(DOES_OBJECT_EXIST(dum)){
  866.                                 DELETE_OBJECT(&dum);
  867.                                 MARK_OBJECT_AS_NO_LONGER_NEEDED(&dum);
  868.                             }
  869.                             FREEZE_CAR_POSITION(pveh, false);
  870.                             SET_VEHICLE_QUATERNION(pveh, 0, 0, 0, 0);
  871.                             circle = false;
  872.                             turnoff = true;
  873.                             break;
  874.                         }
  875.                         if(!DOES_BLIP_EXIST(GET_FIRST_BLIP_INFO_ID(BLIP_WAYPOINT))){
  876.                             DETACH_CAR(pveh);
  877.                             if(DOES_OBJECT_EXIST(dum)){
  878.                                 DELETE_OBJECT(&dum);
  879.                                 MARK_OBJECT_AS_NO_LONGER_NEEDED(&dum);
  880.                             }
  881.                             FREEZE_CAR_POSITION(pveh, false);
  882.                             SET_VEHICLE_QUATERNION(pveh, 0, 0, 0, 0);
  883.                             circle = false;
  884.                             break;
  885.                         }
  886.                     }
  887.                 }
  888.                 if(turnoff){
  889.                     RESET_EVERYTHING();
  890.                 }
  891.             }
  892.         }
  893.     }
  894. }
  895.  
  896. void goToCoords(void){
  897.     if(modon){
  898.         if(DOES_VEHICLE_EXIST(pveh) && DOES_CHAR_EXIST(pilot) && IS_CHAR_IN_ANY_HELI(pilot)){
  899.             if(DOES_BLIP_EXIST(GET_FIRST_BLIP_INFO_ID(BLIP_WAYPOINT))){
  900.                 print("~g~Traveling to location!");
  901.                 WAIT(5);
  902.                 coords = true;
  903.                 while(coords){
  904.                     WAIT(0);
  905.                     if(IS_BUTTON_PRESSED(0, BUTTON_RB) && IS_BUTTON_JUST_PRESSED(0, BUTTON_X)){
  906.                         coords = false;
  907.                         turnoff = true;
  908.                     }
  909.                     if(!DOES_BLIP_EXIST(GET_FIRST_BLIP_INFO_ID(BLIP_WAYPOINT))){
  910.                         coords = false;
  911.                     }
  912.                     drawShootingScreenTravel();
  913.                     selections();
  914.                     selectionLoop();
  915.                     controlsLoop();
  916.                     characterLoop();
  917.                     GET_BLIP_COORDS(GET_FIRST_BLIP_INFO_ID(BLIP_WAYPOINT), &position);
  918.                     GET_GROUND_Z_FOR_3D_COORD(position.x, position.y, position.z, &zGround);
  919.                     TASK_HELI_MISSION(pilot, pveh, 0, 0, position.x, position.y, zGround + maxDistance, 4, 30.0f, 5, -1, (ROUND(zGround + maxDistance) + 1), 40);
  920.                     GET_CAR_COORDINATES(pveh, &px, &py, &pz);
  921.                     GET_DISTANCE_BETWEEN_COORDS_2D(px, py, position.x, position.y, &distance);
  922.                     if(distance <= maxDistance){
  923.                         SET_CAR_FORWARD_SPEED(pveh, 0);
  924.                         DUMMY(pveh, position.x, position.y, zGround);
  925.                         coords = false;
  926.                         circle = true;
  927.                         break;
  928.                     }
  929.                 }
  930.             }
  931.             else{ //This is just to fly around the map if you don't want to set a waypoint
  932.                 print("~g~Auto pilot!");
  933.                 wander = true;
  934.                 while(wander){
  935.                     WAIT(0);
  936.                     if(task == 1){
  937.                         drawShootingScreenWander();
  938.                         selections();
  939.                         selectionLoop();
  940.                         controlsLoop();
  941.                         characterLoop();
  942.                         GET_CAR_COORDINATES(pveh, &px, &py, &pz);
  943.                         GET_GROUND_Z_FOR_3D_COORD(px, py, pz, &zGround);
  944.                         TASK_HELI_MISSION(pilot, pveh, 0, 0, ch1X, ch1Y, (zGround + maxDistance), 4, 10.0f, 5, -1, (ROUND(maxDistance) + 1), 40);
  945.                         if(IS_CHAR_IN_AREA_2D(pilot, ch1X + 20, ch1Y + 20, ch1X - 20, ch1Y - 20, false)){
  946.                             task++;
  947.                         }
  948.                         if(IS_BUTTON_PRESSED(0, BUTTON_RB) && IS_BUTTON_JUST_PRESSED(0, BUTTON_X)){
  949.                             task = 1;
  950.                             wander = false;
  951.                             turnoff = true;
  952.                         }
  953.                         if(DOES_BLIP_EXIST(GET_FIRST_BLIP_INFO_ID(BLIP_WAYPOINT))){
  954.                             task = 1;
  955.                             wander = false;
  956.                         }
  957.                     }
  958.                     if(task == 2){
  959.                         drawShootingScreenWander();
  960.                         selections();
  961.                         selectionLoop();
  962.                         controlsLoop();
  963.                         characterLoop();
  964.                         GET_CAR_COORDINATES(pveh, &px, &py, &pz);
  965.                         GET_GROUND_Z_FOR_3D_COORD(px, py, pz, &zGround);
  966.                         TASK_HELI_MISSION(pilot, pveh, 0, 0, ch2X, ch2Y, (zGround + maxDistance), 4, 10.0f, 5, -1, (ROUND(maxDistance) + 1), 40);
  967.                         if(IS_CHAR_IN_AREA_2D(pilot, ch2X + 20, ch2Y + 20, ch2X - 20, ch2Y - 20, false)){
  968.                             task++;
  969.                         }
  970.                         if(IS_BUTTON_PRESSED(0, BUTTON_RB) && IS_BUTTON_JUST_PRESSED(0, BUTTON_X)){
  971.                             task = 1;
  972.                             wander = false;
  973.                             turnoff = true;
  974.                         }
  975.                         if(DOES_BLIP_EXIST(GET_FIRST_BLIP_INFO_ID(BLIP_WAYPOINT))){
  976.                             task = 1;
  977.                             wander = false;
  978.                         }
  979.                     }
  980.                     if(task == 3){
  981.                         characterLoop();
  982.                         drawShootingScreenWander();
  983.                         selections();
  984.                         selectionLoop();
  985.                         controlsLoop();
  986.                         characterLoop();
  987.                         GET_CAR_COORDINATES(pveh, &px, &py, &pz);
  988.                         GET_GROUND_Z_FOR_3D_COORD(px, py, pz, &zGround);
  989.                         TASK_HELI_MISSION(pilot, pveh, 0, 0, ch3X, ch3Y, (zGround + maxDistance), 4, 10.0f, 5, -1, (ROUND(maxDistance) + 1), 40);
  990.                         if(IS_CHAR_IN_AREA_2D(pilot, ch3X + 20, ch3Y + 20, ch3X - 20, ch3Y - 20, false)){
  991.                             task++;
  992.                         }
  993.                         if(IS_BUTTON_PRESSED(0, BUTTON_RB) && IS_BUTTON_JUST_PRESSED(0, BUTTON_X)){
  994.                             task = 1;
  995.                             wander = false;
  996.                             turnoff = true;
  997.                         }
  998.                         if(DOES_BLIP_EXIST(GET_FIRST_BLIP_INFO_ID(BLIP_WAYPOINT))){
  999.                             task = 1;
  1000.                             wander = false;
  1001.                         }
  1002.                     }
  1003.                     if(task == 4){
  1004.                         drawShootingScreenWander();
  1005.                         selections();
  1006.                         selectionLoop();
  1007.                         controlsLoop();
  1008.                         characterLoop();
  1009.                         GET_CAR_COORDINATES(pveh, &px, &py, &pz);
  1010.                         GET_GROUND_Z_FOR_3D_COORD(px, py, pz, &zGround);
  1011.                         TASK_HELI_MISSION(pilot, pveh, 0, 0, ch4X, ch4Y, (zGround + maxDistance), 4, 10.0f, 5, -1, (ROUND(maxDistance) + 1), 40);
  1012.                         if(IS_CHAR_IN_AREA_2D(pilot, ch4X + 20, ch4Y + 20, ch4X - 20, ch4Y - 20, false)){
  1013.                             task++;
  1014.                         }
  1015.                         if(IS_BUTTON_PRESSED(0, BUTTON_RB) && IS_BUTTON_JUST_PRESSED(0, BUTTON_X)){
  1016.                             task = 1;
  1017.                             wander = false;
  1018.                             turnoff = true;
  1019.                         }
  1020.                         if(DOES_BLIP_EXIST(GET_FIRST_BLIP_INFO_ID(BLIP_WAYPOINT))){
  1021.                             task = 1;
  1022.                             wander = false;
  1023.                         }
  1024.                     }
  1025.                     if(task == 5){
  1026.                         drawShootingScreenWander();
  1027.                         selections();
  1028.                         selectionLoop();
  1029.                         controlsLoop();
  1030.                         characterLoop();
  1031.                         GET_CAR_COORDINATES(pveh, &px, &py, &pz);
  1032.                         GET_GROUND_Z_FOR_3D_COORD(px, py, pz, &zGround);
  1033.                         TASK_HELI_MISSION(pilot, pveh, 0, 0, ch5X, ch5Y, (zGround + maxDistance), 4, 10.0f, 5, -1, (ROUND(maxDistance) + 1), 40);
  1034.                         if(IS_CHAR_IN_AREA_2D(pilot, ch5X + 20, ch5Y + 20, ch5X - 20, ch5Y - 20, false)){
  1035.                             task++;
  1036.                         }
  1037.                         if(IS_BUTTON_PRESSED(0, BUTTON_RB) && IS_BUTTON_JUST_PRESSED(0, BUTTON_X)){
  1038.                             task = 1;
  1039.                             wander = false;
  1040.                             turnoff = true;
  1041.                         }
  1042.                         if(DOES_BLIP_EXIST(GET_FIRST_BLIP_INFO_ID(BLIP_WAYPOINT))){
  1043.                             task = 1;
  1044.                             wander = false;
  1045.                         }
  1046.                     }
  1047.                     if(task == 6){
  1048.                         drawShootingScreenWander();
  1049.                         selections();
  1050.                         selectionLoop();
  1051.                         controlsLoop();
  1052.                         characterLoop();
  1053.                         GET_CAR_COORDINATES(pveh, &px, &py, &pz);
  1054.                         GET_GROUND_Z_FOR_3D_COORD(px, py, pz, &zGround);
  1055.                         TASK_HELI_MISSION(pilot, pveh, 0, 0, ch6X, ch6Y, (zGround + maxDistance), 4, 10.0f, 5, -1, (ROUND(maxDistance) + 1), 40);
  1056.                         if(IS_CHAR_IN_AREA_2D(pilot, ch6X + 20, ch6Y + 20, ch6X - 20, ch6Y - 20, false)){
  1057.                             task++;
  1058.                         }
  1059.                         if(IS_BUTTON_PRESSED(0, BUTTON_RB) && IS_BUTTON_JUST_PRESSED(0, BUTTON_X)){
  1060.                             task = 1;
  1061.                             wander = false;
  1062.                             turnoff = true;
  1063.                         }
  1064.                         if(DOES_BLIP_EXIST(GET_FIRST_BLIP_INFO_ID(BLIP_WAYPOINT))){
  1065.                             task = 1;
  1066.                             wander = false;
  1067.                         }
  1068.                     }
  1069.                     if(task > 6){
  1070.                         task = 1;
  1071.                     }
  1072.                 }
  1073.                 if(turnoff){
  1074.                     RESET_EVERYTHING();
  1075.                 }
  1076.             }
  1077.         }
  1078.     }
  1079. }
  1080.  
  1081.  
  1082. /*----------------------------------------Start----------------------------------------*/
  1083. void main(void){
  1084.     THIS_SCRIPT_IS_SAFE_FOR_NETWORK_GAME();
  1085.     print("~g~AC-130 by XF CH3WY!");
  1086.     WAIT(2500);
  1087.     print("~b~Press ~PAD_RB~ + ~PAD_B~ for controls!");
  1088.     GIVE_WEAPON_TO_CHAR(GetPlayerPed(), WEAPON_DEAGLE, 9999, false);
  1089.     do{
  1090.         toggleLoop();
  1091.         controlsLoop();
  1092.         soundsLoop();
  1093.         goToCoords();
  1094.         circleCoords();
  1095.         WAIT(0);
  1096.     }while(true);
  1097. }
Advertisement
Add Comment
Please, Sign In to add comment