Вопрос сформулирован довольно лаконично, но постараюсь на него ответить.
1. Любой проп (сущность, entity) при создании уже обладает своим индексом. Клиент, оружие, мир, и многое другое - всё это имеет свой
уникальный номер.
Как его получить - для этого есть специальные функции, такие как:
GetClientAimTarget(client, bool:only_clients=true) - получает индекс сущности, на которую смотрит указанный клиент (кстати, клиент это тоже индекс. он всегда находится в диапазоне [1; MaxClients]). Если only_clients=true, то ищет только другого игрока, а если false, то ищет любую сущность. Если ничего подходящего не было найдено, то будет возвращен -1. Этот индекс не является правильным, и, следовательно, это не сущность, и любая попытка сделать что-нибудь с этим приведет к ошибке.
Другая функция для поиска пропа -
FindEntityByClassname(startEnt, const String:classname[]) - ищет индекс предмета(ов) по его(их) класснейму. К примеру, для поиска всех индексов m4a1 вызов функции будет выглядеть так:
new iEntity = -1;
while ((iEntity = FindEntityByClassname(iEntity, "weapon_m4a1")) != INVALID_ENT_REFERENCE)
{
// тут iEntity будет индексом найденной m4a1
}
2. Удалять по индексу очень просто:
AcceptEntityInput(iEntity, "Kill");
где iEntity - и есть индекс сущности. Но удалять нужно аккуратно, будучи уверенным, что удаляется именно то, что нужно. Если попробовать убить таким образом мир (сущность с индексом 0), то произойдет краш сервера.