Lite Error - Weapon Speed - (solved)

Coding Help/Re-API Supported
Post Reply
User avatar
ArminC
Senior Member
Senior Member
Romania
Posts: 137
Joined: 6 years ago
Location: Bucharest
Contact:

Lite Error - Weapon Speed - (solved)

#1

Post by ArminC » 6 years ago

This add more realistic gravity/ fix the weapons gravity (see knife speed).. but it give an error: (262) : warning 225: unreachable code

I did try for a test to remove: return HAM_SUPERCEDE; or return HAM_IGNORED; it worked in the both cases but I don't know if they are both required and I need to do something else or wich one to delete

Code: Select all

#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN_NAME	"Real Weapon Speed"
#define PLUGIN_VERSION	"1.0"
#define PLUGIN_AUTHOR	"Numb"

//#define DEBUG

#define PDWeaponType	43
#define	PDNextSecAttack	47
#define PDActiveItem    373

#define WEIGHT_GLOCK18      0.900
#define WEIGHT_USP          1.000
#define WEIGHT_DEAGLE       1.800
#define WEIGHT_P228         1.030
#define WEIGHT_ELITE        1.150
#define WEIGHT_FIVESEVEN    0.618
#define WEIGHT_M3           3.500
#define WEIGHT_XM1014       4.000
#define WEIGHT_MP5NAVY      3.420
#define WEIGHT_MAC10        3.820
#define WEIGHT_TMP          1.300
#define WEIGHT_P90          3.000
#define WEIGHT_UMP45        2.270
#define WEIGHT_GALIL        4.350
#define WEIGHT_FAMAS        3.400
#define WEIGHT_AK47         4.790
#define WEIGHT_M4A1         3.220
#define WEIGHT_SG552        3.100
#define WEIGHT_AUG          4.090
#define WEIGHT_G3SG1        4.410
#define WEIGHT_SG550        7.020
#define WEIGHT_SCOUT        3.300
#define WEIGHT_AWP          6.000
#define WEIGHT_M249         6.000
#define WEIGHT_FLASHBANG    0.350
#define WEIGHT_HEGRENADE    0.350
#define WEIGHT_SMOKEGRENADE 0.350
#define WEIGHT_C4           2.000
#define WEIGHT_KNIFE        0.200
#define WEIGHT_SHIELD       5.000
#define WEIGHT_USP_S        0.200
#define WEIGHT_M4A1_S       0.200

#define SPEED_BONUCE_SHIELD 50
#define SPEED_BONUCE_ZOOM1  20
#define SPEED_BONUCE_ZOOM2  40
#define SPEED_BONUCE_ZOOM3  80


new const Float:fWeaponWeights[] =
{
	0.0,
	WEIGHT_P228,
	0.0,
	WEIGHT_SCOUT,
	WEIGHT_HEGRENADE,
	WEIGHT_XM1014,
	WEIGHT_C4,
	WEIGHT_MAC10,
	WEIGHT_AUG,
	WEIGHT_SMOKEGRENADE,
	WEIGHT_ELITE,
	WEIGHT_FIVESEVEN,
	WEIGHT_UMP45,
	WEIGHT_SG550,
	WEIGHT_GALIL,
	WEIGHT_FAMAS,
	WEIGHT_USP,
	WEIGHT_GLOCK18,
	WEIGHT_AWP,
	WEIGHT_MP5NAVY,
	WEIGHT_M249,
	WEIGHT_M3,
	WEIGHT_M4A1,
	WEIGHT_TMP,
	WEIGHT_G3SG1,
	WEIGHT_FLASHBANG,
	WEIGHT_DEAGLE,
	WEIGHT_SG552,
	WEIGHT_AK47,
	WEIGHT_KNIFE,
	WEIGHT_P90,
};

new Float:g_fOldNextSecAttack;

new g_iCvarP_MinSpeed;
new g_iCvarP_MaxSpeed;
new g_iCvarP_MinGrav;
new g_iCvarP_MaxGrav;

public plugin_init()
{
	register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
	
	g_iCvarP_MinSpeed = register_cvar("rw_min_speed",            "210.0");
	g_iCvarP_MaxSpeed = register_cvar("rw_max_speed",            "260.0");
	g_iCvarP_MinGrav  = register_cvar("rw_highest_gravity_proc", "0.81");
	g_iCvarP_MaxGrav  = register_cvar("rw_lowest_gravity_proc",  "1.01");
	
	new const iWeaponList[29][] =
	{
		"weapon_glock18",
		"weapon_usp",
		"weapon_deagle",
		"weapon_p228",
		"weapon_elite",
		"weapon_fiveseven",
		"weapon_m3",
		"weapon_xm1014",
		"weapon_mp5navy",
		"weapon_mac10",
		"weapon_tmp",
		"weapon_p90",
		"weapon_ump45",
		"weapon_galil",
		"weapon_famas",
		"weapon_ak47",
		"weapon_m4a1",
		"weapon_sg552",
		"weapon_aug",
		"weapon_g3sg1",
		"weapon_sg550",
		"weapon_scout",
		"weapon_awp",
		"weapon_m249",
		"weapon_flashbang",
		"weapon_hegrenade",
		"weapon_smokegrenade",
		"weapon_knife",
		"weapon_c4"
	};
	
	for( new iTemp; iTemp<29; iTemp++ )
	{
		RegisterHam(Ham_Item_Deploy,         iWeaponList[iTemp], "Ham_Item_Deploy_Post",    1);
		RegisterHam(Ham_CS_Item_GetMaxSpeed, iWeaponList[iTemp], "Ham_GetItemMaxSpeed_Pre", 0);
	}
	
	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_usp",   "Ham_SecondaryAttack_Pre",  0);
	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_m4a1",  "Ham_SecondaryAttack_Pre",  0);
	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_sg552", "Ham_SecondaryAttack_Pre",  0);
	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_aug",   "Ham_SecondaryAttack_Pre",  0);
	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_g3sg1", "Ham_SecondaryAttack_Pre",  0);
	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_sg550", "Ham_SecondaryAttack_Pre",  0);
	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_scout", "Ham_SecondaryAttack_Pre",  0);
	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_awp",   "Ham_SecondaryAttack_Pre",  0);
	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_usp",   "Ham_SecondaryAttack_Post", 1);
	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_m4a1",  "Ham_SecondaryAttack_Post", 1);
	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_sg552", "Ham_SecondaryAttack_Post", 1);
	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_aug",   "Ham_SecondaryAttack_Post", 1);
	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_g3sg1", "Ham_SecondaryAttack_Post", 1);
	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_sg550", "Ham_SecondaryAttack_Post", 1);
	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_scout", "Ham_SecondaryAttack_Post", 1);
	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_awp",   "Ham_SecondaryAttack_Post", 1);
	
	RegisterHam(Ham_AddPlayerItem, "player", "Ham_AddPlayerItem_Post", 1);
	RegisterHam(Ham_Spawn,         "player", "Ham_Spawn_player_Post",  1);
	
#if defined DEBUG
	register_forward(FM_PlayerPreThink, "FM_PlayerPreThink_Post", 1);
#endif
}

#if defined DEBUG
public FM_PlayerPreThink_Post(iPlrId)
{
	if( is_user_alive(iPlrId) )
	{
		static Float:s_fVelocity[3];
		pev(iPlrId, pev_velocity, s_fVelocity);
		client_print(iPlrId, print_center, "Speed: %f", vector_length(s_fVelocity));
	}
}
#endif

public Ham_Item_Deploy_Post(iEnt)
{
	if( !pev_valid(iEnt) )
		return HAM_IGNORED;
	
	new iPlrId = pev(iEnt, pev_owner);
	if( !is_user_alive(iPlrId) )
		return HAM_IGNORED;
	
	new iCsWeaponType = get_pdata_int(iEnt, PDWeaponType, 4);
	if( iCsWeaponType<1 || iCsWeaponType==2 || iCsWeaponType>30 )
		return HAM_IGNORED;
	
	new Float:fWeight = fWeaponWeights[iCsWeaponType];
	if( cs_get_user_shield(iPlrId) && (iCsWeaponType==CSW_KNIFE || iCsWeaponType==CSW_GLOCK18 || iCsWeaponType==CSW_USP
	 || iCsWeaponType==CSW_DEAGLE || iCsWeaponType==CSW_P228 || iCsWeaponType==CSW_FIVESEVEN
	 || iCsWeaponType==CSW_FLASHBANG || iCsWeaponType==CSW_HEGRENADE || iCsWeaponType==CSW_SMOKEGRENADE) )
		fWeight += WEIGHT_SHIELD;
	else if( cs_get_weapon_silen(iEnt) )
		fWeight += ((iCsWeaponType==CSW_USP)?WEIGHT_USP_S:WEIGHT_M4A1_S);
	
	
	new Float:fSpeed;
	pev(iPlrId, pev_maxspeed, fSpeed);
	if( fSpeed!=1.0 )
	{
		fSpeed = float(floatround(get_speed_by_weight(fWeight)));
		engfunc(EngFunc_SetClientMaxspeed, iPlrId, fSpeed);
		set_pev(iPlrId, pev_maxspeed, fSpeed);
	}
	set_gravity_by_weight(iPlrId, fWeight);
	
	return HAM_IGNORED;
}

public Ham_GetItemMaxSpeed_Pre(iEnt, Float:fSpeed)
{
	new iPlrId = pev(iEnt, pev_owner);
	if( !is_user_alive(iPlrId) )
		return HAM_IGNORED;
	
	new iCsWeaponType = get_pdata_int(iEnt, PDWeaponType, 4);
	if( iCsWeaponType<1 || iCsWeaponType==2 || iCsWeaponType>30 )
		return HAM_IGNORED;
	
	if( cs_get_user_shield(iPlrId) && (iCsWeaponType==CSW_KNIFE || iCsWeaponType==CSW_GLOCK18 || iCsWeaponType==CSW_USP
	 || iCsWeaponType==CSW_DEAGLE || iCsWeaponType==CSW_P228 || iCsWeaponType==CSW_FIVESEVEN
	 || iCsWeaponType==CSW_FLASHBANG || iCsWeaponType==CSW_HEGRENADE || iCsWeaponType==CSW_SMOKEGRENADE) )
	{
		new Float:fSpeed;
		ExecuteHam(Ham_CS_Item_GetMaxSpeed, iEnt, fSpeed);
		if( fSpeed==180.0 )
			SetHamReturnFloat(float(floatround(get_speed_by_weight(fWeaponWeights[iCsWeaponType]+WEIGHT_SHIELD)-SPEED_BONUCE_SHIELD)));
		else
			SetHamReturnFloat(float(floatround(get_speed_by_weight(fWeaponWeights[iCsWeaponType]+WEIGHT_SHIELD))));
		
		return HAM_SUPERCEDE;
	}
	else
	{
		if( cs_get_weapon_silen(iEnt) )
		{
			SetHamReturnFloat(float(floatround(get_speed_by_weight(fWeaponWeights[iCsWeaponType]+((iCsWeaponType==CSW_USP)?WEIGHT_USP_S:WEIGHT_M4A1_S)))));
				
			return HAM_SUPERCEDE;
		}
		else
		{
			switch( cs_get_user_zoom(iPlrId) )
			{
				case CS_SET_AUGSG552_ZOOM: SetHamReturnFloat(float(floatround(get_speed_by_weight(fWeaponWeights[iCsWeaponType])-SPEED_BONUCE_ZOOM1)));
				case CS_SET_FIRST_ZOOM:    SetHamReturnFloat(float(floatround(get_speed_by_weight(fWeaponWeights[iCsWeaponType])-SPEED_BONUCE_ZOOM2)));
				case CS_SET_SECOND_ZOOM:   SetHamReturnFloat(float(floatround(get_speed_by_weight(fWeaponWeights[iCsWeaponType])-SPEED_BONUCE_ZOOM3)));
				default:                   SetHamReturnFloat(float(floatround(get_speed_by_weight(fWeaponWeights[iCsWeaponType]))));
			}
			
			return HAM_SUPERCEDE;
		}
	}
	
	return HAM_IGNORED;
}

public Ham_SecondaryAttack_Pre(iEnt)
	g_fOldNextSecAttack = get_pdata_float(iEnt, PDNextSecAttack, 4);

public Ham_SecondaryAttack_Post(iEnt)
{
	if( !pev_valid(iEnt) )
		return HAM_IGNORED;
	
	if( g_fOldNextSecAttack==get_pdata_float(iEnt, PDNextSecAttack, 4) )
		return HAM_IGNORED;
	
	new iPlrId = pev(iEnt, pev_owner);
	if( !is_user_alive(iPlrId) )
		return HAM_IGNORED;
	
	new iCsWeaponType = get_pdata_int(iEnt, PDWeaponType, 4);
	if( iCsWeaponType<1 || iCsWeaponType==2 || iCsWeaponType>30 )
		return HAM_IGNORED;
	
	if( cs_get_user_shield(iPlrId) && iCsWeaponType==CSW_USP )
		return HAM_IGNORED;
	
	new Float:fSpeed, Float:fWeight = fWeaponWeights[iCsWeaponType];
	pev(iPlrId, pev_maxspeed, fSpeed);
	if( iCsWeaponType==CSW_USP || iCsWeaponType==CSW_M4A1 )
	{
		if( cs_get_weapon_silen(iEnt) )
			fWeight += ((iCsWeaponType==CSW_USP)?WEIGHT_USP_S:WEIGHT_M4A1_S);
		if( fSpeed!=1.0 )
		{
			fSpeed = float(floatround(get_speed_by_weight(fWeight)));
			engfunc(EngFunc_SetClientMaxspeed, iPlrId, fSpeed);
			set_pev(iPlrId, pev_maxspeed, fSpeed);
		}
		set_gravity_by_weight(iPlrId, fWeight);
	}
	else if( fSpeed!=1.0 )
	{
		switch( cs_get_user_zoom(iPlrId) )
		{
			case CS_SET_AUGSG552_ZOOM: fSpeed = float(floatround(get_speed_by_weight(fWeaponWeights[iCsWeaponType])-SPEED_BONUCE_ZOOM1));
			case CS_SET_FIRST_ZOOM:    fSpeed = float(floatround(get_speed_by_weight(fWeaponWeights[iCsWeaponType])-SPEED_BONUCE_ZOOM2));
			case CS_SET_SECOND_ZOOM:   fSpeed = float(floatround(get_speed_by_weight(fWeaponWeights[iCsWeaponType])-SPEED_BONUCE_ZOOM3));
			default:                   fSpeed = float(floatround(get_speed_by_weight(fWeaponWeights[iCsWeaponType])));
		}
		engfunc(EngFunc_SetClientMaxspeed, iPlrId, fSpeed);
		set_pev(iPlrId, pev_maxspeed, fSpeed);
	}
	
	return HAM_IGNORED;
}

public Ham_AddPlayerItem_Post(iPlrId, iEnt)
{
	if( !is_user_alive(iPlrId) )
		return HAM_IGNORED;
	
	if( !pev_valid(iEnt) )
		return HAM_IGNORED;
	
	if( iEnt!=get_pdata_cbase(iPlrId, PDActiveItem, 4) )
		return HAM_IGNORED;
	
	new iCsWeaponType = get_pdata_int(iEnt, PDWeaponType, 4);
	if( iCsWeaponType<1 || iCsWeaponType==2 || iCsWeaponType>30 )
		return HAM_IGNORED;
	
	new Float:fWeight = fWeaponWeights[iCsWeaponType];
	if( cs_get_user_shield(iPlrId) && (iCsWeaponType==CSW_KNIFE || iCsWeaponType==CSW_GLOCK18 || iCsWeaponType==CSW_USP
	 || iCsWeaponType==CSW_DEAGLE || iCsWeaponType==CSW_P228 || iCsWeaponType==CSW_FIVESEVEN
	 || iCsWeaponType==CSW_FLASHBANG || iCsWeaponType==CSW_HEGRENADE || iCsWeaponType==CSW_SMOKEGRENADE) )
		fWeight += WEIGHT_SHIELD;
	else if( cs_get_weapon_silen(iEnt) )
		fWeight += ((iCsWeaponType==CSW_USP)?WEIGHT_USP_S:WEIGHT_M4A1_S);
	
	
	new Float:fSpeed;
	pev(iPlrId, pev_maxspeed, fSpeed);
	if( fSpeed!=1.0 )
	{
		fSpeed = float(floatround(get_speed_by_weight(fWeight)));
		engfunc(EngFunc_SetClientMaxspeed, iPlrId, fSpeed);
		set_pev(iPlrId, pev_maxspeed, fSpeed);
	}
	set_gravity_by_weight(iPlrId, fWeight);
	
	return HAM_IGNORED;
}

public Ham_Spawn_player_Post(iPlrId)
{
	if( !is_user_alive(iPlrId) )
		return HAM_IGNORED;
	
	new iEnt = get_pdata_cbase(iPlrId, PDActiveItem, 4);
	if( !pev_valid(iEnt) )
		return HAM_IGNORED;
	
	new iCsWeaponType = get_pdata_int(iEnt, PDWeaponType, 4);
	if( iCsWeaponType<1 || iCsWeaponType==2 || iCsWeaponType>30 )
		return HAM_IGNORED;
	
	new Float:fWeight = fWeaponWeights[iCsWeaponType];
	if( cs_get_user_shield(iPlrId) && (iCsWeaponType==CSW_KNIFE || iCsWeaponType==CSW_GLOCK18 || iCsWeaponType==CSW_USP
	 || iCsWeaponType==CSW_DEAGLE || iCsWeaponType==CSW_P228 || iCsWeaponType==CSW_FIVESEVEN
	 || iCsWeaponType==CSW_FLASHBANG || iCsWeaponType==CSW_HEGRENADE || iCsWeaponType==CSW_SMOKEGRENADE) )
		fWeight += WEIGHT_SHIELD;
	else if( cs_get_weapon_silen(iEnt) )
		fWeight += ((iCsWeaponType==CSW_USP)?WEIGHT_USP_S:WEIGHT_M4A1_S);
	
	
	new Float:fSpeed;
	pev(iPlrId, pev_maxspeed, fSpeed);
	if( fSpeed!=1.0 )
	{
		fSpeed = float(floatround(get_speed_by_weight(fWeight)));
		engfunc(EngFunc_SetClientMaxspeed, iPlrId, fSpeed);
		set_pev(iPlrId, pev_maxspeed, fSpeed);
	}
	set_gravity_by_weight(iPlrId, fWeight);
	
	return HAM_IGNORED;
}

Float:clamp_f(Float:Value, Float:MinValue, Float:MaxValue)
{
	if( Value<=MinValue )
	{
		return MinValue;
	}
	
	if( Value>=MaxValue )
	{
		return MaxValue;
	}
	
	return Value;
}

Float:get_cvar_float_minspeed()
	return clamp_f(get_pcvar_float(g_iCvarP_MinSpeed), 2.0, 320.0);

Float:get_cvar_float_maxspeed()
	return clamp_f(get_pcvar_float(g_iCvarP_MaxSpeed), 2.0, 320.0);

Float:get_cvar_float_mingravp()
	return clamp_f(get_pcvar_float(g_iCvarP_MinGrav), 0.0, 150.0);

Float:get_cvar_float_maxgravp()
	return clamp_f(get_pcvar_float(g_iCvarP_MaxGrav), 0.0, 150.0);

bool:set_gravity_by_weight(iPlrId, Float:fWeight)
{
	if( fWeight<=0.0 )
		set_pev(iPlrId, pev_gravity, 1.0);
	else
	{
		new Float:fMinValue = get_cvar_float_mingravp();
		new Float:fMaxValue = get_cvar_float_maxgravp();
		
		if( !fMinValue )
			fMinValue = 1.0;
		
		if( !fMaxValue )
			fMaxValue = 1.0;
		
		if( fMinValue==fMaxValue )
		{
			set_pev(iPlrId, pev_gravity, fMinValue);
			return true;
		}
		else if( fMinValue>fMaxValue )
		{
			new Float:fTempValue = fMaxValue;
			fMaxValue = fMinValue;
			fMinValue = fTempValue;
		}
		
#if defined DEBUG
		client_print(iPlrId, print_chat, "set grav: %f", (1.0+(1.0-(fMaxValue-((fMaxValue-fMinValue)*fWeight/7.02)))));
#endif
		set_pev(iPlrId, pev_gravity, (1.0+(1.0-(fMaxValue-((fMaxValue-fMinValue)*fWeight/7.02)))));
		return true;
	}
	
	return false;
}

Float:get_speed_by_weight(Float:fWeight)
{
	if( fWeight<=0.0 )
		return get_cvar_float_maxspeed();
	
	new Float:fMinValue = get_cvar_float_minspeed();
	new Float:fMaxValue = get_cvar_float_maxspeed();
	
	if( fMinValue==fMaxValue )
		return fMinValue;
	else if( fMinValue>fMaxValue )
	{
		new Float:fTempValue = fMaxValue;
		fMaxValue = fMinValue;
		fMinValue = fTempValue;
	}
	
	return (fMaxValue-((fMaxValue-fMinValue)*fWeight/7.02));
}

/*
3.51*100%/7.02 = 50%

(260-210)*50%/100% = 25

260-25 = 235
*/
Last edited by ArminC 6 years ago, edited 1 time in total.

User avatar
Raheem
Mod Developer
Mod Developer
Posts: 2214
Joined: 7 years ago
Contact:

#2

Post by Raheem » 6 years ago

Here:
  • Code: Select all

    #include <amxmodx>
    #include <cstrike>
    #include <fakemeta>
    #include <hamsandwich>
    
    #define PLUGIN_NAME	"Real Weapon Speed"
    #define PLUGIN_VERSION	"1.0"
    #define PLUGIN_AUTHOR	"Numb"
    
    //#define DEBUG
    
    #define PDWeaponType	43
    #define	PDNextSecAttack	47
    #define PDActiveItem    373
    
    #define WEIGHT_GLOCK18      0.900
    #define WEIGHT_USP          1.000
    #define WEIGHT_DEAGLE       1.800
    #define WEIGHT_P228         1.030
    #define WEIGHT_ELITE        1.150
    #define WEIGHT_FIVESEVEN    0.618
    #define WEIGHT_M3           3.500
    #define WEIGHT_XM1014       4.000
    #define WEIGHT_MP5NAVY      3.420
    #define WEIGHT_MAC10        3.820
    #define WEIGHT_TMP          1.300
    #define WEIGHT_P90          3.000
    #define WEIGHT_UMP45        2.270
    #define WEIGHT_GALIL        4.350
    #define WEIGHT_FAMAS        3.400
    #define WEIGHT_AK47         4.790
    #define WEIGHT_M4A1         3.220
    #define WEIGHT_SG552        3.100
    #define WEIGHT_AUG          4.090
    #define WEIGHT_G3SG1        4.410
    #define WEIGHT_SG550        7.020
    #define WEIGHT_SCOUT        3.300
    #define WEIGHT_AWP          6.000
    #define WEIGHT_M249         6.000
    #define WEIGHT_FLASHBANG    0.350
    #define WEIGHT_HEGRENADE    0.350
    #define WEIGHT_SMOKEGRENADE 0.350
    #define WEIGHT_C4           2.000
    #define WEIGHT_KNIFE        0.200
    #define WEIGHT_SHIELD       5.000
    #define WEIGHT_USP_S        0.200
    #define WEIGHT_M4A1_S       0.200
    
    #define SPEED_BONUCE_SHIELD 50
    #define SPEED_BONUCE_ZOOM1  20
    #define SPEED_BONUCE_ZOOM2  40
    #define SPEED_BONUCE_ZOOM3  80
    
    
    new const Float:fWeaponWeights[] =
    {
    	0.0,
    	WEIGHT_P228,
    	0.0,
    	WEIGHT_SCOUT,
    	WEIGHT_HEGRENADE,
    	WEIGHT_XM1014,
    	WEIGHT_C4,
    	WEIGHT_MAC10,
    	WEIGHT_AUG,
    	WEIGHT_SMOKEGRENADE,
    	WEIGHT_ELITE,
    	WEIGHT_FIVESEVEN,
    	WEIGHT_UMP45,
    	WEIGHT_SG550,
    	WEIGHT_GALIL,
    	WEIGHT_FAMAS,
    	WEIGHT_USP,
    	WEIGHT_GLOCK18,
    	WEIGHT_AWP,
    	WEIGHT_MP5NAVY,
    	WEIGHT_M249,
    	WEIGHT_M3,
    	WEIGHT_M4A1,
    	WEIGHT_TMP,
    	WEIGHT_G3SG1,
    	WEIGHT_FLASHBANG,
    	WEIGHT_DEAGLE,
    	WEIGHT_SG552,
    	WEIGHT_AK47,
    	WEIGHT_KNIFE,
    	WEIGHT_P90,
    };
    
    new Float:g_fOldNextSecAttack;
    
    new g_iCvarP_MinSpeed;
    new g_iCvarP_MaxSpeed;
    new g_iCvarP_MinGrav;
    new g_iCvarP_MaxGrav;
    
    public plugin_init()
    {
    	register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
    	
    	g_iCvarP_MinSpeed = register_cvar("rw_min_speed",            "210.0");
    	g_iCvarP_MaxSpeed = register_cvar("rw_max_speed",            "260.0");
    	g_iCvarP_MinGrav  = register_cvar("rw_highest_gravity_proc", "0.81");
    	g_iCvarP_MaxGrav  = register_cvar("rw_lowest_gravity_proc",  "1.01");
    	
    	new const iWeaponList[29][] =
    	{
    		"weapon_glock18",
    		"weapon_usp",
    		"weapon_deagle",
    		"weapon_p228",
    		"weapon_elite",
    		"weapon_fiveseven",
    		"weapon_m3",
    		"weapon_xm1014",
    		"weapon_mp5navy",
    		"weapon_mac10",
    		"weapon_tmp",
    		"weapon_p90",
    		"weapon_ump45",
    		"weapon_galil",
    		"weapon_famas",
    		"weapon_ak47",
    		"weapon_m4a1",
    		"weapon_sg552",
    		"weapon_aug",
    		"weapon_g3sg1",
    		"weapon_sg550",
    		"weapon_scout",
    		"weapon_awp",
    		"weapon_m249",
    		"weapon_flashbang",
    		"weapon_hegrenade",
    		"weapon_smokegrenade",
    		"weapon_knife",
    		"weapon_c4"
    	};
    	
    	for( new iTemp; iTemp<29; iTemp++ )
    	{
    		RegisterHam(Ham_Item_Deploy,         iWeaponList[iTemp], "Ham_Item_Deploy_Post",    1);
    		RegisterHam(Ham_CS_Item_GetMaxSpeed, iWeaponList[iTemp], "Ham_GetItemMaxSpeed_Pre", 0);
    	}
    	
    	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_usp",   "Ham_SecondaryAttack_Pre",  0);
    	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_m4a1",  "Ham_SecondaryAttack_Pre",  0);
    	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_sg552", "Ham_SecondaryAttack_Pre",  0);
    	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_aug",   "Ham_SecondaryAttack_Pre",  0);
    	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_g3sg1", "Ham_SecondaryAttack_Pre",  0);
    	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_sg550", "Ham_SecondaryAttack_Pre",  0);
    	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_scout", "Ham_SecondaryAttack_Pre",  0);
    	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_awp",   "Ham_SecondaryAttack_Pre",  0);
    	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_usp",   "Ham_SecondaryAttack_Post", 1);
    	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_m4a1",  "Ham_SecondaryAttack_Post", 1);
    	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_sg552", "Ham_SecondaryAttack_Post", 1);
    	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_aug",   "Ham_SecondaryAttack_Post", 1);
    	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_g3sg1", "Ham_SecondaryAttack_Post", 1);
    	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_sg550", "Ham_SecondaryAttack_Post", 1);
    	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_scout", "Ham_SecondaryAttack_Post", 1);
    	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_awp",   "Ham_SecondaryAttack_Post", 1);
    	
    	RegisterHam(Ham_AddPlayerItem, "player", "Ham_AddPlayerItem_Post", 1);
    	RegisterHam(Ham_Spawn,         "player", "Ham_Spawn_player_Post",  1);
    	
    #if defined DEBUG
    	register_forward(FM_PlayerPreThink, "FM_PlayerPreThink_Post", 1);
    #endif
    }
    
    #if defined DEBUG
    public FM_PlayerPreThink_Post(iPlrId)
    {
    	if( is_user_alive(iPlrId) )
    	{
    		static Float:s_fVelocity[3];
    		pev(iPlrId, pev_velocity, s_fVelocity);
    		client_print(iPlrId, print_center, "Speed: %f", vector_length(s_fVelocity));
    	}
    }
    #endif
    
    public Ham_Item_Deploy_Post(iEnt)
    {
    	if( !pev_valid(iEnt) )
    		return HAM_IGNORED;
    	
    	new iPlrId = pev(iEnt, pev_owner);
    	if( !is_user_alive(iPlrId) )
    		return HAM_IGNORED;
    	
    	new iCsWeaponType = get_pdata_int(iEnt, PDWeaponType, 4);
    	if( iCsWeaponType<1 || iCsWeaponType==2 || iCsWeaponType>30 )
    		return HAM_IGNORED;
    	
    	new Float:fWeight = fWeaponWeights[iCsWeaponType];
    	if( cs_get_user_shield(iPlrId) && (iCsWeaponType==CSW_KNIFE || iCsWeaponType==CSW_GLOCK18 || iCsWeaponType==CSW_USP
    	 || iCsWeaponType==CSW_DEAGLE || iCsWeaponType==CSW_P228 || iCsWeaponType==CSW_FIVESEVEN
    	 || iCsWeaponType==CSW_FLASHBANG || iCsWeaponType==CSW_HEGRENADE || iCsWeaponType==CSW_SMOKEGRENADE) )
    		fWeight += WEIGHT_SHIELD;
    	else if( cs_get_weapon_silen(iEnt) )
    		fWeight += ((iCsWeaponType==CSW_USP)?WEIGHT_USP_S:WEIGHT_M4A1_S);
    	
    	
    	new Float:fSpeed;
    	pev(iPlrId, pev_maxspeed, fSpeed);
    	if( fSpeed!=1.0 )
    	{
    		fSpeed = float(floatround(get_speed_by_weight(fWeight)));
    		engfunc(EngFunc_SetClientMaxspeed, iPlrId, fSpeed);
    		set_pev(iPlrId, pev_maxspeed, fSpeed);
    	}
    	set_gravity_by_weight(iPlrId, fWeight);
    	
    	return HAM_IGNORED;
    }
    
    public Ham_GetItemMaxSpeed_Pre(iEnt, Float:fSpeed)
    {
    	new iPlrId = pev(iEnt, pev_owner);
    	if( !is_user_alive(iPlrId) )
    		return HAM_IGNORED;
    	
    	new iCsWeaponType = get_pdata_int(iEnt, PDWeaponType, 4);
    	if( iCsWeaponType<1 || iCsWeaponType==2 || iCsWeaponType>30 )
    		return HAM_IGNORED;
    	
    	if( cs_get_user_shield(iPlrId) && (iCsWeaponType==CSW_KNIFE || iCsWeaponType==CSW_GLOCK18 || iCsWeaponType==CSW_USP
    	 || iCsWeaponType==CSW_DEAGLE || iCsWeaponType==CSW_P228 || iCsWeaponType==CSW_FIVESEVEN
    	 || iCsWeaponType==CSW_FLASHBANG || iCsWeaponType==CSW_HEGRENADE || iCsWeaponType==CSW_SMOKEGRENADE) )
    	{
    		new Float:fSpeed;
    		ExecuteHam(Ham_CS_Item_GetMaxSpeed, iEnt, fSpeed);
    		if( fSpeed==180.0 )
    			SetHamReturnFloat(float(floatround(get_speed_by_weight(fWeaponWeights[iCsWeaponType]+WEIGHT_SHIELD)-SPEED_BONUCE_SHIELD)));
    		else
    			SetHamReturnFloat(float(floatround(get_speed_by_weight(fWeaponWeights[iCsWeaponType]+WEIGHT_SHIELD))));
    		
    		return HAM_SUPERCEDE;
    	}
    	else
    	{
    		if( cs_get_weapon_silen(iEnt) )
    		{
    			SetHamReturnFloat(float(floatround(get_speed_by_weight(fWeaponWeights[iCsWeaponType]+((iCsWeaponType==CSW_USP)?WEIGHT_USP_S:WEIGHT_M4A1_S)))));
    				
    			return HAM_SUPERCEDE;
    		}
    		else
    		{
    			switch( cs_get_user_zoom(iPlrId) )
    			{
    				case CS_SET_AUGSG552_ZOOM: SetHamReturnFloat(float(floatround(get_speed_by_weight(fWeaponWeights[iCsWeaponType])-SPEED_BONUCE_ZOOM1)));
    				case CS_SET_FIRST_ZOOM:    SetHamReturnFloat(float(floatround(get_speed_by_weight(fWeaponWeights[iCsWeaponType])-SPEED_BONUCE_ZOOM2)));
    				case CS_SET_SECOND_ZOOM:   SetHamReturnFloat(float(floatround(get_speed_by_weight(fWeaponWeights[iCsWeaponType])-SPEED_BONUCE_ZOOM3)));
    				default:                   SetHamReturnFloat(float(floatround(get_speed_by_weight(fWeaponWeights[iCsWeaponType]))));
    			}
    			
    			return HAM_SUPERCEDE;
    		}
    	}
    }
    
    public Ham_SecondaryAttack_Pre(iEnt)
    	g_fOldNextSecAttack = get_pdata_float(iEnt, PDNextSecAttack, 4);
    
    public Ham_SecondaryAttack_Post(iEnt)
    {
    	if( !pev_valid(iEnt) )
    		return HAM_IGNORED;
    	
    	if( g_fOldNextSecAttack==get_pdata_float(iEnt, PDNextSecAttack, 4) )
    		return HAM_IGNORED;
    	
    	new iPlrId = pev(iEnt, pev_owner);
    	if( !is_user_alive(iPlrId) )
    		return HAM_IGNORED;
    	
    	new iCsWeaponType = get_pdata_int(iEnt, PDWeaponType, 4);
    	if( iCsWeaponType<1 || iCsWeaponType==2 || iCsWeaponType>30 )
    		return HAM_IGNORED;
    	
    	if( cs_get_user_shield(iPlrId) && iCsWeaponType==CSW_USP )
    		return HAM_IGNORED;
    	
    	new Float:fSpeed, Float:fWeight = fWeaponWeights[iCsWeaponType];
    	pev(iPlrId, pev_maxspeed, fSpeed);
    	if( iCsWeaponType==CSW_USP || iCsWeaponType==CSW_M4A1 )
    	{
    		if( cs_get_weapon_silen(iEnt) )
    			fWeight += ((iCsWeaponType==CSW_USP)?WEIGHT_USP_S:WEIGHT_M4A1_S);
    		if( fSpeed!=1.0 )
    		{
    			fSpeed = float(floatround(get_speed_by_weight(fWeight)));
    			engfunc(EngFunc_SetClientMaxspeed, iPlrId, fSpeed);
    			set_pev(iPlrId, pev_maxspeed, fSpeed);
    		}
    		set_gravity_by_weight(iPlrId, fWeight);
    	}
    	else if( fSpeed!=1.0 )
    	{
    		switch( cs_get_user_zoom(iPlrId) )
    		{
    			case CS_SET_AUGSG552_ZOOM: fSpeed = float(floatround(get_speed_by_weight(fWeaponWeights[iCsWeaponType])-SPEED_BONUCE_ZOOM1));
    			case CS_SET_FIRST_ZOOM:    fSpeed = float(floatround(get_speed_by_weight(fWeaponWeights[iCsWeaponType])-SPEED_BONUCE_ZOOM2));
    			case CS_SET_SECOND_ZOOM:   fSpeed = float(floatround(get_speed_by_weight(fWeaponWeights[iCsWeaponType])-SPEED_BONUCE_ZOOM3));
    			default:                   fSpeed = float(floatround(get_speed_by_weight(fWeaponWeights[iCsWeaponType])));
    		}
    		engfunc(EngFunc_SetClientMaxspeed, iPlrId, fSpeed);
    		set_pev(iPlrId, pev_maxspeed, fSpeed);
    	}
    	
    	return HAM_IGNORED;
    }
    
    public Ham_AddPlayerItem_Post(iPlrId, iEnt)
    {
    	if( !is_user_alive(iPlrId) )
    		return HAM_IGNORED;
    	
    	if( !pev_valid(iEnt) )
    		return HAM_IGNORED;
    	
    	if( iEnt!=get_pdata_cbase(iPlrId, PDActiveItem, 4) )
    		return HAM_IGNORED;
    	
    	new iCsWeaponType = get_pdata_int(iEnt, PDWeaponType, 4);
    	if( iCsWeaponType<1 || iCsWeaponType==2 || iCsWeaponType>30 )
    		return HAM_IGNORED;
    	
    	new Float:fWeight = fWeaponWeights[iCsWeaponType];
    	if( cs_get_user_shield(iPlrId) && (iCsWeaponType==CSW_KNIFE || iCsWeaponType==CSW_GLOCK18 || iCsWeaponType==CSW_USP
    	 || iCsWeaponType==CSW_DEAGLE || iCsWeaponType==CSW_P228 || iCsWeaponType==CSW_FIVESEVEN
    	 || iCsWeaponType==CSW_FLASHBANG || iCsWeaponType==CSW_HEGRENADE || iCsWeaponType==CSW_SMOKEGRENADE) )
    		fWeight += WEIGHT_SHIELD;
    	else if( cs_get_weapon_silen(iEnt) )
    		fWeight += ((iCsWeaponType==CSW_USP)?WEIGHT_USP_S:WEIGHT_M4A1_S);
    	
    	
    	new Float:fSpeed;
    	pev(iPlrId, pev_maxspeed, fSpeed);
    	if( fSpeed!=1.0 )
    	{
    		fSpeed = float(floatround(get_speed_by_weight(fWeight)));
    		engfunc(EngFunc_SetClientMaxspeed, iPlrId, fSpeed);
    		set_pev(iPlrId, pev_maxspeed, fSpeed);
    	}
    	set_gravity_by_weight(iPlrId, fWeight);
    	
    	return HAM_IGNORED;
    }
    
    public Ham_Spawn_player_Post(iPlrId)
    {
    	if( !is_user_alive(iPlrId) )
    		return HAM_IGNORED;
    	
    	new iEnt = get_pdata_cbase(iPlrId, PDActiveItem, 4);
    	if( !pev_valid(iEnt) )
    		return HAM_IGNORED;
    	
    	new iCsWeaponType = get_pdata_int(iEnt, PDWeaponType, 4);
    	if( iCsWeaponType<1 || iCsWeaponType==2 || iCsWeaponType>30 )
    		return HAM_IGNORED;
    	
    	new Float:fWeight = fWeaponWeights[iCsWeaponType];
    	if( cs_get_user_shield(iPlrId) && (iCsWeaponType==CSW_KNIFE || iCsWeaponType==CSW_GLOCK18 || iCsWeaponType==CSW_USP
    	 || iCsWeaponType==CSW_DEAGLE || iCsWeaponType==CSW_P228 || iCsWeaponType==CSW_FIVESEVEN
    	 || iCsWeaponType==CSW_FLASHBANG || iCsWeaponType==CSW_HEGRENADE || iCsWeaponType==CSW_SMOKEGRENADE) )
    		fWeight += WEIGHT_SHIELD;
    	else if( cs_get_weapon_silen(iEnt) )
    		fWeight += ((iCsWeaponType==CSW_USP)?WEIGHT_USP_S:WEIGHT_M4A1_S);
    	
    	
    	new Float:fSpeed;
    	pev(iPlrId, pev_maxspeed, fSpeed);
    	if( fSpeed!=1.0 )
    	{
    		fSpeed = float(floatround(get_speed_by_weight(fWeight)));
    		engfunc(EngFunc_SetClientMaxspeed, iPlrId, fSpeed);
    		set_pev(iPlrId, pev_maxspeed, fSpeed);
    	}
    	set_gravity_by_weight(iPlrId, fWeight);
    	
    	return HAM_IGNORED;
    }
    
    Float:clamp_f(Float:Value, Float:MinValue, Float:MaxValue)
    {
    	if( Value<=MinValue )
    	{
    		return MinValue;
    	}
    	
    	if( Value>=MaxValue )
    	{
    		return MaxValue;
    	}
    	
    	return Value;
    }
    
    Float:get_cvar_float_minspeed()
    	return clamp_f(get_pcvar_float(g_iCvarP_MinSpeed), 2.0, 320.0);
    
    Float:get_cvar_float_maxspeed()
    	return clamp_f(get_pcvar_float(g_iCvarP_MaxSpeed), 2.0, 320.0);
    
    Float:get_cvar_float_mingravp()
    	return clamp_f(get_pcvar_float(g_iCvarP_MinGrav), 0.0, 150.0);
    
    Float:get_cvar_float_maxgravp()
    	return clamp_f(get_pcvar_float(g_iCvarP_MaxGrav), 0.0, 150.0);
    
    bool:set_gravity_by_weight(iPlrId, Float:fWeight)
    {
    	if( fWeight<=0.0 )
    		set_pev(iPlrId, pev_gravity, 1.0);
    	else
    	{
    		new Float:fMinValue = get_cvar_float_mingravp();
    		new Float:fMaxValue = get_cvar_float_maxgravp();
    		
    		if( !fMinValue )
    			fMinValue = 1.0;
    		
    		if( !fMaxValue )
    			fMaxValue = 1.0;
    		
    		if( fMinValue==fMaxValue )
    		{
    			set_pev(iPlrId, pev_gravity, fMinValue);
    			return true;
    		}
    		else if( fMinValue>fMaxValue )
    		{
    			new Float:fTempValue = fMaxValue;
    			fMaxValue = fMinValue;
    			fMinValue = fTempValue;
    		}
    		
    #if defined DEBUG
    		client_print(iPlrId, print_chat, "set grav: %f", (1.0+(1.0-(fMaxValue-((fMaxValue-fMinValue)*fWeight/7.02)))));
    #endif
    		set_pev(iPlrId, pev_gravity, (1.0+(1.0-(fMaxValue-((fMaxValue-fMinValue)*fWeight/7.02)))));
    		return true;
    	}
    	
    	return false;
    }
    
    Float:get_speed_by_weight(Float:fWeight)
    {
    	if( fWeight<=0.0 )
    		return get_cvar_float_maxspeed();
    	
    	new Float:fMinValue = get_cvar_float_minspeed();
    	new Float:fMaxValue = get_cvar_float_maxspeed();
    	
    	if( fMinValue==fMaxValue )
    		return fMinValue;
    	else if( fMinValue>fMaxValue )
    	{
    		new Float:fTempValue = fMaxValue;
    		fMaxValue = fMinValue;
    		fMinValue = fTempValue;
    	}
    	
    	return (fMaxValue-((fMaxValue-fMinValue)*fWeight/7.02));
    }
In Ham_GetItemMaxSpeed_Pre() function every case have a return value so no need to return anything at the end, That's why there is warning although again i tells you that warnings not important to be fixed at all and will not effect your plugin.
He who fails to plan is planning to fail

Post Reply

Create an account or sign in to join the discussion

You need to be a member in order to post a reply

Create an account

Not a member? register to join our community
Members can start their own topics & subscribe to topics
It’s free and only takes a minute

Register

Sign in

Who is online

Users browsing this forum: Bing [Bot] and 0 guests