X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Ftriggers%2Ffunc%2Fladder.qc;h=04c5c2563d785a665685bd9d8888393f9a2ad9cb;hb=d271f27a5ac351a3a7b39636932f6d661492be1d;hp=fc3d47210e7e3c76d4d43b42e50da36202d7484b;hpb=120ad19fdf46b7096a0f90b940e590f1909ad22c;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/triggers/func/ladder.qc b/qcsrc/common/triggers/func/ladder.qc index fc3d47210..04c5c2563 100644 --- a/qcsrc/common/triggers/func/ladder.qc +++ b/qcsrc/common/triggers/func/ladder.qc @@ -1,3 +1,5 @@ +REGISTER_NET_LINKED(ENT_CLIENT_LADDER) + void func_ladder_touch() {SELFPARAM(); #ifdef SVQC @@ -5,9 +7,8 @@ void func_ladder_touch() return; if(IS_VEHICLE(other)) return; -#endif -#ifdef CSQC - if(other.classname != "csqcmodel") +#elif defined(CSQC) + if(!other.isplayermodel) return; #endif @@ -18,66 +19,69 @@ void func_ladder_touch() } #ifdef SVQC -float func_ladder_send(entity to, float sf) +bool func_ladder_send(entity to, int sf) {SELFPARAM(); - WriteByte(MSG_ENTITY, ENT_CLIENT_LADDER); + WriteHeader(MSG_ENTITY, ENT_CLIENT_LADDER); WriteString(MSG_ENTITY, self.classname); WriteByte(MSG_ENTITY, self.skin); - WriteByte(MSG_ENTITY, self.speed); - WriteString(MSG_ENTITY, self.mdl); + WriteCoord(MSG_ENTITY, self.speed); - trigger_common_write(false); + trigger_common_write(self, false); return true; } void func_ladder_link() { - //self.SendEntity = func_ladder_send; - //self.SendFlags = 0xFFFFFF; + SELFPARAM(); + self.SendEntity = func_ladder_send; + self.SendFlags = 0xFFFFFF; //self.model = "null"; } -void spawnfunc_func_ladder() -{SELFPARAM(); - self.mdl = self.model; - EXACTTRIGGER_INIT; +void func_ladder_init() +{ + SELFPARAM(); self.touch = func_ladder_touch; + trigger_init(self); func_ladder_link(); } -void spawnfunc_func_water() -{SELFPARAM(); - self.mdl = self.model; - EXACTTRIGGER_INIT; - self.touch = func_ladder_touch; +spawnfunc(func_ladder) +{ + func_ladder_init(); +} - func_ladder_link(); +spawnfunc(func_water) +{ + func_ladder_init(); } #elif defined(CSQC) .float speed; -void ent_func_ladder() -{SELFPARAM(); +void func_ladder_remove(entity this) +{ + if(this.classname) { strunzone(this.classname); } + this.classname = string_null; +} + +NET_HANDLE(ENT_CLIENT_LADDER, bool isnew) +{ self.classname = strzone(ReadString()); self.skin = ReadByte(); - self.speed = ReadByte(); - self.model = strzone(ReadString()); + self.speed = ReadCoord(); trigger_common_read(false); - self.mins = self.maxs = '0 0 0'; self.solid = SOLID_TRIGGER; - self.draw = trigger_draw_generic; - self.trigger_touch = func_ladder_touch; + self.move_touch = func_ladder_touch; self.drawmask = MASK_NORMAL; self.move_time = time; - self.entremove = trigger_remove_generic; + self.entremove = func_ladder_remove; - //precache_model(self.mdl); - EXACTTRIGGER_INIT; + return true; } #endif