下面是引用 andyt0621 於 2013-05-09 12:18 發表的 :
還有我寫的WeaponSystem都用了不少次
ExecuteHamB(Ham_TakeDamage的inflictor我每次都寫為attacker..
不過public Ham_TakeDamage我就沒用過inflictor
看您還是對ham hook不太了解吧..
試試這個吧
一般來說用在槍枝上的傷害 inflictor 寫 attacker 是沒什麼大問題…
不過如果用在榴彈、飛彈等投射物件會發生BUG…發生時機很微妙…
丟出去的那瞬間切換武器…殺人訊息會變成當下拿的武器…
例如拿著M32或M79射出後馬上切換成閃光彈…然後看著殺人圖變成閃光彈…
以下是之前在AlliedModders找到後我稍微修改過的版本:
複製程式
new inflictor = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "weapon_m4a1"))
if(pev_valid(inflictor))
{
set_pev(inflictor, pev_owner, attacker)
ExecuteHamB(Ham_TakeDamage,victim,inflictor,attacker,damage,damage_type)
engfunc(EngFunc_RemoveEntity, inflictor)
}
概念就和丟手榴彈一樣…測試過就算殺死目標殺人圖還是依據M4A1去顯示…
因為是系統自動送出的訊息…所以自定義的殺人圖也是會被 message_deathmsg 修改到…
就看你的需求啦…就像 Weapon_Balrog7 的範圍傷害條件根本不會發生這問題也不用寫這堆內容就是了…