|
Green Gaben
Join Date: Mar 2006
Location: OH-IO!
|

07-27-2009
, 16:27
Creating env_beam problem
|
#1
|
I'm trying to create an env_beam just like you would when making one in hammer editor. Using 3 ents - the start point, end point, and beam ent.
I've tried so many different things using both fakemeta and engine to get this working.
If you run the following code you will see it makes both end points and the beam sprite, but the beam sprite doesn't connect to the points (note: I made the end points a sprite just so I could see them).
PHP Code:
#include <amxmodx>
#include <fakemeta>
#define PLUGIN "Create env_beam"
#define VERSION "1.0"
#define AUTHOR "hlstriker"
#define BEAM_SPRITE "sprites/laserbeam.spr"
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_clcmd("say /beam", "CreateBeamEnts");
}
public plugin_precache()
{
precache_model(BEAM_SPRITE);
}
public CreateBeamEnts(iClient)
{
CreateEntStart(iClient);
CreateEntEnd(iClient);
set_task(0.5, "CreateBeam", iClient);
}
CreateEntStart(iClient)
{
new Float:flOrigin[3];
GetFrontOrigin(iClient, 50, flOrigin);
new iEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
set_keyvalue(iEnt, "targetname", "startbeam");
dllfunc(DLLFunc_Spawn, iEnt);
dllfunc(DLLFunc_Think, iEnt);
set_pev(iEnt, pev_solid, SOLID_BBOX);
//set_pev(iEnt, pev_targetname, "startbeam");
engfunc(EngFunc_SetOrigin, iEnt, flOrigin);
engfunc(EngFunc_SetModel, iEnt, BEAM_SPRITE);
engfunc(EngFunc_SetSize, iEnt, Float:{-4.0, -4.0, 0.0}, Float:{4.0, 4.0, 8.0});
client_print(0, print_chat, "START: [%f] - [%f] - [%f]", flOrigin[0], flOrigin[1], flOrigin[2]);
}
CreateEntEnd(iClient)
{
new Float:flOrigin[3];
GetFrontOrigin(iClient, 300, flOrigin);
new iEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
set_keyvalue(iEnt, "targetname", "endbeam");
dllfunc(DLLFunc_Spawn, iEnt);
dllfunc(DLLFunc_Think, iEnt);
set_pev(iEnt, pev_solid, SOLID_BBOX);
//set_pev(iEnt, pev_targetname, "endbeam");
engfunc(EngFunc_SetOrigin, iEnt, flOrigin);
engfunc(EngFunc_SetModel, iEnt, BEAM_SPRITE);
engfunc(EngFunc_SetSize, iEnt, Float:{-4.0, -4.0, 0.0}, Float:{4.0, 4.0, 8.0});
client_print(0, print_chat, "END: [%f] - [%f] - [%f]", flOrigin[0], flOrigin[1], flOrigin[2]);
}
public CreateBeam(iClient)
{
new Float:flOrigin[3];
GetFrontOrigin(iClient, 150, flOrigin);
new iEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_beam"));
set_keyvalue(iEnt, "Radius", "256");
set_keyvalue(iEnt, "StrikeTime", "10");
set_keyvalue(iEnt, "TextureScroll", "100");
set_keyvalue(iEnt, "texture", BEAM_SPRITE);
set_keyvalue(iEnt, "BoltWidth", "8");
set_keyvalue(iEnt, "rendermode", "5");
set_keyvalue(iEnt, "rendercolor", "255 0 0");
set_keyvalue(iEnt, "renderamt", "125");
set_keyvalue(iEnt, "LightningEnd", "endbeam");
set_keyvalue(iEnt, "LightningStart", "startbeam");
set_keyvalue(iEnt, "spawnflags", "1");
//set_keyvalue(iEnt, "classname", "env_beam");
dllfunc(DLLFunc_Spawn, iEnt);
dllfunc(DLLFunc_Think, iEnt);
set_pev(iEnt, pev_solid, SOLID_BBOX);
engfunc(EngFunc_SetOrigin, iEnt, flOrigin);
engfunc(EngFunc_SetModel, iEnt, BEAM_SPRITE);
engfunc(EngFunc_SetSize, iEnt, Float:{-4.0, -4.0, 0.0}, Float:{4.0, 4.0, 8.0});
client_print(0, print_chat, "BEAM: [%f] - [%f] - [%f]", flOrigin[0], flOrigin[1], flOrigin[2]);
}
stock GetFrontOrigin(iEnt, iDistance, Float:flReturnOrigin[3])
{
static Float:flOrigin[3], Float:flAngles[3];
pev(iEnt, pev_origin, flOrigin);
pev(iEnt, pev_v_angle, flAngles);
flAngles[0] = 0.0;
angle_vector(flAngles, ANGLEVECTOR_FORWARD, flReturnOrigin);
flReturnOrigin[0] = flOrigin[0] + flReturnOrigin[0] * iDistance;
flReturnOrigin[1] = flOrigin[1] + flReturnOrigin[1] * iDistance;
flReturnOrigin[2] = flOrigin[2];
}
stock set_keyvalue(iEnt, szKey[], szValue[])
{
new szClassname[32];
pev(iEnt, pev_classname, szClassname, sizeof(szClassname)-1);
set_kvd(0, KV_ClassName, szClassname);
set_kvd(0, KV_KeyName, szKey);
set_kvd(0, KV_Value, szValue);
set_kvd(0, KV_fHandled, 0);
dllfunc(DLLFunc_KeyValue, iEnt, 0);
}
Here is a screen shot of what that produces:
[img]http://img190.**************/img190/7384/beamk.jpg[/img]
Here is what I want it to produce:
[img]http://img212.**************/img212/2069/goodbeam.jpg[/img]
Anyone have any ideas how to make this?
|
|