Как дать индекс пропу?

WeSTMan

А вот тут текст!
Сообщения
833
Реакции
521
Как дать индекс пропу и удалять по этому индексу?
 

Reiko1231

AlexTheRegent
Сообщения
508
Реакции
1,336
Вопрос сформулирован довольно лаконично, но постараюсь на него ответить.

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

2. Удалять по индексу очень просто:
C-подобный:
AcceptEntityInput(iEntity, "Kill");
где iEntity - и есть индекс сущности. Но удалять нужно аккуратно, будучи уверенным, что удаляется именно то, что нужно. Если попробовать убить таким образом мир (сущность с индексом 0), то произойдет краш сервера.
 

WeSTMan

А вот тут текст!
Сообщения
833
Реакции
521
Вопрос сформулирован довольно лаконично, но постараюсь на него ответить.

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

2. Удалять по индексу очень просто:
C-подобный:
AcceptEntityInput(iEntity, "Kill");
где iEntity - и есть индекс сущности. Но удалять нужно аккуратно, будучи уверенным, что удаляется именно то, что нужно. Если попробовать убить таким образом мир (сущность с индексом 0), то произойдет краш сервера.

Конечно, всё хорошо, но можно пример с пропом?
 

.330d

Участник
Сообщения
257
Реакции
71
а ты не пробовал через стриппер удалять?
 

WeSTMan

А вот тут текст!
Сообщения
833
Реакции
521
Сервер Zombie:Reloaded. Проблема в том, что в моём ZPROPS присутствует удаление, оно удаляет все возможные entity, а мне нужно, чтоб только то, что я захочу.
 

.330d

Участник
Сообщения
257
Реакции
71
Тебе надо удалять предмет, когда ты на него смотриш чтоли?
 

WeSTMan

А вот тут текст!
Сообщения
833
Реакции
521
Тебе надо удалять предмет, когда ты на него смотриш чтоли?

Нет, нужно то, когда смотришь на предмет, он его удалял по индексу, а если на предмете нету индекса, чтоб он его не трогал, ясно?
 

semjef

semjef.ru
Сообщения
993
Реакции
444
alex2131, найди тут плагин sProps и вытащи из него нужный код, если не хочешь особо париться.
 
Сверху Снизу