Advertisement
Admigo

[0.3z]a_OnPlayerShootVehiclePart

Jan 19th, 2014
421
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.05 KB | None | 0 0
  1. #include <a_samp>
  2.  
  3. #define BULLET_HIT_PETROL_TANK 0
  4. #define BULLET_HIT_LEFT_FRONT_WHEEL 1
  5. #define BULLET_HIT_RIGHT_FRONT_WHEEL 2
  6. #define BULLET_HIT_LEFT_BACK_WHEEL 3
  7. #define BULLET_HIT_RIGHT_BACK_WHEEL 4
  8. #define BULLET_HIT_VEHICLE 5
  9.  
  10. new VehicleTire[MAX_VEHICLES][4];
  11.  
  12. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  13. //+++++++++[Admigo's OnPlayerShootVehiclePart Callback+++++++++
  14. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  15.  
  16. forward OnPlayerShootVehiclePart(playerid, weaponid, vehicleid,hittype);
  17.  
  18. public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
  19. {
  20.     switch(hittype)
  21.     {
  22.         case BULLET_HIT_TYPE_VEHICLE:
  23.         {
  24.             new Float:fSet[9];
  25.             new modelid = GetVehicleModel(hitid);
  26.             GetVehicleModelInfo(modelid, VEHICLE_MODEL_INFO_PETROLCAP,fSet[0], fSet[1], fSet[2]);
  27.             GetVehicleModelInfo(modelid, VEHICLE_MODEL_INFO_WHEELSFRONT, fSet[3], fSet[4], fSet[5]);
  28.             GetVehicleModelInfo(modelid, VEHICLE_MODEL_INFO_WHEELSREAR,  fSet[6], fSet[7], fSet[8]);
  29.            
  30.             if(fX >= fSet[0]-0.15 && fX <= fSet[0]+0.15 && fY >= fSet[1]-0.05 && fY <= fSet[1]+0.15 && fZ >= fSet[2]-0.15 && fZ <= fSet[2])
  31.             {
  32.                 CallLocalFunction("OnPlayerShootVehiclePart", "iiii", playerid, weaponid, hitid,BULLET_HIT_PETROL_TANK);
  33.                
  34.             }
  35.             else if(fX >= fSet[3]-2.4 && fX <= fSet[3] && fY >= fSet[4]-0.4 && fY <= fSet[4]+0.4 && fZ >= fSet[5]-0.4 && fZ <= fSet[5]+0.4)
  36.             {
  37.                 CallLocalFunction("OnPlayerShootVehiclePart", "iiii", playerid, weaponid, hitid,BULLET_HIT_LEFT_FRONT_WHEEL);
  38.             }
  39.             else if(fX >= fSet[3]-0.4 && fX <= fSet[3]+0.4 && fY >= fSet[4]-0.4 && fY <= fSet[4]+0.4 && fZ >= fSet[5]-0.4 && fZ <= fSet[5]+0.4)
  40.             {
  41.                 CallLocalFunction("OnPlayerShootVehiclePart", "iiii", playerid, weaponid, hitid,BULLET_HIT_RIGHT_FRONT_WHEEL);
  42.             }
  43.             else if(fX >= fSet[6]-2.4 && fX <= fSet[6] && fY >= fSet[7]-0.4 && fY <= fSet[7]+0.4 && fZ >= fSet[8]-0.4 && fZ <= fSet[8]+0.4)
  44.             {
  45.                 CallLocalFunction("OnPlayerShootVehiclePart", "iiii", playerid, weaponid, hitid,BULLET_HIT_LEFT_BACK_WHEEL);
  46.             }
  47.             else if(fX >= fSet[6]-0.4 && fX <= fSet[6]+0.4 && fY >= fSet[7]-0.4 && fY <= fSet[7]+0.4 && fZ >= fSet[8]-0.4 && fZ <= fSet[8]+0.4)
  48.             {
  49.                 CallLocalFunction("OnPlayerShootVehiclePart", "iiii", playerid, weaponid, hitid,BULLET_HIT_RIGHT_BACK_WHEEL);
  50.             }
  51.             CallLocalFunction("OnPlayerShootVehiclePart", "iiii", playerid, weaponid, hitid,BULLET_HIT_VEHICLE);
  52.         }
  53.     }
  54.     #if defined hook_OnPlayerWeaponShot
  55.         hook_OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ);
  56.     #endif
  57.     return 1;
  58. }
  59.  
  60. #if defined _ALS_OnPlayerWeaponShot
  61.     #undef OnPlayerWeaponShot  
  62. #else
  63.     #define _ALS_OnPlayerWeaponShot
  64. #endif
  65.  
  66. #define OnPlayerWeaponShot hook_OnPlayerWeaponShot
  67.  
  68. #if defined hook_OnPlayerWeaponShot
  69.     forward hook_OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ);
  70. #endif
  71.  
  72. public OnVehicleSpawn(vehicleid)
  73. {
  74.     VehicleTire[vehicleid][0]=0;
  75.     VehicleTire[vehicleid][1]=0;
  76.     VehicleTire[vehicleid][2]=0;
  77.     VehicleTire[vehicleid][3]=0;
  78.     //return CallLocalFunction("hook_OnVehicleSpawn", "");
  79.     #if defined hook_OnVehicleSpawn
  80.         hook_OnVehicleSpawn(vehicleid);
  81.     #endif
  82.     return 1;
  83. }
  84.  
  85. #if defined _ALS_OnVehicleSpawn
  86. #undef OnVehicleSpawn  
  87. #else
  88. #define _ALS_OnVehicleSpawn
  89. #endif
  90. #define OnVehicleSpawn hook_OnVehicleSpawn
  91.  
  92. #if defined hook_OnVehicleSpawn
  93.     forward hook_OnVehicleSpawn(vehicleid);
  94. #endif
  95.  
  96. stock SetVehicleTireStatus(vehicleid,tire)
  97. {
  98.     new panels, doors, lights, tires;
  99.     GetVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
  100.     VehicleTire[vehicleid][tire-1]=1;
  101.     if(VehicleTire[vehicleid][tire-1]==1)
  102.     {
  103.         tires=encode_tires(VehicleTire[vehicleid][0], VehicleTire[vehicleid][1], VehicleTire[vehicleid][2], VehicleTire[vehicleid][3]);
  104.         UpdateVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
  105.     }
  106.     return 1;
  107. }
  108.  
  109. encode_tires(tires1, tires2, tires3, tires4) {
  110.  
  111.     return tires1 | (tires2 << 1) | (tires3 << 2) | (tires4 << 3);
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement