Выборки игроков
Нативный API возвращает коллекции всех игроков, союзников и противников. Выборки удобны, когда компоненту нужно применить несколько условий и получить один результат: ближайшего видимого противника, всех живых союзников или игроков в заданном радиусе.
Минимальный пример
Заголовок раздела «Минимальный пример»import { agents } from "@killscript/sdk/client";
const visibleLivingEnemies = agents .select(agents.enemies()) .visible() .alive() .toArray();agents.select() копирует исходную коллекцию в обычную сгенерированную
Lua-таблицу. Последующие фильтры изменяют только эту выборку и никогда не
трогают нативную коллекцию игры.
toArray() возвращает поверхностную копию. Изменение полученного массива не
влияет на выборку, которую используют first(), count() и следующие фильтры.
Вызовите agents.select() без аргумента, чтобы начать с Agents.GetAll().
Прямые запросы игроков
Заголовок раздела «Прямые запросы игроков»То же пространство имён agents предоставляет частые нативные коллекции и на
клиенте, и в Reflex:
| Метод | Нативный результат |
|---|---|
local() | Локальный игрок или undefined |
localOrSpectated() | Локальный или наблюдаемый игрок, либо undefined |
all() | Agents.GetAll() |
allies() | Agents.GetAllies() |
enemies() | Agents.GetEnemies() |
select(values?) | Цепочка фильтров над собственной выборкой; по умолчанию все игроки |
Выбор ближайшей подходящей цели
Заголовок раздела «Выбор ближайшей подходящей цели»import { agents } from "@killscript/sdk/client";
function nearestVisibleEnemy(maxDistance: number): Agent | undefined { const local = agents.local(); if (local === undefined) return undefined;
const origin = local.Movement.Position; return agents .select(agents.enemies()) .visible() .alive() .within(origin, maxDistance) .nearestTo(origin);}Условия читаются слева направо. При отсутствии результата вернётся
undefined, поэтому вызывающая функция должна обработать случай без подходящих
игроков.
Доступные операции
Заголовок раздела «Доступные операции»| Операция | Результат |
|---|---|
where(predicate) | Оставляет игроков, подходящих пользовательскому условию |
alive() / dead() | Фильтрует по agent.Stats.IsAlive |
visible() | Оставляет игроков хотя бы с одним видимым сейчас хитбоксом |
within(origin, distance) | Ограничивает расстояние в мировых координатах |
exclude(agent) | Убирает одного игрока; undefined игнорируется |
team(team) | Оставляет одно нативное значение Team |
first() | Возвращает первый текущий результат |
nearestTo(origin) | Возвращает ближайший текущий результат |
count() | Возвращает размер выборки |
toArray() | Возвращает отфильтрованный обычный массив |
Используйте where() для условия, которого нет среди готовых операций:
const richAliveAgents = agents .select() .visible() .alive() .where((agent) => agent.Stats.Money >= 5000) .toArray();Для остальных нативных коллекций используйте Игровые массивы.