X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Ftriggers%2Ftrigger%2Fviewloc.qc;h=af67533a831fe4622afc39a7b519b369a92917cb;hb=317ec3eb27ada1c4668876e9499136125acb7984;hp=b36b5eadb2f8f39c27f0f3aa33e9d1f93816d33b;hpb=b6b2f6f6a9fa502c524c474db6510bc998ba861a;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/triggers/trigger/viewloc.qc b/qcsrc/common/triggers/trigger/viewloc.qc index b36b5eadb..af67533a8 100644 --- a/qcsrc/common/triggers/trigger/viewloc.qc +++ b/qcsrc/common/triggers/trigger/viewloc.qc @@ -1,15 +1,17 @@ #if defined(CSQC) #elif defined(MENUQC) #elif defined(SVQC) - #include "../../../dpdefs/progsdefs.qh" - #include "../../../warpzonelib/util_server.qh" + #include "../../../lib/warpzone/util_server.qh" #include "../../../server/defs.qh" #endif +REGISTER_NET_LINKED(ENT_CLIENT_VIEWLOC) +REGISTER_NET_LINKED(ENT_CLIENT_VIEWLOC_TRIGGER) + #ifdef SVQC void viewloc_think() -{ +{SELFPARAM(); entity e; // we abuse this method, rather than using normal .touch, because touch isn't reliable with multiple clients inside the same trigger, and can't "untouch" entities @@ -38,10 +40,10 @@ void viewloc_think() self.nextthink = time; } -bool trigger_viewloc_send(entity to, int sf) +bool trigger_viewloc_send(entity this, entity to, int sf) { // CSQC doesn't need to know our origin (yet), as we're only available for referencing - WriteByte(MSG_ENTITY, ENT_CLIENT_VIEWLOC_TRIGGER); + WriteHeader(MSG_ENTITY, ENT_CLIENT_VIEWLOC_TRIGGER); WriteEntity(MSG_ENTITY, self.enemy); WriteEntity(MSG_ENTITY, self.goalentity); @@ -54,7 +56,7 @@ bool trigger_viewloc_send(entity to, int sf) } void viewloc_init() -{ +{SELFPARAM(); entity e; for(e = world; (e = find(e, targetname, self.target)); ) if(e.classname == "target_viewlocation_start") @@ -69,7 +71,7 @@ void viewloc_init() break; } - if(!self.enemy) { print("^1FAIL!\n"); remove(self); return; } + if(!self.enemy) { LOG_INFO("^1FAIL!\n"); remove(self); return; } if(!self.goalentity) self.goalentity = self.enemy; // make them match so CSQC knows what to do @@ -80,18 +82,18 @@ void viewloc_init() self.nextthink = time; } -void spawnfunc_trigger_viewlocation() +spawnfunc(trigger_viewlocation) { // we won't check target2 here yet, as it may not even need to exist - if(self.target == "") { print("^1FAIL!\n"); remove(self); return; } + if(self.target == "") { LOG_INFO("^1FAIL!\n"); remove(self); return; } EXACTTRIGGER_INIT; InitializeEntity(self, viewloc_init, INITPRIO_FINDTARGET); } -bool viewloc_send(entity to, int sf) +bool viewloc_send(entity this, entity to, int sf) { - WriteByte(MSG_ENTITY, ENT_CLIENT_VIEWLOC); + WriteHeader(MSG_ENTITY, ENT_CLIENT_VIEWLOC); WriteByte(MSG_ENTITY, self.cnt); @@ -108,19 +110,19 @@ bool viewloc_send(entity to, int sf) .float angle; void viewloc_link() -{ +{SELFPARAM(); if(self.angle) self.angles_y = self.angle; Net_LinkEntity(self, false, 0, viewloc_send); } -void spawnfunc_target_viewlocation_start() +spawnfunc(target_viewlocation_start) { self.classname = "target_viewlocation_start"; self.cnt = 1; viewloc_link(); } -void spawnfunc_target_viewlocation_end() +spawnfunc(target_viewlocation_end) { self.classname = "target_viewlocation_end"; self.cnt = 2; @@ -128,17 +130,17 @@ void spawnfunc_target_viewlocation_end() } // compatibility -void spawnfunc_target_viewlocation() { spawnfunc_target_viewlocation_start(); } +spawnfunc(target_viewlocation) { spawnfunc_target_viewlocation_start(this); } #elif defined(CSQC) void trigger_viewloc_updatelink() -{ +{SELFPARAM(); self.enemy = findfloat(world, entnum, self.cnt); self.goalentity = findfloat(world, entnum, self.count); } -void ent_viewloc_trigger() +NET_HANDLE(ENT_CLIENT_VIEWLOC_TRIGGER, bool isnew) { float point1 = ReadShort(); float point2 = ReadShort(); @@ -149,6 +151,9 @@ void ent_viewloc_trigger() self.origin_x = ReadCoord(); self.origin_y = ReadCoord(); self.origin_z = ReadCoord(); + + return = true; + setorigin(self, self.origin); self.cnt = point1; @@ -161,7 +166,7 @@ void ent_viewloc_trigger() self.drawmask = MASK_NORMAL; // not so concerned, but better keep it alive } -void ent_viewloc() +NET_HANDLE(ENT_CLIENT_VIEWLOC, bool isnew) { self.cnt = ReadByte(); @@ -174,6 +179,8 @@ void ent_viewloc() self.movedir_y = ReadCoord(); self.movedir_z = ReadCoord(); + return = true; + self.classname = ((self.cnt == 2) ? "target_viewlocation_end" : "target_viewlocation_start"); self.drawmask = MASK_NORMAL; // don't cull it }