Можно попробовать иной способ. Неоптимизированный, но действенный.
Пусть твой индекс в переменной your_index;
Код
new index = -1;
for (new i=1;i<=MaxClients;i++)
{
if (IsClientInGame(i))
{
for (new n=0;n<=4;n++)
{
if ((index = GetPlayerWeaponSlot(i,n)) && index == your_index) PrintToChatAll("Твой индекс является оружием и находится у игрока %N", i);
}
}
}
Код проверяет у всех игроков на сервере оружие по всем слотам и сравнивает их индексы с твоим. Если совпадает, то это оружие.
НО! Этот способ работает только если игроки живы, и оружие у них (Не на земле).
Вот через GetEntityClassname функция:
Код
new String:Weapons[][] = {"weapon_m3", "weapon_xm1014", "weapon_m4a1", "weapon_mac10", "weapon_tmp", "weapon_mp5havy", "weapon_p90", "weapon_galil", "weapon_famas", "weapon_ak47", "weapon_aug", "weapon_sg552", "weapon_awp", "weapon_sg550", "weapon_m249", "weapon_g3sg1", "weapon_ump45","weapon_glock", "weapon_usp", "weapon_p228", "weapon_deagle", "weapon_elite", "weapon_fiveseven","weapon_hegrenade", "weapon_flashbang", "weapon_smokegrenade","weapon_knife"}
stock bool:IsIndexWeapon(index)
{
decl String:class[30], ok;
if (GetEntityClassname(index, class, sizeof(class)))
{
for (new i=0;i<=26;i++)
{
if (StrEqual(class, Weapons[i]))
{
PrintToChatAll("Индекс является оружием! Оружие: %s", class);
ok =1;
}
}
if (ok == 1) return true;
else return false;
}
else return false;
}