SA-MP Forums

Go Back   SA-MP Forums > SA-MP Scripting and Plugins > Filterscripts > Includes

Reply
 
Thread Tools Display Modes
Old 19/01/2014, 08:33 PM   #1
Admigo
High-roller
 
Admigo's Avatar
 
Join Date: Oct 2010
Location: The Netherlands
Posts: 1,840
Reputation: 297
Default [0.3z]a_OnPlayerShootVehiclePart

Hello.

Since i saw the great features of the new sa-mp 0.3z RC update i was thinking about detecting wheels and the petrol cap from all vehicles.
Whats new?
This include will add a new callback and new natives:
pawn Code:
#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_BODY 5

//GetVehicleTireStatus
#define VEHICLE_RIGHT_BACK_WHEEL 0
#define VEHICLE_RIGHT_FRONT_WHEEL 1
#define VEHICLE_LEFT_BACK_WHEEL 2
#define VEHICLE_LEFT_FRONT_WHEEL 3
//Callbacks
forward OnPlayerShootVehiclePart(playerid, weaponid, vehicleid,hittype);

//Natives
native EnableVehicleDamage(true/false); //Add this under OnGamemodeInit/OnFilterscriptInit to enable/disable.
native EnableVehiclePetrolCapExplosion(true/false);//Add this under OnGamemodeInit/OnFilterscriptInit to enable/disable.
native EnableVehicleWheelTirePop(true/false);//Add this under OnGamemodeInit/OnFilterscriptInit to enable/disable.
native ToggleVehicleDamage();//Toggle Vehicle Damage
native ToggleVehiclePetrolCapExplosion();//Toggle Vehicle Petrol Cap Explosion
native ToggleVehicleWheelTirePop();//Toggle Vehicle Wheel Tire Pop
native GetVehicleTireStatus(Vehicleid,Tire);//Checking the Vehicle Tire Status (Return 1 : Tire Popped - Return 0 : Tire Unpopped)

How to use?
1. Download the a_vshot.zip and extract it in the sa-mp folder.
2. Add #include <a_vshot.inc> on the top of your script
3. Add public OnPlayerShootVehiclePart(playerid, weaponid, vehicleid,hittype) in your script.

Example
This is an example how you can use this callback.
Example 1
pawn Code:
public OnPlayerShootVehiclePart(playerid, weaponid, vehicleid,hittype)
{
    if(hittype==BULLET_HIT_PETROL_TANK)//When player shoots on the petrol cap of a vehicle
    {
        new Float:vPosx,Float:vPosy,Float:vPosz;
        GetVehiclePos(vehicleid, vPosx,vPosy,vPosz);
        CreateExplosion(vPosx,vPosy,vPosz, 6, 30.0);
        SetVehicleToRespawn(vehicleid);
        SendClientMessage(playerid,-1,"You have hit the PETROL CAP!");
        return 1;
    }
    if(hittype==BULLET_HIT_LEFT_FRONT_WHEEL)//When player shoots on the left front wheel of a vehicle
    {
        if(GetVehicleTireStatus(vehicleid,VEHICLE_LEFT_FRONT_WHEEL)==0)
        {
            SetVehicleTireStatus(vehicleid,VEHICLE_LEFT_FRONT_WHEEL);//will pop the left front wheel tire
            SendClientMessage(playerid,-1,"You have hit the LEFT FRONT WHEEL!");
            return 1;
        }
        else SendClientMessage(playerid,-1,"The LEFT FRONT WHEEL TIRE is already popped!");
    }
    if(hittype==BULLET_HIT_RIGHT_FRONT_WHEEL)//When player shoots on the right front wheel of a vehicle
    {
        if(GetVehicleTireStatus(vehicleid,VEHICLE_RIGHT_FRONT_WHEEL)==0)
        {
            SetVehicleTireStatus(vehicleid,VEHICLE_RIGHT_FRONT_WHEEL);//will pop the right front wheel tire
            SendClientMessage(playerid,-1,"You have hit the RIGHT FRONT WHEEL!");
            return 1;
        }
        else SendClientMessage(playerid,-1,"The RIGHT FRONT WHEEL TIRE is already popped!");
    }
    if(hittype==BULLET_HIT_LEFT_BACK_WHEEL)//When player shoots on the left back wheel of a vehicle
    {
        if(GetVehicleTireStatus(vehicleid,VEHICLE_LEFT_BACK_WHEEL)==0)
        {
            SetVehicleTireStatus(vehicleid,VEHICLE_LEFT_BACK_WHEEL);//will pop the left back wheel tire
            SendClientMessage(playerid,-1,"You have hit the LEFT BACK WHEEL!");
            return 1;
        }
        else SendClientMessage(playerid,-1,"The LEFT BACK WHEEL TIRE is already popped!");
    }
    if(hittype==BULLET_HIT_RIGHT_BACK_WHEEL)//When player shoots on the right back wheel of a vehicle
    {
        if(GetVehicleTireStatus(vehicleid,VEHICLE_RIGHT_BACK_WHEEL)==0)
        {
            SetVehicleTireStatus(vehicleid,VEHICLE_RIGHT_BACK_WHEEL);//will pop the right back wheel tire
            SendClientMessage(playerid,-1,"You have hit the RIGHT BACK WHEEL!");
            return 1;
        }
        else SendClientMessage(playerid,-1,"The RIGHT BACK WHEEL TIRE is already popped!");
    }
    if(hittype==BULLET_HIT_BODY)//When player shoots on a vehicle
    {
        SendClientMessage(playerid,-1,"You have hit the VEHICLE!");
        return 1;
    }
    return 1;
}

Videos
http://www.youtube.com/watch?v=65I1y8hbWbk

Changelog
Code:
2.1
- Added native ToggleVehicleDamage();
- Added native ToggleVehiclePetrolCapExplosion();
- Added native ToggleVehicleWheelTirePop();
- Added native GetVehicleTireStatus(Vehicleid,Tire);
- Added new defines that can be used for GetVehiveTireStatus:
  #define VEHICLE_RIGHT_BACK_WHEEL
  #define VEHICLE_RIGHT_FRONT_WHEEL
  #define VEHICLE_LEFT_BACK_WHEEL
  #define VEHICLE_LEFT_FRONT_WHEEL
- Changed native EnableVehicleDamage(toggle);//now with toggle (true/false)
- Changed native EnableVehiclePetrolCapExplosion(toggle);//now with toggle (true/false)
- Changed native EnableVehicleWheelTirePop(toggle);//now with toggle (true/false)
- Fixed: Tires didnt popped good.

2.0
- Added EnableVehicleDamage(); 
- Added EnableVehiclePetrolCapExplosion();
- Added EnableVehicleWheelTirePop();
- Changed the define BULLET_HIT_VEHICLE to BULLET_HIT_BODY
- Fixed the Petrol Caps offsets. The Petrol Caps is now accurate.

1.0
- First Release
Future Updates
pawn Code:
- Improving Vehicle Parts offsets
- Adding bike support
- Adding middle wheels support (Thanks to king_hual for the suggestion)
- Adding more vehicle parts

Downloads

Version 2.1 (Latest)
https://dl.dropboxusercontent.com/u/...vshot_v2.1.zip
http://pastebin.com/6nUTazQR

Version 2.0
https://dl.dropboxusercontent.com/u/...a_vshot_v2.zip
http://pastebin.com/bJpdge4T

Version 1.0
https://dl.dropboxusercontent.com/u/...98/a_vshot.zip
http://pastebin.com/Sf3ybSUt

Notice
- Not all vehicles have the right offset for the vehicle parts (Wheels only). I will improve the offsets later.
- Explosive and Melee weapons will not do any damage to the vehicles.

Credits
- Admigo(Scripting)
- pds2k12(Fixed the callbacks hooks)
__________________
Follow me on Instagram @brandonvanommen

Last edited by Admigo; 20/01/2018 at 10:19 AM.
Admigo is offline   Reply With Quote
Old 19/01/2014, 08:37 PM   #2
Swedky
Banned
 
Join Date: Jun 2013
Location: Argentina.
Posts: 2,042
Reputation: 827
Default Respuesta: [0.3z]a_OnPlayerShootVehiclePart

Woooooow, nice!

+Rep .


PS: Pastebin? .
Swedky is offline   Reply With Quote
Old 19/01/2014, 08:39 PM   #3
Patrick
Guest
 
Posts: n/a
Default Re: [0.3z]a_OnPlayerShootVehiclePart

Nice, You have done it, Hope to see you improving the offset as we tested it lately that on some vehicle it will take you 5-6 shot to blow a vehicle tank up.
  Reply With Quote
Old 19/01/2014, 08:45 PM   #4
Admigo
High-roller
 
Admigo's Avatar
 
Join Date: Oct 2010
Location: The Netherlands
Posts: 1,840
Reputation: 297
Default Re: [0.3z]a_OnPlayerShootVehiclePart

Quote:
Originally Posted by EnzoMetlc View Post
Woooooow, nice!

+Rep .


PS: Pastebin? .
Thanks, pastebin added
Quote:
Originally Posted by pds2k12 View Post
Nice, You have done it, Hope to see you improving the offset as we tested it lately that on some vehicle it will take you 5-6 shot to blow a vehicle tank up.
Thanks, Yes i will improve the offsets later:P
__________________
Follow me on Instagram @brandonvanommen
Admigo is offline   Reply With Quote
Old 19/01/2014, 08:51 PM   #5
KingHual
Banned
 
Join Date: Jun 2010
Location: Bulgaria
Posts: 2,294
Reputation: 1389
Default Re: [0.3z]a_OnPlayerShootVehiclePart

Good job!
KingHual is offline   Reply With Quote
Old 19/01/2014, 09:05 PM   #6
Pottus
High-roller
 
Pottus's Avatar
 
Join Date: Jun 2012
Posts: 4,893
Reputation: 1321
Default Re: [0.3z]a_OnPlayerShootVehiclePart

You need to change the word "hitted" to "hit" there is no such word as "hitted" in the English language.
Pottus is offline   Reply With Quote
Old 19/01/2014, 09:13 PM   #7
Admigo
High-roller
 
Admigo's Avatar
 
Join Date: Oct 2010
Location: The Netherlands
Posts: 1,840
Reputation: 297
Default Re: [0.3z]a_OnPlayerShootVehiclePart

Quote:
Originally Posted by [uL]Pottus View Post
You need to change the word "hitted" to "hit" there is no such word as "hitted" in the English language.
Sorry, i am not perfect.
Changed.
__________________
Follow me on Instagram @brandonvanommen

Last edited by Admigo; 21/01/2014 at 07:55 PM.
Admigo is offline   Reply With Quote
Old 20/01/2014, 03:26 PM   #8
Akcent_Voltaj
Gangsta
 
Join Date: Jul 2012
Posts: 943
Reputation: 17
Default Re: [0.3z]a_OnPlayerShootVehiclePart

cool Repped!!!!
__________________
93.119.26.225:7777



Don't Copy My Work!
PS: Am prea multi fani si lumea ma copiaza
Akcent_Voltaj is offline   Reply With Quote
Old 20/01/2014, 04:24 PM   #9
iZN
High-roller
 
Join Date: Jun 2010
Posts: 2,376
Reputation: 569
Default Re: [0.3z]a_OnPlayerShootVehiclePart

Nice work Admigo.
__________________
iZN is offline   Reply With Quote
Old 20/01/2014, 04:58 PM   #10
Lordzy
High-roller
 
Lordzy's Avatar
 
Join Date: Mar 2012
Location: NetherRealm
Posts: 2,702
Reputation: 1176
Default Re: [0.3z]a_OnPlayerShootVehiclePart

Nice work!
__________________
Currently inactive - I don't play at any SA-MP servers nor work on anything in PAWN for now. The projects that I've done so far in PAWN, which requires updates will be taking some time.
Lordzy is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off



All times are GMT. The time now is 08:45 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.