var = strzone(x); \
MACRO_END
-.int w_sv_entnum;
-.Weapon w_m_switchweapon;
-.Weapon w_m_switchingweapon;
-.Weapon w_m_weapon;
-//.float w_weapon_nextthink;
-.float w_m_alpha;
-.float w_vortex_charge;
-.int w_m_gunalign;
-
// #define PROP(public, fld, set, sv, cl)
#define WEPENT_NETPROPS(PROP) PROP(false, sv_entnum, WEPENT_SET_NORMAL, {}, {}) /* sentinel */ \
PROP(false, m_switchweapon, WEPENT_SET_NORMAL, \
PROP(false, m_gunalign, WEPENT_SET_NORMAL, \
{ WriteByte(chan, this.m_gunalign); }, \
{ (viewmodels[this.m_wepent_slot]).m_gunalign = ReadByte(); }) \
+ \
+ PROP(false, porto_v_angle_held, WEPENT_SET_NORMAL, \
+ { WriteByte(chan, this.porto_v_angle_held); if(this.porto_v_angle_held) { \
+ WriteAngle(chan, this.porto_v_angle.x); WriteAngle(chan, this.porto_v_angle.y); \
+ } }, \
+ { (viewmodels[this.m_wepent_slot]).angles_held_status = ReadByte(); if((viewmodels[this.m_wepent_slot]).angles_held_status) { \
+ (viewmodels[this.m_wepent_slot]).angles_held_x = ReadAngle(); (viewmodels[this.m_wepent_slot]).angles_held_y = ReadAngle(); (viewmodels[this.m_wepent_slot]).angles_held_z = 0; } \
+ else { (viewmodels[this.m_wepent_slot]).angles_held = '0 0 0'; } }) \
+ \
+ PROP(false, tuba_instrument, WEPENT_SET_NORMAL, \
+ { WriteByte(chan, this.tuba_instrument); }, \
+ { (viewmodels[this.m_wepent_slot]).tuba_instrument = ReadByte(); }) \
\
/**/
WriteHeader(chan, ENT_CLIENT_WEPENT);
else
WriteHeader(chan, CLIENT_WEPENT);
- .entity weaponentity = this.weaponentity_fld;
+ .entity weaponentity = this.owner.weaponentity_fld;
WriteByte(chan, weaponslot(weaponentity));
WriteShort(chan, sf);
int i = 0;
return _wepent_send(this, to, sf, MSG_ENTITY);
}
- void wepent_update(entity this)
+ void wepent_think(entity this)
{
+ if(wasfreed(this.owner) || !this.owner)
+ {
+ delete(this);
+ return;
+ }
+
+ this.nextthink = time;
+
+ entity o = this.owner;
+
int i = 0;
#define X(public, fld, set, sv, cl) { \
- if (this.w_##fld != this.fld) { \
- set(this.w_##fld, this.fld); \
+ if (this.fld != o.fld) { \
+ set(this.fld, o.fld); \
this.SendFlags |= BIT(i); \
} \
i += 1; \
#undef X
}
+ bool wepent_customize(entity this, entity client)
+ {
+ //entity e = WaypointSprite_getviewentity(client);
+ .entity weaponentity = this.owner.weaponentity_fld;
+ return client.(weaponentity) == this.owner;
+ }
+
void wepent_link(entity wep)
{
- Net_LinkEntity(wep, false, 0, wepent_send);
+ entity e = new(wepent_sender);
+ e.owner = wep;
+ setthink(e, wepent_think);
+ e.nextthink = time;
+ //e.drawonlytoclient = wep.owner;
+ setcefc(e, wepent_customize);
+ Net_LinkEntity(e, false, 0, wepent_send);
}
#endif
bool ReadWepent(entity this)
{
- this.m_wepent_slot = ReadByte();
+ int slot = ReadByte();
+ this.m_wepent_slot = slot;
+ viewmodels[slot].m_wepent_slot = slot;
int sf = ReadShort();
int i = 0;
#define X(public, fld, set, sv, cl) { \
NET_HANDLE(ENT_CLIENT_WEPENT, bool isnew)
{
if (isnew)
- {
- make_pure(this);
this.classname = "wepent_receiver";
- }
return ReadWepent(this);
}