запись случайного актера/машины/объекта в переменную
запись случайного актера/машины/объекта в переменную
Изначально код был написан PLPynton'ом, исправлен и улучшен Seemann'ом.
Код принимает 4 параметра для поиска: координаты XYZ места, откуда начинать поиск, и радиус поиска.
Если в данном радиусе есть любой прохожий, машина или объект (это особенно прикольно, можно получить управление например над фонарным столбом ), код записывает в переменную 9@ его хендл (который может использоваться в других опкодах). Если никого нет - возвращается -1.
Код игнорирует игрока и его машину.
При циклическом поиске, можно делать что-то вроде "искать следующего". Для этого в переменную 21@ нужно записать хендл предыдущего найденного актера / машины / объекта и при следующем поиске они будет пропущены. (для этого нужно раскомментировать участок кода в блоке AIC_NEWSEARCHRADIUS.
Работает только на версии 1.0
-------------------------
Код легко переносится на SAMB, нужно поменять только метки и тип aDMA (& -> $).
Код:
{
The Interceptor
by PLPynton and Seemann
Parameters:
0@ - input coord X
1@ - input coord Y
2@ - input coord Z
3@ - search radius
:AIC_NEWSEARCHRADIUS
{
use 0051: return to break the loop
immediately when found at least one actor/car/object,
does not matter if he's nearest one.
}
// v EXTRA SEARCH CRITERIA GOES HERE v
{
21@ contains the handle of an actor/car/object
that should be excluded from the search result
(for example a handle found previously).
}
//803B: 21@ 9@
//004D: jump_if_false @AIC_NOHANDLE