CS2 Lua API

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)