If i kill a player with deagle he die and OnPlayerDeath is called (the message "you killed X" appear) but if i kill with m4 or mp5 message or something functions from OnPlayerDeath doesn't appear (sometimes yes, sometimes not). I think is from OnPlayerGiveDamage because this function call "OnPlayerDeath". Idk what's wrong, please helpp, i'll give +3 rep.
Код:
public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid, bodypart)
{
if(damagedid != INVALID_PLAYER_ID)
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) return 1;
if(GetPlayerSurfingVehicleID(playerid) != INVALID_VEHICLE_ID) return 1;
if(amount < 0)
{
new string[128],sendername[25];
GetPlayerName(playerid,sendername,sizeof(sendername));
format(string,sizeof(string),"[AdmInfo]: %s(%d) it is possible to use global kill, hp amount %.2f.(GIVE)",sendername,playerid,amount);
ABroadCast(0xf03337FF,string,1);
Kick(playerid);
return 1;
}
if(playerdeath[damagedid] == 0)
{
if(weaponid == 34)
{
SetPlayerHealthEx(damagedid, 0.0);
SetPlayerArmourEx(damagedid, 0.0);
OnPlayerDeath(damagedid,playerid,weaponid);
playerdeath[damagedid] = 1;
return 1;
}
new Float: HP, Float: AP ;
GetPlayerHealthEx(damagedid,HP);
GetPlayerArmourEx(damagedid,AP);
if ( AP >= amount )
{
SetPlayerArmourEx ( damagedid, AP - amount );
}
else if ( AP <= 0 )
{
new const Float: remainHP = HP - amount;
SetPlayerHealthEx ( damagedid, remainHP );
if ( remainHP <= 0 )
{
OnPlayerDeath( damagedid, playerid, weaponid );
playerdeath[damagedid] = 1;
return 1;
}
}
else
{
new const Float: remainHP = HP + ( AP - amount );
SetPlayerArmourEx ( damagedid, 0.0 );
SetPlayerHealthEx ( damagedid, remainHP );
if ( remainHP <= 0 )
{
OnPlayerDeath( damagedid, playerid, weaponid );
playerdeath[damagedid] = 1;
return 1;
}
}
if(PlayerCuffed[damagedid] == 1)
{
SetPlayerHealthEx(damagedid,100);
}
if(PlayerInfo[damagedid][pSleeping] == 1)
{
SetPlayerHealthEx(damagedid, 100);
}
new Float:xx1,Float:yy1,Float:zz1;
GetPlayerPos(playerid,xx1,yy1,zz1);
new factiuneid;
factiuneid = PlayerInfo[playerid][pMember];
if(IsPlayerInArea(playerid, 1440.428, -1741.078, 1622.964, -1595.012)) // lspd
{
if(IsACop(playerid) && PlayerInfo[damagedid][pWantedLevel] > 0)
{
return 1;
}
if(InWar[factiuneid] == 1)
{
return 1;
}
if(GoChase[playerid] != 999)
{
return 1;
}
else
{
TogglePlayerControllable(playerid, 0);
SCM(playerid, COLOR_LIGHTRED, "Ai primit freeze 3 secunde pentru ca ai atacat un jucator in Safe-Zone!");
SetTimerEx("freezetimer",3000, false, "i", playerid);
}
}
if(IsPlayerInArea(playerid, 371.8314, -2104.27, 455.4938, -1910.831)) // Fish
{
if(IsACop(playerid) && PlayerInfo[damagedid][pWantedLevel] > 0)
{
return 1;
}
if(GoChase[playerid] != 999)
{
return 1;
}
else
{
TogglePlayerControllable(playerid, 0);
SCM(playerid, COLOR_LIGHTRED, "Ai primit freeze 3 secunde pentru ca ai atacat un jucator in Safe-Zone!");
SetTimerEx("freezetimer",3000, false, "i", playerid);
}
}
if(IsPlayerInArea(playerid, -280.269, -420.4035, 81.74512, -163.4902)) // Camionagiu
{
if(IsACop(playerid) && PlayerInfo[damagedid][pWantedLevel] > 0)
{
return 1;
}
if(GoChase[playerid] != 999)
{
return 1;
}
else
{
TogglePlayerControllable(playerid, 0);
SCM(playerid, COLOR_LIGHTRED, "Ai primit freeze 3 secunde pentru ca ai atacat un jucator in Safe-Zone!");
SetTimerEx("freezetimer",3000, false, "i", playerid);
}
}
if(IsPlayerInArea(playerid, 622.8186, -1405.52, 828.1717, -1330.513)) // cnn
{
if(IsACop(playerid) && PlayerInfo[damagedid][pWantedLevel] > 0)
{
return 1;
}
if(InWar[factiuneid] == 1)
{
return 1;
}
if(GoChase[playerid] != 999)
{
return 1;
}
else
{
TogglePlayerControllable(playerid, 0);
SCM(playerid, COLOR_LIGHTRED, "Ai primit freeze 3 secunde pentru ca ai atacat un jucator in Safe-Zone!");
SetTimerEx("freezetimer",3000, false, "i", playerid);
}
}
if(IsPlayerInArea(playerid, 1695.218, -1966.099, 1824.515, -1606.855)) // spawn & DMV
{
if(IsACop(playerid) && PlayerInfo[damagedid][pWantedLevel] > 0)
{
return 1;
}
if(InWar[factiuneid] == 1)
{
return 1;
}
if(GoChase[playerid] != 999)
{
return 1;
}
else
{
TogglePlayerControllable(playerid, 0);
SCM(playerid, COLOR_LIGHTRED, "Ai primit freeze 3 secunde pentru ca ai atacat un jucator in Safe-Zone!");
SetTimerEx("freezetimer",3000, false, "i", playerid);
}
}
if(IsPlayerInArea(playerid, 1706.627, -1227.872, 1854.937, -1133.126)) // gsls
{
if(IsACop(playerid) && PlayerInfo[damagedid][pWantedLevel] > 0)
{
return 1;
}
if(PlayerInfo[playerid][pWantedLevel] > 0)
{
return 1;
}
if(InWar[factiuneid] == 1)
{
return 1;
}
if(GoChase[playerid] != 999)
{
return 1;
}
else
{
TogglePlayerControllable(playerid, 0);
SCM(playerid, COLOR_LIGHTRED, "Ai primit freeze 3 secunde pentru ca ai atacat un jucator in Safe-Zone!");
SetTimerEx("freezetimer",3000, false, "i", playerid);
}
}
if(IsPlayerInArea(playerid, 1390.991, -1058.119, 1569.725, -951.5297)) // banca
{
if(IsACop(playerid) && PlayerInfo[damagedid][pWantedLevel] > 0)
{
return 1;
}
if(PlayerInfo[playerid][pWantedLevel] > 0)
{
return 1;
}
if(InWar[factiuneid] == 1)
{
return 1;
}
if(GoChase[playerid] != 999)
{
return 1;
}
else
{
TogglePlayerControllable(playerid, 0);
SCM(playerid, COLOR_LIGHTRED, "Ai primit freeze 3 secunde pentru ca ai atacat un jucator in Safe-Zone!");
SetTimerEx("freezetimer",3000, false, "i", playerid);
}
}
if(IsPlayerInArea(playerid, -583.8938, -1553.157, -163.4902, -1249.533)) // banca
{
if(IsACop(playerid) && PlayerInfo[damagedid][pWantedLevel] > 0)
{
return 1;
}
if(PlayerInfo[playerid][pWantedLevel] > 0)
{
return 1;
}
if(InWar[factiuneid] == 1)
{
return 1;
}
if(GoChase[playerid] != 999)
{
return 1;
}
else
{
TogglePlayerControllable(playerid, 0);
SCM(playerid, COLOR_LIGHTRED, "Ai primit freeze 3 secunde pentru ca ai atacat un jucator in Safe-Zone!");
SetTimerEx("freezetimer",3000, false, "i", playerid);
}
}
if(tazer[playerid] == 1 && IsACop(playerid) && weaponid == 24)
{
if(IsACop(damagedid)) return SendClientMessage(playerid, 0xFFB870FF, "Nu puteti utiliza tazer-ul pe politisti.");
if(PlayerCuffed[damagedid] == 1) return SendClientMessage(playerid, 0xFFB870FF, "Acest jucator este deja electrocutat.");
if(PlayerInfo[damagedid][pSleeping] == 1) return SendClientMessage(playerid, 0xFFB870FF, "Jucator electrocutat");
if(GetDistanceBetweenPlayers(playerid,damagedid) < 15)
{
new string[126],sendername[25],giveplayer[25];
GetPlayerName(playerid,sendername,sizeof(sendername));
GetPlayerName(damagedid,giveplayer,sizeof(giveplayer));
format(string, sizeof(string), "* Ai fost electrocutat de %s pentru 8 secunde.", sendername);
SendClientMessage(damagedid, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), "* You tazed %s for 8 seconds.", giveplayer);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), "* %s shoots with his tazer at %s, and tazed him.", sendername ,giveplayer);
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
GameTextForPlayer(damagedid, "~r~~h~Tazed", 2500, 3);
TogglePlayerControllable(damagedid, 0);
PlayerCuffed[damagedid] = 1;
PlayerCuffedTime[damagedid] = 8;
SetPlayerHealthEx(damagedid,100);
}
}
}
}
return 1;
}