From 3c69ce72c4638e7f1466bf3a392af1ddd9b3647c Mon Sep 17 00:00:00 2001 From: tslashd Date: Thu, 2 Oct 2025 12:44:58 +0300 Subject: [PATCH 1/4] Remove collision code from plugin and use `mp_solid_enemies` and `mp_solid_teammates` in `server_settings.cfg` --- cfg/SurfTimer/server_settings.cfg | 1 + src/ST-Events/Tick.cs | 12 +----------- src/ST-UTILS/Extensions.cs | 11 ----------- 3 files changed, 2 insertions(+), 22 deletions(-) diff --git a/cfg/SurfTimer/server_settings.cfg b/cfg/SurfTimer/server_settings.cfg index b67b24f..7b39c32 100644 --- a/cfg/SurfTimer/server_settings.cfg +++ b/cfg/SurfTimer/server_settings.cfg @@ -43,6 +43,7 @@ mp_spectators_max 64 mp_humanteam ct mp_disconnect_kills_players 1 mp_solid_teammates 0 +mp_solid_enemies 0 mp_respawn_on_death_ct 1 mp_respawn_on_death_t 1 mp_ct_default_secondary weapon_usp_silencer diff --git a/src/ST-Events/Tick.cs b/src/ST-Events/Tick.cs index 05b0d5d..1f9126a 100644 --- a/src/ST-Events/Tick.cs +++ b/src/ST-Events/Tick.cs @@ -5,21 +5,11 @@ namespace SurfTimer; public partial class SurfTimer { - public void OnTick() + public static void OnTick() { if (CurrentMap == null) return; - foreach (var player in playerList.Values) - { - player.Timer.Tick(); - player.ReplayRecorder.Tick(player); - player.HUD.Display(); - if (player.Controller.Collision == null) continue; - if ((CollisionGroup)player.Controller.Collision.CollisionGroup == CollisionGroup.COLLISION_GROUP_DEBRIS) continue; - player.Controller.SetCollisionGroup(CollisionGroup.COLLISION_GROUP_DEBRIS); - } - // Need to disable maps from executing their cfgs. Currently idk how (But seriusly it a security issue) ConVar? bot_quota = ConVar.Find("bot_quota"); diff --git a/src/ST-UTILS/Extensions.cs b/src/ST-UTILS/Extensions.cs index 1127fec..fdb797e 100644 --- a/src/ST-UTILS/Extensions.cs +++ b/src/ST-UTILS/Extensions.cs @@ -45,17 +45,6 @@ public static void Teleport(this CBaseEntity entity, VectorT? position = null, Q public static VectorT ToVector_t(this Vector vec) => new(vec.Handle); public static QAngleT ToQAngle_t(this QAngle vec) => new(vec.Handle); - public static void SetCollisionGroup(this CCSPlayerController controller, CollisionGroup collisionGroup) - { - if (!controller.IsValid || controller.Collision == null) return; - controller.Collision.CollisionAttribute.CollisionGroup = (byte)collisionGroup; - controller.Collision.CollisionGroup = (byte)collisionGroup; - - Utilities.SetStateChanged(controller, "CColisionProperity", "m_collisionGroup"); - Utilities.SetStateChanged(controller, "CCollisionProperty", "m_collisionAttribute"); - } - - /// /// Checks whether an IP is a local one. Allows testing the plugin in a local environment setup for GeoIP /// From 582ed40a3cc813d079af884c477d187911ad5ccd Mon Sep 17 00:00:00 2001 From: T <74899888+tslashd@users.noreply.github.com> Date: Thu, 2 Oct 2025 12:50:14 +0300 Subject: [PATCH 2/4] Revert "Remove collision code from plugin" --- cfg/SurfTimer/server_settings.cfg | 1 - src/ST-Events/Tick.cs | 12 +++++++++++- src/ST-UTILS/Extensions.cs | 11 +++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/cfg/SurfTimer/server_settings.cfg b/cfg/SurfTimer/server_settings.cfg index 7b39c32..b67b24f 100644 --- a/cfg/SurfTimer/server_settings.cfg +++ b/cfg/SurfTimer/server_settings.cfg @@ -43,7 +43,6 @@ mp_spectators_max 64 mp_humanteam ct mp_disconnect_kills_players 1 mp_solid_teammates 0 -mp_solid_enemies 0 mp_respawn_on_death_ct 1 mp_respawn_on_death_t 1 mp_ct_default_secondary weapon_usp_silencer diff --git a/src/ST-Events/Tick.cs b/src/ST-Events/Tick.cs index 1f9126a..05b0d5d 100644 --- a/src/ST-Events/Tick.cs +++ b/src/ST-Events/Tick.cs @@ -5,11 +5,21 @@ namespace SurfTimer; public partial class SurfTimer { - public static void OnTick() + public void OnTick() { if (CurrentMap == null) return; + foreach (var player in playerList.Values) + { + player.Timer.Tick(); + player.ReplayRecorder.Tick(player); + player.HUD.Display(); + if (player.Controller.Collision == null) continue; + if ((CollisionGroup)player.Controller.Collision.CollisionGroup == CollisionGroup.COLLISION_GROUP_DEBRIS) continue; + player.Controller.SetCollisionGroup(CollisionGroup.COLLISION_GROUP_DEBRIS); + } + // Need to disable maps from executing their cfgs. Currently idk how (But seriusly it a security issue) ConVar? bot_quota = ConVar.Find("bot_quota"); diff --git a/src/ST-UTILS/Extensions.cs b/src/ST-UTILS/Extensions.cs index fdb797e..1127fec 100644 --- a/src/ST-UTILS/Extensions.cs +++ b/src/ST-UTILS/Extensions.cs @@ -45,6 +45,17 @@ public static void Teleport(this CBaseEntity entity, VectorT? position = null, Q public static VectorT ToVector_t(this Vector vec) => new(vec.Handle); public static QAngleT ToQAngle_t(this QAngle vec) => new(vec.Handle); + public static void SetCollisionGroup(this CCSPlayerController controller, CollisionGroup collisionGroup) + { + if (!controller.IsValid || controller.Collision == null) return; + controller.Collision.CollisionAttribute.CollisionGroup = (byte)collisionGroup; + controller.Collision.CollisionGroup = (byte)collisionGroup; + + Utilities.SetStateChanged(controller, "CColisionProperity", "m_collisionGroup"); + Utilities.SetStateChanged(controller, "CCollisionProperty", "m_collisionAttribute"); + } + + /// /// Checks whether an IP is a local one. Allows testing the plugin in a local environment setup for GeoIP /// From 11a21396d7f4742180e4ad9769c92b24c82acdfe Mon Sep 17 00:00:00 2001 From: tslashd Date: Thu, 2 Oct 2025 12:56:43 +0300 Subject: [PATCH 3/4] do not break timer --- src/ST-Events/Tick.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/ST-Events/Tick.cs b/src/ST-Events/Tick.cs index 1f9126a..6968d69 100644 --- a/src/ST-Events/Tick.cs +++ b/src/ST-Events/Tick.cs @@ -5,11 +5,18 @@ namespace SurfTimer; public partial class SurfTimer { - public static void OnTick() + public void OnTick() { if (CurrentMap == null) return; + foreach (var player in playerList.Values) + { + player.Timer.Tick(); + player.ReplayRecorder.Tick(player); + player.HUD.Display(); + } + // Need to disable maps from executing their cfgs. Currently idk how (But seriusly it a security issue) ConVar? bot_quota = ConVar.Find("bot_quota"); From 76854f7b115ff85262dc21415ec4f20f0ab444dc Mon Sep 17 00:00:00 2001 From: T <74899888+tslashd@users.noreply.github.com> Date: Thu, 2 Oct 2025 13:17:38 +0300 Subject: [PATCH 4/4] smh --- cfg/SurfTimer/server_settings.cfg | 1 + src/ST-UTILS/Extensions.cs | 11 ----------- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/cfg/SurfTimer/server_settings.cfg b/cfg/SurfTimer/server_settings.cfg index b67b24f..b028ddf 100644 --- a/cfg/SurfTimer/server_settings.cfg +++ b/cfg/SurfTimer/server_settings.cfg @@ -42,6 +42,7 @@ bot_freeze 1 mp_spectators_max 64 mp_humanteam ct mp_disconnect_kills_players 1 +mp_solid_enemies 0 mp_solid_teammates 0 mp_respawn_on_death_ct 1 mp_respawn_on_death_t 1 diff --git a/src/ST-UTILS/Extensions.cs b/src/ST-UTILS/Extensions.cs index 1127fec..fdb797e 100644 --- a/src/ST-UTILS/Extensions.cs +++ b/src/ST-UTILS/Extensions.cs @@ -45,17 +45,6 @@ public static void Teleport(this CBaseEntity entity, VectorT? position = null, Q public static VectorT ToVector_t(this Vector vec) => new(vec.Handle); public static QAngleT ToQAngle_t(this QAngle vec) => new(vec.Handle); - public static void SetCollisionGroup(this CCSPlayerController controller, CollisionGroup collisionGroup) - { - if (!controller.IsValid || controller.Collision == null) return; - controller.Collision.CollisionAttribute.CollisionGroup = (byte)collisionGroup; - controller.Collision.CollisionGroup = (byte)collisionGroup; - - Utilities.SetStateChanged(controller, "CColisionProperity", "m_collisionGroup"); - Utilities.SetStateChanged(controller, "CCollisionProperty", "m_collisionAttribute"); - } - - /// /// Checks whether an IP is a local one. Allows testing the plugin in a local environment setup for GeoIP ///