Есть ли в SDK готовая функция, подсчитываются количество энтить на карте или нужно подсчитывать с помощью UTIL_FindEntityByClassname ? Как она вообще работает - возвращает первую, которую найдет? И зачем туда посылать CBaseEntity * ?
есть готовая функция, которая торчит в engineface - это pfnNumberOfEntities. Также, в ксаше узнать статистику можно введя в консоль команду edicts_info. Для GoldSrc такая команда вроде бы тоже есть, но я её непомню.
Дядя Миша писал: есть готовая функция, которая торчит в engineface - это pfnNumberOfEntities. Также, в ксаше узнать статистику можно введя в консоль команду edicts_info. Для GoldSrc такая команда вроде бы тоже есть, но я её непомню.
Извини, я не совсем точно выразился. Я имел в виду подсчёт количества конкретных энтить, а не всех.
В коде оспри вроде есть нечто такое для подсчёта хгрюнтов на карте, но я не совсем разобрался.
FreeSlave писал: Я имел в виду подсчёт количества конкретных энтить, а не всех.
тогда уж не конкретных, а энтить с определенным класснеймом?
нет, в движке такой функции нету, придется немного покодить самостоятельно.
Для наглядности возьмем код из поиска сатчелов и немного видоизменим его:
C++ Source Code:
1
int UTIL_CountNamedEdicts( constchar *pClassname )
FreeSlave писал: А не подскажешь зачем в FIND_ENTITY_BY_CLASSNAME первый аргумент?
указывает с какого эдикта начинать поиск. С этим делом в квейке вообще путаница. Некоторые функции возвращали указатель на эдикт, у которого значение pent->v.chain было ненулевым. Таким образом идя по цепочке можно было просмотреть все найденные эдикты.
Другие функции, такие как FIND_ENTITY_BY_STRING возвращали лишь первую найденную энтить, начиная искать с самого начала, т.е. с ворлдспавна. Легко заметить, что для продолжения поиска мы должны начать с того самого места, на котором он закончился. Именно для этого и был введен первый аргумент - указатель на энтитю, с которой следует начать поиск.
Добавлено 28-05-2011 в 23:17:
ЗЫ. В терминологии программиста это не первый, а нулевой аргумент