Перейти к содержимому

Query

Радар отдаёт одного. Query отдаёт всех, кто попал в круг или прямоугольник

тик 0
Обнаружить0
фигуратипкомандаxywh
Информация1
=
у
Обнаружить2
фигуратипкомандаxywh
Информация3
=
у
Обнаружить4
фигуратипкомандаxywh
Информация5
=
у
Чтение6
=
Информация7
=
у
Стоп8
@counter0number
всегоnullnull
своихnullnull
вПрямоугольникеnullnull
первыйnullnull
типПервогоnullnull
query circle unit null 9 6 3 0
sensor всего @queries @size

В круге радиусом три клетки вокруг точки 9 6 оказалось три юнита: два кинжала и вспышка. Их список лежит в @queries.

Поле Что в нём
первое форма: circle или rect
второе что искать: unit, building, bullet
третье команда или null — «чья угодно»
четвёртое и пятое центр области в клетках
шестое радиус у круга, ширина у прямоугольника
седьмое высота у прямоугольника; кругу не нужна

Прямоугольник считается от центра: query rect unit null 9 6 4 4 — это квадрат четыре на четыре клетки с серединой в 9 6, а не угол в этой точке.

@queries — не число и не объект, а список. Работают с ним двумя инструкциями:

sensor сколько @queries @size
read кто @queries 0

sensor @size отдаёт длину, read — элемент по номеру, считая с нуля. Дальше каждый элемент — обычный юнит или здание, у которого всё читается sensor.

Вот и весь перебор:

set номер 0
read кто @queries номер
sensor здоровье кто @health
op add номер номер 1
jump 1 lessThan номер сколько

Третье поле — команда, и оно решает, кого считать:

query circle unit null 9 6 3 0 # всех: трое
query circle unit @sharded 9 6 3 0 # только своих: двое

Пустота (null) означает «любая команда». Конкретная команда — только её юниты. Условия «все, кроме моих» тут нет: если нужны именно враги, берут всех и отсеивают по @team сами.

Неофициальный проект, с Anuke не связан. Спрайты, шрифты и переводы Mindustry © Anuke, используются по GPL-3.0; Fira Code — по OFL-1.1. Код сайта — GPL-3.0.