this is gonna be somewhat technical, if you are not speaking QuakeC and don't know the nex codebase, don't bother contine reading

I'm planning 2 things basically for the nexgun beam:
1) First step: draw the nex beam on the client. This is done so that the client can decide between 2 effects for the nexgun beam [question would be: do this for muzzleflash and impact effect, too? I mean replace the effects wih old ones if there are any?]. One would be the old v2.3 effect (effect TE_TEI_G3, apparently still used in minstagib) and the other one the normal, current SVN effect (effect nex_beam).
Although the easiest solution would be to make it a pseudo client-side setting (like in v2.4 times with cl_weaponswitch and cl_nogibs), I'd rather like CSQC to do it so players can have the "old" beam while playing and the new beam when watching a demo and probably recording it to avi.
The main reason why I want to do that at all is for competitive games (ladder and tourneys) to allow the static beam to be used. However, there will be a limitation, so that the players can only use the old (and better visible) nex beam only on servers that enable a new cvar (e.g. g_allow_oldnexbeam or something like that), which would be the case on the ladder and tourney servers, I assume.
Now to the technical part:
In this first step I'm planning to do it like this - please comment if you have objections or better suggestions:
- In order to keep the muzzleflash and the beam in sync (in case of packetloss) the server doesn't do the
pointparticles(particleeffectnum("nex_muzzleflash"), w_shotorg, w_shotdir * 1000, 1);
and
trailparticles(world, particleeffectnum("nex_beam"), w_shotorg, trace_endpos);
calls anymore, but instead has to send it to the client in a different way. But here comes the problem: Sending data to the client is either done using stats, temp entites or shared entites. Stats and temp entities are out of question, which leaves me at using a shared entitiy. However, a nexbeam is not like a CSQC_Projectile, it is nothing that moves in the air or needs interpolation, and it is not really an "entity" either, it's just a particle-effect. Actually, when packetloss occurs in the moment of the nexgun shot, you will simply not see the shot when using the current code base, which makes sense, as showing the beam LATER (i.e. "too late") would be ridiculous anyway.
This means that I'm looking for suggestions how to transmit the beam data (I'd send the values of w_shotorg, w_shotdir and trace_endpos btw) to the client, and how to deal with packetloss
2) Second step would be to allow the client to predict the nexgun shot and to "simply" draw the beam locally once +attack button is pushed (however, only on servers that use g_antilag 2, because other methods would probably "bend" the nexbeam and leave the player with an untrue representation). However, I'd like to get my first point done first before annoying you guys with this one, as this one won't be trivial either :O