Added support for different speed methods, defaulted to prop method now. If you don't want to update class settings, use 'zr_classes_speed_method lmv' for backwards compatibility.

This commit is contained in:
Richard Helgeby
2010-07-04 17:58:27 +02:00
parent 4b693385fc
commit eab2333309
12 changed files with 325 additions and 39 deletions

View File

@ -124,7 +124,7 @@
#define ZR_CLASS_DEFAULT_HEALTH_REGEN_AMOUNT 2
#define ZR_CLASS_DEFAULT_HEALTH_INFECT_GAIN 800
#define ZR_CLASS_DEFAULT_KILL_BONUS 2
#define ZR_CLASS_DEFAULT_SPEED 360.0
#define ZR_CLASS_DEFAULT_SPEED 0.0
#define ZR_CLASS_DEFAULT_KNOCKBACK 2.0
#define ZR_CLASS_DEFAULT_JUMP_HEIGHT 10.0
#define ZR_CLASS_DEFAULT_JUMP_DISTANCE 0.2
@ -163,8 +163,10 @@
#define ZR_CLASS_HEALTH_INFECT_GAIN_MAX 20000
#define ZR_CLASS_KILL_BONUS_MIN 0
#define ZR_CLASS_KILL_BONUS_MAX 16
#define ZR_CLASS_SPEED_MIN 10.0
#define ZR_CLASS_SPEED_MAX 2000.0
#define ZR_CLASS_SPEED_LMV_MIN 10.0
#define ZR_CLASS_SPEED_LMV_MAX 2000.0
#define ZR_CLASS_SPEED_PROP_MIN -200.0
#define ZR_CLASS_SPEED_PROP_MAX 800.0
#define ZR_CLASS_KNOCKBACK_MIN -30.0
#define ZR_CLASS_KNOCKBACK_MAX 30.0
#define ZR_CLASS_KNOCKBACK_IGNORE -31.0 /** Used by class editor volumetric feature. */
@ -366,6 +368,16 @@ enum ClassFilter
ClassFilter_Client /** The client to check for class group permissions. Use 0 to ignore group filter and negative to exclude classes with groups set. */
}
/**
* Speed methods for applying player speed.
*/
enum ClassSpeedMethods
{
ClassSpeed_Invalid = -1,
ClassSpeed_LMV, /** Modifies lagged movement value. */
ClassSpeed_Prop, /** Modifies players' max speed property(m_flMaxspeed). */
}
/**
* Empty filter structure.
*/
@ -463,6 +475,11 @@ new String:ClassOriginalPlayerModel[MAXPLAYERS + 1][PLATFORM_MAX_PATH];
*/
new bool:ClassPlayerSpawned[MAXPLAYERS + 1];
/**
* What method used to apply speed on players.
*/
new ClassSpeedMethods:ClassSpeedMethod = ClassSpeed_Prop;
#include "zr/playerclasses/filtertools"
#include "zr/playerclasses/attributes"
#include "zr/playerclasses/apply"
@ -655,6 +672,30 @@ public ClassOnConfigReload(ConfigFile:config)
ClassLoad();
}
/**
* Gets the speed method.
*
* @return Speed method, or ClassSpeed_Invalid on error.
*/
ClassSpeedMethods:ClassGetSpeedMethod()
{
decl String:speedMethod[16];
speedMethod[0] = 0;
GetConVarString(g_hCvarsList[CVAR_CLASSES_SPEED_METHOD], speedMethod, sizeof(speedMethod));
if (StrEqual(speedMethod, "lmv", false))
{
return ClassSpeed_LMV;
}
else if (StrEqual(speedMethod, "prop", false))
{
return ClassSpeed_Prop;
}
return ClassSpeed_Invalid;
}
/**
* Updates the class data cache. Original values are retrieved from ClassData.
*