MagicStyle 2 Posted June 3, 2015 Share Posted June 3, 2015 Hello,is it possible to check if someone was headshotted?the only headshot relating functions i found are these: Any REGISTER_PEDHEADSHOT(Ped ped)void UNREGISTER_PEDHEADSHOT(Ped ped)BOOL IS_PEDHEADSHOT_VALID(Ped ped)BOOL IS_PEDHEADSHOT_READY(Ped ped)char *GET_PEDHEADSHOT_TXD_STRING(Ped ped) Link to post Share on other sites
Jitnaught 422 Posted June 3, 2015 Share Posted June 3, 2015 (edited) BOOL PED::GET_PED_LAST_DAMAGE_BONE(Ped ped, Any *outBone)// 0xD75960F6BD9EA49C 0xAB933841 You'll have to find what the output for the head bone is. If the ped you are checking for a headshot has been killed, it may not work, as I tried this on IV and would always result in an error. Edited June 3, 2015 by LetsPlayOrDy MagicStyle 1 Link to post Share on other sites
c39687 62 Posted June 3, 2015 Share Posted June 3, 2015 getting the bone damaged from a dead ped worked fine for me in iv MagicStyle 1 Link to post Share on other sites
MagicStyle 2 Posted June 5, 2015 Author Share Posted June 5, 2015 (edited) Is there a list with the names of all bones? And with which ped do i have to call the function, i try to check this for EVERY pedestrian. Is there a table variable which contains all peds around the player? If not, how could i create one? Any ideas? Edited June 5, 2015 by MagicStyle Link to post Share on other sites
Jitnaught 422 Posted June 6, 2015 Share Posted June 6, 2015 Is there a list with the names of all bones? And with which ped do i have to call the function, i try to check this for EVERY pedestrian. Is there a table variable which contains all peds around the player? If not, how could i create one? Any ideas? I don't know of any list of all the bones, that's why I said you'll have to find it out yourself by shooting a ped in the head and then getting the value it returns. Here's some code that gets peds within ~200 feet of you. The distance can't be changed. int *handles = new int[maxAmount * 2 + 2]; //0 index is the size of the array handles[0] = maxAmount; int count = PED::GET_PED_NEARBY_PEDS(PLAYER::PLAYER_PED_ID(), (Any*)handles, -1); if (handles != NULL) { for (int i = 0; i < count; i++) { int offsettedID = i * 2 + 2; if (handles[offsettedID] != NULL && ENTITY::DOES_ENTITY_EXIST(handles[offsettedID])) { //the code you want to do to the ped } } } MagicStyle 1 Link to post Share on other sites
GeorgeZhang 25 Posted July 18, 2015 Share Posted July 18, 2015 is there a way to make ped immune to headshots? or reduce the damage of headshots?(with scipt of course) Link to post Share on other sites
Foxtrot64 2 Posted July 18, 2015 Share Posted July 18, 2015 Here's a list of bone indexes: http://pastebin.com/D7JMnX1g Lesnikus 1 Link to post Share on other sites
Lesnikus 14 Posted August 14, 2015 Share Posted August 14, 2015 Here's a list of bone indexes: http://pastebin.com/D7JMnX1g How to use it? I tried everything. I used a different number: Any iii = 31086; //or Any iii =1; Any iii = 18; etcif (PED::GET_PED_LAST_DAMAGE_BONE(peds[offsettedID], &iii)){ ENTITY::SET_ENTITY_HEALTH(playerPed, 0);} The condition is triggered, regardless of the damaged bone (leg, arm, head, and so there is no difference). Why is that? Link to post Share on other sites
InfamousSabre 223 Posted August 14, 2015 Share Posted August 14, 2015 (edited) A better question is: Why would it have worked that way at all? The function doesn't return anything other than: "Yes, this ped has a damaged bone." or "Nope, sorry. Couldn't find a damaged bone.". It has one output parameter. This is the damaged bone. You call the function, then, if it found a damaged bone, check the variable you used for the output parameter. Any bone;BOOL damaged;damaged = PED::GET_PED_LAST_DAMAGE_BONE(playerPed, &bone);if (damaged && bone == 31086) //or == 1, or == 18, etc{ ENTITY::SET_ENTITY_HEALTH(playerPed, 0);} Edited August 14, 2015 by InfamousSabre Lesnikus 1 Link to post Share on other sites
Lesnikus 14 Posted August 14, 2015 Share Posted August 14, 2015 A better question is: Why would it have worked that way at all? The function doesn't return anything other than: "Yes, this ped has a damaged bone." or "Nope, sorry. Couldn't find a damaged bone.". It has one output parameter. This is the damaged bone. You call the function, then, if it found a damaged bone, check the variable you used for the output parameter. Any bone;BOOL damaged;damaged = PED::GET_PED_LAST_DAMAGE_BONE(playerPed, &bone);if (damaged && bone == 31086) //or == 1, or == 18, etc{ ENTITY::SET_ENTITY_HEALTH(playerPed, 0);} You are a genius! It works. But can we find out what damaged the bone? Bullet, collision with a car, fire ... Link to post Share on other sites
InfamousSabre 223 Posted August 15, 2015 Share Posted August 15, 2015 As far as I know, no. Not without direct memory access anyway. Maybe one of those unknown natives though. Who knows? Link to post Share on other sites