From 5dc80d0c5e0c7dd4ae62aa7d01ea0767b6046d5e Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Mon, 13 Dec 2010 07:00:20 +0100 Subject: [PATCH] fix player model sound and species loading for invalid skin values; use .model and .skinindex, not a mixture --- qcsrc/common/util.qc | 8 +++++++- qcsrc/server/cl_client.qc | 11 +---------- qcsrc/server/cl_player.qc | 10 ++++++---- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/qcsrc/common/util.qc b/qcsrc/common/util.qc index 83ea8e3e5..1bfbca6ae 100644 --- a/qcsrc/common/util.qc +++ b/qcsrc/common/util.qc @@ -1837,7 +1837,13 @@ float get_model_parameters(string m, float sk) fn = get_model_datafilename(m, sk, "txt"); fh = fopen(fn, FILE_READ); if(fh < 0) - return 0; + { + sk = 0; + fn = get_model_datafilename(m, sk, "txt"); + fh = fopen(fn, FILE_READ); + if(fh < 0) + return 0; + } get_model_parameters_modelname = m; get_model_parameters_modelskin = sk; diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc index 5ff519bd7..e480b4f25 100644 --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@ -724,15 +724,6 @@ void PutObserverInServer (void) self.frags = FRAGS_SPECTATOR; } -float RestrictSkin(float s) -{ - if(!teams_matter) - return s; - if(s == 6) - return 6; - return mod(s, 3); -} - void FixPlayermodel() { local string defaultmodel; @@ -794,7 +785,7 @@ void FixPlayermodel() } oldskin = self.skinindex; - self.skinindex = RestrictSkin(stof(self.playerskin)); + self.skinindex = stof(self.playerskin); } if(chmdl || oldskin != self.skinindex) diff --git a/qcsrc/server/cl_player.qc b/qcsrc/server/cl_player.qc index 27bd209c5..2b4981745 100644 --- a/qcsrc/server/cl_player.qc +++ b/qcsrc/server/cl_player.qc @@ -168,7 +168,7 @@ void CopyBody(float keepvelocity) float player_getspecies() { float s; - get_model_parameters(self.playermodel, self.skinindex); + get_model_parameters(self.model, self.skinindex); s = get_model_parameters_species; get_model_parameters(string_null, 0); if(s < 0) @@ -1224,7 +1224,7 @@ void ClearPlayerSounds() #undef _VOICEMSG } -void LoadPlayerSounds(string f, float first) +float LoadPlayerSounds(string f, float first) { float fh; string s; @@ -1233,7 +1233,7 @@ void LoadPlayerSounds(string f, float first) if(fh < 0) { dprint("Player sound file not found: ", f, "\n"); - return; + return 0; } while((s = fgets(fh))) { @@ -1249,6 +1249,7 @@ void LoadPlayerSounds(string f, float first) self.field = strzone(strcat(argv(1), " ", argv(2))); } fclose(fh); + return 1; } .float modelindex_for_playersound; @@ -1262,7 +1263,8 @@ void UpdatePlayerSounds() self.skinindex_for_playersound = self.skinindex; ClearPlayerSounds(); LoadPlayerSounds("sound/player/default.sounds", 1); - LoadPlayerSounds(get_model_datafilename(self.playermodel, self.skinindex, "sounds"), 0); + if(!LoadPlayerSounds(get_model_datafilename(self.model, self.skinindex, "sounds"), 0)) + LoadPlayerSounds(get_model_datafilename(self.model, 0, "sounds"), 0); } void FakeGlobalSound(string sample, float chan, float voicetype) -- 2.39.2