Fixed original models not restored when using zr_human on a player.

This commit is contained in:
richard 2009-06-22 17:01:26 +02:00
parent a0d8209c6a
commit 1cc0fc4dda
3 changed files with 28 additions and 5 deletions

View File

@ -101,9 +101,20 @@ bool:ClassApplyModel(client, classindex, cachetype = ZR_CLASS_CACHE_PLAYER)
// Check if the user specified no change. // Check if the user specified no change.
else if (strcmp(modelpath, "default", false) == 0) else if (strcmp(modelpath, "default", false) == 0)
{ {
// Don't change the model. // 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; return true;
} }
}
SetEntityModel(client, modelpath); SetEntityModel(client, modelpath);
return true; return true;

View File

@ -69,6 +69,10 @@ ClassOnClientDisconnect(client)
*/ */
ClassOnClientSpawn(client) ClassOnClientSpawn(client)
{ {
decl String:originalmodel[PLATFORM_MAX_PATH];
decl String:steamid[16];
decl String:classname[64];
// Check if the player is alive. // Check if the player is alive.
if (!IsPlayerAlive(client)) if (!IsPlayerAlive(client))
{ {
@ -85,10 +89,12 @@ ClassOnClientSpawn(client)
// Reset attributes by triggering death event. // Reset attributes by triggering death event.
ClassOnClientDeath(client); ClassOnClientDeath(client);
new bool:randomclass = GetConVarBool(g_hCvarsList[CVAR_CLASSES_RANDOM]); // Cache original player model.
GetClientModel(client, originalmodel, sizeof(originalmodel));
strcopy(ClassOriginalPlayerModel[client], PLATFORM_MAX_PATH, originalmodel);
decl String:steamid[16]; // Get random class setting.
decl String:classname[64]; new bool:randomclass = GetConVarBool(g_hCvarsList[CVAR_CLASSES_RANDOM]);
// Assign random classes if enabled. Always do it for bots. // Assign random classes if enabled. Always do it for bots.
GetClientAuthString(client, steamid, sizeof(steamid)); GetClientAuthString(client, steamid, sizeof(steamid));

View File

@ -366,6 +366,12 @@ new bool:ClassPlayerAdminMode[MAXPLAYERS + 1];
*/ */
new ClassPlayerNextAdminClass[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/filtertools"
#include "zr/playerclasses/attributes" #include "zr/playerclasses/attributes"
#include "zr/playerclasses/apply" #include "zr/playerclasses/apply"