
给一个小小的建议让这个地雷变成可攻击的,而且攻击者打爆的地雷如果炸到人判定为攻击者 可以参考一下
这是我的地雷的一小部分
public land_mine_Killed(iEnt,attacker, damagetype)
{
new className[32];
entity_get_string(iEnt, EV_SZ_classname, className, charsmax(className))
if(!equali(className, "land_mine"))
return HAM_IGNORED
if(get_user_weapon(attacker) == CSW_KNIFE && !(damagetype & DMG_HEGRENADE))
return HAM_IGNORED
if (is_user_connected(attacker) && !is_user_zombie(attacker))
{
new Float:explodeAt[3]
pev(iEnt, pev_origin, explodeAt)
new Float:dRatio, damage, Float:distanceBetween
new Float:dmgRadius = get_pcvar_float(gPcvarRadius)
new maxDamage = get_pcvar_num(gPcvarMaxDamage)
// blowup
explode(explodeAt)
new players[32], playerCount, player
new Float:playerOrigin[3]
get_players(players, playerCount, "ah")
for ( new i = 0; i < playerCount; i++ )
{
player = players[i]
pev(player, pev_origin, playerOrigin)
distanceBetween = vector_distance(explodeAt, playerOrigin)
if ( distanceBetween <= dmgRadius )
{
if (is_user_zombie(player))
{
dRatio = distanceBetween / dmgRadius
damage = maxDamage - floatround(maxDamage * dRatio)
if ( !damage ) damage = 1
if(pev(player, pev_health) > damage)
{
set_user_health(player,get_user_health(player) - damage)
cs_set_user_money(attacker,cs_get_user_money(attacker) + damage)
}
else
{
log_kill(attacker,player,"land_mine",0)
UpdateFrags(attacker, player)
}
//Play a random animation when damanged
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_EXPLOSION)
engfunc(EngFunc_WriteCoord, explodeAt[0])
engfunc(EngFunc_WriteCoord, explodeAt[1])
engfunc(EngFunc_WriteCoord, explodeAt[2])
write_short(boom)
write_byte(50)
write_byte(15)
write_byte(0)
message_end()
}
}
}
}
for (new i = 0; i < 30; i++)
dilei[i] -= 1
engfunc(EngFunc_RemoveEntity, iEnt)
return HAM_SUPERCEDE
}