protobuf
Модуль protobuf выводит локальные сообщения в чат и на экран. Объект protobuf — сообщение игры, которое приходит в события «Сообщения игры».
Объект protobuf#
Поля сообщения читаются по имени: msg.pos_x. pairs(msg) обходит все поля.
- Объект действителен только во время колбэка события. Потом — ошибка
message is null. - Неустановленное поле возвращает значение по умолчанию. Поля, которого нет, —
nil. - Запись полей не поддерживается.
| Тип поля | Значение в Lua |
|---|---|
| int32, uint32, float, double, enum | number |
| int64, uint64 | 64-битное целое (cdata) |
| bool | boolean |
| string, bytes | string |
| вложенное сообщение | CMsgVector → vector, CMsgQAngle → angle, остальные — protobuf |
| repeated | массив значений |
events.vote_start:set(function(msg)
print(tostring(msg)) --> protobuf<CCSUsrMsg_VoteStart>
for k, v in pairs(msg) do print(" ", k, " = ", tostring(v)) end
end)
protobuf.say_text(chat: boolean, ent: entity|nil, text: string)#
Показывает строку в чате игры, как будто её прислал сервер. Сообщение видно только вам, на сервер ничего не уходит.
| Параметр | Тип | Описание |
|---|---|---|
chat |
boolean |
флаг сообщения chat; передавайте true |
ent |
entity или nil |
сущность-отправитель; не сущность — сообщение без отправителя |
text |
string |
текст |
Возвращает: ничего.
protobuf.say_text(true, nil, "Скрипт загружен")
protobuf.text_msg(dest: string, msg: string, p1?: string, p2?: string, p3?: string, p4?: string)#
Показывает локальное текстовое сообщение, как будто его прислал сервер. На сервер ничего не уходит.
| Параметр | Тип | Описание |
|---|---|---|
dest |
string |
куда: "console", "console2", "talk", "talk2", "hint", "hinterror" |
msg |
string |
текст сообщения |
p1 … p4 |
string |
параметры сообщения; не строки пропускаются |
Неверный dest — ошибка valid destinations are 'console', 'console2', 'talk', 'talk2', 'hint', and 'hinterror'.
Возвращает: ничего.
-- Сообщение в чат о каждом нанесённом уроне
events.player_hurt:set(function(e)
if e.attacker == entity.local_controller() and e.userid then
protobuf.text_msg("talk", string.format("Урон %d по %s", e.dmg_health, e.userid:name() or "?"))
end
end)