@@ -48,7 +48,6 @@ public static void InitializeModel(string key, Model model)
4848 model . Name = model . Index ;
4949 }
5050 }
51-
5251 public void ReloadConfig ( string ModuleDirectory , ModelConfig config )
5352 {
5453 this . _Config = config ;
@@ -125,6 +124,7 @@ public void SetPlayerAllModel(ulong steamid, string? tModel, string? ctModel, bo
125124 }
126125 }
127126 }
127+
128128 public void SetPlayerModel ( ulong steamid , string ? modelIndex , CsTeam team , bool permissionBypass )
129129 {
130130 var side = team == CsTeam . Terrorist ? Side . T : Side . CT ;
@@ -157,24 +157,24 @@ public Tuple<bool, bool> CheckAndReplaceModel(CCSPlayerController player)
157157 var defaultCTModel = _DefaultModelManager . GetPlayerDefaultModel ( player , Side . CT ) ;
158158 if ( modelCache == null ) // player first time join
159159 {
160- SetPlayerAllModel ( steamid , defaultTModel ? . index , defaultCTModel ? . index , false , false ) ;
160+ SetPlayerAllModel ( steamid , "@default" , "@default" , false , false ) ;
161161 return new Tuple < bool , bool > ( false , false ) ;
162162 }
163163 var tValid = CheckModel ( player , Side . T , modelCache , defaultTModel ) ;
164164 var ctValid = CheckModel ( player , Side . CT , modelCache , defaultCTModel ) ;
165165 if ( ! tValid && ! ctValid )
166166 {
167- SetPlayerAllModel ( steamid , defaultTModel ? . index , defaultCTModel ? . index , false ) ;
167+ SetPlayerAllModel ( steamid , "@default" , "@default" , false ) ;
168168 return new Tuple < bool , bool > ( true , true ) ;
169169 }
170170 else if ( ! tValid )
171171 {
172- SetPlayerModel ( steamid , defaultTModel ? . index , Side . T , false ) ;
172+ SetPlayerModel ( steamid , "@default" , Side . T , false ) ;
173173 return new Tuple < bool , bool > ( true , false ) ;
174174 }
175175 else if ( ! ctValid )
176176 {
177- SetPlayerModel ( steamid , defaultCTModel ? . index , Side . CT , false ) ;
177+ SetPlayerModel ( steamid , "@default" , Side . CT , false ) ;
178178 return new Tuple < bool , bool > ( false , true ) ;
179179 }
180180 return new Tuple < bool , bool > ( false , false ) ;
@@ -192,18 +192,15 @@ public bool CheckModel(CCSPlayerController player, Side side, ModelCache? modelC
192192 {
193193 return true ;
194194 }
195- if ( defaultModel != null && defaultModel . force )
195+ if ( defaultModel != null && defaultModel . force && modelIndex != "@default" )
196196 {
197- if ( modelIndex != defaultModel . index )
198- {
199- return false ;
200- }
197+ return false ;
201198 }
202199 if ( modelIndex == "@random" && _Config . DisableRandomModel )
203200 {
204201 return false ;
205202 }
206- if ( modelIndex == "" || modelIndex == "@random" )
203+ if ( modelIndex == "" || modelIndex == "@random" || modelIndex == "@default" )
207204 {
208205 return true ;
209206 }
@@ -216,28 +213,35 @@ public bool CheckModel(CCSPlayerController player, Side side, ModelCache? modelC
216213 return CanPlayerApplyModel ( player , side , model ) ;
217214 }
218215
219- public bool SetPlayerModelWithCheck ( CCSPlayerController player , string modelIndex , Side side )
216+ private bool IsPlayerInCooldown ( CCSPlayerController player )
220217 {
221218 if ( _ModelChangeCooldown . ContainsKey ( player . SteamID ) )
222219 {
223220 var lastTime = _ModelChangeCooldown [ player . SteamID ] ;
224221 if ( DateTimeOffset . UtcNow . ToUnixTimeMilliseconds ( ) - lastTime < ( _Config . ModelChangeCooldownSecond * 1000 ) )
225222 {
226223 player . PrintToChat ( _Localizer [ "command.model.cooldown" ] ) ;
227- return false ;
224+ return true ;
228225 }
229226 }
227+ return false ;
228+ }
229+
230+ public bool SetPlayerModelWithCheck ( CCSPlayerController player , string modelIndex , Side side )
231+ {
232+ if ( IsPlayerInCooldown ( player ) )
233+ {
234+ return false ;
235+ }
230236
231237 var isSpecial = modelIndex == "" || modelIndex == "@random" ;
232238
233239 if ( modelIndex == "@default" )
234240 {
235- var tDefault = _DefaultModelManager . GetPlayerDefaultModel ( player , Side . T ) ;
236- var ctDefault = _DefaultModelManager . GetPlayerDefaultModel ( player , Side . CT ) ;
237241 Utils . ExecuteSide ( side ,
238- ( ) => SetPlayerAllModel ( player ! . AuthorizedSteamID ! . SteamId64 , tDefault == null ? "" : tDefault . index , ctDefault == null ? "" : ctDefault . index , false ) ,
239- ( ) => SetPlayerModel ( player ! . AuthorizedSteamID ! . SteamId64 , tDefault == null ? "" : tDefault . index , side , false ) ,
240- ( ) => SetPlayerModel ( player ! . AuthorizedSteamID ! . SteamId64 , ctDefault == null ? "" : ctDefault . index , side , false )
242+ ( ) => SetPlayerAllModel ( player ! . AuthorizedSteamID ! . SteamId64 , "@default" , "@default" , false ) ,
243+ ( ) => SetPlayerModel ( player ! . AuthorizedSteamID ! . SteamId64 , "@default" , side , false ) ,
244+ ( ) => SetPlayerModel ( player ! . AuthorizedSteamID ! . SteamId64 , "@default" , side , false )
241245 ) ;
242246 if ( _Config . DisableInstantChange || ! Utils . CanPlayerSetModelInstantly ( player , side ) )
243247 {
@@ -277,8 +281,8 @@ public bool SetPlayerModelWithCheck(CCSPlayerController player, string modelInde
277281 player . PrintToChat ( _Localizer [ "command.model.success" , _Localizer [ "side." + side . ToName ( ) ] ] ) ;
278282 }
279283 return true ;
280-
281284 }
285+
282286 public Model ? GetPlayerModel ( CCSPlayerController player , Side side )
283287 {
284288 if ( side == Side . All )
@@ -303,6 +307,20 @@ public bool SetPlayerModelWithCheck(CCSPlayerController player, string modelInde
303307 var index = Random . Shared . Next ( models . Count ( ) ) ;
304308 return models [ index ] ;
305309 }
310+ if ( modelIndex == "@default" )
311+ {
312+ var defaultModel = _DefaultModelManager . GetPlayerDefaultModel ( player , side ) ;
313+ if ( defaultModel == null || defaultModel . index . Count == 0 )
314+ {
315+ return null ;
316+ }
317+ var index = defaultModel . index [ Random . Shared . Next ( defaultModel . index . Count ) ] ;
318+ if ( index == "" )
319+ {
320+ return null ;
321+ }
322+ return GetModel ( index ) ;
323+ }
306324 return GetModel ( modelIndex ) ;
307325 }
308326
@@ -316,6 +334,7 @@ public bool SetPlayerModelWithCheck(CCSPlayerController player, string modelInde
316334 var side = team == CsTeam . Terrorist ? Side . T : Side . CT ;
317335 return GetPlayerModel ( player , side ) ;
318336 }
337+
319338 public string GetPlayerModelName ( CCSPlayerController player , CsTeam team )
320339 {
321340 var modelCache = _CacheManager . GetPlayerModelCache ( player ) ;
@@ -457,5 +476,4 @@ public void ClearMapDefaultModel()
457476 {
458477 _MapDefaultModels . Clear ( ) ;
459478 }
460-
461479}
0 commit comments