Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- SA-MP Exploding Petroltank Filterscript
- Copyright © 2011 RyDeR`
- */
- #include <a_samp>
- #define FILTERSCRIPT
- #define VERSION "v0.1.0"
- public OnFilterScriptInit()
- {
- printf("\n » Petrolcap Explosion [" VERSION "] (by RyDeR`) has been loaded. \n");
- return 1;
- }
- public OnFilterScriptExit()
- {
- printf("\n » Petrolcap Explosion [" VERSION "] (by RyDeR`) has been unloaded. \n");
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- #define PRESSED(%0) \
- (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
- if(PRESSED(KEY_FIRE) && GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
- {
- new
- Float: vehPos[3],
- Float: vehAngle,
- Float: capOffsets[3]
- ;
- for(new vehicleID = 1; vehicleID <= MAX_VEHICLES; ++vehicleID)
- {
- if(GetVehiclePos(vehicleID, vehPos[0], vehPos[1], vehPos[2]))
- {
- GetVehicleZAngle(vehicleID, vehAngle);
- if(GetPetrolcapOffsets(GetVehicleModel(vehicleID), capOffsets[0], capOffsets[1], capOffsets[2]))
- {
- vehPos[0] += (floatcos(vehAngle, degrees) * capOffsets[0]) - (floatsin(vehAngle, degrees) * capOffsets[1]);
- vehPos[1] += (floatsin(vehAngle, degrees) * capOffsets[0]) + (floatcos(vehAngle, degrees) * capOffsets[1]);
- vehPos[2] += capOffsets[2];
- if(IsPlayerAimingAtPoint(playerid, vehPos[0], vehPos[1], vehPos[2], 0.1))
- {
- SetVehicleHealth(vehicleID, 0.0);
- CreateExplosion(vehPos[0], vehPos[1], vehPos[2], 0, random(3) + 4.0);
- break;
- }
- }
- }
- }
- }
- #undef PRESSED
- return 1;
- }
- stock Float: GetDistanceCameraToLocation(Float: cam_X, Float: cam_Y, Float: cam_Z, Float: vect_X, Float: vect_Y, Float: vect_Z, Float: dest_X, Float: dest_Y, Float: dest_Z, Float: targetDist = 0.0)
- {
- cam_X -= dest_X;
- cam_Y -= dest_Y;
- cam_Z -= dest_Z;
- targetDist = floatsqroot(cam_X * cam_X + cam_Y * cam_Y + cam_Z * cam_Z);
- cam_X += vect_X * targetDist;
- cam_Y += vect_Y * targetDist;
- cam_Z += vect_Z * targetDist;
- return floatsqroot(cam_X * cam_X + cam_Y * cam_Y + cam_Z * cam_Z);
- }
- stock IsPlayerAimingAtPoint(playerid, Float: pos_X, Float: pos_Y, Float: pos_Z, Float: aimRadius)
- {
- new
- Float: cam_Pos[3],
- Float: cam_Vect[3]
- ;
- GetPlayerCameraPos(playerid, cam_Pos[0], cam_Pos[1], cam_Pos[2]);
- GetPlayerCameraFrontVector(playerid, cam_Vect[0], cam_Vect[1], cam_Vect[2]);
- new
- Float: aimOffset
- ;
- switch(GetPlayerWeapon(playerid))
- {
- case 22, 23, 24, 25, 26, 27, 28, 29, 32, 38: aimOffset = -2.1;
- case 30, 31: aimOffset = -1.3;
- case 33: aimOffset = -0.9;
- case 34: return GetDistanceCameraToLocation(cam_Pos[0], cam_Pos[1], cam_Pos[2], cam_Vect[0], cam_Vect[1], cam_Vect[2], pos_X, pos_Y, pos_Z) < aimRadius;
- default: return 0;
- }
- new
- Float: aimAngle = atan2(cam_Vect[2], floatsqroot(cam_Vect[0] * cam_Vect[0] + cam_Vect[1] * cam_Vect[1])),
- Float: tmpVar
- ;
- cam_Vect[2] = floatcos(aimAngle + (aimOffset * -2), degrees) * floatsin(-(atan2(cam_Vect[1], cam_Vect[0]) + aimOffset + 270.0), degrees);
- tmpVar = floatcos(aimAngle + (aimOffset * -2), degrees) * floatcos(-(atan2(cam_Vect[1], cam_Vect[0]) + aimOffset + 270.0), degrees);
- return GetDistanceCameraToLocation(cam_Pos[0], cam_Pos[1], cam_Pos[2], cam_Vect[2], tmpVar, floatsin(aimAngle + (aimOffset * -2), degrees), pos_X, pos_Y, pos_Z) < aimRadius;
- }
- stock GetPetrolcapOffsets(modelID, &Float: aimOffset_X, &Float: aimOffset_Y, &Float: aimOffset_Z)
- {
- enum e_PetrolcapData
- {
- e_ModelID,
- Float: e_Offset_X,
- Float: e_Offset_Y,
- Float: e_Offset_Z
- };
- static const
- g_PetrolcapData[][e_PetrolcapData] =
- {
- { 400, -1.100, -2.059, -0.070 },
- { 401, 1.090, -0.939, 0.000 },
- { 402, 1.039, -1.919, 0.140 },
- { 403, -1.450, 0.070, -0.800 },
- { 404, -0.939, -2.359, -0.009 },
- { 405, -1.039, -2.180, -0.039 },
- { 407, -1.110, -3.660, -0.540 },
- { 408, -1.230, 1.299, -0.660 },
- { 409, -0.980, -2.829, 0.119 },
- { 410, -1.019, -1.669, 0.209 },
- { 411, 1.090, -2.099, 0.090 },
- { 412, 0.000, -3.549, -0.170 },
- { 413, -1.049, 0.340, -0.529 },
- { 414, -0.920, -0.740, -0.699 },
- { 415, -1.129, -2.069, 0.019 },
- { 416, -1.350, -2.740, -0.189 },
- { 418, -1.179, -1.769, -0.019 },
- { 418, 1.210, -1.570, -0.079 },
- { 419, -1.080, -1.990, 0.029 },
- { 420, -1.100, -2.150, 0.100 },
- { 421, -1.070, -2.440, -0.170 },
- { 422, -1.080, -0.419, -0.200 },
- { 423, -1.169, -1.899, -0.319 },
- { 424, 0.180, 1.080, 0.430 },
- { 426, -1.100, -2.150, 0.090 },
- { 427, -1.269, -3.200, -0.159 },
- { 428, -1.009, -3.059, -0.490 },
- { 429, 0.990, -2.140, 0.140 },
- { 431, -1.450, -5.469, -0.129 },
- { 433, -1.519, 0.159, -0.680 },
- { 434, -0.730, -1.580, 0.289 },
- { 436, -1.070, -1.820, 0.140 },
- { 437, -1.490, -4.969, -0.500 },
- { 438, -1.090, -1.929, -0.019 },
- { 439, -1.110, -1.509, 0.059 },
- { 440, -1.090, -0.460, -0.419 },
- { 442, -1.210, -2.210, 0.059 },
- { 443, -1.529, 1.240, -0.899 },
- { 444, 0.000, -2.599, -0.059 },
- { 445, -1.039, -1.940, 0.129 },
- { 451, 1.059, -1.220, -0.039 },
- { 455, -1.529, -0.009, -0.759 },
- { 456, 0.790, -0.050, -0.610 },
- { 458, -1.110, -2.049, -0.109 },
- { 459, -0.819, -2.390, -0.479 },
- { 459, -1.049, -2.289, 0.219 },
- { 461, 0.000, 0.140, 0.540 },
- { 463, 0.000, 0.170, 0.469 },
- { 466, 0.000, -3.000, -0.129 },
- { 467, -1.070, -2.299, 0.119 },
- { 468, 0.000, 0.009, 0.409 },
- { 470, -1.259, -2.380, 0.239 },
- { 475, -1.070, -1.600, 0.129 },
- { 477, -1.200, -1.529, 0.239 },
- { 478, 1.090, -0.340, 0.230 },
- { 479, -1.090, -1.970, 0.029 },
- { 480, -1.000, -0.879, 0.100 },
- { 482, 1.070, -2.190, 0.000 },
- { 483, 0.930, -2.509, -0.039 },
- { 485, -0.889, 0.720, 0.019 },
- { 486, -0.699, -3.170, 0.579 },
- { 489, 1.159, -0.740, 0.000 },
- { 490, 1.370, -1.250, 0.000 },
- { 491, -1.070, -2.180, 0.000 },
- { 492, -0.980, -2.240, 0.119 },
- { 494, -1.019, -2.200, 0.119 },
- { 495, 1.210, -1.909, -0.100 },
- { 496, 1.059, -1.860, 0.150 },
- { 498, -1.299, -0.009, 0.090 },
- { 499, -1.110, -1.070, -0.349 },
- { 500, -0.980, -1.710, -0.070 },
- { 502, -1.080, -1.879, 0.140 },
- { 503, -1.100, -2.049, 0.029 },
- { 504, 0.000, -3.000, -0.129 },
- { 504, -1.159, -1.830, 0.109 },
- { 505, 1.159, -0.740, 0.000 },
- { 506, 1.049, -1.110, -0.050 },
- { 507, -1.169, -2.299, 0.109 },
- { 508, -1.379, -3.049, -0.670 },
- { 514, 1.429, 0.379, -0.649 },
- { 515, -1.450, 0.479, -1.309 },
- { 516, -1.100, -2.450, -0.029 },
- { 517, -1.179, -1.950, 0.070 },
- { 518, 1.210, -2.190, -0.070 },
- { 521, 0.000, 0.129, 0.610 },
- { 522, 0.000, 0.140, 0.610 },
- { 523, 0.000, 0.150, 0.550 },
- { 524, 1.529, 0.479, -0.990 },
- { 525, -1.389, -0.509, -0.090 },
- { 526, -0.990, -1.960, 0.059 },
- { 527, -1.139, -1.690, 0.140 },
- { 528, -1.090, -2.029, 0.119 },
- { 529, -1.200, -2.220, 0.200 },
- { 531, -0.009, 0.819, 0.430 },
- { 533, 1.019, -1.960, 0.140 },
- { 534, -1.039, -0.819, -0.200 },
- { 535, -1.200, -0.560, 0.270 },
- { 536, -1.070, -1.690, 0.090 },
- { 540, -1.169, -2.519, -0.019 },
- { 541, 1.009, -1.990, 0.150 },
- { 542, -1.120, -1.919, 0.310 },
- { 543, -1.100, -0.949, 0.000 },
- { 544, -1.299, 2.069, 0.319 },
- { 545, 0.000, -2.220, -0.319 },
- { 546, 1.090, -2.029, 0.150 },
- { 547, -1.169, -2.009, 0.119 },
- { 549, -1.080, -1.179, 0.219 },
- { 550, -1.070, -2.490, 0.039 },
- { 551, -1.149, -2.670, 0.090 },
- { 552, -1.289, -0.959, 0.490 },
- { 554, 1.210, -2.390, 0.119 },
- { 555, -0.790, -1.500, 0.180 },
- { 557, 1.190, -2.569, 0.850 },
- { 558, -1.090, -1.940, 0.270 },
- { 559, -1.080, -1.710, 0.270 },
- { 560, 1.139, -1.899, 0.129 },
- { 561, 1.110, -2.299, 0.109 },
- { 562, 1.039, -0.699, 0.070 },
- { 565, 0.910, -0.870, 0.029 },
- { 566, 1.080, -2.440, 0.019 },
- { 567, 0.000, -2.859, -0.460 },
- { 568, -0.500, -0.660, 0.379 },
- { 571, 0.000, 0.189, 0.019 },
- { 572, -0.379, -0.970, 0.159 },
- { 573, -1.179, 0.479, -0.479 },
- { 574, -0.750, -0.970, 0.280 },
- { 575, 0.000, -2.779, -0.050 },
- { 576, 0.000, -3.160, -0.250 },
- { 578, -1.240, 2.910, -0.019 },
- { 579, 1.220, -2.299, 0.170 },
- { 580, 1.190, -1.820, 0.239 },
- { 581, 0.000, 0.129, 0.540 },
- { 582, -1.059, 0.140, -0.280 },
- { 583, -0.759, 0.409, -0.059 },
- { 584, 0.000, 0.000, 0.000 },
- { 585, 1.139, -2.299, 0.200 },
- { 587, -1.230, -1.220, 0.100 },
- { 588, -1.460, -2.160, 0.219 },
- { 589, 0.980, -0.889, 0.119 },
- { 596, -1.110, -2.160, 0.100 },
- { 597, -1.100, -2.150, 0.100 },
- { 598, -1.080, -1.960, 0.159 },
- { 599, 1.159, -0.740, 0.000 },
- { 600, 1.090, -2.029, 0.079 },
- { 601, -1.330, -1.690, 0.920 },
- { 602, 1.090, -1.990, 0.109 },
- { 603, 1.179, -2.190, -0.079 },
- { 604, 0.000, -3.000, -0.129 },
- { 605, -1.100, -0.949, 0.000 },
- { 609, -1.299, 0.000, 0.100 }
- }
- ;
- for(new i; i < sizeof(g_PetrolcapData); ++i)
- {
- if(g_PetrolcapData[i][e_ModelID] == modelID)
- {
- aimOffset_X = g_PetrolcapData[i][e_Offset_X];
- aimOffset_Y = g_PetrolcapData[i][e_Offset_Y];
- aimOffset_Z = g_PetrolcapData[i][e_Offset_Z];
- return 1;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement