View Single Post
impossible_cc
Senior Member
Join Date: Sep 2018
Location: Ukraine
Old 01-13-2019 , 17:00   Re: [CSGO] How to prevent reloading if you have too much ammo
Reply With Quote #6

So this seems like working, but now when I'm holding reload button, server freezes.
I will try now to block weapon_reload event.

here s the code
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 clientintbuttonsintimpulsefloat vel[3], float angles[3], intweaponintsubtypeintcmdnuminttickcountintseedint mouse[2])
{
    if(
buttons IN_RELOAD)
    {
        
int WeaponIndex GetEntPropEnt(clientProp_Data"m_hActiveWeapon");
        if(
IsValidEdict(WeaponIndex))
        {
            
int CurrentAmmo GetEntProp(WeaponIndexProp_Send"m_iClip1");
            if(
CurrentAmmo 0)
            {
                
GetClientWeapon(clientclassname32);
                if(!
StrEqual(classname"weapon_knife"))
                {
                    
int WeaponArrayIndex = -1;
                    for(
int i 0WEAPONS_MAXi++)
                    {
                        if(
StrEqual(classnameWeaponList[i]))
                        {
                            
WeaponArrayIndex i;
                            break;
                        }
                    }
                    if(
WeaponArrayIndex != -1)
                    {
                        if(
WeaponMaxAmmo[WeaponArrayIndex] < CurrentAmmo)
                        {
                            return 
Plugin_Handled;
                        }
                    }
                    else
                    {
                        
LogError("Unknown weapon - %s"classname);
                    }
                }
            }
        }
    }
    return 
Plugin_Continue;


Last edited by impossible_cc; 01-13-2019 at 17:10.
impossible_cc is offline