Skip to main content

Отправка

msg.send

Собирает и отправляет одно сетевое сообщение.

Аргументы

Возвращает

Пример

dest

Для "pvs"/"pas" игрок или сущность в target — просто источник точки: берётся origin их edict, дальше это обычная рассылка по видимости/слышимости, не «этому конкретному игроку».

name

Имя сообщения ищется через движок (RegUserMsg), не через жёстко прошитый список:
  • Если сообщение с таким именем уже зарегистрировано игровой библиотекой (TextMsg, ScreenFade, Damage, BarTime, …) — вернётся тот же id, и клиент обработает его штатно.
  • Если имя никто ещё не занял — движок зарегистрирует новое сообщение под этим именем. Это годится только для клиента, который сам умеет его читать (свой клиентский мод); стоковый hl.dll/движок просто проигнорирует неизвестное имя.
Id резолвится один раз и кешируется — второй msg.send с тем же name ничего не переспрашивает у движка.

Поля

Порядок аргументов после target — это порядок байт в проводе. Он должен совпадать с тем, что ждёт получатель (для стоковых сообщений — с тем, что разбирает клиент; для своих — с тем, что разбирает твой клиентский код). Типы полей — msg.byte и соседние.
Если dest требует получателя/точку (one, one_unreliable, pvs, pas), а target не подходит — ошибка Lua до всякой отправки. Само сообщение при этом никогда не уходит наполовину: либо MESSAGE_BEGIN/MESSAGE_END отработали целиком, либо не начинались вовсе.