X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fent_cs.qc;h=7b3af04bfd9aa9f988f72f7e9a53b28d4ad2a96c;hb=21fafb34e9feadd9065f4188b4ea70b23f9f3e14;hp=bee79d682e9e2d5d4ad31cd84a8c0231b788187c;hpb=0e7ed909bffb4ff21f0c68d163edfc17487e380a;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/ent_cs.qc b/qcsrc/server/ent_cs.qc index bee79d682..7b3af04bf 100644 --- a/qcsrc/server/ent_cs.qc +++ b/qcsrc/server/ent_cs.qc @@ -18,7 +18,7 @@ void entcs_init() { print("Initializing ClientSide information entities\n"); -}; +} float entcs_customize() { @@ -26,48 +26,70 @@ float entcs_customize() o = self.owner; if(o.deadflag != DEAD_NO) return FALSE; - if(o.classname != "player") + if (!IS_PLAYER(o)) return FALSE; if(other == o) return FALSE; - if(other.classname == "player") - if(o.team != other.team) - if not (radar_showennemies) + if((IS_PLAYER(other)) || other.caplayer) + if(!teamplay || o.team != other.team) + if (!radar_showennemies) return FALSE; return TRUE; } float entcs_send(entity to, float sf) { - entity o; - o = self.owner; WriteByte(MSG_ENTITY, ENT_CLIENT_ENTCS); - WriteByte(MSG_ENTITY, num_for_edict(o)); - WriteShort(MSG_ENTITY, o.origin_x); - WriteShort(MSG_ENTITY, o.origin_y); - WriteShort(MSG_ENTITY, o.origin_z); - WriteByte(MSG_ENTITY, o.angles_y * 256.0 / 360); + WriteByte(MSG_ENTITY, sf); + if(sf & 1) + WriteByte(MSG_ENTITY, num_for_edict(self.owner)-1); + if(sf & 2) + { + WriteShort(MSG_ENTITY, self.origin_x); + WriteShort(MSG_ENTITY, self.origin_y); + WriteShort(MSG_ENTITY, self.origin_z); + } + if(sf & 4) + WriteByte(MSG_ENTITY, self.angles_y * 256.0 / 360); + if(sf & 8) + WriteByte(MSG_ENTITY, self.health / 10); // FIXME use a better scale? + if(sf & 16) + WriteByte(MSG_ENTITY, self.armorvalue / 10); // FIXME use a better scale? return TRUE; -}; +} void entcs_think() { - self.nextthink = time; + self.nextthink = time + 0.033333333333; // increase this to like 0.15 once the client can do smoothing entity o; o = self.owner; - if(o.origin != self.origin || o.angles != self.angles) + if(o.origin != self.origin) { setorigin(self, o.origin); + self.SendFlags |= 2; + } + if(o.angles_y != self.angles_y) + { self.angles = o.angles; - self.SendFlags |= 1; + self.SendFlags |= 4; } -}; + if(o.health != self.health) + { + self.health = o.health; + self.SendFlags |= 8; + } + if(o.armorvalue != self.armorvalue) + { + self.armorvalue = o.armorvalue; + self.SendFlags |= 16; + } +} entity attach_entcs() { - local entity ent; + entity ent; ent = spawn(); ent.classname = "entcs_sender_v2"; @@ -81,10 +103,10 @@ entity attach_entcs() self.entcs = ent; return ent; -}; +} void detach_entcs() { remove(self.entcs); self.entcs = world; -}; +}