#if defined _csgo_weapons_stocks_included
#endinput
#endif
#define _csgo_weapons_stocks_included
// by Someone [https://discord.gg/UfD3dSa]
/**
* Returns the classname of a weapon.
* @note Example output: "glock", "usp_silencer", "mp5sd", "bayonet", "knife_gut".
*
* @param iWeapon Index of weapon.
* @param sClassname Buffer to store the classname.
* @param iLen Maximum length of the buffer.
* @error Invalid weapon index.
*/
stock void GetWeaponClassname(int iWeapon, char[] sClassname, int iLen){
static int iOffset = -1;
if(iOffset == -1){
iOffset = FindSendPropInfo("CWeaponCSBase", "m_iItemDefinitionIndex");
}
CS_WeaponIDToAlias(CS_ItemDefIndexToID(GetEntData(iWeapon, iOffset)), sClassname, iLen);
}
/**
* Returns the classname of a weapon. Corrects knifes names.
* @note Example output: "glock", "usp_silencer", "mp5sd, "knife".
*
* @param iWeapon Index of weapon.
* @param sClassname Buffer to store the classname.
* @param iLen Maximum length of the buffer.
* @error Invalid weapon index.
*/
stock void GetWeaponClassnameEx(int iWeapon, char[] sClassname, int iLen){
static int iOffset = -1;
if(iOffset == -1){
iOffset = FindSendPropInfo("CWeaponCSBase", "m_iItemDefinitionIndex");
}
if(IsWeaponKnife(iWeapon)){
strcopy(sClassname, iLen, "knife");
return;
}
CS_WeaponIDToAlias(CS_ItemDefIndexToID(GetEntData(iWeapon, iOffset)), sClassname, iLen);
}
/**
* Returns defenition index of a weapon by name.
* @note Example output: "glock", "usp_silencer", "mp5sd", "bayonet", "knife_gut".
*
* @param iWeapon Index of weapon.
* @param sClassname String containing the classname.
* @error Invalid weapon index.
*/
stock int GetWeaponDefByName(int iWeapon, const char[] sClassname){
return CS_WeaponIDToItemDefIndex(CS_AliasToWeaponID(sClassname));
}
/**
* Returns the classname of a weapon by defenition index.
* @note Example output: "glock", "usp_silencer", "mp5sd, "knife".
*
* @param iDef Defenition index
* @param sClassname Buffer to store the classname.
* @param iLen Maximum length of the buffer.
* @error Invalid defenition index.
*/
stock void GetWeaponNameByDef(int iDef, char[] sClassname, int iLen){
CS_WeaponIDToAlias(CS_ItemDefIndexToID(iDef), sClassname, iLen);
}
/**
* Returns the classname of a weapon by defenition index. Corrects knifes names.
*
* @param iDef Defenition index
* @param sClassname Buffer to store the classname.
* @param iLen Maximum length of the buffer.
* @error Invalid defenition index.
*/
stock void GetWeaponNameByDefEx(int iDef, char[] sClassname, int iLen){
CSWeaponID iID = CS_ItemDefIndexToID(iDef);
if(iID == 50 || iID == 58 || iID == 59 || iID == 80 || iID > CSWeapon_MAX_WEAPONS_NO_KNIFES){
strcopy(sClassname, iLen, "knife");
return;
}
CS_WeaponIDToAlias(iID, sClassname, iLen);
}
/**
* Checks if a weapons is a knife.
*
* @param iWeapon Index of weapon.r.
* @error Invalid weapon entity.
* @return true if knife, false otherwise.
*/
stock bool IsWeaponKnife(int iWeapon){
char sClass[8];
GetEntityNetClass(iWeapon, sClass, sizeof(sClass));
return strncmp(sClass, "CKnife", 6) == 0;
}