29.11.2013, 16:06
Здравствуйте, не знаю в чем проблема, но если загрузить public OnPlayerTakeDamage в килчате перестает отображать убийства с причиной взрыв, то есть убийство с rpg или гидры или гранаты не отображает в килчате ну и кил соответственно не засчитывает, я очень долго искал причину этой проблемы сначала в onplayerdeath, но теперь точно уверен что проблема в OnPlayerTakeDamage, вот код
Подскажите в чем дело
PHP код:
public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid)
{
if(issuerid == INVALID_PLAYER_ID) return 1;
if (tdmfull[issuerid] != 0 && GetPlayerTeam(issuerid) == GetPlayerTeam(playerid)) return 1;
if (PlayerInfo[playerid][God] == false){
new string[60], str[256];
PlayerPlaySound(issuerid,17802,0,0,0);
// если удалить участок отображения дамага то будет все нормально
format(str,256,"~r~~h~ %s(%d) / %.0f DMG / %s",BadSymbols(PlayerInfo[issuerid][pName]),issuerid,amount,WeaponNames[GetPlayerWeapon(issuerid)]);
PlayerTextDrawSetString(playerid,PotDamage[playerid],str);
PlayerTextDrawHide(playerid,PotDamage[playerid]);
PlayerTextDrawShow(playerid,PotDamage[playerid]);
KillTimer(DamageTimer[playerid]);
DamageTimer[playerid] = SetTimerEx("HideDamageTextDraw", 2500, 0, "d", playerid);
format(str,256,"~g~~h~ %s(%d) / %.0f DMG / %s",BadSymbols(PlayerInfo[playerid][pName]),playerid,amount,WeaponNames[GetPlayerWeapon(issuerid)]);
PlayerTextDrawSetString(issuerid,PotDamage[issuerid],str);
PlayerTextDrawHide(issuerid,PotDamage[issuerid]);
PlayerTextDrawShow(issuerid,PotDamage[issuerid]);
KillTimer(DamageTimer[issuerid]);
DamageTimer[issuerid] = SetTimerEx("HideDamageTextDraw", 2500, 0, "d", issuerid);
//
format(string,sizeof(string),"-%.0f",amount);
SetPlayerChatBubble(playerid, string, 0xFF4500FF , 100.0, 2000);
PlayerInfo[playerid][DmgTaken] += amount;
PlayerInfo[issuerid][DmgGiven] += amount;
}
return 1;
}
forward HideDamageTextDraw(playerid);
public HideDamageTextDraw(playerid) PlayerTextDrawHide(playerid,PotDamage[playerid]);