Workaround for OnPlayerWeaponShot
#1

So okay, for some reason (I just noticed) OnPlayerWeaponShot doesn't get called with bombs and rocket launchers.

PHP код:
public OnPlayerWeaponShot(playeridweaponidhittypehitidFloat:fXFloat:fYFloat:fZ) {
    print(
"OnPlayerWeaponShot called");
    
printf("Weapon ID: %i :: Ammo: %i",GetPlayerWeapon(playerid),GetPlayerAmmo(playerid));
    
printf("Weapon ID: %i :: Ammo: %i",weaponid,GetPlayerAmmo(playerid));
    return 
1;

Tested with that code.

Now, there is only 1 work around I found for bombs and thats it with KeyStateChange

PHP код:
public OnPlayerKeyStateChange(playeridnewkeysoldkeys)
{
    if ((
newkeys KEY_FIRE) && !(oldkeys KEY_FIRE)) {
        if(
GetPlayerWeapon(playerid) == 16) {
            
printf("Weapon ID: %i :: Ammo: %i",GetPlayerWeapon(playerid),GetPlayerAmmo(playerid));
        }
    }
    return 
1;

But is there another way for it?
Reply
#2

The problem is basically

PHP код:
public CheckPlayerWeapons(playerid) {
    new 
weapons[13][2];
    for (new 
0<= 12i++) {
        
GetPlayerWeaponData(playeridiweapons[i][0], weapons[i][1]);
        if(
weapons[i][0] != PlayerWeapon[playerid][i][P_WeaponID] || weapons[i][1] != PlayerWeapon[playerid][i][P_Ammo]) {
            if(
weapons[i][0] != 0) {
                new 
string[128];
                
format(string,sizeof(string),"Suspicious weapons on %s: %i %i",GetName(playerid),weapons[i][0], weapons[i][1]);
                
SendClientMessageToAll(COLOR_RED,string);
                
ResetPlayerWeaponsEx(playerid);
            }
        }
    }

Thats how I check if player has the difference in his weapons aka if there are any new weapons they should have or if ammo doesnt match


Now with RPG and Bombs, it will never match for some reason.

PHP код:
public OnPlayerKeyStateChange(playeridnewkeysoldkeys)
{
    new 
weapons[13][2];
    if ((
newkeys KEY_FIRE) && !(oldkeys KEY_FIRE)) { //bombs
        
if(GetPlayerWeapon(playerid) == 16) {
            for (new 
0<= 12i++) {
                
GetPlayerWeaponData(playeridiweapons[i][0], weapons[i][1]);
                
PlayerWeapon[playerid][i][P_WeaponID] = weapons[i][0];
                
PlayerWeapon[playerid][i][P_Ammo] = weapons[i][1];
            }
        }
    }
    if (
HOLDINGKEY_FIRE ) && (PRESSEDKEY_FIRE ))) { //rockets
        
if(GetPlayerWeapon(playerid) == 35) {
            for (new 
0<= 12i++) {
                
GetPlayerWeaponData(playeridiweapons[i][0], weapons[i][1]);
                
PlayerWeapon[playerid][i][P_WeaponID] = weapons[i][0];
                
PlayerWeapon[playerid][i][P_Ammo] = weapons[i][1];
            }
        }
    }
    
    return 
1;

Everything else works correctly but bombs and rpg's dont..
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)