Advertisement
brian63102

Heat Seeker

Jan 28th, 2018
570
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 12.53 KB | None | 0 0
  1. //Unsigned Integers
  2. uint lockOn, shooter;
  3.  
  4. //Bools
  5. bool networkPlayers = false;
  6. bool controlling = false;
  7. found = false;
  8.  
  9. //Declarations
  10. Ped* players[15];
  11. Vector3 pos;
  12. Object rocket;
  13. Vehicle myVeh;
  14.  
  15. //Floats
  16. float gx, gy, gz, fx, fy, fz, jx, jy, jz;
  17. float cx, cy, cz, hx, hy, hz, disttt;
  18. float offx, offy, offz, h, distttt;
  19.  
  20. //Integers
  21. int rocketid;
  22.  
  23.  
  24. ////////////////////////////START SOURCE HERE////////////////////////////
  25. void EXPLODE(float X,float Y,float Z){
  26.     ADD_EXPLOSION(X, Y, Z, EXPLOSION_PETROL_PUMP, 0.8f, 1, 0, 0.1f);
  27. }
  28.  
  29. void weaponLoop(void){
  30.     SET_CURRENT_CHAR_WEAPON(GetPlayerPed(), WEAPON_DEAGLE, true);
  31.     //SET_CURRENT_CHAR_WEAPON(GetPlayerPed(), WEAPON_ROCKET, true);
  32.     BLOCK_PED_WEAPON_SWITCHING(GetPlayerPed(), true);
  33. }
  34.  
  35. void carLoop(void){
  36.     if(IS_CHAR_ON_FOOT(GetPlayerPed())){
  37.         lockOn = BUTTON_L;
  38.         shooter = BUTTON_A;
  39.     }
  40.     else if(IS_CHAR_IN_ANY_HELI(GetPlayerPed())){
  41.         lockOn = BUTTON_A;
  42.         shooter = BUTTON_X;
  43.     }
  44.     else{
  45.         lockOn = BUTTON_X;
  46.         shooter = BUTTON_A;
  47.     }
  48. }
  49.  
  50. void SET_UP_DRAW(float width, float height, uint r, uint g, uint b, uint a){
  51. #ifdef PC
  52.     SET_TEXT_FONT(7);
  53. #else
  54.     SET_TEXT_FONT(6);
  55. #endif
  56.     SET_TEXT_BACKGROUND(0);
  57.     SET_TEXT_DROPSHADOW(0, 0, 0, 0, 255);
  58.     SET_TEXT_EDGE(1, 0, 0, 0, 255);
  59.     SET_TEXT_COLOUR(r, g, b, a);
  60.     SET_TEXT_SCALE(width, height);
  61.     SET_TEXT_PROPORTIONAL(1);
  62.     SET_TEXT_JUSTIFY(0);
  63.     SET_TEXT_CENTRE(0);
  64.     SET_TEXT_RIGHT_JUSTIFY(0);
  65. }
  66.  
  67. void SET_UP_DRAW_1(float width, float height, uint r, uint g, uint b, uint a){
  68. #ifdef PC
  69.     SET_TEXT_FONT(5);
  70. #else
  71.     SET_TEXT_FONT(4);
  72. #endif
  73.     SET_TEXT_BACKGROUND(0);
  74.     SET_TEXT_DROPSHADOW(0, 0, 0, 0, 255);
  75.     SET_TEXT_EDGE(1, 0, 0, 0, 255);
  76.     SET_TEXT_COLOUR(r, g, b, a);
  77.     SET_TEXT_SCALE(width, height);
  78.     SET_TEXT_PROPORTIONAL(1);
  79.     SET_TEXT_JUSTIFY(0);
  80.     SET_TEXT_CENTRE(0);
  81.     SET_TEXT_RIGHT_JUSTIFY(0);
  82. }
  83.  
  84. void rect(void){
  85.     DRAW_RECT(0.0, 0.0, 0.9110, 0.5000, 0, 0, 0, 255);
  86. }
  87.  
  88. void control_show(void){
  89.     SET_UP_DRAW(0.3100, 0.4550, 255, 0, 0, 255);
  90.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.1270, 0.0340, "STRING", "CONTROLS");
  91. }
  92.  
  93. void close_show(void){
  94.     SET_UP_DRAW(0.3100, 0.4550, 255, 0, 0, 255);
  95.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.3100, 0.0340, "STRING", "CLOSE - ~PAD_RB~ + ~PAD_X~");
  96. }
  97.  
  98. void togglePrint(void){
  99.     SET_UP_DRAW_1(0.3100, 0.4550, 0, 0, 255, 255);
  100.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.0600, 0.0590, "STRING", "Toggle Peds /Network Players -");
  101. }
  102. void toggleButton(void){
  103.     SET_UP_DRAW_1(0.3100, 0.4550, 0, 0, 255, 255);
  104.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.3850, 0.0590, "STRING", "~PAD_RSTICK_ALL~");
  105. }
  106.  
  107. void lockOnPrintFoot(void){
  108.     SET_UP_DRAW_1(0.3100, 0.4550, 0, 0, 255, 255);
  109.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.0600, 0.0890, "STRING", "Lock On Target (FOOT) -");
  110. }
  111.  
  112. void lockOnButtonFoot(void){
  113.     SET_UP_DRAW_1(0.3100, 0.4550, 0, 0, 255, 255);
  114.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.3050, 0.0890, "STRING", "~PAD_LT~");
  115. }
  116.  
  117. void lockOnPrintVeh(void){
  118.     SET_UP_DRAW_1(0.3100, 0.4550, 0, 0, 255, 255);
  119.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.0600, 0.1190, "STRING", "Lock On Target (VEHICLE) -");
  120. }
  121.  
  122. void lockOnButtonVeh(void){
  123.     SET_UP_DRAW_1(0.3100, 0.4550, 0, 0, 255, 255);
  124.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.3420, 0.1190, "STRING", "~PAD_X~");
  125. }
  126.  
  127. void lockOnPrintChop(void){
  128.     SET_UP_DRAW_1(0.3100, 0.4550, 0, 0, 255, 255);
  129.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.0600, 0.1490, "STRING", "Lock On Target (CHOPPER) -");
  130. }
  131.  
  132. void lockOnButtonChop(void){
  133.     SET_UP_DRAW_1(0.3150, 0.4550, 0, 0, 255, 255);
  134.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.3450, 0.1490, "STRING", "~PAD_A~");
  135. }
  136.  
  137. void shootPrint(void){
  138.     SET_UP_DRAW_1(0.3100, 0.4550, 0, 0, 255, 255);
  139.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.0600, 0.1790, "STRING", "Shoot HeatSeekers (FOOT/VEHICLE) -");
  140. }
  141.  
  142. void shootButton(void){
  143.     SET_UP_DRAW_1(0.3100, 0.4550, 0, 0, 255, 255);
  144.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.4300, 0.1790, "STRING", "~PAD_A~");
  145. }
  146.  
  147. void shootPrintHeli(void){
  148.     SET_UP_DRAW_1(0.3100, 0.4550, 0, 0, 255, 255);
  149.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.0600, 0.2090, "STRING", "Shoot HeatSeekers (CHOPPER) -");
  150. }
  151.  
  152. void shootButtonHeli(void){
  153.     SET_UP_DRAW_1(0.3100, 0.4550, 0, 0, 255, 255);
  154.     DISPLAY_TEXT_WITH_LITERAL_STRING(0.3830, 0.2090, "STRING", "~PAD_X~");
  155. }
  156.  
  157. void controls(void){
  158.     if(IS_BUTTON_PRESSED(0, BUTTON_RB) && IS_BUTTON_JUST_PRESSED(0, BUTTON_X)){
  159.         if(controlling){
  160.             controlling = false;
  161.         }
  162.         else{
  163.             controlling = true;
  164.         }
  165.     }
  166.     if(controlling){
  167.         rect();
  168.         control_show();
  169.         close_show();
  170.         togglePrint();
  171.         toggleButton();
  172.         lockOnPrintFoot();
  173.         lockOnButtonFoot();
  174.         lockOnPrintVeh();
  175.         lockOnButtonVeh();
  176.         lockOnPrintChop();
  177.         lockOnButtonChop();
  178.         shootPrint();
  179.         shootButton();
  180.         shootPrintHeli();
  181.         shootButtonHeli();
  182.     }
  183. }
  184.  
  185. void FOLLOW_COORDINATES(float *x, float *y, float *z, float scale){
  186.     float math = SQRT(POW(*x, 2) + POW(*y, 2) + POW(*z, 2));
  187.     *x = (*x / math) * scale;
  188.     *y = (*y / math) * scale;
  189.     *z = (*z / math) * scale;
  190. }
  191.  
  192. void POINT_OBJECT_AT_VEHICLE(Object pointer, Vehicle car){
  193.     float val;
  194.     GET_CAR_HEADING(car, &val);
  195.     SET_OBJECT_HEADING(pointer, val);
  196. }
  197.  
  198. void GET_CHARACTER_OFFSET(float distance, float *x, float *y, float *z){
  199.     Vector3 bonePosition;
  200.     GET_PED_BONE_POSITION(GetPlayerPed(), BONE_RIGHT_HAND, distance, 0.0f, distance * -0.04f, &bonePosition);
  201.     *x = bonePosition.x;
  202.     *y = bonePosition.y;
  203.     *z = bonePosition.z;
  204. }
  205.  
  206. void GET_CAR_CHAR_IS_AIMING_AT(Vehicle *victim, float maxdistance){
  207.     uint i, player_count = 0;
  208.     Vehicle ocar;
  209.     float  x, y, z, tx, ty, tz, mx, my, mz;
  210.     float distance, dist, distt, pitch = 0;
  211.     if(!networkPlayers){
  212.         if(IS_CHAR_IN_ANY_CAR(GetPlayerPed()) || IS_CHAR_IN_ANY_HELI(GetPlayerPed()) || IS_CHAR_IN_ANY_BOAT(GetPlayerPed())){
  213.             GET_CAR_CHAR_IS_USING(GetPlayerPed(), &myVeh);
  214.             GET_CAR_PITCH(myVeh, &pitch);
  215.         }
  216.         GET_CHAR_COORDINATES(GetPlayerPed(), &x, &y, &z);
  217.         for(distance = 0;distance < maxdistance; distance++){
  218.             if(IS_CHAR_ON_FOOT(GetPlayerPed())){
  219.                 GET_CHARACTER_OFFSET(distance, &tx, &ty, &tz);
  220.                 if(DOES_VEHICLE_EXIST(GET_CLOSEST_CAR(tx, ty, tz, 2, 0, 70))){
  221.                     *victim = GET_CLOSEST_CAR(tx, ty, tz, 2, 0, 70);
  222.                     break;
  223.                 }
  224.             }
  225.             else{
  226.                 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS(myVeh, 0, distance, z + pitch, &offx, &offy, &offz);
  227.                 if(DOES_VEHICLE_EXIST(GET_CLOSEST_CAR(offx, offy, offz, 11, 0, 70))){
  228.                     *victim = GET_CLOSEST_CAR(offx, offy, offz, 11, 0, 70);
  229.                     break;
  230.                 }
  231.             }
  232.         }
  233.         distance = 0;
  234.     }
  235.     else{
  236.         if(IS_NETWORK_SESSION()){
  237.             for(i = 0;i < 16;i++){
  238.                 if(!IS_NETWORK_PLAYER_ACTIVE(i)) continue;
  239.                 if(GET_PLAYER_ID() == i) continue;
  240.                 GET_PLAYER_CHAR(i, &players[player_count]);
  241.                 player_count++;
  242.             }
  243.             if(player_count > 0){
  244.                 for(i = 0;i <= player_count;i++){
  245.                     if(!DOES_CHAR_EXIST(players[i])) continue;
  246.                     if(IS_CHAR_ON_FOOT(players[i])) continue;
  247.                     if(IS_CHAR_IN_ANY_CAR(players[i]) || IS_CHAR_IN_ANY_HELI(players[i]) || IS_CHAR_IN_ANY_BOAT(players[i])){
  248.                         if(!DOES_VEHICLE_EXIST(*victim)){
  249.                             GET_CAR_CHAR_IS_USING(players[i], &ocar);
  250.                             if(DOES_VEHICLE_EXIST(ocar)){
  251.                                 GET_CHAR_HEADING(GetPlayerPed(),&h);
  252.                                 if(IS_CHAR_IN_ANY_CAR(GetPlayerPed()) || IS_CHAR_IN_ANY_HELI(GetPlayerPed()) || IS_CHAR_IN_ANY_BOAT(GetPlayerPed())){
  253.                                     GET_CAR_CHAR_IS_USING(GetPlayerPed(), &myVeh);
  254.                                     GET_CAR_PITCH(myVeh, &pitch);
  255.                                 }
  256.                                 for(distance = 0;distance < maxdistance; distance++){
  257.                                     if(IS_CHAR_ON_FOOT(GetPlayerPed())){
  258.                                         GET_CHARACTER_OFFSET(distance, &tx, &ty, &tz);
  259.                                         GET_CAR_COORDINATES(ocar, &mx, &my, &mz);
  260.                                         GET_DISTANCE_BETWEEN_COORDS_3D(tx, ty, tz, mx, my, mz, &dist);
  261.                                         if(dist <= 2){
  262.                                             *victim = ocar;
  263.                                             break;
  264.                                         }
  265.                                     }
  266.                                     else{
  267.                                         GET_OFFSET_FROM_CAR_IN_WORLD_COORDS(myVeh, 0, distance, z + pitch, &offx, &offy, &offz);
  268.                                         GET_CAR_COORDINATES(ocar, &mx, &my, &mz);
  269.                                         GET_DISTANCE_BETWEEN_COORDS_3D(offx, offy, offz, mx, my, mz, &dist);
  270.                                         if(dist <= 11){
  271.                                             *victim = ocar;
  272.                                             break;
  273.                                         }
  274.                                     }
  275.                                 }
  276.                                 distance = 0;
  277.                             }
  278.                             else{
  279.                                 print("~r~No one is in a vehicle!");
  280.                             }
  281.                         }
  282.                     }
  283.                 }
  284.             }
  285.             else{
  286.                 print("~r~No one is in your game!");
  287.             }
  288.         }
  289.         else{
  290.             print("~r~You're in single player DumbAss!");
  291.         }
  292.     }
  293. }
  294.  
  295. void FOLLOW(Vehicle newercar){
  296.     if(DOES_VEHICLE_EXIST(newercar)){
  297.         REQUEST_MODEL(0x48FA2738);
  298.         while(!HAS_MODEL_LOADED(0x48FA2738)){
  299.             WAIT(0);
  300.         }
  301.         GET_CHAR_HEADING(GetPlayerPed(), &h);
  302.         GET_CHAR_COORDINATES(GetPlayerPed(), &gx, &gy, &gz);
  303.         if(IS_CHAR_IN_ANY_HELI(GetPlayerPed())){
  304.             CREATE_OBJECT_NO_OFFSET(0x48FA2738, (gx + (1 * SIN((-1 * h)))), (gy + (1 * COS((-1 * h)))), gz - 3, &rocket, 1);
  305.         }
  306.         else if(IS_CHAR_IN_ANY_CAR(GetPlayerPed()) || IS_CHAR_IN_ANY_BOAT(GetPlayerPed())){
  307.             CREATE_OBJECT_NO_OFFSET(0x48FA2738, (gx + (1 * SIN((-1 * h)))), (gy + (1 * COS((-1 * h)))), gz + 3, &rocket, 1);
  308.         }
  309.         else{
  310.             CREATE_OBJECT_NO_OFFSET(0x48FA2738, (gx + (1 * SIN((-1 * h)))), (gy + (1 * COS((-1 * h)))), gz + 1, &rocket, 1);
  311.         }
  312.         SET_OBJECT_VISIBLE(rocket, true);
  313.         MARK_MODEL_AS_NO_LONGER_NEEDED(0x48FA2738);
  314.         if(DOES_OBJECT_EXIST(rocket)){
  315.             GET_NETWORK_ID_FROM_OBJECT(rocket, &rocketid);
  316.             SET_NETWORK_ID_CAN_MIGRATE(rocketid, false);
  317.             SET_OBJECT_INVINCIBLE(rocket, true);
  318.             SET_OBJECT_DYNAMIC(rocket, true);
  319.             SET_OBJECT_COLLISION(rocket, true);
  320.             SET_OBJECT_RECORDS_COLLISIONS(rocket, true);
  321.             SET_OBJECT_AS_STEALABLE(rocket, false);
  322.             START_PTFX_ON_OBJ("weap_rocket_player", rocket, 0.00000000, -0.04000000, 0.00000000, 0.00000000, 0.00000000, 2.00000000, 1);
  323.             //PLAY_SOUND_FROM_OBJECT(-1, "ROCKET_LAUNCH" ,rocket);
  324.             PLAY_SOUND_FROM_OBJECT(-1, "WEAPON_ROCKET" ,rocket); //Test
  325.             STOP_SOUND(-1);
  326.             RELEASE_SOUND_ID(-1);
  327.             while(DOES_OBJECT_EXIST(rocket) && DOES_VEHICLE_EXIST(newercar)){
  328.                 if(!DOES_VEHICLE_EXIST(newercar)){
  329.                     FREEZE_OBJECT_POSITION(rocket, true);
  330.                     GET_OBJECT_COORDINATES(rocket, &jx, &jy, &jz);
  331.                     EXPLODE(jx, jy, jz);
  332.                     DELETE_OBJECT(&rocket);
  333.                     MARK_OBJECT_AS_NO_LONGER_NEEDED(&rocket);
  334.                     print("~r~Target has Disappeared!");
  335.                     break;
  336.                 }
  337.                 if((HAS_OBJECT_COLLIDED_WITH_ANYTHING(rocket)) || (distttt >= 450)){
  338.                     FREEZE_OBJECT_POSITION(rocket, true);
  339.                     GET_OBJECT_COORDINATES(rocket, &jx, &jy, &jz);
  340.                     EXPLODE(jx, jy, jz);
  341.                     DELETE_OBJECT(&rocket);
  342.                     MARK_OBJECT_AS_NO_LONGER_NEEDED(&rocket);
  343.                     break;
  344.                 }
  345.                 WAIT(0);
  346.                 GET_CAR_COORDINATES(newercar, &cx, &cy, &cz);
  347.                 GET_OBJECT_COORDINATES(rocket, &hx, &hy, &hz);
  348.                 fx = cx - hx;
  349.                 fy = cy - hy;
  350.                 fz = cz - hz;
  351.                 FOLLOW_COORDINATES(&fx, &fy, &fz, 100);
  352.                 POINT_OBJECT_AT_VEHICLE(rocket, newercar);
  353.                 GET_DISTANCE_BETWEEN_COORDS_2D(cx, cy, hx, hy, &disttt);
  354.                 if(disttt < 20 && disttt > 3){
  355.                     APPLY_FORCE_TO_OBJECT(rocket, 1, fx, fy, 5, 0, 0, 0, 1, 0, 1, 1);
  356.                 }
  357.                 else{
  358.                     APPLY_FORCE_TO_OBJECT(rocket, 1, fx, fy, fz, 0, 0, 0, 1, 0, 1, 1);
  359.                 }
  360.                 GET_CHAR_COORDINATES(GetPlayerPed(), &gx, &gy, &gz);
  361.                 GET_DISTANCE_BETWEEN_COORDS_2D(gx, gy, hx, hy, &distttt);
  362.             }
  363.         }
  364.     }
  365. }
  366.  
  367. void SHOOT(Vehicle car){
  368.     if(DOES_VEHICLE_EXIST(car)){
  369.         float ix, iy, iz;
  370.         GET_CAR_COORDINATES(car, &ix, &iy, &iz);
  371.         DRAW_COLOURED_CYLINDER(ix, iy, iz + 1, 1, 1, 0, 255, 0, 255);
  372.         DRAW_CHECKPOINT(ix, iy, iz, 1.0f, 0, 255, 0);
  373.         DRAW_CHECKPOINT(ix - 3, iy, iz, 1.0f, 0, 255, 0);
  374.         DRAW_CHECKPOINT(ix - 1, iy, iz, 1.0f, 0, 255, 0);
  375.         DRAW_CHECKPOINT(ix + 1, iy, iz, 1.0f, 0, 255, 0);
  376.         DRAW_CHECKPOINT(ix + 3, iy, iz, 1.0f, 0, 255, 0);
  377.         DRAW_CHECKPOINT(ix, iy - 3, iz, 1.0f, 0, 255, 0);
  378.         DRAW_CHECKPOINT(ix, iy - 1, iz, 1.0f, 0, 255, 0);
  379.         DRAW_CHECKPOINT(ix, iy + 1, iz, 1.0f, 0, 255, 0);
  380.         DRAW_CHECKPOINT(ix, iy + 3, iz, 1.0f, 0, 255, 0);
  381.         DRAW_CHECKPOINT(ix, iy, iz - 3, 1.0f, 0, 255, 0);
  382.         DRAW_CHECKPOINT(ix, iy, iz - 1, 1.0f, 0, 255, 0);
  383.         DRAW_CHECKPOINT(ix, iy, iz + 1, 1.0f, 0, 255, 0);
  384.         DRAW_CHECKPOINT(ix, iy, iz + 3, 1.0f, 0, 255, 0);
  385.         PLAY_SOUND_FRONTEND(-1, "PHONE_PRESS_KEY");
  386.         if(IS_BUTTON_JUST_PRESSED(0, shooter)){
  387.             FOLLOW(car);
  388.             STOP_SOUND(-1);
  389.         }
  390.     }
  391. }
  392.  
  393. void findVehicle(void){
  394.     if(IS_BUTTON_PRESSED(0, lockOn)){
  395.         Vehicle catch;
  396.         GET_CAR_CHAR_IS_AIMING_AT(&catch, 250);
  397.         if((DOES_VEHICLE_EXIST(catch)) && (!IS_CAR_DEAD(catch))){
  398.             found = true;
  399.         }
  400.         if(found){
  401.             SHOOT(catch);
  402.             found = false;
  403.         }
  404.     }
  405. }
  406.  
  407. void toggling(void){
  408.     if(IS_BUTTON_JUST_PRESSED(0, STICK_RIGHT)){
  409.         if(!networkPlayers){
  410.             networkPlayers = true;
  411.             print("~r~Network Players ~g~Enabled~r~!");
  412.         }
  413.         else{
  414.             networkPlayers = false;
  415.             print("~r~Pedestrian Vehicles ~g~Enabled~r~!");
  416.         }
  417.     }
  418. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement