XADRENALINEIX

HuN's Gang Wars 3.0

Jul 6th, 2013
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 22.41 KB | None | 0 0
  1. #include <natives.h>
  2. #include <common.h>
  3. #include <strings.h>
  4. #include <types.h>
  5. #include <consts.h>
  6.  
  7. Ped gang[15], dped, pped[3];
  8. Blip Gbase, gps, members[15], bdp, bpp[3];
  9. Vehicle ccar;
  10. Pickup Hpack;
  11. char *wname;
  12. float xp, yp, zp, xb[4], yb[4], sx, sy, sz, grnd, dist;
  13. int dm, cdm;
  14. uint weapon[16], stat, mlvl, rl, turf, max, bc, model[5], modveh[2];
  15. uint gwar = 0;
  16. uint gset = 0;
  17. uint gkill = 0;
  18. bool dbgen = 0;
  19.  
  20. //############### Define Ps3 GamePad ################################//
  21. #define DPAD_DOWN  0x9
  22. #define CIRCLE  0x11
  23. //############### Define Ps3 GamePad ################################//
  24.  
  25. bool IsKeyPressed(uint iKey , uint iJey)
  26. {
  27.     return IS_BUTTON_PRESSED(0,iKey) && IS_BUTTON_JUST_PRESSED(0,iJey);
  28. }
  29.  
  30. void Print(char *string)
  31. {
  32.     PRINT_STRING_WITH_LITERAL_STRING_NOW("STRING", string, 2500, 1);
  33. }
  34.  
  35. void InitSet(void)
  36. {
  37.     weapon[0] = WEAPON_PISTOL;
  38.     weapon[1] = WEAPON_MICRO_UZI;
  39.     weapon[2] = WEAPON_MP5;
  40.     weapon[3] = WEAPON_RLAUNCHER;
  41.     weapon[4] = WEAPON_BASEBALLBAT;
  42.     weapon[5] = WEAPON_KNIFE;
  43.     weapon[6] = WEAPON_MOLOTOV;
  44.     weapon[7] = WEAPON_SHOTGUN;
  45.     weapon[8] = WEAPON_MICRO_UZI;
  46.     weapon[9] = WEAPON_AK47;
  47.     weapon[10] = WEAPON_SNIPERRIFLE;
  48.     weapon[11] = WEAPON_GRENADE;
  49.     weapon[12] = WEAPON_DEAGLE;
  50.     weapon[13] = WEAPON_BARETTA;
  51.     weapon[14] = WEAPON_M4;
  52.     weapon[15] = WEAPON_M40A1;
  53.     xb[3] = -203.4649, yb[3] = 261.7023;
  54.     stat = GET_INT_STAT(363);
  55.     SET_INT_STAT(363, 5);
  56.     GET_MAX_WANTED_LEVEL(&mlvl);
  57.     LOAD_CHAR_DECISION_MAKER(2, &dm);
  58.     LOAD_COMBAT_DECISION_MAKER(3, &cdm);
  59.     SET_DECISION_MAKER_ATTRIBUTE_SIGHT_RANGE(dm, 250);
  60.     SET_DECISION_MAKER_ATTRIBUTE_SIGHT_RANGE(cdm, 250);
  61. }
  62.  
  63. void GetSafeCoords(void)
  64. {
  65.     float offx, offy, x, y, z, sgrnd;
  66.     GENERATE_RANDOM_FLOAT_IN_RANGE(-80.0, 80.0, &offx);
  67.     GENERATE_RANDOM_FLOAT_IN_RANGE(-80.0, 80.0, &offy);
  68.     GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS(GetPlayerPed(), offx, offy, 0, &x, &y, &z);
  69.     GET_GROUND_Z_FOR_3D_COORD(x, y, z, &sgrnd);
  70.     GET_SAFE_POSITION_FOR_CHAR(x, y ,sgrnd, TRUE, &sx, &sy, &sz);
  71. }
  72.  
  73. void Set(uint ptype, uint btype, uint rw)
  74. {
  75.     uint cash, comp, var, wep;
  76.     SET_CHAR_DECISION_MAKER(ptype, dm);
  77.     SET_COMBAT_DECISION_MAKER(ptype, cdm);
  78.     SET_CHAR_AS_ENEMY(ptype, TRUE);
  79.     SET_CHAR_ACCURACY(ptype, 50);    
  80.     SET_SENSE_RANGE(ptype, 500.0);
  81.     SET_CHAR_WILL_MOVE_WHEN_INJURED(ptype, TRUE);
  82.     SET_CHAR_WILL_USE_COVER(ptype, TRUE);
  83.     SET_PED_DONT_DO_EVASIVE_DIVES(ptype, TRUE);
  84.     SET_PED_DIES_WHEN_INJURED(ptype, TRUE);
  85.     SET_CHAR_WILL_DO_DRIVEBYS(ptype, TRUE);
  86.     SET_PED_GENERATES_DEAD_BODY_EVENTS(ptype, TRUE);
  87.     GENERATE_RANDOM_INT_IN_RANGE(10, 50, &cash);
  88.     SET_CHAR_MONEY(ptype, cash);
  89.     SET_CHAR_RANDOM_COMPONENT_VARIATION(ptype);
  90.     GENERATE_RANDOM_INT_IN_RANGE(0, 5, &comp);
  91.     GENERATE_RANDOM_INT_IN_RANGE(0, 5, &var);
  92.     SET_CHAR_PROP_INDEX_TEXTURE(ptype, 0, comp, var);
  93.     GENERATE_RANDOM_INT_IN_RANGE(0, 3, &comp);
  94.     GENERATE_RANDOM_INT_IN_RANGE(0, 2, &var);
  95.     SET_CHAR_PROP_INDEX_TEXTURE(ptype, 1, comp, var);
  96.     CHANGE_BLIP_COLOUR(btype, bc);
  97.     CHANGE_BLIP_ALPHA(btype, 225);
  98.     CHANGE_BLIP_NAME_FROM_ASCII(btype, "Gang member");
  99.     GENERATE_RANDOM_INT_IN_RANGE(0, rw, &wep);
  100.     GIVE_WEAPON_TO_CHAR(ptype, weapon[wep], AMMO_MAX, FALSE);
  101.     SET_CURRENT_CHAR_WEAPON(ptype, weapon[wep], TRUE);
  102.     SET_CHAR_CURRENT_WEAPON_VISIBLE(ptype, FALSE);
  103.     SET_CHAR_RELATIONSHIP_GROUP(ptype, 24);
  104.     SET_CHAR_KEEP_TASK(ptype, TRUE);
  105.     if(gwar == 3)
  106.     {
  107.         SET_CHAR_RELATIONSHIP(ptype, 5, 0);
  108.         TASK_COMBAT_HATED_TARGETS_AROUND_CHAR(ptype, 600.0);
  109.     }
  110.     else if(gwar == 4)
  111.     {
  112.         if(gkill < 15)
  113.         {
  114.             SET_CHAR_RELATIONSHIP(ptype, 4, 0);
  115.             TASK_WANDER_STANDARD(ptype);
  116.         }
  117.         else if(gkill >= 16)
  118.         {
  119.             SET_CHAR_RELATIONSHIP(ptype, 5, 0);
  120.             TASK_COMBAT(ptype, GetPlayerPed());
  121.         }
  122.     }
  123. }
  124.  
  125. void DeathReset(void)
  126. {
  127.     if(IS_CHAR_DEAD(GetPlayerPed()))
  128.     {
  129.         gwar = 6;
  130.     }
  131. }
  132.  
  133. void Health(void)
  134. {
  135.     if(!DOES_PICKUP_EXIST(Hpack))
  136.     {
  137.         CREATE_PICKUP(1069950328, 23, xb[rl], yb[rl], grnd, &Hpack, 0);
  138.     }
  139. }
  140.  
  141. void ClearEnemy(uint ptype, uint pblip)
  142. {
  143.     EXPLODE_CHAR_HEAD(ptype);
  144.     TASK_DIE(ptype);
  145.     REMOVE_BLIP(pblip);
  146. }
  147.  
  148. void TurfLogic(void)
  149. {
  150.     if(IS_PLAYER_PLAYING(GetPlayerIndex()))
  151.     {
  152.         GET_CHAR_COORDINATES(GetPlayerPed(), &xp, &yp, &zp);
  153.         GET_GROUND_Z_FOR_3D_COORD(xb[rl], yb[rl], 50.0, &grnd);
  154.         GET_DISTANCE_BETWEEN_COORDS_3D(xb[rl], yb[rl], grnd, xp, yp, zp, &dist);
  155.         if(gwar == 0)
  156.         {
  157.             GENERATE_RANDOM_INT_IN_RANGE(0, 12, &turf);
  158.             GENERATE_RANDOM_INT_IN_RANGE(0, 4, &rl);
  159.             gwar = 1;
  160.         }    
  161.         else if(gwar == 1)
  162.         {
  163.             if(turf == 0)
  164.             {
  165.                 max = 4;
  166.                 bc = 11;
  167.                 wname = "AoD Biker War";
  168.                 xb[0] = -565.8134, yb[0] = 1141.6448;
  169.                 xb[1] = -444.0590, yb[1] = 1506.8530;
  170.                 xb[2] = -919.0051, yb[2] = 1034.7878;
  171.                 model[0] = MODEL_M_M_GBIK_LO_03;
  172.                 model[1] = MODEL_M_Y_GBIK_HI_01;
  173.                 model[2] = MODEL_M_Y_GBIK_HI_02;
  174.                 model[3] = MODEL_M_Y_GBIK02_LO_02;
  175.                 modveh[0] = MODEL_BURRITO;
  176.                 modveh[1] = MODEL_HELLFURY;
  177.             }
  178.             else if(turf == 1)
  179.             {    
  180.                 max = 4;
  181.                 bc = 33;
  182.                 wname = "Russian Mob War";
  183.                 xb[0] = 1392.8486, yb[0] = -713.7817;
  184.                 xb[1] = 934.8259, yb[1] = 34.8259;
  185.                 xb[2] = 1017.7460, yb[2] = 369.1317;
  186.                 model[0] = MODEL_M_O_GRUS_HI_01;
  187.                 model[1] = MODEL_M_Y_GRUS_LO_01;
  188.                 model[2] = MODEL_M_Y_GRUS_LO_02;
  189.                 model[3] = MODEL_M_Y_GRUS_HI_02;
  190.                 modveh[0] = MODEL_REBLA;
  191.                 modveh[1] = MODEL_SCHAFTER;
  192.             }
  193.             else if(turf == 2)
  194.             {
  195.                 max = 5;
  196.                 bc = 19;
  197.                 wname = "Jamaican War";
  198.                 xb[0] = 1433.5638, yb[0] = 63.3781;
  199.                 xb[1] = 1590.3583, yb[1] = 251.8026;
  200.                 xb[2] = 1232.2589, yb[2] = -65.1774;
  201.                 model[0] = MODEL_M_M_GJAM_HI_01;
  202.                 model[1] = MODEL_M_M_GJAM_HI_02;
  203.                 model[2] = MODEL_M_M_GJAM_HI_03;
  204.                 model[3] = MODEL_M_Y_GJAM_LO_01;
  205.                 model[4] = MODEL_M_Y_GJAM_LO_02;
  206.                 modveh[0] = MODEL_HUNTLEY;
  207.                 modveh[1] = MODEL_VOODOO;    
  208.             }
  209.             else if(turf == 3)
  210.             {
  211.                 max = 4;
  212.                 bc = 23;
  213.                 wname = "Italian Mafia War";
  214.                 xb[0] = -203.9335, yb[0] = -274.8976;
  215.                 xb[1] = -447.6903, yb[1] = -224.9006;
  216.                 xb[2] = -407.6331, yb[2] = 35.0706;
  217.                 model[0] = MODEL_M_Y_GMAF_HI_01;
  218.                 model[1] = MODEL_M_Y_GMAF_HI_02;
  219.                 model[2] = MODEL_M_Y_GMAF_LO_01;
  220.                 model[3] = MODEL_M_Y_GMAF_LO_02;
  221.                 modveh[0] = MODEL_PMP600;
  222.                 modveh[1] = MODEL_SENTINEL;    
  223.             }
  224.             else if(turf == 4)
  225.             {
  226.                 max = 2;
  227.                 bc = 18;
  228.                 wname = "Lost Biker War";
  229.                 xb[0] = -1713.3362, yb[0] = 300.7948;
  230.                 xb[1] = -1382.6865, yb[1] = 402.5747;
  231.                 xb[2] = -1469.3313, yb[2] = 243.2719;
  232.                 model[0] = MODEL_M_Y_GBIK_LO_01;
  233.                 model[1] = MODEL_M_Y_GBIK_LO_02;
  234.                 modveh[0] = MODEL_BURRITO2;
  235.                 modveh[1] = MODEL_ZOMBIEB;    
  236.             }
  237.             else if(turf == 5)
  238.             {
  239.                 max = 4;
  240.                 bc = 22;
  241.                 wname = "Latino War";
  242.                 xb[0] = -220.1503, yb[0] = 1302.1586;
  243.                 xb[1] = -58.1231, yb[1] = 1350.6831;
  244.                 xb[2] = -229.1476, yb[2] = 1428.9210;
  245.                 model[0] = MODEL_M_Y_GLAT_LO_01;
  246.                 model[1] = MODEL_M_Y_GLAT_LO_02;
  247.                 model[2] = MODEL_M_Y_GLAT_HI_01;
  248.                 model[3] = MODEL_M_Y_GLAT_HI_02;
  249.                 modveh[0] = MODEL_CAVALCADE;
  250.                 modveh[1] = MODEL_PRIMO;
  251.             }
  252.             else if(turf == 6)
  253.             {
  254.                 max = 4;
  255.                 bc = 6;
  256.                 wname = "Albanian War";
  257.                 xb[0] = 1315.4991, yb[0] = 1736.0322;
  258.                 xb[1] = 859.5318, yb[1] = 1582.3088;
  259.                 xb[2] = 789.4033, yb[2] = 1369.0364;
  260.                 model[0] = MODEL_M_Y_GALB_LO_01;
  261.                 model[1] = MODEL_M_Y_GALB_LO_02;
  262.                 model[2] = MODEL_M_Y_GALB_LO_03;
  263.                 model[3] = MODEL_M_Y_GALB_LO_04;
  264.                 modveh[0] = MODEL_FUTO;
  265.                 modveh[1] = MODEL_HAKUMAI;    
  266.             }
  267.             else if(turf == 7)
  268.             {
  269.                 max = 4;
  270.                 bc = 7;
  271.                 wname = "Afro-American War";
  272.                 xb[0] = 1278.0542, yb[0] = -319.8939;
  273.                 xb[1] = 1136.3654, yb[1] = -134.2558;
  274.                 xb[2] = 1268.0599, yb[2] = -152.2401;
  275.                 model[0] = MODEL_M_Y_GAFR_LO_01;
  276.                 model[1] = MODEL_M_Y_GAFR_LO_02;
  277.                 model[2] = MODEL_M_Y_GAFR_HI_01;
  278.                 model[3] = MODEL_M_Y_GAFR_HI_02;
  279.                 modveh[0] = MODEL_LANDSTALKER;
  280.                 modveh[1] = MODEL_PATRIOT;
  281.             }
  282.             else if(turf == 8)
  283.             {
  284.                 max = 3;
  285.                 bc = 8;
  286.                 wname = "Irish War";
  287.                 xb[0] = 1127.0544, yb[0] = 724.8998;
  288.                 xb[1] = 1800.5509, yb[1] = 572.2396;
  289.                 xb[2] = 1345.3091, yb[2] = 660.4424;
  290.                 model[0] = MODEL_M_Y_GIRI_LO_01;
  291.                 model[1] = MODEL_M_Y_GIRI_LO_02;
  292.                 model[2] = MODEL_M_Y_GIRI_LO_03;
  293.                 modveh[0] = MODEL_E109;
  294.                 modveh[1] = MODEL_ORACLE;
  295.             }
  296.             else if(turf == 9)
  297.             {
  298.                 max = 4;
  299.                 bc = 26;
  300.                 wname = "Russian War";
  301.                 xb[0] = 798.3973, yb[0] = -383.1937;
  302.                 xb[1] = 1073.0067, yb[1] = -445.8488;
  303.                 xb[2] = 1087.9091, yb[2] = -660.8171;
  304.                 model[0] = MODEL_M_M_GRU2_HI_01;
  305.                 model[1] = MODEL_M_M_GRU2_HI_02;
  306.                 model[2] = MODEL_M_M_GRU2_LO_02;
  307.                 model[3] = MODEL_M_Y_GRU2_LO_01;
  308.                 modveh[0] = MODEL_INGOT;
  309.                 modveh[1] = MODEL_URANUS;    
  310.             }
  311.             else if(turf == 10)
  312.             {
  313.                 max = 2;
  314.                 bc = 13;
  315.                 wname = "Korean War";
  316.                 xb[0] = -1176.2178, yb[0] = 1036.4456;
  317.                 xb[1] = -1454.7412, yb[1] = 1051.7816;
  318.                 xb[2] = -1395.1597, yb[2] = 853.1685;
  319.                 model[0] = MODEL_M_Y_GKOR_LO_01;
  320.                 model[1] = MODEL_M_Y_GKOR_LO_02;
  321.                 modveh[0] = MODEL_PRES;
  322.                 modveh[1] = MODEL_SULTAN;
  323.             }
  324.             else if(turf == 11)
  325.             {
  326.                 max = 4;
  327.                 bc = 12;
  328.                 wname = "Triad War";
  329.                 xb[0] = 64.5832, yb[0] = -450.9595;
  330.                 xb[1] = -6.4329, yb[1] = -318.8659;
  331.                 xb[2] = 148.7226, yb[2] = -577.0952;
  332.                 model[0] = MODEL_M_M_GTRI_HI_01;
  333.                 model[1] = MODEL_M_M_GTRI_HI_02;
  334.                 model[2] = MODEL_M_Y_GTRI_LO_01;
  335.                 model[3] = MODEL_M_Y_GTRI_LO_02;
  336.                 modveh[0] = MODEL_FEROCI;
  337.                 modveh[1] = MODEL_INTRUDER;
  338.             }
  339.             gwar = 2;
  340.         }
  341.         else if(gwar == 2)
  342.         {
  343.             ADD_BLIP_FOR_COORD(xb[rl], yb[rl], grnd, &Gbase);
  344.             CHANGE_BLIP_SPRITE(Gbase, BLIP_MULTIPLAYER_TUTORIAL);
  345.             CHANGE_BLIP_NAME_FROM_ASCII(Gbase, wname);
  346.             CHANGE_BLIP_COLOUR(Gbase, bc);
  347.             CHANGE_BLIP_ALPHA(Gbase, 225);
  348.             ADD_BLIP_FOR_COORD(xb[rl], yb[rl], grnd, &gps);
  349.             CHANGE_BLIP_DISPLAY(gps, 1);
  350.             CHANGE_BLIP_COLOUR(gps, bc);
  351.             CHANGE_BLIP_ALPHA(Gbase, 225);
  352.             SET_ROUTE(gps, TRUE);
  353.             Print("Go In Territory To Trigger Gang War !");
  354.             gwar = 3;
  355.         }
  356.         else if(gwar == 3)
  357.         {
  358.             if(dist < 50.0)
  359.             {
  360.                 if(!IS_CHAR_IN_ANY_HELI(GetPlayerPed()))
  361.                 {
  362.                     gkill = 0;
  363.                     Print(" You Entered Gang Territory !");
  364.                     SET_ROUTE(gps, FALSE);
  365.                     REMOVE_BLIP(gps);
  366.                     gwar = 4;
  367.                 }
  368.             }
  369.         }
  370.         else if(gwar == 4)
  371.         {
  372.             uint I;
  373.             for (I = 0; I <= 14; I++)
  374.             {
  375.                 if(!DOES_CHAR_EXIST(gang[I]))
  376.                 {
  377.                     float dista, distb;
  378.                     GetSafeCoords();
  379.                     GET_DISTANCE_BETWEEN_COORDS_3D(xp, yp, zp, sx, sy, sz, &dista);
  380.                     GET_DISTANCE_BETWEEN_COORDS_3D(xb[rl], yb[rl], grnd, sx, sy, sz, &distb);
  381.                     if(dista > 35.0 && distb < 150.0)
  382.                     {
  383.                         uint rm;
  384.                         uint wep;
  385.                         GENERATE_RANDOM_INT_IN_RANGE(0, max, &rm);
  386.                         GENERATE_RANDOM_INT_IN_RANGE(0, 16, &wep);
  387.                         REQUEST_MODEL(model[rm]);
  388.                         while (!HAS_MODEL_LOADED(model[rm])) WAIT(0);
  389.                         CREATE_CHAR(16, model[rm], sx, sy, sz, &gang[I], true);
  390.                         ADD_BLIP_FOR_CHAR(gang[I], &members[I]);
  391.                         Set(gang[I], members[I], 16);
  392.                         MARK_MODEL_AS_NO_LONGER_NEEDED(model[rm]);
  393.                         gset++;
  394.                         if(gset == 15)
  395.                         {
  396.                             gwar = 5;
  397.                             gset = 0;
  398.                         }
  399.                     }
  400.                 }
  401.             }
  402.             if(dist >= 180.0)
  403.             {
  404.                 Print(" You Fled War Zone , Poor Show !");
  405.                 gwar = 6;
  406.             }
  407.         }
  408.         else if(gwar == 5)
  409.         {
  410.             CLEAR_WANTED_LEVEL(GetPlayerIndex());
  411.             ALLOW_EMERGENCY_SERVICES(FALSE);
  412.             SET_MAX_WANTED_LEVEL(0);
  413.             SET_CHAR_WANTED_BY_POLICE(GetPlayerPed(), FALSE);
  414.             if(dist > 160.0 && dist < 180.0)
  415.             {
  416.                 DRAW_CHECKPOINT_WITH_ALPHA(xb[rl], yb[rl], 0.0, 260.0, 200, 200, 200, 100);
  417.                 Print(" Your Getting Too Far , Get Back In War Zone !");
  418.             }
  419.             else if(dist >= 180.0)
  420.             {
  421.                 Print(" You Fled War Zone , Poor Show !");
  422.                 gwar = 6;
  423.             }
  424.         }
  425.         else if(gwar == 6)
  426.         {
  427.             ALLOW_EMERGENCY_SERVICES(TRUE);
  428.             SET_MAX_WANTED_LEVEL(6);
  429.             REMOVE_BLIP(Gbase);
  430.             REMOVE_BLIP(gps);
  431.             REMOVE_PICKUP(Hpack);
  432.             WAIT(3000);
  433.             gwar = 0;
  434.         }
  435.     }
  436. }
  437.  
  438. void GangLogic(void)
  439. {
  440.     uint I;
  441.     for (I = 0; I <= 14; I++)
  442.     {
  443.         if(DOES_CHAR_EXIST(gang[I]))
  444.         {
  445.             float zx, zy, zz, distc;
  446.             GET_CHAR_COORDINATES(gang[I], &zx, &zy, &zz);
  447.             GET_DISTANCE_BETWEEN_COORDS_3D(xb[rl], yb[rl], grnd, zx, zy, zz, &distc);
  448.             if(distc > 160.0)
  449.             {
  450.                 float distd, diste;
  451.                 GetSafeCoords();
  452.                 GET_DISTANCE_BETWEEN_COORDS_3D(xp, yp, zp, sx, sy, sz, &distd);
  453.                 GET_DISTANCE_BETWEEN_COORDS_3D(xb[rl], yb[rl], grnd, sx, sy, sz, &diste);
  454.                 if(distd > 35.0 && diste < 150.0)
  455.                 {
  456.                     SET_CHAR_COORDINATES_NO_OFFSET(gang[I], sx, sy, sz);
  457.                 }
  458.             }
  459.             else if(IS_CHAR_DEAD(gang[I]) || IS_CHAR_DEAD(GetPlayerPed()) || gwar == 6)
  460.             {
  461.                 ClearEnemy(gang[I], members[I]);
  462.                 MARK_CHAR_AS_NO_LONGER_NEEDED(&gang[I]);
  463.                 if(gwar < 6)
  464.                 {
  465.                     gkill++;
  466.                 }
  467.             }
  468.         }    
  469.     }
  470. }
  471.  
  472. void DriveByGen(void)
  473. {
  474.     if(IS_PLAYER_PLAYING(GetPlayerIndex()))
  475.     {
  476.         if(gwar == 3)
  477.         {
  478.             if(dbgen == 0)
  479.             {
  480.                 float x, y, z, h;
  481.                 GET_NTH_CLOSEST_CAR_NODE_WITH_HEADING(xp, yp, zp, 200, &x, &y, &z, &h);
  482.                 if(!DOES_VEHICLE_EXIST(ccar))
  483.                 {
  484.                     uint veh;
  485.                     GENERATE_RANDOM_INT_IN_RANGE(0, 2, &veh);
  486.                     REQUEST_MODEL(modveh[veh]);
  487.                     while (!HAS_MODEL_LOADED(modveh[veh])) WAIT(0);
  488.                     CLEAR_AREA_OF_CARS(x, y, z, 25.0);
  489.                     CREATE_CAR(modveh[veh], x, y, z, &ccar, true);
  490.                     SET_CAR_HEADING(ccar, h);
  491.                     MARK_MODEL_AS_NO_LONGER_NEEDED(modveh[veh]);
  492.                     return ccar;
  493.                 }
  494.                 else if(DOES_VEHICLE_EXIST(ccar))
  495.                 {
  496.                     if(!DOES_CHAR_EXIST(dped))
  497.                     {
  498.                         uint drm;
  499.                         GENERATE_RANDOM_INT_IN_RANGE(0, max, &drm);
  500.                         REQUEST_MODEL(model[drm]);
  501.                         while (!HAS_MODEL_LOADED(model[drm])) WAIT(0);
  502.                         CREATE_CHAR_INSIDE_CAR(ccar, 16, model[drm], &dped);
  503.                         ADD_BLIP_FOR_CHAR(dped, &bdp);
  504.                         Set(dped, bdp, 16);
  505.                         MARK_MODEL_AS_NO_LONGER_NEEDED(model[drm]);
  506.                         uint I;
  507.                         for (I = 0; I <= 2; I++)
  508.                         {
  509.                             if(!DOES_CHAR_EXIST(pped[I]))
  510.                             {
  511.                                 if(IS_CAR_PASSENGER_SEAT_FREE(ccar, I))
  512.                                 {
  513.                                     uint prm;
  514.                                     GENERATE_RANDOM_INT_IN_RANGE(0, max, &prm);
  515.                                     REQUEST_MODEL(model[prm]);
  516.                                     while (!HAS_MODEL_LOADED(model[prm])) WAIT(0);
  517.                                     CREATE_CHAR_AS_PASSENGER(ccar, 16, model[prm], I, &pped[I]);
  518.                                     ADD_BLIP_FOR_CHAR(pped[I], &bpp[I]);
  519.                                     Set(pped[I], bpp[I], 3);
  520.                                     MARK_MODEL_AS_NO_LONGER_NEEDED(model[prm]);
  521.                                 }
  522.                             }
  523.                         }
  524.                     }
  525.                     dbgen = 1;
  526.                 }
  527.             }
  528.         }
  529.     }
  530. }
  531.  
  532. void CarLogic(void)
  533. {        
  534.     if(DOES_VEHICLE_EXIST(ccar))
  535.     {
  536.         float vx, vy, vz, distf;
  537.         GET_CAR_COORDINATES(ccar, &vx, &vy, &vz);
  538.         GET_DISTANCE_BETWEEN_COORDS_3D(xp, yp, zp, vx, vy, vz, &distf);
  539.         if(IS_CAR_DEAD(ccar) || distf > 400.0 || gwar >= 4)
  540.         {
  541.             MARK_CAR_AS_NO_LONGER_NEEDED(&ccar);
  542.         }
  543.     }
  544. }
  545.  
  546. void DriverLogic(void)
  547. {
  548.     if(DOES_CHAR_EXIST(dped))
  549.     {
  550.         float dx, dy, dz, distg;
  551.         GET_CHAR_COORDINATES(dped, &dx, &dy, &dz);
  552.         GET_DISTANCE_BETWEEN_COORDS_3D(xp, yp, zp, dx, dy, dz, &distg);
  553.         if(DOES_VEHICLE_EXIST(ccar))
  554.         {
  555.             if(IS_CHAR_SITTING_IN_CAR(dped, ccar))
  556.             {
  557.                 if(distg > 20.0)
  558.                 {
  559.                     TASK_CAR_MISSION_PED_TARGET(dped, ccar, GetPlayerPed(), 2, 35.0, 2, 0, 10);
  560.                 }
  561.             }
  562.         }
  563.         if(IS_CHAR_DEAD(dped) || distg > 400.0 || gwar >= 4)
  564.         {
  565.             ClearEnemy(dped, bdp);
  566.             MARK_CHAR_AS_NO_LONGER_NEEDED(&dped);
  567.  
  568.         }
  569.     }
  570. }
  571.  
  572. void DBPLogic(void)
  573. {
  574.     uint I;
  575.     for (I = 0; I <= 2; I++)
  576.     {
  577.         if(DOES_CHAR_EXIST(pped[I]))
  578.         {
  579.             float px, py, pz, disth;  
  580.             GET_CHAR_COORDINATES(pped[I], &px, &py, &pz);
  581.             GET_DISTANCE_BETWEEN_COORDS_3D(xp, yp, zp, px, py, pz, &disth);
  582.             if(IS_CHAR_DEAD(pped[I]) || disth > 400.0 || gwar >= 4)
  583.             {
  584.                 ClearEnemy(pped[I], bpp[I]);
  585.                 MARK_CHAR_AS_NO_LONGER_NEEDED(&pped[I]);
  586.             }
  587.         }    
  588.     }
  589. }
  590.  
  591. void SpawnDBLogic(void)
  592. {
  593.     if(dbgen == 1)
  594.     {
  595.         if(!DOES_VEHICLE_EXIST(ccar) && !DOES_CHAR_EXIST(dped) && !DOES_CHAR_EXIST(pped[0]) && !DOES_CHAR_EXIST(pped[1]) && !DOES_CHAR_EXIST(pped[2]))
  596.         {
  597.             dbgen = 0;
  598.         }
  599.     }
  600. }
  601.  
  602. void WarWaves(void)
  603. {
  604.     if(gwar == 5)
  605.     {    
  606.         if(gkill == 1)
  607.         {
  608.             FLASH_BLIP(Gbase, TRUE);
  609.             Print("You Provoked a Gang War !!!");
  610.             gkill++;
  611.         }
  612.         else if(gkill == 16)
  613.         {
  614.             Print("You Survived 1st Wave");
  615.             Health();
  616.             WAIT(3000);
  617.             Print("Gang War 2nd Wave");
  618.             gwar = 4;
  619.             gkill++;
  620.         }
  621.         else if(gkill == 32)
  622.         {
  623.             REMOVE_PICKUP(Hpack);
  624.             Print("You Survived 2nd Wave");
  625.             Health();
  626.             WAIT(3000);
  627.             Print("Gang War 3rd Wave");
  628.             gwar = 4;
  629.             gkill++;
  630.         }
  631.         else if(gkill == 48)
  632.         {
  633.             REMOVE_PICKUP(Hpack);
  634.             Print("You Survived 3rd Wave");
  635.             Health();
  636.             WAIT(3000);
  637.             Print("Gang War final Wave");
  638.             gwar = 4;
  639.             gkill++;
  640.         }
  641.         else if(gkill == 64)
  642.         {
  643.             Print("You Survived Final Wave");
  644.             REMOVE_BLIP(Gbase);
  645.             gwar = 6;
  646.         }
  647.     }
  648. }
  649.  
  650. void DisableGWm(void)
  651.  {
  652.     if(IsKeyPressed(DPAD_DOWN,CIRCLE))
  653.     {
  654.         Print("Gang-War Minigame Disabled");
  655.         SET_MAX_WANTED_LEVEL(mlvl);
  656.         SET_INT_STAT(363, stat);
  657.         ALLOW_EMERGENCY_SERVICES(TRUE);
  658.         SET_POLICE_IGNORE_PLAYER(GetPlayerIndex(), FALSE);
  659.         TERMINATE_THIS_SCRIPT();
  660.     }
  661. }
  662.  
  663. void main(void)
  664. {    
  665.     InitSet();
  666.     while (TRUE)
  667.     {
  668.         WAIT(0);
  669.         DeathReset();
  670.         TurfLogic();
  671.         GangLogic();
  672.         DriveByGen();
  673.         CarLogic();
  674.         DriverLogic();
  675.         DBPLogic();
  676.         SpawnDBLogic();
  677.         WarWaves();
  678.         DisableGWm();
  679.     }
  680. }
Advertisement
Add Comment
Please, Sign In to add comment