Эффекты
Временный эффект — то, что игра рисует на мгновение и забывает: луч, ударная
волна, взрыв, искры, свет, кровь. Каждый эффект — функция effects, её
настройки — аргументы эффекта, а второй аргумент говорит, кто его видит.
const shock = server.precache("sprites/shockwave.spr");
const trail = server.precache("sprites/laserbeam.spr");
function blast(here: number[]) {
effects.beamCylinder({ at: here, radius: 385, sprite: shock, life: 0.4, width: 60, color: "#0096ff", alpha: 200 }, { near: here });
effects.sparks({ at: here });
}
function thrown(grenade: Entity, thrower: Player) {
effects.beamFollow({ entity: grenade, sprite: trail, life: 1, width: 5, color: "#0096ff" }, { to: thrower });
}
Спрайты и модели
Эффект рисует спрайт или модель, которые игра прекэшировала.
server.precache возвращает их как Resource, и именно его принимают
sprite и model эффекта:
const shock = server.precache("sprites/shockwave.spr"); // на верхнем уровне файла
server.addEventListener("precache", () => {
const gibs = server.precache("models/glassgibs.mdl"); // или в событии "precache"
});
Файл, запрошенный на верхнем уровне плагина, прекэшируется, когда грузится
карта; в событии "precache" — сразу. Плагин, перезагруженный посреди карты,
снова выполняет свой верхний уровень: файл второй раз не прекэшируется, а
Resource находит индекс, который ему дала карта.
resource.path — путь, который ему дали, resource.index — индекс, который
принимает натив (0, пока файл не прекэширован).
Игра прекэширует файл, только пока грузится карта. Запрошенный позже — в команде, в
"init" — файл, который не прекэшировал ни один плагин,
отмечается строкой в консоли, а эффект, который его рисует, не отправляется
и тоже пишет строку.Кто видит
| Второй аргумент | Кто видит эффект |
|---|---|
| не задан | все |
{ near: point } | игроки, которым видна эта точка |
{ to: player } | только этот игрок |
Эффект отправляется так, как игра отправляет свои: игрок, чьё соединение его потеряло, просто его не увидит.
Единицы
- Время —
life— в секундах:life: 0.4. - Цвет — шестнадцатеричная запись CSS,
"#0096ff"или"#09f";alpha— яркость, от0до255. - Точки, размеры и скорости — в единицах мира, как
entity.origin. - Несколько размеров — собственные числа эффекта, от
0до255, и описание каждой настройки их объясняет: толщина лучаwidth(10— одна единица), его дрожаниеnoise(100— одна единица), размер спрайтаscale(10— его собственный размер). palette— цвет палитры игры, от0до255: красный цвет крови —247.
Эффекты
Сначала обязательные настройки; у остальных есть значения по умолчанию.
| Функция | Что рисует | Настройки |
|---|---|---|
beamPoints | луч между двумя точками | start, end, sprite, life, width; color, alpha, noise, frame, frameRate, speed |
beamEntityPoint | луч от сущности к точке | start (сущность), end и настройки луча |
beamEntities | луч между двумя сущностями | start, end (сущности) и настройки луча |
beamRing | кольцо луча, диаметр — две сущности | как у beamEntities |
beamCylinder | цилиндр, растущий до radius, — ударная волна | at, radius и настройки луча |
beamDisk | диск, растущий до radius | как у beamCylinder |
beamTorus | кольцо, повёрнутое к зрителю, растущее до radius | как у beamCylinder |
beamFollow | след за движущейся сущностью | entity, sprite, life, width; color, alpha |
beamSprite | луч со спрайтом на конце | start, end, sprite, endSprite |
lightning | молния между двумя точками | start, end, sprite, life, width; noise |
killBeams | убирает лучи сущности | entity |
explosion | взрыв: спрайт, свет, частицы, звук | at, sprite; scale, frameRate, additive, lights, sound, particles |
tarExplosion | вспышка тёмных частиц | at |
particleExplosion | вспышка частиц цветов палитры | at; palette, colors |
smoke | клуб дыма | at, sprite; scale, frameRate |
implosion | трассеры, слетающиеся в точку | at, radius, count, life |
gunshot | попадание пули | at |
sparks | искры, падающие из точки | at |
armorRicochet | пуля от брони | at; scale |
lavaSplash, teleport | всплеск частиц | at |
tracer | трассер от точки к точке | start, end |
showLine | линия частиц на 30 секунд | start, end |
streakSplash | сноп трассеров в заданном направлении | at, direction, count, speed; randomness, palette |
sprite | светящийся спрайт, проигрывается один раз | at, sprite; scale, alpha |
glowSprite | светящийся спрайт, который держится | at, sprite, life; scale, alpha |
spriteTrail | светящиеся спрайты, разлетающиеся с линии | start, end, sprite, count, life; scale, speed, randomness |
spriteSpray | брызги спрайтов | at, velocity, sprite, count, speed; noise |
largeFunnel | воронка спрайтов | at, sprite; reverse |
fizz | пузыри внутри браш-сущности | entity, sprite, density |
bubbles, bubbleTrail | пузыри из коробки, с линии | start, end, height, sprite, count, speed |
dynamicLight | свет на мир вокруг точки | at, radius, life; color, decay |
entityLight | свет на сущности, освещает только сущности | entity, at, radius, life; color, decay |
line | цветная линия | start, end, life; color |
box | рёбра коробки | mins, maxs, life; color |
blood, bloodStream | брызги, струя крови | at, direction, speed; palette |
bloodSprite | кровь, как игра рисует попадание | at, spray, drop; scale, palette |
model | брошенная модель, которая отскакивает, — гильза | at, velocity, model, life; yaw, sound |
explodeModel | осколки модели во все стороны | at, speed, model, count, life |
breakModel | осколки из коробки — что-то разбилось | at, size, velocity, model, count, life; randomness, material, smoke, transparent |
projectile | модель, летящая как гвоздь | at, velocity, model, life; owner |
spray | россыпь моделей или спрайтов | at, direction, model, count, speed; noise, renderMode |
playerSprites | спрайты из тела игрока | player, sprite, count; variance |
particleBurst | вспышка частиц одного цвета | at, radius, life; palette |
fireField | квадрат огненных спрайтов | at, radius, sprite, count, life; rise, blend, loop, flat |
playerAttachment | модель над игроком, которая ходит с ним | player, model, life; offset |
killPlayerAttachments | убирает прикреплённые к игроку модели | player |
Настройки луча — sprite, life и width, затем color (белый), alpha
(255), noise (0, прямой), frame и frameRate (анимация спрайта) и
speed (как быстро спрайт бежит вдоль него). Описание каждой настройки — в
редакторе — даёт её диапазон и значение по умолчанию.
Текст на экране — это player.showHud. Декали — дырки от пули, рисунка на
стене — среди эффектов пока нет: она отправляется нативами, message_begin и
write_* (ограничения).
Игроки: действия
Player — это игрок на сервере. Его даёт событие или команда, к которой он относится (event.player, player в обработчике команды), а server.players перечисляет всех. Игровые данные игрока — gravity, origin, hideHud и остальные — это свойства, они описаны на странице Игроки и сущности. Эта страница — о том, что с игроком можно делать: найти, перевести в команду, выдать оружие, показать текст и поделиться его состоянием с другими плагинами.
Флаги
Часть данных игры — набор флагов «включено/выключено»: какие кнопки держит игрок, какие части HUD скрыты, стоит ли сущность на земле. В плагине такой набор — массив имён: