下面是引用 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 的范围伤害条件根本不会发生这问题也不用写这堆内容就是了…