+REGISTER_NET_LINKED(ENT_CLIENT_LADDER)
+
void func_ladder_touch()
-{
+{SELFPARAM();
#ifdef SVQC
if (!other.iscreature)
return;
- if (other.vehicle_flags & VHF_ISVEHICLE)
+ if(IS_VEHICLE(other))
return;
-#endif
-#ifdef CSQC
- if(other.classname != "csqcmodel")
+#elif defined(CSQC)
+ if(!other.isplayermodel)
return;
#endif
}
#ifdef SVQC
-float func_ladder_send(entity to, float sf)
-{
- WriteByte(MSG_ENTITY, ENT_CLIENT_LADDER);
+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);
- WriteByte(MSG_ENTITY, self.speed);
+ WriteCoord(MSG_ENTITY, self.speed);
- trigger_common_write(false);
+ trigger_common_write(self, false);
return true;
}
void func_ladder_link()
{
- Net_LinkEntity(self, false, 0, func_ladder_send);
+ SELFPARAM();
+ self.SendEntity = func_ladder_send;
+ self.SendFlags = 0xFFFFFF;
+ //self.model = "null";
}
-void spawnfunc_func_ladder()
+void func_ladder_init()
{
- EXACTTRIGGER_INIT;
+ SELFPARAM();
self.touch = func_ladder_touch;
+ trigger_init(self);
func_ladder_link();
}
-void spawnfunc_func_water()
+spawnfunc(func_ladder)
{
- EXACTTRIGGER_INIT;
- self.touch = func_ladder_touch;
+ func_ladder_init();
+}
- func_ladder_link();
+spawnfunc(func_water)
+{
+ func_ladder_init();
}
#elif defined(CSQC)
.float speed;
-void ent_func_ladder()
+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.speed = ReadCoord();
trigger_common_read(false);
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;
+
+ return true;
}
#endif