diff --git a/src/zr/playerclasses/apply.inc b/src/zr/playerclasses/apply.inc index cc845d8..625da0e 100644 --- a/src/zr/playerclasses/apply.inc +++ b/src/zr/playerclasses/apply.inc @@ -101,8 +101,19 @@ bool:ClassApplyModel(client, classindex, cachetype = ZR_CLASS_CACHE_PLAYER) // Check if the user specified no change. else if (strcmp(modelpath, "default", false) == 0) { - // Don't change the model. - return true; + // Get current model. + GetClientModel(client, modelpath, sizeof(modelpath)); + + // Restore original model if not already set. + if (!StrEqual(ClassOriginalPlayerModel[client], modelpath)) + { + strcopy(modelpath, sizeof(modelpath), ClassOriginalPlayerModel[client]); + } + else + { + // Wanted model is already set, don't change. + return true; + } } SetEntityModel(client, modelpath); diff --git a/src/zr/playerclasses/classevents.inc b/src/zr/playerclasses/classevents.inc index 99e7304..9c5f4d6 100644 --- a/src/zr/playerclasses/classevents.inc +++ b/src/zr/playerclasses/classevents.inc @@ -69,6 +69,10 @@ ClassOnClientDisconnect(client) */ ClassOnClientSpawn(client) { + decl String:originalmodel[PLATFORM_MAX_PATH]; + decl String:steamid[16]; + decl String:classname[64]; + // Check if the player is alive. if (!IsPlayerAlive(client)) { @@ -85,10 +89,12 @@ ClassOnClientSpawn(client) // Reset attributes by triggering death event. ClassOnClientDeath(client); + // Cache original player model. + GetClientModel(client, originalmodel, sizeof(originalmodel)); + strcopy(ClassOriginalPlayerModel[client], PLATFORM_MAX_PATH, originalmodel); + + // Get random class setting. new bool:randomclass = GetConVarBool(g_hCvarsList[CVAR_CLASSES_RANDOM]); - - decl String:steamid[16]; - decl String:classname[64]; // Assign random classes if enabled. Always do it for bots. GetClientAuthString(client, steamid, sizeof(steamid)); diff --git a/src/zr/playerclasses/playerclasses.inc b/src/zr/playerclasses/playerclasses.inc index 8e76e5f..e06a73c 100644 --- a/src/zr/playerclasses/playerclasses.inc +++ b/src/zr/playerclasses/playerclasses.inc @@ -366,6 +366,12 @@ new bool:ClassPlayerAdminMode[MAXPLAYERS + 1]; */ new ClassPlayerNextAdminClass[MAXPLAYERS + 1]; +/** + * Cache for storing original model path before applying custom models. Used + * when restoring to old model. + */ +new String:ClassOriginalPlayerModel[MAXPLAYERS + 1][PLATFORM_MAX_PATH]; + #include "zr/playerclasses/filtertools" #include "zr/playerclasses/attributes" #include "zr/playerclasses/apply"