REGISTER_NET_LINKED(ENT_CLIENT_LADDER) void func_ladder_touch() {SELFPARAM(); #ifdef SVQC if (!other.iscreature) return; if(IS_VEHICLE(other)) return; #elif defined(CSQC) if(!other.isplayermodel) return; #endif EXACTTRIGGER_TOUCH; other.ladder_time = time + 0.1; other.ladder_entity = self; } #ifdef SVQC bool func_ladder_send(entity to, int sf) {SELFPARAM(); WriteHeader(MSG_ENTITY, ENT_CLIENT_LADDER); WriteString(MSG_ENTITY, self.classname); WriteByte(MSG_ENTITY, self.skin); WriteCoord(MSG_ENTITY, self.speed); trigger_common_write(self, false); return true; } void func_ladder_link(entity this) { this.SendEntity = func_ladder_send; this.SendFlags = 0xFFFFFF; //this.model = "null"; } void func_ladder_init(entity this) { this.touch = func_ladder_touch; trigger_init(this); func_ladder_link(this); } spawnfunc(func_ladder) { func_ladder_init(this); } spawnfunc(func_water) { func_ladder_init(this); } #elif defined(CSQC) .float speed; void func_ladder_remove(entity this) { if(this.classname) { strunzone(this.classname); } this.classname = string_null; } NET_HANDLE(ENT_CLIENT_LADDER, bool isnew) { this.classname = strzone(ReadString()); this.skin = ReadByte(); this.speed = ReadCoord(); trigger_common_read(this, false); this.solid = SOLID_TRIGGER; this.move_touch = func_ladder_touch; this.drawmask = MASK_NORMAL; this.move_time = time; this.entremove = func_ladder_remove; return true; } #endif