diff options
| author | Vladimir Druzenko <vvd@FreeBSD.org> | 2026-05-14 21:47:41 +0000 |
|---|---|---|
| committer | Vladimir Druzenko <vvd@FreeBSD.org> | 2026-05-14 21:49:29 +0000 |
| commit | 3e938bf8cf15f9ca1d7d74b309d3777312ad490a (patch) | |
| tree | 49b269a012995bc7e58ce040798fc629bd32bf38 | |
| parent | a7ce159c0abd12cae6c133a2749b258726140ebd (diff) | |
games/ktx: Update 1.45 => 1.46
Changelog:
https://github.com/QW-Group/ktx/releases/tag/1.46
Sponsored by: UNIS Labs
MFH: 2026Q2
(cherry picked from commit f540bd6bbd1635d7e167c06f990f7a9d25e7dc06)
| -rw-r--r-- | games/ktx/Makefile | 16 | ||||
| -rw-r--r-- | games/ktx/distinfo | 18 | ||||
| -rw-r--r-- | games/ktx/files/patch-socd | 192 | ||||
| -rw-r--r-- | games/ktx/pkg-plist | 8 |
4 files changed, 36 insertions, 198 deletions
diff --git a/games/ktx/Makefile b/games/ktx/Makefile index 59957e436ad3..a6702499975e 100644 --- a/games/ktx/Makefile +++ b/games/ktx/Makefile @@ -1,7 +1,15 @@ PORTNAME= ktx -DISTVERSION= 1.45 +DISTVERSION= 1.46 CATEGORIES= games +PATCH_SITES= https://github.com/QW-Group/ktx/commit/ +PATCHFILES= 18ce9990e07f08f433759d68f47115e93fa05067.patch:-p1 \ + c166537fafc128cdcbe6f1d126d8089461a812bb.patch:-p1 \ + 1f324ab0dd99c55bf8a4c126be7d72ba1992c779.patch:-p1 \ + 0b8bf7ac91f8b47c15f926d2c3214dd9d413e1a6.patch:-p1 \ + c43aafcdc31e66812bb9116c7eca4bc736b76376.patch:-p1 \ + c871f3d2064e1881c694a7357986479b8cb96333.patch:-p1 + MAINTAINER= vvd@FreeBSD.org COMMENT= Kombat Teams eXtreme is a popular QuakeWorld server modification WWW= https://github.com/QW-Group/ktx/ @@ -11,10 +19,12 @@ LICENSE= GPLv2 RUN_DEPENDS= mvdsv:games/mvdsv USES= cmake dos2unix -DOS2UNIX_FILES= resources/example-configs/ktx/ktx.cfg \ +DOS2UNIX_FILES= resources/example-configs/id1/maps/arena3.ent \ + resources/example-configs/ktx/ktx.cfg \ resources/example-configs/ktx/mvdsv.cfg \ resources/example-configs/ktx/problem.cfg \ - resources/example-configs/ktx/race/routes/ztricks2.route + resources/example-configs/ktx/race/routes/ztricks2.route \ + resources/extralog/ktxlog_0.1.xsd USE_GITHUB= yes GH_ACCOUNT= QW-Group USE_RC_SUBR= ${PORTNAME} diff --git a/games/ktx/distinfo b/games/ktx/distinfo index 8518a04f1d3e..eaf0551f0f91 100644 --- a/games/ktx/distinfo +++ b/games/ktx/distinfo @@ -1,3 +1,15 @@ -TIMESTAMP = 1740344268 -SHA256 (QW-Group-ktx-1.45_GH0.tar.gz) = 3bf0e78569fa7d352a2e825257ea37d1e2423480c94f0d18fa58dc265f54288c -SIZE (QW-Group-ktx-1.45_GH0.tar.gz) = 1704185 +TIMESTAMP = 1778778778 +SHA256 (QW-Group-ktx-1.46_GH0.tar.gz) = bda8ae19a9f8cbc4aad8cf8f7963d6e0c0a65b29657ad55b5ad45a14f76bf3a7 +SIZE (QW-Group-ktx-1.46_GH0.tar.gz) = 1744829 +SHA256 (18ce9990e07f08f433759d68f47115e93fa05067.patch) = f9c462297639e162869d86a9c74b69925c8927aa1344c53864fa28f29131d1c6 +SIZE (18ce9990e07f08f433759d68f47115e93fa05067.patch) = 6955 +SHA256 (c166537fafc128cdcbe6f1d126d8089461a812bb.patch) = 6fa7b510d748492c3528307bae9fa18a6172ea6aadc7ae603d982e8ee244f18a +SIZE (c166537fafc128cdcbe6f1d126d8089461a812bb.patch) = 637 +SHA256 (1f324ab0dd99c55bf8a4c126be7d72ba1992c779.patch) = 964729e37c4fe5eafdc502da087ac3c69235dc5e01076bd4736d7390f2e6db5e +SIZE (1f324ab0dd99c55bf8a4c126be7d72ba1992c779.patch) = 909 +SHA256 (0b8bf7ac91f8b47c15f926d2c3214dd9d413e1a6.patch) = a7b78008ca2006ac6efdb8fd2f5402c0735ef9761b389bcb0967ba3c4f192129 +SIZE (0b8bf7ac91f8b47c15f926d2c3214dd9d413e1a6.patch) = 1492 +SHA256 (c43aafcdc31e66812bb9116c7eca4bc736b76376.patch) = 5c3b3dad1f8297f7cf900ed2a639f154b9d73171a8c9b87ed9f254851e1f4281 +SIZE (c43aafcdc31e66812bb9116c7eca4bc736b76376.patch) = 778 +SHA256 (c871f3d2064e1881c694a7357986479b8cb96333.patch) = 68d6f265d6ad19e5b25a2d692f3b67dae6235f94dd74f7d3a22fd7fd6e7addfb +SIZE (c871f3d2064e1881c694a7357986479b8cb96333.patch) = 6319 diff --git a/games/ktx/files/patch-socd b/games/ktx/files/patch-socd deleted file mode 100644 index 03e80334b71e..000000000000 --- a/games/ktx/files/patch-socd +++ /dev/null @@ -1,192 +0,0 @@ -From 631b375f3dbb150c3f37430a0a45f237ffac8153 Mon Sep 17 00:00:00 2001 -From: blaze <blaze@discord> -Date: Tue, 30 Jul 2024 22:49:02 -0700 -Subject: [PATCH] socd detection - ---- - .gitignore | 3 +++ - include/progs.h | 11 ++++++++ - src/client.c | 61 ++++++++++++++++++++++++++++++++++++++++++++ - src/commands.c | 32 +++++++++++++++++++++-- - src/stats.c | 8 ++++++ - src/world.c | 2 ++ - tools/vs/ktx.vcxproj | 34 ++++++++++++++++++------ - 7 files changed, 141 insertions(+), 10 deletions(-) - ---- include/progs.h.orig -+++ include/progs.h -@@ -944,6 +944,17 @@ typedef struct gedict_s - float fIllegalFPSWarnings; - // ILLEGALFPS] - -+// SOCD detectioin -+ float fStrafeChangeCount; -+ float fFramePerfectStrafeChangeCount; -+ int socdDetected; -+ int socdChecksCount; -+ float fLastSideMoveSpeed; -+ int matchStrafeChangeCount; -+ int matchPerfectStrafeCount; -+ int nullStrafeCount; -+// SOCD -+ - float shownick_time; // used to force centerprint is off at desired time - clientType_t ct; // client type for client edicts - // { timing ---- src/client.c.orig -+++ src/client.c -@@ -1658,6 +1658,16 @@ void ClientConnect() - SendIntermissionToClient(); - } - -+// SOCD -+ self->socdChecksCount = 0; -+ self->socdDetected = 0; -+ self->fStrafeChangeCount = 0; -+ self->fFramePerfectStrafeChangeCount = 0; -+ self->fLastSideMoveSpeed = 0; -+ self->matchStrafeChangeCount = 0; -+ self->matchPerfectStrafeCount = 0; -+ self->nullStrafeCount = 0; -+ - // ILLEGALFPS[ - - // Zibbo's frametime checking code -@@ -3520,6 +3530,57 @@ void PlayerPreThink() - } - #endif - -+// SOCD detection -+ { -+ float fSideMoveSpeed = self->movement[1]; -+ -+ if ((fSideMoveSpeed != 0) && (fSideMoveSpeed != self->fLastSideMoveSpeed) && (self->nullStrafeCount < 3)) //strafechange -+ { -+ self->fStrafeChangeCount += 1; -+ if (match_in_progress) -+ self->matchStrafeChangeCount += 1; -+ -+ if ((fSideMoveSpeed != 0) && (self->fLastSideMoveSpeed != 0)) -+ { -+ self->fFramePerfectStrafeChangeCount += 1; -+ if (match_in_progress) -+ self->matchPerfectStrafeCount += 1; -+ } -+ -+ self->nullStrafeCount = 0; -+ } -+ else -+ { -+ if (0 == fSideMoveSpeed) -+ self->nullStrafeCount += 1; -+ else -+ self->nullStrafeCount = 0; -+ } -+ -+ self->fLastSideMoveSpeed = fSideMoveSpeed; -+ -+ if (self->fStrafeChangeCount >= 16) -+ { -+ if (self->fFramePerfectStrafeChangeCount / self->fStrafeChangeCount >= 0.75) -+ { -+ int k_allow_socd_warning = cvar("k_allow_socd_warning"); -+ -+ self->socdDetected += 1; -+ -+ if ((!match_in_progress) && (!self->isBot) && k_allow_socd_warning) -+ { -+ G_bprint(PRINT_HIGH, -+ "Warning! %s: SOCD movement assistance detected. Please disable iDrive or keyboard SOCD features.\n", -+ self->netname); -+ } -+ } -+ -+ self->socdChecksCount += 1; -+ self->fStrafeChangeCount = 0; -+ self->fFramePerfectStrafeChangeCount = 0; -+ } -+ } -+ - // ILLEGALFPS[ - - self->fAverageFrameTime += g_globalvars.frametime; ---- src/commands.c.orig -+++ src/commands.c -@@ -8114,16 +8114,47 @@ void fcheck() - - if (!is_real_adm(self)) - { -- if (strneq(arg_x, "f_version") && strneq(arg_x, "f_modified") && strneq(arg_x, "f_server")) -+ if (strneq(arg_x, "f_version") && strneq(arg_x, "f_modified") && strneq(arg_x, "f_server") && strneq(arg_x, "f_movement")) - { - G_sprint(self, 2, "You are not allowed to check \020%s\021\n" -- "available checks are: f_version, f_modified and f_server\n", -+ "available checks are: f_version, f_modified, f_server and f_movement\n", - arg_x); - - return; - } - } - -+ if (streq(arg_x, "f_movement")) -+ { -+ G_bprint(2, "%s is checking \020%s\021\n", self->netname, arg_x); -+ -+ for (i = 1; i <= MAX_CLIENTS; i++) -+ { -+ if (!strnull(g_edicts[i].netname)) -+ { -+ if (g_edicts[i].socdDetected > 0) -+ { -+ G_bprint(2, "%s: SOCD movement assistance detected!\n", g_edicts[i].netname); -+ } -+ else -+ { -+ if (g_edicts[i].socdChecksCount >= 2) -+ { -+ G_bprint(2, "%s: no assistance detected.\n", g_edicts[i].netname); -+ } -+ else -+ { -+ G_bprint(2, "%s: not enough movement to run SOCD detection. Please move around a map.\n", g_edicts[i].netname); -+ } -+ } -+ G_bprint(2, "%s: %s:%d/%d %s:%d/%d\n", redtext("Movement"), redtext("Perfect strafes"), -+ g_edicts[i].matchPerfectStrafeCount, g_edicts[i].matchStrafeChangeCount, -+ redtext("SOCD detections"), g_edicts[i].socdDetected, g_edicts[i].socdChecksCount); -+ } -+ } -+ return; -+ } -+ - for (i = 1; i <= MAX_CLIENTS; i++) - { - if (g_edicts[i].f_checkbuf) ---- src/stats.c.orig -+++ src/stats.c -@@ -763,6 +763,14 @@ void OnePlayerStats(gedict_t *p, int tp) - p->ps.vel_frames > 0 ? p->ps.velocity_sum / p->ps.vel_frames : 0.); - } - -+ if (!p->isBot) -+ { -+ G_bprint(2, "%s: %s:%d/%d %s:%d/%d\n", redtext("Movement"), redtext("Perfect strafes"), -+ p->matchPerfectStrafeCount, p->matchStrafeChangeCount, redtext("SOCD detections"), -+ p->socdDetected, p->socdChecksCount); -+ } -+ -+ - // armors + megahealths - if (!lgc_enabled()) - { ---- src/world.c.orig -+++ src/world.c -@@ -1000,6 +1000,8 @@ void FirstFrame() - - RegisterCvar("k_teamoverlay"); // q3 like team overlay - -+ RegisterCvar("k_allow_socd_warning"); // socd -+ - // { SP - RegisterCvarEx("k_monster_spawn_time", "20"); - // } diff --git a/games/ktx/pkg-plist b/games/ktx/pkg-plist index cfa3e572433e..3272e5f95b20 100644 --- a/games/ktx/pkg-plist +++ b/games/ktx/pkg-plist @@ -5,6 +5,7 @@ quake/ktx/bots/maps/2towers.bot quake/ktx/bots/maps/aerowalk.bot quake/ktx/bots/maps/amphi2.bot quake/ktx/bots/maps/arenazap.bot +quake/ktx/bots/maps/aztek.bot quake/ktx/bots/maps/bravado.bot quake/ktx/bots/maps/cmt1b.bot quake/ktx/bots/maps/cmt3.bot @@ -18,25 +19,32 @@ quake/ktx/bots/maps/dmm4_1.bot quake/ktx/bots/maps/dmm4_3.bot quake/ktx/bots/maps/e1m2.bot quake/ktx/bots/maps/endif.bot +quake/ktx/bots/maps/forsaken.bot quake/ktx/bots/maps/frobodm2.bot quake/ktx/bots/maps/marena2.bot quake/ktx/bots/maps/marena3.bot quake/ktx/bots/maps/monsoon.bot quake/ktx/bots/maps/nacmidair.bot quake/ktx/bots/maps/noentry.bot +quake/ktx/bots/maps/obsidian.bot quake/ktx/bots/maps/oldcrat.bot +quake/ktx/bots/maps/phantombase.bot quake/ktx/bots/maps/pkeg1.bot quake/ktx/bots/maps/povdmm4.bot quake/ktx/bots/maps/povdmm4b.bot quake/ktx/bots/maps/ptucket.bot quake/ktx/bots/maps/pushdmm4.bot quake/ktx/bots/maps/q1q3monsoon#td.bot +quake/ktx/bots/maps/qobblestone.bot quake/ktx/bots/maps/rarena3.bot quake/ktx/bots/maps/ravageqwb8.bot +quake/ktx/bots/maps/rocka.bot quake/ktx/bots/maps/schloss.bot quake/ktx/bots/maps/shifter.bot quake/ktx/bots/maps/skull.bot quake/ktx/bots/maps/spinev2.bot +quake/ktx/bots/maps/steam.bot +quake/ktx/bots/maps/stroggopolis.bot quake/ktx/bots/maps/subterfuge.bot quake/ktx/bots/maps/ukooldm2.bot quake/ktx/bots/maps/ukooldm3.bot |
