X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Feffects%2Fall.qc;h=1fade55cf0407e59bfcb2735ffb75ccd1a289be5;hp=252f913379a02be272548bcf60162b693e82e4be;hb=90d9f7c775306324957323d53d5a4ad995d999e3;hpb=fcd31ea01083f448ef36785ad0bdb4244927fa42 diff --git a/qcsrc/common/effects/all.qc b/qcsrc/common/effects/all.qc index 252f913379..1fade55cf0 100644 --- a/qcsrc/common/effects/all.qc +++ b/qcsrc/common/effects/all.qc @@ -4,9 +4,9 @@ REGISTER_NET_TEMP(net_effect) #ifdef CSQC NET_HANDLE(net_effect, bool isNew) { - int net_name = (Effects_COUNT >= 255) ? ReadShort() : ReadByte(); + int net_name = (REGISTRY_COUNT(Effects) >= 255) ? ReadShort() : ReadByte(); - entity eff = Effects_from(net_name); + entity eff = REGISTRY_GET(Effects, net_name); vector vel = '0 0 0'; int eff_cnt = 1; @@ -34,7 +34,7 @@ bool Net_Write_Effect(entity this, entity client, int sf) int channel = MSG_ONE; msg_entity = client; WriteHeader(channel, net_effect); - (Effects_COUNT >= 255) + (REGISTRY_COUNT(Effects) >= 255) ? WriteShort(channel, this.m_id) : WriteByte(channel, this.m_id); WriteVector(channel, this.eent_net_location); @@ -51,7 +51,7 @@ bool Net_Write_Effect(entity this, entity client, int sf) return true; } -void Send_Effect(entity eff, vector eff_loc, vector eff_vel, int eff_cnt) +void Send_Effect_Except(entity eff, vector eff_loc, vector eff_vel, int eff_cnt, entity ignore) { if(!eff) { return; } if(!eff.eent_eff_trail && !eff_cnt) { return; } // effect has no count! @@ -64,10 +64,15 @@ void Send_Effect(entity eff, vector eff_loc, vector eff_vel, int eff_cnt) net_eff.eent_net_count = eff_cnt; net_eff.eent_eff_trail = eff.eent_eff_trail; - FOREACH_CLIENT(IS_REAL_CLIENT(it), Net_Write_Effect(net_eff, it, 0)); + FOREACH_CLIENT(IS_REAL_CLIENT(it) && it != ignore && !(IS_SPEC(it) && it.enemy == ignore), Net_Write_Effect(net_eff, it, 0)); delete(net_eff); } +void Send_Effect(entity eff, vector eff_loc, vector eff_vel, int eff_cnt) +{ + Send_Effect_Except(eff, eff_loc, eff_vel, eff_cnt, NULL); +} + void Send_Effect_(string eff_name, vector eff_loc, vector eff_vel, int eff_cnt) { // problem with this is, we might not have all the available effects for it @@ -75,7 +80,7 @@ void Send_Effect_(string eff_name, vector eff_loc, vector eff_vel, int eff_cnt) Send_Effect(it, eff_loc, eff_vel, eff_cnt); return; }); - // revert to engine handling + // revert to engine handling TODO: send the effect name and draw it on the client side? not as light on networking, but resolves the use of server side effects __pointparticles(_particleeffectnum(eff_name), eff_loc, eff_vel, eff_cnt); } #endif