From: terencehill Date: Mon, 20 Feb 2023 18:09:12 +0000 (+0100) Subject: Use a temp entity to avoid linking kh_controller to the world with setmodel X-Git-Tag: xonotic-v0.8.6~165 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=fb8628779b7cacf7b14eb7a1611e9f5b0b476746;p=xonotic%2Fxonotic-data.pk3dir.git Use a temp entity to avoid linking kh_controller to the world with setmodel --- diff --git a/qcsrc/common/gamemodes/gamemode/keyhunt/sv_keyhunt.qc b/qcsrc/common/gamemodes/gamemode/keyhunt/sv_keyhunt.qc index eaed75089..1553bf5b4 100644 --- a/qcsrc/common/gamemodes/gamemode/keyhunt/sv_keyhunt.qc +++ b/qcsrc/common/gamemodes/gamemode/keyhunt/sv_keyhunt.qc @@ -979,27 +979,24 @@ void kh_Initialize() // sets up th KH environment kh_teams = cvar("g_keyhunt_teams"); // read the cvar directly as it gets written earlier in the same frame kh_teams = BITS(bound(2, kh_teams, 4)); - // make a KH entity for controlling the game - kh_controller = new_pure(kh_controller); - setthink(kh_controller, kh_Controller_Think); - kh_Controller_SetThink(0, kh_WaitForPlayers); + // use a temp entity to avoid linking kh_controller to the world with setmodel + entity tmp_ent = spawn(); + setmodel(tmp_ent, MDL_KH_KEY); + kh_key_dropped = tmp_ent.modelindex; - setmodel(kh_controller, MDL_KH_KEY); - kh_key_dropped = kh_controller.modelindex; - /* - dprint(vtos(kh_controller.mins)); - dprint(vtos(kh_controller.maxs)); - dprint("\n"); - */ #ifdef KH_PLAYER_USE_CARRIEDMODEL - setmodel(kh_controller, MDL_KH_KEY_CARRIED); - kh_key_carried = kh_controller.modelindex; + setmodel(tmp_ent, MDL_KH_KEY_CARRIED); + kh_key_carried = tmp_ent.modelindex; #else kh_key_carried = kh_key_dropped; #endif - kh_controller.model = ""; - kh_controller.modelindex = 0; + delete(tmp_ent); + + // make a KH entity for controlling the game + kh_controller = new_pure(kh_controller); + setthink(kh_controller, kh_Controller_Think); + kh_Controller_SetThink(0, kh_WaitForPlayers); kh_ScoreRules(kh_teams); }