Restructured class system files. Added more functions for applying class attributes.
This commit is contained in:
147
src/zr/playerclasses/apply.inc
Normal file
147
src/zr/playerclasses/apply.inc
Normal file
@ -0,0 +1,147 @@
|
||||
/*
|
||||
* ============================================================================
|
||||
*
|
||||
* Zombie:Reloaded
|
||||
*
|
||||
* File: apply.inc
|
||||
* Description: Functions for applying attributes and effects on a client.
|
||||
* Author: Richard Helgeby
|
||||
*
|
||||
* ============================================================================
|
||||
*/
|
||||
|
||||
/**
|
||||
* Applies all class attributes on a player. Changing model, hp, speed, health,
|
||||
* effects etc. The players current team will be used to get the class index.
|
||||
*
|
||||
* @param client The player to apply attributes on.
|
||||
* @param improved Optional. Gives advantages or improvements in some
|
||||
* attributes. To be used on mother zombies. Default is
|
||||
* false.
|
||||
* @return True if all success on applying all attributes, false otherwise.
|
||||
*/
|
||||
bool:ClassApplyAttributes(client, bool:improved = false)
|
||||
{
|
||||
new classindex = ClassGetActiveIndex(client);
|
||||
|
||||
if (classindex < 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
ClassApplyModel(client, classindex);
|
||||
ClassApplyAlpha(client, classindex);
|
||||
ClassApplyOverlay(client, classindex);
|
||||
}
|
||||
|
||||
/**
|
||||
* Changes the model on a player.
|
||||
*
|
||||
* @param client The client index.
|
||||
* @param classindex The class to read from.
|
||||
* @param cachetype Optional. Specifies what class cache to read from.
|
||||
* Options:
|
||||
* ZR_CLASS_CACHE_ORIGINAL - Unchanced class data.
|
||||
* ZR_CLASS_CACHE_MODIFIED - Changed/newest class data.
|
||||
* ZR_CLASS_CACHE_PLAYER (default) - Player cache.
|
||||
* @return True on success, false otherwise.
|
||||
*/
|
||||
bool:ClassApplyModel(client, classindex, cachetpye = ZR_CLASS_CACHE_PLAYER)
|
||||
{
|
||||
decl String:modelpath[256];
|
||||
|
||||
// Get the model path from the specified cache.
|
||||
if (cachetype == ZR_CLASS_CACHE_PLAYER)
|
||||
{
|
||||
ClassGetModelPath(client, modelpath, sizeof(modelpath), cachetype)
|
||||
}
|
||||
else
|
||||
{
|
||||
ClassGetModelPath(classindex, modelpath, sizeof(modelpath), cachetype)
|
||||
}
|
||||
|
||||
// Check if the user specified a random model.
|
||||
if (strcmp(modelpath, "random", false) == 0)
|
||||
{
|
||||
// TODO: Make a function that gets a random model from the specified team.
|
||||
new randmodel = GetRandomInt(0, GetArraySize(arrayModels) - 1);
|
||||
GetArrayString(arrayModels, randmodel, modelpath, sizeof(modelpath));
|
||||
Format(modelpath, sizeof(modelpath), "%s.mdl", modelpath);
|
||||
}
|
||||
|
||||
SetPlayerModel(client, modelpath);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets transparency on a player.
|
||||
*
|
||||
* @param client The client index.
|
||||
* @param classindex The class to read from.
|
||||
* @param cachetype Optional. Specifies what class cache to read from.
|
||||
* Options:
|
||||
* ZR_CLASS_CACHE_ORIGINAL - Unchanced class data.
|
||||
* ZR_CLASS_CACHE_MODIFIED - Changed/newest class data.
|
||||
* ZR_CLASS_CACHE_PLAYER (default) - Player cache.
|
||||
* @return True on success, false otherwise.
|
||||
*/
|
||||
bool:ClassApplyAlpha(client, classindex, cachetype = ZR_CLASS_CACHE_PLAYER)
|
||||
{
|
||||
new alpha;
|
||||
|
||||
// Get the alpha value from the specified cache.
|
||||
if (cachetype == ZR_CLASS_CACHE_PLAYER)
|
||||
{
|
||||
alpha = ClassGetAlphaSpawn(client, cachetype);
|
||||
}
|
||||
else
|
||||
{
|
||||
alpha = ClassGetAlphaSpawn(classindex, cachetype);
|
||||
}
|
||||
|
||||
if (alpha < 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
SetPlayerAlpha(client, alpha);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply the overlay on a player if not applied.
|
||||
*
|
||||
* @param client The client index.
|
||||
* @param classindex The class to read from.
|
||||
* @param cachetype Optional. Specifies what class cache to read from.
|
||||
* Options:
|
||||
* ZR_CLASS_CACHE_ORIGINAL - Unchanced class data.
|
||||
* ZR_CLASS_CACHE_MODIFIED - Changed/newest class data.
|
||||
* ZR_CLASS_CACHE_PLAYER (default) - Player cache.
|
||||
* @return True on success, false otherwise.
|
||||
*/
|
||||
bool:ClassApplyOverlay(client, classindex, cachetype = ZR_CLASS_CACHE_PLAYER)
|
||||
{
|
||||
decl String:overlay[256];
|
||||
|
||||
// Validate DirectX requirements.
|
||||
if (dxLevel[client] < DXLEVEL_MIN)
|
||||
{
|
||||
// DirectX version is too old.
|
||||
// TODO: Log warning?
|
||||
return false;
|
||||
}
|
||||
|
||||
// Get the overlay path from the specified cache.
|
||||
if (cachetype == ZR_CLASS_CACHE_PLAYER)
|
||||
{
|
||||
ClassGetOverlayPath(client, overlay, sizeof(overlay), cachetype);
|
||||
}
|
||||
else
|
||||
{
|
||||
ClassGetOverlayPath(classindex, overlay, sizeof(overlay), cachetype);
|
||||
}
|
||||
|
||||
ClassOverlayInitialize(client, overlay);
|
||||
return true;
|
||||
}
|
Reference in New Issue
Block a user