I'm currently planning to port a LG @ Quake Live to TF2...
I made a demo source code
PHP Code:
if(weapon == iweaponlist[client][WEAPON_LIGHTNING]) {
float clpos[3], eyepos[3], clang[3], endpos[3], beampos[3];
GetClientAbsOrigin(client, clpos);
GetClientEyePosition(client, eyepos);
GetClientEyeAngles(client, clang);
GetEndPosition(endpos, eyepos, clang, LIGHTNING_LENGTH);
Handle hTrace = TR_TraceRayFilterEx(eyepos, clang, MASK_PLAYERSOLID, RayType_Infinite, TraceRayAllAllow, client);
if(TR_DidHit(hTrace)) {
TR_GetEndPosition(beampos, hTrace);
}
if(GetVectorDistance(clpos, endpos) < GetVectorDistance(clpos, beampos)) {
beampos[0] = endpos[0];
beampos[1] = endpos[1];
beampos[2] = endpos[2];
}
clpos[2] += 30.0;
if(GetClientTeam(client) == 2) TE_SetupBeamPoints(clpos, beampos, LaserModel, HaloModel, 0, 66, 0.058, 1.5, 1.5, 3, 0.0, {255, 0, 255, 255}, 0);
if(GetClientTeam(client) == 3) TE_SetupBeamPoints(clpos, beampos, LaserModel, HaloModel, 0, 66, 0.058, 1.5, 1.5, 3, 0.0, {0, 255, 255, 255}, 0);
TE_SendToAll();
}
stock void GetEndPosition(float end[3], float start[3], float angle[3], float distance, bool:negative = false)
{
float vector[3];
end[0] = start[0];
end[1] = start[1];
end[2] = start[2];
vector[0] = Cosine(DegToRad(angle[1]));
vector[1] = Sine(DegToRad(angle[1]));
vector[2] = Sine(DegToRad(angle[0])) * -1.0;
NormalizeVector(vector, vector);
ScaleVector(vector, distance);
if(negative) ScaleVector(vector, -1.0);
AddVectors(end, vector, end);
}
but the beams can't follow the fire speed..
https://imgur.com/a/8ocy2aT
What forwards or functions should I use to fix this problem?