Guest User

GTA IV Heatseekers by XF CH3WY

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