Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Оружие или нет? по индексу.
Оружие или нет? по индексу.
Naykon Дата: Суббота, 15.11.2014, 03:22:39 | Сообщение # 1
Сообщений: 439
Репутация: -4 [ +/- ]
Есть индекс. Нужно узнать оружие это или нет..
 
king(rus) Дата: Суббота, 15.11.2014, 11:25:51 | Сообщение # 2
Сообщений: 109
Репутация: 2 [ +/- ]
Можешь попробовать через GetEntityClassname.
 
BarD Дата: Суббота, 15.11.2014, 12:17:31 | Сообщение # 3
Сообщений: 943
Репутация: 137 [ +/- ]
Можно попробовать иной способ. Неоптимизированный, но действенный.

Пусть твой индекс в переменной 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;
}


Сообщение отредактировал BarD - Суббота, 15.11.2014, 12:18:17
 
king(rus) Дата: Воскресенье, 16.11.2014, 10:30:38 | Сообщение # 4
Сообщений: 109
Репутация: 2 [ +/- ]
Цитата Naykon ()
Есть индекс. Нужно узнать оружие это или нет..

Если тебе ТОЛЬКО узнать: оружие или нет, то:
Вот:
Код
#include <sourcemod>
#include <entity>

stock bool:IsWeapon(WeaponIndex) {
   decl String:Classname[32];
   GetEntityClassname(WeaponIndex, Classname, sizeof(Classname));
   if (StrContains(Classname, "weapon_") != -1) {
    return true;
   }
   return false;
}


Сообщение отредактировал king(rus) - Воскресенье, 16.11.2014, 12:45:43
 
BarD Дата: Воскресенье, 16.11.2014, 11:27:23 | Сообщение # 5
Сообщений: 943
Репутация: 137 [ +/- ]
king(rus), блин, точно. Забыл про "weapon_")
 
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Оружие или нет? по индексу.
  • Страница 1 из 1
  • 1
Поиск: