That is the best result I could achieve for now. But not perfect anyways.
PHP Code:
#include <sourcemod>
#include <sdkhooks>
#include <sdktools>
#define WEAPONS_MAX 34
char WeaponList[WEAPONS_MAX][] =
{
// pistols
"weapon_deagle", // 0
"weapon_elite", // 1
"weapon_fiveseven", // 2
"weapon_glock", // 3
"weapon_cz75a", // 4
"weapon_p250", // 5
"weapon_hkp2000", // 6
"weapon_revolver", // 7
"weapon_tec9", // 8
"weapon_usp_silencer", // 9
// shotguns
"weapon_xm1014", // 10
"weapon_mag7", // 11
"weapon_nova", // 12
"weapon_sawedoff", // 13
// smg
"weapon_mac10", // 14
"weapon_p90", // 15
"weapon_ump45", // 16
"weapon_mp7", // 17
"weapon_mp9", // 18
"weapon_bizon", // 19
// nice guns
"weapon_ak47", // 20
"weapon_aug", // 21
"weapon_famas", // 22
"weapon_galilar", // 23
"weapon_m4a1", // 24
"weapon_m4a1_silencer", // 25
"weapon_sg556", // 26
// snipers
"weapon_awp", // 27
"weapon_g3sg1", // 28
"weapon_scar20", // 29
"weapon_ssg08", // 30
// machineguns
"weapon_m249", // 31
"weapon_negev", // 32
//added later :)
"weapon_mp5sd" // 33
};
int WeaponMaxAmmo[WEAPONS_MAX] =
{
7, //0"weapon_deagle",
30, //1"weapon_elite",
20, //2"weapon_fiveseven",
20, //3"weapon_glock",
12, //4"weapon_cz75a",
13, //5"weapon_p250",
13, //6"weapon_hkp2000",
8, //7"weapon_revolver",
18, //8"weapon_tec9",
12, //9"weapon_usp_silencer",
7, //10"weapon_xm1014",
5, //11"weapon_mag7",
8, //12"weapon_nova",
7, //"weapon_sawedoff",13
30, //"weapon_mac10", 14
50, //"weapon_p90", 15
25, //"weapon_ump45", 16
30, //"weapon_mp7", 17
30, //"weapon_mp9", 18
64, //"weapon_bizon", 19
30, //"weapon_ak47", 20
30, //"weapon_aug",21
25, //"weapon_famas",22
35, //"weapon_galilar",23
30, //"weapon_m4a1", 24
20, //"weapon_m4a1_silencer",25
30, //"weapon_sg556", 26
10, //"weapon_awp", 27
20, //"weapon_g3sg1", 28
20, //"weapon_scar20", 29
10, //"weapon_ssg08", 30
100, //"weapon_m249", 31
150, //"weapon_negev" 32
30 //"weapon_mp5sd" 33
};
char classname[32];
public Action OnPlayerRunCmd(int client, int& buttons, int& impulse, float vel[3], float angles[3], int& weapon, int& subtype, int& cmdnum, int& tickcount, int& seed, int mouse[2])
{
if(buttons & IN_RELOAD)
{
int WeaponIndex = GetEntPropEnt(client, Prop_Data, "m_hActiveWeapon");
if(IsValidEdict(WeaponIndex))
{
int CurrentAmmo = GetEntProp(WeaponIndex, Prop_Send, "m_iClip1");
if(CurrentAmmo > 0)
{
GetClientWeapon(client, classname, 32);
if(!StrEqual(classname, "weapon_knife"))
{
int WeaponArrayIndex = -1;
for(int i = 0; i < WEAPONS_MAX; i++)
{
if(StrEqual(classname, WeaponList[i]))
{
WeaponArrayIndex = i;
break;
}
}
if(WeaponArrayIndex != -1)
{
if(WeaponMaxAmmo[WeaponArrayIndex] < CurrentAmmo)
{
buttons ^= IN_RELOAD;
return Plugin_Changed;
}
}
else
{
LogError("Unknown weapon - %s", classname);
}
}
}
}
}
return Plugin_Continue;
}