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

Тема в разделе "Программирование / Скриптинг", создана пользователем alex2131, 27 дек 2013.

  1. alex2131

    alex2131

    Сообщения:
    147
    Симпатии:
    16
    Как дать индекс пропу и удалять по этому индексу?
     
  2. Reiko1231

    Reiko1231 AlexTheRegent

    Сообщения:
    235
    Симпатии:
    568
    Вопрос сформулирован довольно лаконично, но постараюсь на него ответить.

    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), то произойдет краш сервера.
     
    EPacker2, Серый™ и KorDen нравится это.
  3. alex2131

    alex2131

    Сообщения:
    147
    Симпатии:
    16

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

    POMKA

    Сообщения:
    236
    Симпатии:
    57
    а ты не пробовал через стриппер удалять?
     
  5. alex2131

    alex2131

    Сообщения:
    147
    Симпатии:
    16
    Сервер Zombie:Reloaded. Проблема в том, что в моём ZPROPS присутствует удаление, оно удаляет все возможные entity, а мне нужно, чтоб только то, что я захочу.
     
  6. POMKA

    POMKA

    Сообщения:
    236
    Симпатии:
    57
    Тебе надо удалять предмет, когда ты на него смотриш чтоли?
     
  7. alex2131

    alex2131

    Сообщения:
    147
    Симпатии:
    16
    Нет, нужно то, когда смотришь на предмет, он его удалял по индексу, а если на предмете нету индекса, чтоб он его не трогал, ясно?
     
  8. semjef

    semjef semjef.ru

    Сообщения:
    1.031
    Симпатии:
    473
    alex2131, найди тут плагин sProps и вытащи из него нужный код, если не хочешь особо париться.