CANDY-KUSH-GOD

xxHASTERxx Heat Seeker

Aug 2nd, 2014
348
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 15.70 KB | None | 0 0
  1. //xxHASTERxx Heat Seeker
  2.  
  3. #include <natives.h>
  4. #include <common.h>
  5. #include <consts.h>
  6. #include <types.h>
  7. #include <strings.h>
  8.  
  9. #define pc
  10.  
  11. #define BUTTON_SELECT 0xD
  12. #define BUTTON_START 0xC
  13. #define BUTTON_X 0xE
  14. #define BUTTON_Y 0xF
  15. #define BUTTON_A 0x10
  16. #define BUTTON_B 0x11
  17. #define DPAD_UP 0x8
  18. #define DPAD_DOWN 0x9
  19. #define DPAD_LEFT 0xA
  20. #define DPAD_RIGHT 0xB
  21. #define BUTTON_L 0x5
  22. #define BUTTON_R 0x7
  23. #define BUTTON_LB 0x4
  24. #define BUTTON_RB 0x6
  25. #define STICK_LEFT 0x12
  26. #define STICK_RIGHT 0x13
  27.  
  28. float ax, ay, az;
  29. float dx, dy, dz, ex, ey, ez;
  30. float fx, fy, fz, jx, jy, jz;
  31. float gx, gy, gz, hx, hy, hz;
  32. float dist, pitch, heading;
  33.  
  34. int i, rocketid, objid;
  35. int shot = 0;
  36.  
  37. Object rocket, car_obj;
  38. Vehicle ycar, newycar;
  39. uint weapon;
  40. Ped* players[31];
  41.  
  42. bool on_off = false;
  43. bool heli = false;
  44.  
  45. void EXPLODE(float X,float Y,float Z){
  46.     ADD_EXPLOSION(X, Y, Z, EXPLOSION_PETROL_PUMP, 0.8f, 1, 0, 0.1f);
  47. }
  48.  
  49. void GET_CAR_CHAR_IS_LOOKING_AT(Vehicle *Car, float distance, float *x, float *y, float *z){
  50.     Vector3 p;
  51.     Vehicle ocar;
  52.     float bx, by, bz, bbx, bby, bbz, cx, cy, cz, px, py, pz;
  53.     int player_count = 0;
  54.     GET_PED_BONE_POSITION(GetPlayerPed(), BONE_RIGHT_HAND, distance, distance * 0.042, distance * -0.113, &p);
  55.     *x = p.x;
  56.     *y = p.y;
  57.     *z = p.z;
  58.     if(IS_NETWORK_SESSION()){
  59.         if(!DOES_VEHICLE_EXIST(*Car)){
  60.             for(i = 0;i < 31;i++){
  61.                 if(!IS_NETWORK_PLAYER_ACTIVE(i)) continue;
  62.                 if(GET_PLAYER_ID() == i) continue;
  63.                 GET_PLAYER_CHAR(i, &players[player_count]);
  64.                 player_count++;
  65.             }
  66.             if(player_count > 0){
  67.                 for(i = 0;i <= player_count;i++){
  68.                     if(!DOES_CHAR_EXIST(players[i])) continue;
  69.                     if(IS_CHAR_ON_FOOT(players[i])) continue;
  70.                     if(IS_CHAR_IN_ANY_CAR(players[i]) || IS_CHAR_IN_ANY_HELI(players[i]) || IS_CHAR_IN_ANY_BOAT(players[i])){
  71.                         GET_CAR_CHAR_IS_USING(players[i], &ocar);
  72.                         if(DOES_VEHICLE_EXIST(ocar)){
  73.                             GET_CAR_COORDINATES(ocar, &cx, &cy, &cz);
  74.                             GET_DISTANCE_BETWEEN_COORDS_3D(*x, *y, *z, cx, cy, cz, &dist);
  75.                             if(dist < distance){
  76.                                 *Car = ocar;
  77.                             }
  78.                         }
  79.                         else{
  80.                             print("~r~Enemy is no longer in a vehicle!");
  81.                         }
  82.                     }
  83.                     else{
  84.                         print("~r~No one is in a vehicle in the game!");
  85.                     }
  86.                 }
  87.             }
  88.         }
  89.     }
  90. }
  91.  
  92. void GET_CLOSEST_CAR_IN_HEADING_RANGE(Vehicle *Car, float maxdistance){
  93.     Vehicle ocar;
  94.     float bx, by, bz, bbx, bby, bbz, cx, cy, cz;
  95.     int player_count = 0;
  96.     if(IS_CHAR_IN_ANY_HELI(GetPlayerPed())){
  97.         if(IS_NETWORK_SESSION()){
  98.             if(!DOES_VEHICLE_EXIST(*Car)){
  99.                 GET_CAR_CHAR_IS_USING(GetPlayerPed(), &ycar);
  100.                 GET_CAR_PITCH(ycar, &pitch);
  101.                 GET_CAR_COORDINATES(ycar, &bbx, &bby, &bbz);
  102.                 GET_OFFSET_FROM_CAR_IN_WORLD_COORDS(ycar, 0, maxdistance, bbz + pitch, &bx, &by, &bz);
  103.                 for(i = 0;i < 31;i++){
  104.                     if(!IS_NETWORK_PLAYER_ACTIVE(i)) continue;
  105.                     if(GET_PLAYER_ID() == i) continue;
  106.                     GET_PLAYER_CHAR(i, &players[player_count]);
  107.                     player_count++;
  108.                 }
  109.                 if(player_count > 0){
  110.                     for(i = 0;i <= player_count;i++){
  111.                         if(!DOES_CHAR_EXIST(players[i])) continue;
  112.                         if(IS_CHAR_ON_FOOT(players[i])) continue;
  113.                         if(IS_CHAR_IN_ANY_CAR(players[i]) || IS_CHAR_IN_ANY_HELI(players[i]) || IS_CHAR_IN_ANY_BOAT(players[i])){
  114.                             GET_CAR_CHAR_IS_USING(players[i], &ocar);
  115.                             if(DOES_VEHICLE_EXIST(ocar)){
  116.                                 if(ocar != ycar){
  117.                                     GET_OFFSET_FROM_CAR_IN_WORLD_COORDS(ocar, 0, 0, 0, &cx, &cy, &cz);
  118.                                     GET_DISTANCE_BETWEEN_COORDS_3D(bx, by, bz, cx, cy, cz, &dist);
  119.                                     if(dist < maxdistance){
  120.                                         *Car = ocar;
  121.                                     }
  122.                                 }
  123.                             }
  124.                             else{
  125.                                 print("~r~Enemy is no longer in a vehicle!");
  126.                             }
  127.                         }
  128.                         else{
  129.                             print("~r~No one is in a vehicle in the game!");
  130.                         }
  131.                     }
  132.                 }
  133.                 else{
  134.                     print("~r~No one is in your game!");
  135.                 }
  136.             }
  137.         }
  138.     }
  139. }
  140.  
  141. void VECTOR(float *x, float *y, float *z, float scale){
  142.     float exline = *y - (*x - 0.001);
  143.     float exline2 = *x - 0.001;
  144.     float math = SQRT((POW(*z, 2)) + (POW(exline, 2)) + (POW(exline2, 2)));
  145.     *x = (*x / math) * scale;
  146.     *y = (*y / math) * scale;
  147.     *z = (*z / math) * scale;
  148. }
  149.  
  150. void POINT_OBJECT_AT_COORDINATES(Object dummy, float x, float y, float z){
  151.     int game_cam;
  152.     float ox, oy, oz;
  153.     float gcrotX, gcrotY, gcrotZ;
  154.     float ROTx, ROTz;
  155.     CREATE_CAM(14, &game_cam);
  156.     SET_CAM_ACTIVE(game_cam, 1);
  157.     SET_CAM_PROPAGATE(game_cam, 1);
  158.     ACTIVATE_SCRIPTED_CAMS(1, 1);
  159.     GET_OBJECT_COORDINATES(dummy, &ox, &oy, &oz);
  160.     SET_CAM_POS(game_cam, ox, oy, oz);
  161.     POINT_CAM_AT_COORD(game_cam, x, y, z);
  162.     GET_CAM_ROT(game_cam, &gcrotX, &gcrotY, &gcrotZ);
  163.     if(gcrotX < 0.0){
  164.         ROTx = gcrotX + 360.0;
  165.     }
  166.     else{
  167.         ROTx = gcrotX;
  168.     }
  169.     if (gcrotZ < 0.0){
  170.         ROTz = gcrotZ + 360.0;
  171.     }
  172.     else{
  173.         ROTz = gcrotZ;
  174.     }
  175.     SET_OBJECT_ROTATION(dummy, ROTx, 0.0, ROTz);
  176.     SET_CAM_ACTIVE(game_cam, 0);
  177.     SET_CAM_PROPAGATE(game_cam, 0);
  178.     ACTIVATE_SCRIPTED_CAMS(0, 0);
  179.     DESTROY_CAM(game_cam);
  180. }
  181.  
  182. void HEAT_SEEK(){
  183.     if(shot == 1){
  184.         if(DOES_OBJECT_EXIST(rocket)){
  185.             if(DOES_OBJECT_EXIST(car_obj)){
  186.                 GET_OBJECT_COORDINATES(car_obj, &gx, &gy, &gz);
  187.                 GET_OBJECT_COORDINATES(rocket, &hx, &hy, &hz);
  188.                 fx = gx - hx;
  189.                 fy = gy - hy;
  190.                 fz = gz - hz;
  191.                 VECTOR(&fx, &fy, &fz, 100);
  192.                 WAIT(5);
  193.                 POINT_OBJECT_AT_COORDINATES(rocket, gx, gy, gz);
  194.                 APPLY_FORCE_TO_OBJECT(rocket, 1, fx, fy, fz, 0, 0, 0, 1, 0, 1, 1);
  195.                 if(HAS_OBJECT_COLLIDED_WITH_ANYTHING(rocket)){
  196.                     FREEZE_OBJECT_POSITION(rocket, 1);
  197.                     STOP_PTFX("weap_rocket_player");
  198.                     GET_OBJECT_COORDINATES(rocket, &jx, &jy, &jz);
  199.                     EXPLODE(jx, jy, jz);
  200.                     DELETE_OBJECT(&rocket);
  201.                     MARK_OBJECT_AS_NO_LONGER_NEEDED(&rocket);
  202.                     if(DOES_OBJECT_EXIST(car_obj)){
  203.                         DELETE_OBJECT(&car_obj);
  204.                         MARK_OBJECT_AS_NO_LONGER_NEEDED(&car_obj);
  205.                     }
  206.                     shot = 0;
  207.                 }
  208.                 if(IS_OBJECT_IN_WATER(rocket)){
  209.                     FREEZE_OBJECT_POSITION(rocket, 1);
  210.                     STOP_PTFX("weap_rocket_player");
  211.                     GET_OBJECT_COORDINATES(rocket, &jx, &jy, &jz);
  212.                     EXPLODE(jx, jy, jz);
  213.                     DELETE_OBJECT(&rocket);
  214.                     MARK_OBJECT_AS_NO_LONGER_NEEDED(&rocket);
  215.                     if(DOES_OBJECT_EXIST(car_obj)){
  216.                         DELETE_OBJECT(&car_obj);
  217.                         MARK_OBJECT_AS_NO_LONGER_NEEDED(&car_obj);
  218.                     }
  219.                     print("~r~Heat seeker has been shot into the water!");
  220.                     shot = 0;
  221.                 }
  222.             }
  223.             else{
  224.                 if(DOES_OBJECT_EXIST(rocket)){
  225.                     FREEZE_OBJECT_POSITION(rocket, 1);
  226.                     STOP_PTFX("weap_rocket_player");
  227.                     GET_OBJECT_COORDINATES(rocket, &jx, &jy, &jz);
  228.                     EXPLODE(jx, jy, jz);
  229.                     DELETE_OBJECT(&rocket);
  230.                     MARK_OBJECT_AS_NO_LONGER_NEEDED(&rocket);
  231.                 }
  232.                 print("~r~Target has been lost!");
  233.                 shot = 0;
  234.             }
  235.         }
  236.         else{
  237.             if(DOES_OBJECT_EXIST(car_obj)){
  238.                 DELETE_OBJECT(&car_obj);
  239.                 MARK_OBJECT_AS_NO_LONGER_NEEDED(&car_obj);
  240.                 print("~r~Missile is MIA!");
  241.                 shot = 0;
  242.             }
  243.             else{
  244.                 print("~r~Missile is MIA!");
  245.                 shot = 0;
  246.             }
  247.         }
  248.     }
  249. }
  250.  
  251. void START_FOLLOW(Vehicle newycar){
  252.     REQUEST_MODEL(0x48FA2738);
  253.     while(!HAS_MODEL_LOADED(0x48FA2738)){
  254.         WAIT(0);
  255.     }
  256.     GET_CAR_CHAR_IS_USING(GetPlayerPed(), &ycar);
  257.     GET_CAR_COORDINATES(ycar, &dx, &dy, &dz);
  258.     CREATE_OBJECT(0x48FA2738, dx, dy + 1, dz - 2, &rocket, 1);
  259.     SET_OBJECT_VISIBLE(rocket, 1);
  260.     MARK_MODEL_AS_NO_LONGER_NEEDED(0x48FA2738);
  261.     if(DOES_OBJECT_EXIST(rocket) && DOES_VEHICLE_EXIST(newycar)){
  262.         GET_NETWORK_ID_FROM_OBJECT(rocket, &rocketid);
  263.         SET_NETWORK_ID_CAN_MIGRATE(rocketid, 1);
  264.         SET_OBJECT_AS_STEALABLE(rocket, 1);
  265.         SET_OBJECT_INVINCIBLE(rocket, 1);
  266.         SET_OBJECT_DYNAMIC(rocket, 1);
  267.         SET_OBJECT_COLLISION(rocket, 1);
  268.         SET_OBJECT_RECORDS_COLLISIONS(rocket, 1);
  269.         SET_OBJECT_ROTATION(rocket, -40, 0, 0);
  270.         APPLY_FORCE_TO_OBJECT(rocket, 1, 0, 5, -1.7, 0, 0, 0, 1, 0, 1, 1);
  271.         PLAY_SOUND_FROM_OBJECT(-1, "ROCKET_LAUNCH" ,rocket);
  272.         STOP_SOUND(-1);
  273.         RELEASE_SOUND_ID(-1);
  274.         START_PTFX_ON_OBJ("weap_rocket_player", rocket, 0, 0, 0, 0, 3, 3, 1);
  275.         WAIT(10);
  276.         GET_CAR_COORDINATES(newycar, &ex, &ey, &ez);
  277.         GET_OBJECT_COORDINATES(rocket, &fx, &fy, &fz);
  278.         gx = ex - fx;
  279.         gy = ey - fy;
  280.         gz = ez - fz;
  281.         VECTOR(&gx, &gy, &fz, 100);
  282.         WAIT(100);
  283.         APPLY_FORCE_TO_OBJECT(rocket, 1, gx, gy, gz, 0, 0, 0, 1, 0, 1, 1);
  284.         REQUEST_MODEL(0xFCB32869);
  285.         while(!HAS_MODEL_LOADED(0xFCB32869)){
  286.             WAIT(0);
  287.         }
  288.         GET_CAR_COORDINATES(newycar, &gx, &gy, &gz);
  289.         CREATE_OBJECT(0xFCB32869, gx, gy, gz, &car_obj, 1);
  290.         SET_OBJECT_VISIBLE(car_obj, 0);
  291.         MARK_MODEL_AS_NO_LONGER_NEEDED(0xFCB32869);
  292.         ATTACH_OBJECT_TO_CAR(car_obj, newycar, 0, 0, 0.5, 0, 0, 0, 0);
  293.         FREEZE_OBJECT_POSITION(car_obj, 1);
  294.         SET_OBJECT_INVINCIBLE(car_obj, 1);
  295.         SET_OBJECT_DYNAMIC(car_obj, 1);
  296.         SET_OBJECT_COLLISION(car_obj, 0);
  297.         SET_OBJECT_RECORDS_COLLISIONS(car_obj, 1);
  298.         SET_OBJECT_AS_STEALABLE(car_obj, 0);
  299.         GET_NETWORK_ID_FROM_OBJECT(car_obj, &objid);
  300.         SET_NETWORK_ID_CAN_MIGRATE(car_obj, 1);
  301.         if(DOES_OBJECT_EXIST(car_obj) && DOES_OBJECT_EXIST(rocket) && DOES_VEHICLE_EXIST(newycar)){
  302.             shot = 1;
  303.         }
  304.     }
  305. }
  306.  
  307. void START_FOLLOW_PISTOL(Vehicle newycar){
  308.     REQUEST_MODEL(0x48FA2738);
  309.     while(!HAS_MODEL_LOADED(0x48FA2738)){
  310.         WAIT(0);
  311.     }
  312.     GET_CHAR_COORDINATES(GetPlayerPed(), &dx, &dy, &dz);
  313.     CREATE_OBJECT(0x48FA2738, dx, dy + 1, dz + 1, &rocket, 1);
  314.     SET_OBJECT_VISIBLE(rocket, 1);
  315.     MARK_MODEL_AS_NO_LONGER_NEEDED(0x48FA2738);
  316.     WAIT(5);
  317.     if(DOES_OBJECT_EXIST(rocket) && DOES_VEHICLE_EXIST(newycar)){
  318.         GET_NETWORK_ID_FROM_OBJECT(rocket, &rocketid);
  319.         SET_NETWORK_ID_CAN_MIGRATE(rocketid, 1);
  320.         SET_OBJECT_AS_STEALABLE(rocket, 1);
  321.         SET_OBJECT_INVINCIBLE(rocket, 1);
  322.         SET_OBJECT_DYNAMIC(rocket, 1);
  323.         SET_OBJECT_COLLISION(rocket, 1);
  324.         SET_OBJECT_RECORDS_COLLISIONS(rocket, 1);
  325.         SET_OBJECT_ROTATION(rocket, -40, 0, 0);
  326.         APPLY_FORCE_TO_OBJECT(rocket, 1, 0, 5, 0, 0, 0, 0, 1, 0, 1, 1);
  327.         PLAY_SOUND_FROM_OBJECT(-1, "ROCKET_LAUNCH" ,rocket);
  328.         STOP_SOUND(-1);
  329.         RELEASE_SOUND_ID(-1);
  330.         START_PTFX_ON_OBJ("weap_rocket_player", rocket, 0, 0, 0, 0, 3, 3, 1);
  331.         WAIT(10);
  332.         GET_CAR_COORDINATES(newycar, &ex, &ey, &ez);
  333.         GET_OBJECT_COORDINATES(rocket, &fx, &fy, &fz);
  334.         gx = ex - fx;
  335.         gy = ey - fy;
  336.         gz = ez - fz;
  337.         VECTOR(&gx, &gy, &fz, 100);
  338.         WAIT(100);
  339.         APPLY_FORCE_TO_OBJECT(rocket, 1, gx, gy, gz, 0, 0, 0, 1, 0, 1, 1);
  340.         REQUEST_MODEL(0xFCB32869);
  341.         while(!HAS_MODEL_LOADED(0xFCB32869)){
  342.             WAIT(0);
  343.         }
  344.         GET_CAR_COORDINATES(newycar, &gx, &gy, &gz);
  345.         CREATE_OBJECT(0xFCB32869, gx, gy, gz, &car_obj, 1);
  346.         SET_OBJECT_VISIBLE(car_obj, 0);
  347.         MARK_MODEL_AS_NO_LONGER_NEEDED(0xFCB32869);
  348.         ATTACH_OBJECT_TO_CAR(car_obj, newycar, 0, 0, 0.5, 0, 0, 0, 0);
  349.         FREEZE_OBJECT_POSITION(car_obj, 1);
  350.         SET_OBJECT_INVINCIBLE(car_obj, 1);
  351.         SET_OBJECT_DYNAMIC(car_obj, 1);
  352.         SET_OBJECT_COLLISION(car_obj, 0);
  353.         SET_OBJECT_RECORDS_COLLISIONS(car_obj, 1);
  354.         SET_OBJECT_AS_STEALABLE(car_obj, 0);
  355.         GET_NETWORK_ID_FROM_OBJECT(car_obj, &objid);
  356.         SET_NETWORK_ID_CAN_MIGRATE(car_obj, 1);
  357.         if(DOES_OBJECT_EXIST(car_obj) && DOES_OBJECT_EXIST(rocket) && DOES_VEHICLE_EXIST(newycar)){
  358.             shot = 1;
  359.         }
  360.     }
  361. }
  362.  
  363. void SHOOT(Vehicle foundcar){
  364.     if(DOES_VEHICLE_EXIST(foundcar)){
  365.         GET_CAR_COORDINATES(foundcar, &ax, &ay, &az);
  366.         DRAW_COLOURED_CYLINDER(ax, ay, az + 1, 1, 1, 0, 255, 0, 255);
  367.         DRAW_CHECKPOINT(ax, ay, az, 1.0f, 0, 255, 0);
  368.         DRAW_CHECKPOINT(ax - 3, ay, az, 1.0f, 0, 255, 0);
  369.         DRAW_CHECKPOINT(ax - 1, ay, az, 1.0f, 0, 255, 0);
  370.         DRAW_CHECKPOINT(ax + 1, ay, az, 1.0f, 0, 255, 0);
  371.         DRAW_CHECKPOINT(ax + 3, ay, az, 1.0f, 0, 255, 0);
  372.         DRAW_CHECKPOINT(ax, ay - 3, az, 1.0f, 0, 255, 0);
  373.         DRAW_CHECKPOINT(ax, ay - 1, az, 1.0f, 0, 255, 0);
  374.         DRAW_CHECKPOINT(ax, ay + 1, az, 1.0f, 0, 255, 0);
  375.         DRAW_CHECKPOINT(ax, ay + 3, az, 1.0f, 0, 255, 0);
  376.         DRAW_CHECKPOINT(ax, ay, az - 3, 1.0f, 0, 255, 0);
  377.         DRAW_CHECKPOINT(ax, ay, az - 1, 1.0f, 0, 255, 0);
  378.         DRAW_CHECKPOINT(ax, ay, az + 1, 1.0f, 0, 255, 0);
  379.         DRAW_CHECKPOINT(ax, ay, az + 3, 1.0f, 0, 255, 0);
  380.         PLAY_SOUND_FRONTEND(-1, "PHONE_PRESS_KEY");
  381.         if(IS_BUTTON_JUST_PRESSED(0, BUTTON_A)){
  382.             if(DOES_VEHICLE_EXIST(foundcar) && !DOES_OBJECT_EXIST(rocket)){
  383.                 START_FOLLOW(foundcar);
  384.                 STOP_SOUND(-1);
  385.             }
  386.         }
  387.     }
  388. }
  389.  
  390. void SHOOT_PISTOL(Vehicle foundcar){
  391.     if(DOES_VEHICLE_EXIST(foundcar)){
  392.         GET_CAR_COORDINATES(foundcar, &ax, &ay, &az);
  393.         DRAW_COLOURED_CYLINDER(ax, ay, az + 1, 1, 1, 0, 255, 0, 255);
  394.         DRAW_CHECKPOINT(ax, ay, az, 1.0f, 0, 255, 0);
  395.         DRAW_CHECKPOINT(ax - 3, ay, az, 1.0f, 0, 255, 0);
  396.         DRAW_CHECKPOINT(ax - 1, ay, az, 1.0f, 0, 255, 0);
  397.         DRAW_CHECKPOINT(ax + 1, ay, az, 1.0f, 0, 255, 0);
  398.         DRAW_CHECKPOINT(ax + 3, ay, az, 1.0f, 0, 255, 0);
  399.         DRAW_CHECKPOINT(ax, ay - 3, az, 1.0f, 0, 255, 0);
  400.         DRAW_CHECKPOINT(ax, ay - 1, az, 1.0f, 0, 255, 0);
  401.         DRAW_CHECKPOINT(ax, ay + 1, az, 1.0f, 0, 255, 0);
  402.         DRAW_CHECKPOINT(ax, ay + 3, az, 1.0f, 0, 255, 0);
  403.         DRAW_CHECKPOINT(ax, ay, az - 3, 1.0f, 0, 255, 0);
  404.         DRAW_CHECKPOINT(ax, ay, az - 1, 1.0f, 0, 255, 0);
  405.         DRAW_CHECKPOINT(ax, ay, az + 1, 1.0f, 0, 255, 0);
  406.         DRAW_CHECKPOINT(ax, ay, az + 3, 1.0f, 0, 255, 0);
  407.         PLAY_SOUND_FRONTEND(-1, "PHONE_PRESS_KEY");
  408.         if(IS_BUTTON_JUST_PRESSED(0, BUTTON_R)){
  409.             if(DOES_VEHICLE_EXIST(foundcar) && !DOES_OBJECT_EXIST(rocket)){
  410.                 START_FOLLOW_PISTOL(foundcar);
  411.                 STOP_SOUND(-1);
  412.             }
  413.         }
  414.     }
  415. }
  416.  
  417. void GRAB_CAR(void){
  418.     Vehicle trying;
  419.     bool found = false;
  420.     float search;
  421.     for(search = 1;search <= 9999999;search++){
  422.         found = false;
  423.         if(!DOES_VEHICLE_EXIST(trying)){
  424.             GET_CLOSEST_CAR_IN_HEADING_RANGE(&trying, 9999999);
  425.             if(DOES_VEHICLE_EXIST(trying)){
  426.                 if(!IS_CAR_DEAD(trying)){
  427.                     found = true;
  428.                     break;
  429.                 }
  430.             }
  431.         }
  432.     }
  433.     if(found){
  434.         SHOOT(trying);
  435.     }
  436. }
  437.  
  438. void SEARCH(void){
  439.     Vehicle trying;
  440.     bool found = false;
  441.     float searching, hx, hy, hz;
  442.     for(searching = 1;searching<9999999;searching++){ //100
  443.         found = false;
  444.         if(!DOES_VEHICLE_EXIST(trying)){
  445.             GET_CAR_CHAR_IS_LOOKING_AT(&trying, searching, &hx, &hy, &hz);
  446.             if(DOES_VEHICLE_EXIST(trying)){
  447.                 if(!IS_CAR_DEAD(trying)){
  448.                     found = true;
  449.                     break;
  450.                 }
  451.             }
  452.         }
  453.     }
  454.     if(found){
  455.         SHOOT_PISTOL(trying);
  456.     }
  457. }
  458.  
  459. void finding(void){
  460.     if(heli){
  461.         if(IS_CHAR_IN_ANY_HELI(GetPlayerPed())){
  462.             if(IS_BUTTON_PRESSED(0, DPAD_DOWN)){
  463.                 GRAB_CAR();
  464.             }
  465.         }
  466.     }
  467.     if(!heli){
  468.         if(!HAS_CHAR_GOT_WEAPON(GetPlayerPed(), WEAPON_PISTOL)){
  469.             GIVE_WEAPON_TO_CHAR(GetPlayerPed(), WEAPON_PISTOL, AMMO_MAX, 0);
  470.         }
  471.         GET_CURRENT_CHAR_WEAPON(GetPlayerPed(), &weapon);
  472.         if(weapon != WEAPON_PISTOL){
  473.             DISABLE_PLAYER_LOCKON(GET_PLAYER_ID(), false);
  474.             return;
  475.         }
  476.         if(IS_CHAR_IN_ANY_HELI(GetPlayerPed()) || IS_CHAR_IN_ANY_CAR(GetPlayerPed()) || IS_CHAR_IN_ANY_BOAT(GetPlayerPed())){
  477.             print("~r~You're not on foot!");
  478.             heli = true;
  479.             WAIT(2700);
  480.             print("~w~Helicopter Heat Seekers: (~g~ON~w~)");
  481.         }
  482.         DISABLE_PLAYER_LOCKON(GET_PLAYER_ID(), true);
  483.         if(IS_BUTTON_PRESSED(0, BUTTON_L)){
  484.             SEARCH();
  485.         }
  486.     }
  487. }
  488.  
  489. void toggler(void){
  490.     if(IS_BUTTON_PRESSED(0, BUTTON_RB) && IS_BUTTON_JUST_PRESSED(0, BUTTON_X)){
  491.         if(on_off){
  492.             print("~w~Heat Seekers: (~r~OFF~w~)");
  493.             on_off = false;
  494.         }
  495.         else{
  496.             print("~w~Heat Seekers: (~g~ON~w~)");
  497.             on_off = true;
  498.         }
  499.     }
  500.     if(on_off){
  501.         if(IS_BUTTON_JUST_PRESSED(0, STICK_RIGHT)){
  502.             if(heli){
  503.                 print("~w~Pistol Heat Seekers: (~g~ON~w~)");
  504.                 WAIT(3000);
  505.                 print("~COL_NET_5~Aim at a car and shoot!");
  506.                 heli = false;
  507.             }
  508.             else{
  509.                 print("~w~Helicopter Heat Seekers: (~g~ON~w~)");
  510.                 WAIT(3000);
  511.                 print("~COL_NET_4~Hold ~PAD_DPAD_DOWN~ to grab vehicles and press ~PAD_A~ to fire!");
  512.                 heli = true;
  513.             }
  514.         }
  515.     }
  516. }
  517.  
  518. void main(void){
  519.     THIS_SCRIPT_IS_SAFE_FOR_NETWORK_GAME();
  520.     print("Heat Seekers by ~b~xxHASTERxx!");
  521.     WAIT(3000);
  522.     print("Good for all 32 Players");
  523.     WAIT(3000);
  524.     print("Press ~PAD_RB~ + ~PAD_X~ to toggle heat seekers!");
  525.     WAIT(3000);
  526.     print("Press ~PAD_RSTICK_NONE~ to switch between on foot or in a helicopter!");
  527.     WAIT(3000);
  528.     print("Heat Seekers:ON");
  529.     on_off = true;
  530.     heli = false;
  531.     while(true){
  532.         toggler();
  533.         finding();
  534.         HEAT_SEEK();
  535.         WAIT(0);
  536.     }
  537. }
Advertisement
Add Comment
Please, Sign In to add comment