Facebook
From orange, 5 Years ago, written in C++.
This paste is a reply to Untitled from Mustard Cat - go back
Embed
Viewing differences between Untitled and :latex1
#include 
#include 

#pragma semicolon 1
#pragma newdecls required

char g_sWeaponsCanUse [][] =
{
        "weapon_knife",
        "weapon_decoy",
        "weapon_flashbang",
        "weapon_hegrenade",
        "weapon_smokegrenade",
        "weapon_molotov",
        "weapon_incgrenade",
        "weapon_awp"
};

public void OnPluginStart() 
{
        for(int i = 1; i <= MaxClients; i++)
                if(IsValidClient(i))
                        OnClientPutInServer(i);
}

public void OnClientPutInServer(int client)
{
        SDKHook(client, SDKHook_WeaponCanUse, WeaponCanUse);
}

public void OnClientDisconnect(int client)
{
        SDKUnhook(client, SDKHook_WeaponCanUse, WeaponCanUse);
}

public Action WeaponCanUse(int client, int weapon)
{
        if(!IsValidClient(client) || !IsPlayerAlive(client))
                return Plugin_Continue;

        char weapons[32];
        GetEdictClassname(weapon, weapons, sizeof(weapons));
        
        for(int i = 0; i < sizeof(g_sWeaponsCanUse); i ++)
        {
                if(StrEqual(g_sWeaponsCanUse[i], weapons))
                        return Plugin_Continue;
        }
        
        return Plugin_Handled;
}

stock bool IsValidClient(int client)
{
        if(client <= 0 ) return false;
        if(client > MaxClients) return false;
        if(!IsClientConnected(client)) return false;
        if(IsFakeClient(client)) return false;
        return IsClientInGame(client);
}