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) {