Veteran Member
Join Date: Mar 2008
Location: Lithuania
|
07-15-2009
, 03:23
TE_BEAMPOINTS , beam bug
|
#1
|
Look at the image and code, lol when I kill enemy sometimes beam appears on the place when player died or on spawn, idk why... Please check the code what is wrong.
P.S. I've tryied also TE_KILLBEAM,seems not working...
PHP Code:
public act_plant(id)
{
new ent = g_claymores[id] = create_entity("func_wall");
if (!pev_valid(ent))
return;
g_user_has_cm[id] = 0
engfunc(EngFunc_SetModel, ent, g_w_claymore);
engfunc(EngFunc_SetSize, ent, Float:{-4.0, -4.0, 0.0}, Float:{4.0, 4.0, 14.0});
set_pev(ent, pev_classname, "Claymore");
set_pev(ent, pev_owner, id);
set_pev(ent, pev_solid, 2);
set_pev(ent, pev_movetype, 6);
set_pev(ent, pev_gravity, 1.3);
set_pev(ent, pev_friction, 1.0);
set_pev(ent, pev_health, 30.0);
set_pev(ent, pev_takedamage, DAMAGE_YES);
emit_sound(id, CHAN_AUTO, g_claymore_plant, 1.0, ATTN_NORM, 0, PITCH_NORM);
new Float:angles[3], Float:origin[3], Float:fov;
pev(id, pev_v_angle, angles);
pev(id, pev_origin, origin);
angles[0] = 0.0;
origin[0] += floatcos(angles[1], degrees) * 11.0;
origin[1] += floatsin(angles[1], degrees) * 11.0;
origin[2] -= 10.0;
set_pev(ent, pev_origin, origin);
set_pev(ent, pev_angles, angles);
set_pev(ent, pev_v_angle, angles);
set_pev(ent, pev_velocity, Float:{0.0, 0.0, -10.0});
pev(id, pev_fov, fov);
set_pev(ent, pev_fov, fov);
act_beams(ent)
new model[33];
pev(id, pev_viewmodel2, model, 32);
if (equali(model, g_v_claymore))
{
engclient_cmd(id, "weapon_knife");
set_pev(id, pev_weaponmodel2, "models/p_knife.mdl");
set_pev(id, pev_viewmodel2, "models/v_knife.mdl");
}
}
public act_beams(ent)
{
// make sure its a valid entity
if (!pev_valid(ent))
return;
if (pev(ent, pev_flags) & FL_ONGROUND)
{
// draw the first beam
draw_beam(ent, 30.0);
// wait .1 sec and draw the 2nd beam so its easier on the svc
set_task(0.1, "draw_beam2", ent + TASK_DRAW2)
// wait 5 secs then redraw the beams as they only last 5 secs
set_task(5.0, "act_beams", ent);
}
else
set_task(0.2, "act_beams", ent);
}
// need to use this due to set_task only allowing 1 paramiter to be set
public draw_beam2(ent)
{
draw_beam(ent - TASK_DRAW2, -30.0)
}
public draw_beam(ent, Float:angle)
{
if (!pev_valid(ent))
return;
// gets start and end origins for beam
new Float:angles[3], Float:origin[3], Float:origin2[3], user_team = get_user_team(pev(ent, pev_owner));
pev(ent, pev_v_angle, angles);
pev(ent, pev_origin, origin);
origin2[0] = origin[0] + (floatcos(angles[1] + angle, degrees) * 38.0);
origin2[1] = origin[1] + (floatsin(angles[1] + angle, degrees) * 38.0);
origin[2] += 12.0;
// draws beam
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(TE_BEAMPOINTS); // 0
write_coord(floatround(origin[0])); //centerpoint
write_coord(floatround(origin[1])); //left top corner
write_coord(floatround(origin[2])); //horizontal height
write_coord(floatround(origin2[0]));//centerpoint
write_coord(floatround(origin2[1]));//left right corner
write_coord(floatround(origin[2])); //horizontal height
write_short(beamspr); //sprite to use
write_byte(1); // framestart
write_byte(1); // framerate
write_byte(52); // life in 0.1's
write_byte(3); // width
write_byte(0); // noise
write_byte((user_team == 1) ? 255 : 0); // red
write_byte(0); // green
write_byte((user_team == 1) ? 0 : 255); // blue
write_byte(200); // brightness
write_byte(0); // speed
message_end();
}
Last edited by xbatista; 07-15-2009 at 03:25.
|
|