OnPlayerWeaponShot sometimes does not react?
#1

Код:
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
{
    new szString[144];
    format(szString, sizeof(szString), "Weapon %i fired. hittype: %i   hitid: %i   pos: %f, %f, %f", weaponid, hittype, hitid, fX, fY, fZ);
    SendClientMessage(playerid, -1, szString);

    return 1;
}
https://www.youtube.com/watch?v=dLGe...ature=*********

as you can see in the video, when you're shooting at certain points, OnPlayerWeaponShot doesnt react. What could be the cause of it?
Reply
#2

wrong topic
Reply
#3

Try debugging a bit further:
PHP код:
#if !defined PRESSED
#define PRESSED(%0) \
    
(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
#endif

public OnPlayerKeyStateChange(playeridnewkeysoldkeys)
{
    if (
PRESSED(KEY_FIRE) && !IsPlayerInAnyVehicle(playerid) && GetPlayerWeapon(playerid) != 0)
    {
        
SendClientMessage(playerid, -1"[Debug] Should have shot a bullet.");
        
SetTimerEx("DebugBulletInfo"500false"i"playerid);
    }
    return 
1;
}

forward DebugBulletInfo(playerid);
public 
DebugBulletInfo(playerid) {
      new 
lsString[128],
            
Float:fOriginXFloat:fOriginYFloat:fOriginZ,
            
Float:fHitPosXFloat:fHitPosYFloat:fHitPosZ;
        
GetPlayerLastShotVectors(playeridfOriginXfOriginYfOriginZfHitPosXfHitPosYfHitPosZ);
        
format(lsString128"Bullet info. launch pos: %f, %f, %f - hit pos: %f, %f, %f"fOriginXfOriginYfOriginZfHitPosXfHitPosYfHitPosZ);
        
SendClientMessage(playerid, -1lsString);

OBS: written straight from browser, might have some warnings.
Reply
#4

If no bullet is actually shot (which is the case when you shoot the sky or a target that is too far for the collision to be loaded), the callback won't be called. Simple as that.

The cause is a lack of a bullet.

Note: this is for the Sniper (since Sniper works a bit different from other guns). Take other weapons and it works (although the hit point retrieved by GetPlayerLastShotVector will be wrong - 23.040445, 0.0, 0.0 mostly - this depends where you are).
Reply
#5

Quote:
Originally Posted by NaS
Посмотреть сообщение
If no bullet is actually shot (which is the case when you shoot the sky or a target that is too far for the collision to be loaded), the callback won't be called. Simple as that.

The cause is a lack of a bullet.

Note: this is for the Sniper (since Sniper works a bit different from other guns). Take other weapons and it works (although the hit point retrieved by GetPlayerLastShotVector will be wrong - 23.040445, 0.0, 0.0 mostly).
Yes, I just find that out myself.
And I also found out that OnPlayerWeaponShot is not called if a bullet connects with a dynamic object. If you shoot object created with CreateObject it works fine, but if you shoot at dynmic object OnPlayerWeaponShot doesn't react
Reply
#6

Quote:
Originally Posted by ax1
Посмотреть сообщение
Yes, I just find that out myself.
And I also found out that OnPlayerWeaponShot is not called if a bullet connects with a dynamic object. If you shoot object created with CreateObject it works fine, but if you shoot at dynmic object OnPlayerWeaponShot doesn't react
Add the callback OnPlayerShootDynamicObject to your script (or any script) and it will work again.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)