Advertisement
Guest User

Untitled

a guest
Aug 24th, 2009
3,920
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.87 KB | None | 0 0
  1. // Entering shamal as passenger v2.12 by BeckzyBoi.
  2.  
  3. #include <a_samp>
  4.  
  5. new InShamal[MAX_PLAYERS];
  6. new Float:ShamalPos[MAX_VEHICLES][3];
  7. new sExplode[MAX_VEHICLES];
  8. new tCount[MAX_VEHICLES];
  9.  
  10. new Float:difc[][] =
  11. {
  12.     {1.13, 0.05, 1.10, 0.0},
  13.     {1.13, 2.35, 1.10, 180.0},
  14.     {1.13, 4.65, 1.10, 180.0},
  15.     {1.13, 1.05, 1.10, 0.0},
  16.     {1.13, 3.45, 1.10, 180.0},
  17.     {1.13, 5.85, 1.10, 180.0},
  18.     {1.13, 0.39, 0.56, 0.0},
  19.     {1.13, 2.69, 0.56, 180.0},
  20.     {1.13, 4.99, 0.56, 180.0},
  21.     {1.13, 0.71, 0.56, 0.0},
  22.     {1.13, 3.79, 0.56, 180.0},
  23.     {1.13, 6.19, 0.56, 180.0},
  24.     {0.00, 0.30, 1.10, 0.0}
  25. };
  26.  
  27. #define objects_per_shamal 14
  28.  
  29. #define SETY_DE 5.87
  30. #define SETZ_DE 0.75
  31.  
  32. public OnFilterScriptInit()
  33. {
  34.     print("---------------------------------------");
  35.     print("Loaded 'Entering shamal as passenger'");
  36.     print("v2.12 by BeckzyBoi");
  37.     print("---------------------------------------");
  38.     return 1;
  39. }
  40.  
  41. forward ExplodeShamal(vehicleid);
  42.  
  43. stock CreateShamalInt(vehicleid, Float:X, Float:Y, Float:Z)
  44. {
  45.     CreateObject(14404, X, Y, Z, 0.0, 0.0, 0.0);
  46.     CreateObject(1562, X+difc[0][0], Y+difc[0][1], Z-difc[0][2], 0.0, 0.0, difc[0][3]);
  47.     CreateObject(1562, X+difc[1][0], Y-difc[1][1], Z-difc[1][2], 0.0, 0.0, difc[1][3]);
  48.     CreateObject(1562, X+difc[2][0], Y-difc[2][1], Z-difc[2][2], 0.0, 0.0, difc[2][3]);
  49.     CreateObject(1562, X-difc[3][0], Y-difc[3][1], Z-difc[3][2], 0.0, 0.0, difc[3][3]);
  50.     CreateObject(1562, X-difc[4][0], Y-difc[4][1], Z-difc[4][2], 0.0, 0.0, difc[4][3]);
  51.     CreateObject(1562, X-difc[5][0], Y-difc[5][1], Z-difc[5][2], 0.0, 0.0, difc[5][3]);
  52.     CreateObject(1563, X+difc[6][0], Y+difc[6][1], Z-difc[6][2], 0.0, 0.0, difc[6][3]);
  53.     CreateObject(1563, X+difc[7][0], Y-difc[7][1], Z-difc[7][2], 0.0, 0.0, difc[7][3]);
  54.     CreateObject(1563, X+difc[8][0], Y-difc[8][1], Z-difc[8][2], 0.0, 0.0, difc[8][3]);
  55.     CreateObject(1563, X-difc[9][0], Y-difc[9][1], Z-difc[9][2], 0.0, 0.0, difc[9][3]);
  56.     CreateObject(1563, X-difc[10][0], Y-difc[10][1], Z-difc[10][2], 0.0, 0.0, difc[10][3]);
  57.     CreateObject(1563, X-difc[11][0], Y-difc[11][1], Z-difc[11][2], 0.0, 0.0, difc[11][3]);
  58.     CreateObject(14405, X, Y-difc[12][1], Z-difc[12][2], 0.0, 0.0, difc[12][3]);
  59.     ShamalPos[vehicleid][0] = X, ShamalPos[vehicleid][1] = Y, ShamalPos[vehicleid][2] = Z;
  60. }
  61.  
  62. stock SetPlayerPosInShamal(playerid, shamalid)
  63. {
  64.     SetPlayerPos(playerid, ShamalPos[shamalid][0], ShamalPos[shamalid][1]-SETY_DE, ShamalPos[shamalid][2]-SETZ_DE);
  65.     SetPlayerFacingAngle(playerid, 0.0);
  66.     SetCameraBehindPlayer(playerid);
  67.     InShamal[playerid] = shamalid;
  68. }
  69.  
  70. stock ShamalExists(vehicleid)
  71. {
  72.     if (floatsqroot(ShamalPos[vehicleid][0] + ShamalPos[vehicleid][1] + ShamalPos[vehicleid][2]))
  73.     {
  74.         return 1;
  75.     }
  76.     return 0;
  77. }
  78.  
  79. Float:randomEx(randval)
  80. {
  81.     new rand1 = random(2), rand2;
  82.     return float(rand1 == 0 ? rand2 - random(randval) : rand2 + random(randval));
  83. }
  84.  
  85. public OnPlayerConnect(playerid)
  86. {
  87.     InShamal[playerid] = 0;
  88.     return 1;
  89. }
  90.  
  91. stock get_available_objects()
  92. {
  93.     new objects = 0;
  94.     for (new i = 1; i <= MAX_OBJECTS; i++) {
  95.         if (IsValidObject(i)) objects ++;
  96.     }
  97.     return MAX_OBJECTS-objects;
  98. }
  99.  
  100. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  101. {
  102.     if (ispassenger != 0)
  103.     {
  104.         if (GetVehicleModel(vehicleid) == 519)
  105.         {
  106.             if (ShamalExists(vehicleid) == 0)
  107.             {
  108.                 if (get_available_objects() > (MAX_OBJECTS-objects_per_shamal)) return 1;
  109.                 CreateShamalInt(vehicleid, randomEx(3000), randomEx(3000), float(random(100)+800));
  110.             }
  111.             SetPlayerPosInShamal(playerid, vehicleid);
  112.         }
  113.     }
  114.     return 1;
  115. }
  116.  
  117. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  118. {
  119.     if (newkeys == 16 && InShamal[playerid] != 0)
  120.     {
  121.         new Float:X, Float:Y, Float:Z, Float:A;
  122.         GetVehiclePos(InShamal[playerid], X, Y, Z);
  123.         GetVehicleZAngle(InShamal[playerid], A);
  124.         X += (5.0*floatsin(-(A-45.0), degrees)), Y += (5.0*floatcos(-(A-45.0), degrees));
  125.         SetPlayerInterior(playerid, 0);
  126.         SetPlayerPos(playerid, X, Y, Z-0.94);
  127.         SetPlayerFacingAngle(playerid, A);
  128.         InShamal[playerid] = 0;
  129.     }
  130.     return 1;
  131. }
  132.  
  133. public OnPlayerDeath(playerid, killerid, reason)
  134. {
  135.     InShamal[playerid] = 0;
  136.     return 1;
  137. }
  138.  
  139. public OnVehicleDeath(vehicleid, killerid)
  140. {
  141.     if (GetVehicleModel(vehicleid) == 519 && ShamalExists(vehicleid) != 0)
  142.     {
  143.         CreateExplosion(ShamalPos[vehicleid][0], ShamalPos[vehicleid][1], ShamalPos[vehicleid][2], 2, 15.0);
  144.         sExplode[vehicleid] = SetTimerEx("ExplodeShamal", 700, 0, "d", vehicleid);
  145.         tCount[vehicleid] = true;
  146.     }
  147.     return 1;
  148. }
  149.  
  150. public OnVehicleSpawn(vehicleid)
  151. {
  152.     tCount[vehicleid] = false;
  153.     for (new i = 0; i != MAX_PLAYERS; i++)
  154.     {
  155.         if (InShamal[i] == vehicleid) SetPlayerHealth(i, 0.0);
  156.     }
  157.     return 1;
  158. }
  159.  
  160. public ExplodeShamal(vehicleid)
  161. {
  162.     KillTimer(sExplode[vehicleid]);
  163.     if (tCount[vehicleid])
  164.     {
  165.         CreateExplosion(ShamalPos[vehicleid][0], ShamalPos[vehicleid][1], ShamalPos[vehicleid][2], 2, 15.0);
  166.         sExplode[vehicleid] = SetTimerEx("ExplodeShamal", random(1300) + 100, 0, "d", vehicleid);
  167.     }
  168. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement