Guest User

Untitled

a guest
May 14th, 2015
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 11.64 KB | None | 0 0
  1. #include "script.h"
  2. #include <random>
  3. #include <iostream>
  4. #include <string>
  5. #include <ctime>
  6.  
  7. #pragma warning(disable : 4244 4305) // double <-> float conversions
  8.  
  9. float x, y, z, sx, sy, sz;
  10. Vector3 spawnPt, spawnPt1, spawnPt2, position;
  11. Vector3 vehPos;
  12. DWORD combatMdl, driverMdl;
  13. DWORD crusaderHash, tankHash, lazerHash, insurgentHash, barracksHash, annihilatorHash;
  14. // 14 slots, if it's too much, so what ?
  15. Any mainVehicle[20];
  16. Any crua[20], crub[20], cruc[20], crud[20];
  17. bool wasWanted = false;
  18. bool firstStart = true;
  19. bool ready[20];
  20. int delFlag = 0;
  21.  
  22.  
  23.  
  24. bool isInAir = false;
  25. //void set_spawn_points(Ped playerPed)
  26. //{
  27. //  spawnPt1.x = position.x + 200.0f;
  28. //  spawnPt1.y = position.y;
  29. //  spawnPt1.z = position.z + 4.0f;
  30. //  spawnPt2.x = position.x;
  31. //  spawnPt2.y = position.y + 150.0f;
  32. //  spawnPt1.z = position.z + 4.0f;
  33. //  x = position.x;
  34. //  y = position.y;
  35. //  z = position.z;
  36. //}
  37.  
  38.  
  39. void spawnIns(int type, int spawnId)
  40. {
  41.     DWORD vehHash;
  42.     DWORD weapHash;
  43.     weapHash = GAMEPLAY::GET_HASH_KEY("WEAPON_CARBINERIFLE");
  44.     ready[spawnId] = false;
  45.     // DYNAMIC SPAWN PTS
  46.     if (rand() % 11 > 5) spawnPt = spawnPt1;
  47.     spawnPt = spawnPt2;
  48.     spawnPt.z += 15.0f;
  49.     if (type == 5) spawnPt.z += 250.0f;
  50.     // CRUSADER
  51.     if (type == 1) vehHash = crusaderHash;
  52.     if (type == 2) vehHash = insurgentHash;
  53.     if (type == 3) vehHash = barracksHash;
  54.     // TANK
  55.     if (type == 4) vehHash = tankHash;
  56.     // AIR VEHICLES
  57.     // ANIHILATOR
  58.     if (type == 5) vehHash = annihilatorHash;
  59.     if (type == 5) weapHash = GAMEPLAY::GET_HASH_KEY("WEAPON_COMBATMG");
  60.     // LAZERS
  61.     if (type == 6) vehHash = lazerHash;
  62.  
  63.  
  64.  
  65.     ////////// STREAMING AND SPAWNING //////////
  66.     // STREAMING REQUESTS //
  67.     STREAMING::REQUEST_MODEL(GAMEPLAY::GET_HASH_KEY("WEAPON_CARBINERIFLE")); STREAMING::REQUEST_MODEL(driverMdl); STREAMING::REQUEST_MODEL(combatMdl); STREAMING::REQUEST_MODEL(vehHash); STREAMING::REQUEST_MODEL(GAMEPLAY::GET_HASH_KEY("WEAPON_COMBATMG"));
  68.     // WAITING FOR LOADING //
  69.     while (!STREAMING::HAS_MODEL_LOADED(driverMdl) && !STREAMING::HAS_MODEL_LOADED(combatMdl) && !STREAMING::HAS_MODEL_LOADED(vehHash) && !STREAMING::HAS_MODEL_LOADED(GAMEPLAY::GET_HASH_KEY("WEAPON_COMBATMG")) && !STREAMING::HAS_MODEL_LOADED((GAMEPLAY::GET_HASH_KEY("WEAPON_CARBINERIFLE"))))
  70.         WAIT(100);
  71.  
  72.     // SPAWNING VEHICLE FIRST //
  73.     mainVehicle[spawnId] = VEHICLE::CREATE_VEHICLE(vehHash, spawnPt.x, spawnPt.y, spawnPt.z, 5.0f, 0, true); WAIT(100);
  74.     // WAITING 100ms
  75.     // SETTING ON GROUND AND CREATING PEDS [ONLY FOR GROUND VEHICLES!!]
  76.     if (type < 5) VEHICLE::SET_VEHICLE_ON_GROUND_PROPERLY(mainVehicle[spawnId]);
  77.     if (type < 5) WAIT(2000);
  78.     WAIT(100);
  79.     // ALWAYS SPAWNING PILOT
  80.     crua[spawnId] = PED::CREATE_PED_INSIDE_VEHICLE(mainVehicle[spawnId], 3, driverMdl, -1, false, false);
  81.     // ONLY SPAWNING SECOND PERSONNEL IF NOT AIR VEHICLE AND NOT TANK
  82.     if (type < 4) crub[spawnId] = PED::CREATE_PED_INSIDE_VEHICLE(mainVehicle[spawnId], 3, combatMdl, 0, false, false);
  83.     // ONLY SPAWNING IF IS ANNI CREW OR GROUND VEHICLES
  84.     if (type == 5 || type < 4) cruc[spawnId] = PED::CREATE_PED_INSIDE_VEHICLE(mainVehicle[spawnId], 3, combatMdl, 1, false, false);
  85.     if (type == 5 || type < 4)crud[spawnId] = PED::CREATE_PED_INSIDE_VEHICLE(mainVehicle[spawnId], 3, combatMdl, 2, false, false);
  86.  
  87.     ////////// TASKS ON SPAWN //////////
  88.     if (type < 5) AI::TASK_VEHICLE_DRIVE_TO_COORD(crua[spawnId], mainVehicle[spawnId], position.x, position.y, position.z, 70.0f, 1, ENTITY::GET_ENTITY_MODEL(mainVehicle[spawnId]), 1, 0xC00AB, -1);
  89.     if (type == 6){ VEHICLE::SET_VEHICLE_FORWARD_SPEED(mainVehicle[spawnId], 80.0f); }
  90.     else { VEHICLE::SET_VEHICLE_FORWARD_SPEED(mainVehicle[spawnId], 40.0f); }
  91.     if (type == 5) VEHICLE::SET_HELI_BLADES_FULL_SPEED(mainVehicle[spawnId]);
  92.     // ADDING ARMOUR TO 3 CREW MEMBERS, PILOT NEVER HAS ARMOR.
  93.     if (type < 4) PED::ADD_ARMOUR_TO_PED(crub[spawnId], 100);
  94.     if (type == 5 || type < 4) PED::ADD_ARMOUR_TO_PED(cruc[spawnId], 100);
  95.     if (type == 5 || type < 4) PED::ADD_ARMOUR_TO_PED(crud[spawnId], 100);
  96.     // WEAPON DELAYED
  97.     WEAPON::GIVE_DELAYED_WEAPON_TO_PED(crua[spawnId], weapHash, 100, false);
  98.     if (type < 4) WEAPON::GIVE_DELAYED_WEAPON_TO_PED(crub[spawnId], weapHash, 100, false);
  99.     if (type == 5 || type < 4) WEAPON::GIVE_DELAYED_WEAPON_TO_PED(cruc[spawnId], weapHash, 100, false);
  100.     if (type == 5 || type < 4) WEAPON::GIVE_DELAYED_WEAPON_TO_PED(crud[spawnId], weapHash, 100, false);
  101.     if (type == 5) WAIT(2000);
  102.         if (type == 6) {
  103.             VEHICLE::SET_VEHICLE_ENGINE_ON(mainVehicle[spawnId], true, true);
  104.             VEHICLE::SET_VEHICLE_FORWARD_SPEED(mainVehicle[spawnId], 50.0f);
  105.             VEHICLE::SET_VEHICLE_EXTRA(mainVehicle[spawnId], 0, 0);
  106.             ENTITY::SET_ENTITY_MAX_SPEED(mainVehicle[spawnId], 300.0f);
  107.             WAIT(1000);
  108.         }
  109.    
  110.  
  111. }
  112.  
  113. void set_spawn_points()
  114. {
  115.     //// setting offset
  116.     //y = 300.0f;
  117.     //x = 300.0f;
  118.  
  119.     //// setting up spawn pts
  120.     //spawnPt1 = ENTITY::GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(playerPed, 0.0, y, 0.0);
  121.     //spawnPt2 = ENTITY::GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(playerPed, x, 0.0, 0.0);
  122.     if (isInAir == false) {
  123.         spawnPt1 = position;
  124.         spawnPt1.x = position.x + 180.0f;
  125.         spawnPt2 = position;
  126.         spawnPt2.y = position.y + 180.0f;
  127.  
  128.         // set spawn points with a radius of 500
  129.         int maxStep = 50;
  130.         // finding spawnpt1 loop.
  131.         while (!PATHFIND::IS_POINT_ON_ROAD(spawnPt1.x, spawnPt1.y, spawnPt1.z, 0) && maxStep > 0)
  132.         {
  133.             spawnPt1.x += 2.0f;
  134.             maxStep--;
  135.         }
  136.         // resetting max step to 75
  137.         maxStep = 50;
  138.         // finding spawnpt2 loop.
  139.         while (!PATHFIND::IS_POINT_ON_ROAD(spawnPt2.x, spawnPt2.y, spawnPt2.z, 0) && maxStep > 0)
  140.         {
  141.             spawnPt2.y -= 2.0f;
  142.             maxStep--;
  143.         }
  144.         GAMEPLAY::GET_GROUND_Z_FOR_3D_COORD(spawnPt2.x, spawnPt2.y, spawnPt2.z + 100.0f, &spawnPt2.z);
  145.         GAMEPLAY::GET_GROUND_Z_FOR_3D_COORD(spawnPt1.x, spawnPt1.y, spawnPt1.z + 100.0f, &spawnPt1.z);
  146.     } else {
  147.         spawnPt1 = position;
  148.         spawnPt2 = position;
  149.         spawnPt1.x = position.x + 80.0f;
  150.         spawnPt2.y = position.x - 80.0f;
  151.         spawnPt1.z = position.z + 150.0f;
  152.         spawnPt2.z = position.z + 150.0f;
  153.     }
  154.  
  155.  
  156. }
  157.  
  158. void update()
  159. {
  160.     if (firstStart){
  161.         // setting up models
  162.         driverMdl = GAMEPLAY::GET_HASH_KEY("S_M_Y_Marine_01");
  163.         combatMdl = GAMEPLAY::GET_HASH_KEY("S_M_Y_Marine_03");
  164.  
  165.         // setting up vehicles
  166.         crusaderHash = GAMEPLAY::GET_HASH_KEY("crusader");
  167.         tankHash = GAMEPLAY::GET_HASH_KEY("rhino");
  168.         annihilatorHash = GAMEPLAY::GET_HASH_KEY("annihilator");
  169.         insurgentHash = GAMEPLAY::GET_HASH_KEY("insurgent2");
  170.         lazerHash = GAMEPLAY::GET_HASH_KEY("lazer");
  171.         barracksHash = GAMEPLAY::GET_HASH_KEY("barracks");
  172.         firstStart = false;
  173.         for (int i = 0; i <= 19; i++){ ready[i] = true; }
  174.     }
  175.  
  176.     // SPAWN ID SYSTEM ///////
  177.     // LAND VEHICLES :: 0-5 //
  178.     // TANK          :: 6   //
  179.     // ANNIHILATORS  :: 7-8 //
  180.     // JETS          :: 9-12//
  181.     //////////////////////////
  182.     Player player = PLAYER::PLAYER_ID();
  183.     Ped playerPed = PLAYER::PLAYER_PED_ID();
  184.     Vehicle veh = PED::GET_VEHICLE_PED_IS_USING(playerPed);
  185.     position = ENTITY::GET_ENTITY_COORDS(playerPed, 1);
  186.     WAIT(1000);
  187.     isInAir = false;
  188.     if (PED::IS_PED_IN_FLYING_VEHICLE(playerPed)) isInAir = true;
  189.  
  190.    
  191.     if (PLAYER::GET_PLAYER_WANTED_LEVEL(player) > 4)
  192.     {
  193.         set_spawn_points();
  194.         //CLEANING UP
  195.         for (int i = 0; i <= 19; i++)
  196.         {
  197.             delFlag = 0;
  198.             vehPos = ENTITY::GET_ENTITY_COORDS(mainVehicle[i], false);
  199.             if (ENTITY::IS_ENTITY_DEAD(mainVehicle[i])) { ENTITY::SET_ENTITY_AS_NO_LONGER_NEEDED(&mainVehicle[i]); ready[i] = true; }
  200.             if (ENTITY::IS_ENTITY_DEAD(crua[i])){ ENTITY::SET_ENTITY_AS_NO_LONGER_NEEDED(&crua[i]); delFlag++; }
  201.             if (ENTITY::IS_ENTITY_DEAD(crub[i])){ ENTITY::SET_ENTITY_AS_NO_LONGER_NEEDED(&crub[i]); delFlag++; }
  202.             if (ENTITY::IS_ENTITY_DEAD(cruc[i])){ ENTITY::SET_ENTITY_AS_NO_LONGER_NEEDED(&cruc[i]); delFlag++; }
  203.             if (ENTITY::IS_ENTITY_DEAD(crud[i])){ ENTITY::SET_ENTITY_AS_NO_LONGER_NEEDED(&crud[i]); delFlag++; }
  204.             // DELFLAG IS USED TO CHECK IF ALL THE CREW IS DEAD. IF IT'S THE CASE, THEN WE DELETE THE VEHICLE
  205.             // DELFLAG ONLY WORKS ON GROUND VEHICLES.
  206.             if (delFlag == 4){ ENTITY::SET_ENTITY_AS_NO_LONGER_NEEDED(&mainVehicle[i]); ready[i] = true; }
  207.             if (i < 7){
  208.                 if (!ENTITY::IS_ENTITY_AT_COORD(mainVehicle[i], position.x, position.y, position.z, 190.0f, 190.0f, 200.0f, 0, 1, 0)){
  209.                     ENTITY::DELETE_ENTITY(&mainVehicle[i]);
  210.                     ENTITY::DELETE_ENTITY(&crua[i]);
  211.                     ENTITY::DELETE_ENTITY(&crub[i]);
  212.                     ENTITY::DELETE_ENTITY(&cruc[i]);
  213.                     ENTITY::DELETE_ENTITY(&crud[i]);
  214.                     ready[i] = true;
  215.                 }
  216.             }
  217.  
  218.         }
  219.  
  220.  
  221.         // SPAWN INDEX SYSTEM ////
  222.         // LAND VEHICLES :: 0-5 //
  223.         // TANK          :: 6   //
  224.         // ANNIHILATORS  :: 7-8 //
  225.         // JETS          :: 9-12//
  226.         //////////////////////////
  227.  
  228.         // SPAWN IDs
  229.         // CRUSADER    :: 1
  230.         // INSURGENT   :: 2
  231.         // BARRACKS    :: 3
  232.         // TANK        :: 4
  233.         // ANNIHILATOR :: 5
  234.         // LAZER       :: 6
  235.  
  236.         // SPAWN SYSTEM V3.0
  237.         // SPAWNS 6 GROUND VEHICLES REGARDLESS. (3 CRUSADERS, 2 INSURGENTS, 1 BARRACKS)
  238.         // SPAWN NEW WAVE IF :
  239.         //      - VEHICLES AND CREW ARE DEAD OR DO NOT EXIST
  240.         //      - PLAYERS HAS LEFT THEM BEHIND
  241.         // DYNAMIC SPAWN FOR OTHER ENTITIES.
  242.         // TANK : 1 chance out of 200 per update
  243.         // ANNIHILATOR : 2 max
  244.         // LAZERS : only when in air and high in the sky
  245.         wasWanted = true;
  246.  
  247.         for (int i = 0; i <= 19; i++)
  248.         {
  249.             switch (i){
  250.             case 0:
  251.                 if (ready[i] && !isInAir) { spawnIns(1, i); }
  252.                 break;
  253.             case 1:
  254.                 if (ready[i] && !isInAir) { spawnIns(1, i); }
  255.                 break;
  256.             case 2:
  257.                 if (ready[i] && !isInAir) { spawnIns(1, i); }
  258.                 break;
  259.             case 3:
  260.                 if (ready[i] && !isInAir) { spawnIns(2, i); }
  261.                 break;
  262.             case 4:
  263.                 if (ready[i] && !isInAir) { spawnIns(2, i); }
  264.                 break;
  265.             case 5:
  266.                 if (ready[i] && !isInAir) { spawnIns(3, i); }
  267.                 break;
  268.             case 6:
  269.                 if (ready[i] && rand() % 201 == 1 && !isInAir) { spawnIns(4, i); }
  270.                 break;
  271.             case 7:
  272.                 if (ready[i] && !isInAir) { spawnIns(5, i); }
  273.                 break;
  274.             case 8:
  275.                 if (ready[i] && !isInAir) { spawnIns(5, i); }
  276.                 break;
  277.             case 9:
  278.                 if (ready[i] && isInAir) { spawnIns(6, i); }
  279.                 break;
  280.             case 10:
  281.                 if (ready[i] && isInAir) { spawnIns(6, i); }
  282.                 break;
  283.             case 11:
  284.                 if (ready[i] && isInAir) { spawnIns(6, i); }
  285.                 break;
  286.             case 12:
  287.                 if (ready[i] && isInAir) { spawnIns(6, i); }
  288.                 break;
  289.             case 13:
  290.                 if (ready[i] && isInAir) { spawnIns(6, i); }
  291.                 break;
  292.             case 14:
  293.                 if (ready[i] && isInAir) { spawnIns(6, i); }
  294.                 break;
  295.             case 15:
  296.                 if (ready[i] && isInAir) { spawnIns(6, i); }
  297.                 break;
  298.             }
  299.         }
  300.  
  301.         if (isInAir)
  302.         {
  303.             for (int i = 9; i <= 15; i++) {
  304.                 if (mainVehicle[i], position.x, position.y, position.z, 250.0f, 250.0f, 250.0f, 0, 1, 0) {ENTITY::DELETE_ENTITY(&mainVehicle[i]); ENTITY::DELETE_ENTITY(&crua[i]);}
  305.                 //AI::TASK_VEHICLE_CHASE(crua[i], playerPed);
  306.                 //VEHICLE::SET_VEHICLE_FORWARD_SPEED(mainVehicle[i], 80.0f);
  307.             }
  308.         }
  309.        
  310.         GAMEPLAY::SET_DISPATCH_TIME_BETWEEN_SPAWN_ATTEMPTS_MULTIPLIER(playerPed, 4.0f);
  311.  
  312.     } else {
  313.         if (wasWanted){
  314.             GAMEPLAY::SET_DISPATCH_TIME_BETWEEN_SPAWN_ATTEMPTS_MULTIPLIER(playerPed, 1.0f);
  315.             wasWanted = false;
  316.             for (int i = 0; i <= 19; i++)
  317.             {
  318.                 ENTITY::SET_ENTITY_AS_NO_LONGER_NEEDED(&mainVehicle[i]);
  319.                 ENTITY::SET_ENTITY_AS_NO_LONGER_NEEDED(&crua[i]);
  320.                 ENTITY::SET_ENTITY_AS_NO_LONGER_NEEDED(&crub[i]);
  321.                 ENTITY::SET_ENTITY_AS_NO_LONGER_NEEDED(&cruc[i]);
  322.                 ENTITY::SET_ENTITY_AS_NO_LONGER_NEEDED(&crud[i]);
  323.                 AI::CLEAR_PED_TASKS_IMMEDIATELY(crua[i]);
  324.                 AI::CLEAR_PED_TASKS_IMMEDIATELY(crub[i]);
  325.                 AI::CLEAR_PED_TASKS_IMMEDIATELY(cruc[i]);
  326.                 AI::CLEAR_PED_TASKS_IMMEDIATELY(crud[i]);
  327.             }
  328.             for (int i = 9; i <= 15; i++) {
  329.                 ENTITY::DELETE_ENTITY(&mainVehicle[i]);
  330.                 ENTITY::DELETE_ENTITY(&crua[i]);
  331.             }
  332.         }
  333.     }
  334. }
  335.  
  336.  
  337.  
  338.  
  339. void main()
  340. {
  341.     while (true)
  342.     {
  343.         update();
  344.         WAIT(100);
  345.     }
  346. }
  347.  
  348. void ScriptMain()
  349. {
  350.     srand(GetTickCount());
  351.     main();
  352. }
Advertisement
Add Comment
Please, Sign In to add comment