msg
Отправка сырых сетевых сообщений движка — своих и стоковых.msg отправляет сетевое user-сообщение напрямую — то же самое, что
MESSAGE_BEGIN/WRITE_*/MESSAGE_END в SDK, но одним вызовом. Подходит и
для стоковых сообщений игры (TextMsg, ScreenFade, Damage и другие,
которые уже умеет читать клиент), и для полностью своих — под клиентский мод,
который сам их разбирает.
Почему не begin/write/end
В SDKMESSAGE_BEGIN открывает сообщение, WRITE_* пишут в него поля,
MESSAGE_END закрывает. Если дать Lua самому вызывать эти шаги по очереди,
любая ошибка между begin и end — не то поле, nil, что угодно —
оставит сообщение недописанным. Это не падение одного плагина: битый или
недооткрытый пакет уходит в общий сетевой поток движка и задевает всех
на сервере.
Поэтому msg.send — один вызов. Все аргументы и все поля собираются и
проверяются в Lua заранее; MESSAGE_BEGIN вызывается только тогда, когда
упасть уже физически нечему.
Приём чужих сообщений — не здесь, а в hook.add("msg:Name", ...).
Отправка
Поля сообщения
Каждая функция описывает одно поле в порядке провода — сама ничего не отправляет, только проверяет диапазон и возвращает значение, котороеmsg.send пишет по очереди.