From e60556e1240b8c83e97be50ec1328dbfe0ad434e Mon Sep 17 00:00:00 2001 From: Marco Cawthorne Date: Sun, 9 Feb 2025 01:16:39 -0800 Subject: [PATCH] RuleC: dedicated precache callback which will be called at a specific time. --- src/server/entry.qc | 1 + src/server/scripts.qc | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/server/entry.qc b/src/server/entry.qc index 4b1c9201..3f50be70 100644 --- a/src/server/entry.qc +++ b/src/server/entry.qc @@ -436,6 +436,7 @@ initents(void) * let's add our own that we can actually trust. */ serverinfo.SetInteger("sv_playerslots", cvars.GetInteger("sv_playerslots")); + RuleC_Precache(); MapC_CallMainFunction(); Plugin_InitEnts(); Mapcycle_Init(); diff --git a/src/server/scripts.qc b/src/server/scripts.qc index dae61e25..3d0f3113 100644 --- a/src/server/scripts.qc +++ b/src/server/scripts.qc @@ -84,13 +84,27 @@ RuleC_Init(void) if (mainFunction) { externset(g_ruleCProgs, world, "self"); - thread(mainFunction()) + mainFunction(); } else { error(sprintf("RuleC %S does not have a main function.", pathToProgs)); } } } +void +RuleC_Precache(void) +{ + void(void) mainFunction; + mainFunction = externvalue(g_ruleCProgs, "CodeCallback_Precache"); + + if (mainFunction) { + externset(g_ruleCProgs, world, "self"); + mainFunction(); + } else { + NSError("%s does not have a Precache function.", mapname); + } +} + void MapC_CallMainFunction(void) {