Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #define BULLET_HIT_PETROL_TANK 0
- #define BULLET_HIT_LEFT_FRONT_WHEEL 1
- #define BULLET_HIT_RIGHT_FRONT_WHEEL 2
- #define BULLET_HIT_LEFT_BACK_WHEEL 3
- #define BULLET_HIT_RIGHT_BACK_WHEEL 4
- #define BULLET_HIT_VEHICLE 5
- new VehicleTire[MAX_VEHICLES][4];
- //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- //+++++++++[Admigo's OnPlayerShootVehiclePart Callback+++++++++
- //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- forward OnPlayerShootVehiclePart(playerid, weaponid, vehicleid,hittype);
- public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
- {
- switch(hittype)
- {
- case BULLET_HIT_TYPE_VEHICLE:
- {
- new Float:fSet[9];
- new modelid = GetVehicleModel(hitid);
- GetVehicleModelInfo(modelid, VEHICLE_MODEL_INFO_PETROLCAP,fSet[0], fSet[1], fSet[2]);
- GetVehicleModelInfo(modelid, VEHICLE_MODEL_INFO_WHEELSFRONT, fSet[3], fSet[4], fSet[5]);
- GetVehicleModelInfo(modelid, VEHICLE_MODEL_INFO_WHEELSREAR, fSet[6], fSet[7], fSet[8]);
- 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])
- {
- CallLocalFunction("OnPlayerShootVehiclePart", "iiii", playerid, weaponid, hitid,BULLET_HIT_PETROL_TANK);
- }
- 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)
- {
- CallLocalFunction("OnPlayerShootVehiclePart", "iiii", playerid, weaponid, hitid,BULLET_HIT_LEFT_FRONT_WHEEL);
- }
- 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)
- {
- CallLocalFunction("OnPlayerShootVehiclePart", "iiii", playerid, weaponid, hitid,BULLET_HIT_RIGHT_FRONT_WHEEL);
- }
- 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)
- {
- CallLocalFunction("OnPlayerShootVehiclePart", "iiii", playerid, weaponid, hitid,BULLET_HIT_LEFT_BACK_WHEEL);
- }
- 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)
- {
- CallLocalFunction("OnPlayerShootVehiclePart", "iiii", playerid, weaponid, hitid,BULLET_HIT_RIGHT_BACK_WHEEL);
- }
- CallLocalFunction("OnPlayerShootVehiclePart", "iiii", playerid, weaponid, hitid,BULLET_HIT_VEHICLE);
- }
- }
- #if defined hook_OnPlayerWeaponShot
- hook_OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ);
- #endif
- return 1;
- }
- #if defined _ALS_OnPlayerWeaponShot
- #undef OnPlayerWeaponShot
- #else
- #define _ALS_OnPlayerWeaponShot
- #endif
- #define OnPlayerWeaponShot hook_OnPlayerWeaponShot
- #if defined hook_OnPlayerWeaponShot
- forward hook_OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ);
- #endif
- public OnVehicleSpawn(vehicleid)
- {
- VehicleTire[vehicleid][0]=0;
- VehicleTire[vehicleid][1]=0;
- VehicleTire[vehicleid][2]=0;
- VehicleTire[vehicleid][3]=0;
- //return CallLocalFunction("hook_OnVehicleSpawn", "");
- #if defined hook_OnVehicleSpawn
- hook_OnVehicleSpawn(vehicleid);
- #endif
- return 1;
- }
- #if defined _ALS_OnVehicleSpawn
- #undef OnVehicleSpawn
- #else
- #define _ALS_OnVehicleSpawn
- #endif
- #define OnVehicleSpawn hook_OnVehicleSpawn
- #if defined hook_OnVehicleSpawn
- forward hook_OnVehicleSpawn(vehicleid);
- #endif
- stock SetVehicleTireStatus(vehicleid,tire)
- {
- new panels, doors, lights, tires;
- GetVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
- VehicleTire[vehicleid][tire-1]=1;
- if(VehicleTire[vehicleid][tire-1]==1)
- {
- tires=encode_tires(VehicleTire[vehicleid][0], VehicleTire[vehicleid][1], VehicleTire[vehicleid][2], VehicleTire[vehicleid][3]);
- UpdateVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
- }
- return 1;
- }
- encode_tires(tires1, tires2, tires3, tires4) {
- return tires1 | (tires2 << 1) | (tires3 << 2) | (tires4 << 3);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement