Senior Member
|
01-16-2014
, 22:27
Entity Go Through Player
|
#1
|
i want to hit through multiple player with entity, it have beamfollow.
when i set the velocity 1000.0 its work great, the entity go through and correctly hit player.
but when i set velocity 9999.0
the entity can go through player but its not hit the player.
please help...
(i've set sv_maxvelocity 9999)
here is my code
i use
register_think("entity_class", "fw_Think")
register_touch("entity_class", "*", "fw_touch")
PHP Code:
public Throw_entity(id)
{
static Float:StartOrigin[3], Float:TargetOrigin[3], Float:angles[3], Float:StartOriginX[3]
get_position(id, 2.0, 0.0, 0.0, StartOrigin)
pev(id,pev_angles,angles)
static Ent; Ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
if(!pev_valid(Ent)) return
set_pev(Ent, pev_movetype, MOVETYPE_FLY)
set_pev(Ent, pev_owner, id)
set_pev(Ent, pev_fuser1, get_gametime() + 4.0)
set_pev(Ent, pev_nextthink, halflife_time() + 0.1)
entity_set_string(Ent, EV_SZ_classname, "entity_class")
engfunc(EngFunc_SetModel, Ent, ENTITY_MODEL)
set_pev(Ent, pev_mins, Float:{-1.0, -1.0, -1.0})
set_pev(Ent, pev_maxs, Float:{1.0, 1.0, 1.0})
set_pev(Ent, pev_origin, StartOrigin)
set_pev(Ent, pev_angles, angles)
set_pev(Ent, pev_gravity, 0.01)
set_pev(Ent, pev_solid, SOLID_TRIGGER)
set_pev(Ent, pev_frame, 0.0)
static Float:Velocity[3]
fm_get_aim_origin(id, TargetOrigin)
get_speed_vector(StartOrigin, TargetOrigin, 9999.0, Velocity)
set_pev(Ent, pev_velocity, Velocity)
charge_start = false
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW) // Temporary entity ID
write_short(Ent) // Entity
write_short(sTrail) // Sprite index
write_byte(7) // Life
write_byte(1) // Line width
write_byte(255) // Red
write_byte(80) // Green
write_byte(80) // Blue
write_byte(100) // Alpha
message_end()
}
public fw_Think(ent)
{
if(!pev_valid(ent))
return
static Float:fFrame; pev(ent, pev_frame, fFrame)
fFrame += 1.5
fFrame = floatmin(21.0, fFrame)
set_pev(ent, pev_frame, fFrame)
set_pev(ent, pev_nextthink, get_gametime() + 0.05)
// time remove
static Float:fTimeRemove, Float:Amount
pev(ent, pev_fuser1, fTimeRemove)
pev(ent, pev_renderamt, Amount)
if(get_gametime() >= fTimeRemove)
{
remove_entity(ent)
}
}
public fw_touch(Ent, Id)
{
// If ent is valid
if(!pev_valid(Ent))
return
static Owner; Owner = pev(Ent, pev_owner)
if(pev(Ent, pev_movetype) == MOVETYPE_NONE)
return
static classnameptd[32]
pev(Id, pev_classname, classnameptd, 31)
if (equali(classnameptd, "func_breakable")) ExecuteHamB( Ham_TakeDamage, Id, 0, 0, 200.0, DMG_GENERIC )
new Float:originF[3]
pev(Ent, pev_origin, originF)
if(is_user_alive(Id))
{
remove_entity(Ent)
make_blood(originF)
ExecuteHamB(Ham_TakeDamage, Id, Ent, Attacker, 65.0, DMG_BULLET)
emit_sound(Id, CHAN_VOICE, hit_sound, 1.0, ATTN_NORM, 0, PITCH_NORM)
}
else
{
make_bullet(Owner, originF)
engfunc(EngFunc_EmitSound, Ent, CHAN_WEAPON, hit_wall, 1.0, ATTN_STATIC, 0, PITCH_NORM)
fake_smokes(Owner, originF)
set_pev(Ent, pev_movetype, MOVETYPE_NONE)
set_pev(Ent, pev_solid, SOLID_NOT)
}
}
Last edited by m4m3ts; 02-26-2015 at 18:48.
|
|