utils
Модуль utils — время, случайные числа, клавиши, задачи с задержкой, консоль, звук, поиск интерфейсов и сигнатур в модулях игры.
utils.key_state(vk: number)#
Зажата ли клавиша.
| Параметр | Тип | Описание |
|---|---|---|
vk |
number |
виртуальный код клавиши Windows, 0–255 |
Общие коды модификаторов
0x10(Shift),0x11(Ctrl),0x12(Alt) всегда даютfalse. Спрашивайте левую и правую клавиши отдельно:0xA0/0xA1,0xA2/0xA3,0xA4/0xA5.
Возвращает: boolean.
local font = render.load_font("Verdana", 14, "outline")
events.render:set(function()
if utils.key_state(0x06) then -- боковая кнопка мыши 2
render.text(vector2(20, 120), color(255, 255, 0, 255), font, nil, "Кнопка зажата")
end
end)
utils.random_seed(seed: number)#
Задаёт зерно генератора случайных чисел игры.
| Параметр | Тип | Описание |
|---|---|---|
seed |
number |
зерно |
Возвращает: ничего.
utils.random_seed(42)
print(utils.random_int(1, 100)) -- одинаковое число при одинаковом зерне
utils.random_int(a: number, b: number)#
Случайное целое от a до b включительно. Порядок аргументов не важен.
| Параметр | Тип | Описание |
|---|---|---|
a |
number |
граница |
b |
number |
граница |
Возвращает: number.
local phrases = { "gg", "nice", "wp" }
print(phrases[utils.random_int(1, #phrases)])
utils.random_float(a: number, b: number)#
Случайное дробное число от a до b. Порядок аргументов не важен.
| Параметр | Тип | Описание |
|---|---|---|
a |
number |
граница |
b |
number |
граница |
Возвращает: number.
local c = color(utils.random_int(0, 255), utils.random_int(0, 255), utils.random_int(0, 255), 255)
print(c, " ", utils.random_float(0, 1))
utils.timestamp()#
Текущее время в миллисекундах (unix).
Возвращает: 64-битное целое (cdata). Для арифметики с обычными числами используйте tonumber.
local t0 = utils.timestamp()
for i = 1, 100000 do local _ = math.sqrt(i) end
print("Заняло ", tonumber(utils.timestamp() - t0), " мс")
utils.unix_time()#
Текущее время в секундах (unix).
Возвращает: 64-битное целое (cdata).
print("Сейчас ", tonumber(utils.unix_time()), " секунд от 1970 года")
utils.strftime(fmt: string, time?: number)#
Форматирует локальное время по спецификаторам strftime (%Y, %m, %d, %H, %M, %S и т. д.).
| Параметр | Тип | Описание |
|---|---|---|
fmt |
string |
формат |
time |
number или 64-битное целое |
время в секундах unix; по умолчанию — текущее |
Возвращает: string или nil, если в формате неизвестный спецификатор.
print(utils.strftime("%Y-%m-%d %H:%M:%S"))
print(utils.strftime("%d.%m", utils.unix_time()))
utils.system_time()#
Локальное время по частям.
Возвращает: number, number, number, number — часы, минуты, секунды, миллисекунды.
local h, m, s = utils.system_time()
print(string.format("%02d:%02d:%02d", h, m, s))
utils.interface(module: string, name: string)#
Находит интерфейс игры через CreateInterface модуля. Имя сравнивается точно.
| Параметр | Тип | Описание |
|---|---|---|
module |
string |
имя модуля, например "engine2.dll" или "engine2" (без расширения добавляется .dll) |
name |
string |
имя интерфейса с версией |
Возвращает: lightuserdata или nil, если модуль или интерфейс не найдены.
local engine = utils.interface("engine2.dll", "Source2EngineToClient001")
print(engine)
utils.pattern(module: string, signature: string)#
Ищет в модуле последовательность байтов.
| Параметр | Тип | Описание |
|---|---|---|
module |
string |
имя модуля |
signature |
string |
байты в шестнадцатеричном виде через пробел; ? или ?? — любой байт |
Возвращает: lightuserdata — адрес первого совпадения, или nil.
local addr = utils.pattern("client.dll", "48 89 5C 24 08 ? 8B")
print(addr or "не найдено")
utils.username()#
Возвращает: string — имя пользователя RezTOP.
print("Привет, ", utils.username(), "!")
utils.user()#
Данные пользователя RezTOP.
Возвращает: table с полями:
| Поле | Тип | Описание |
|---|---|---|
name |
string |
имя пользователя, то же, что utils.username() |
avatar |
texture |
аватар; рисуется через render.image |
license |
number |
время окончания подписки, Unix-время в секундах; 0 — бессрочная подписка или данных нет |
avatarесть всегда. Если аватара нет или он ещё не загружен, это пустая картинка:tostringдаёт"texture(0x0)", а обращение кavatar.size— ошибкуinvalid texture.
local u = utils.user()
local font = render.load_font("Verdana", 14, "outline")
local left = "бессрочно"
if u.license > 0 then
left = string.format("%d дн.", math.floor((u.license - tonumber(utils.unix_time())) / 86400))
end
events.render:set(function()
render.image(u.avatar, vector2(20, 200), vector2(32, 32), color(255, 255, 255, 255), nil, 16)
render.text(vector2(60, 208), color(255, 255, 255, 255), font, nil, u.name, " | ", left)
end)
utils.schedule(delay: number, fn: function, ...)#
Вызывает fn(...) через delay секунд.
| Параметр | Тип | Описание |
|---|---|---|
delay |
number |
задержка, секунды |
fn |
function |
функция |
... |
any |
аргументы для fn |
- Задачи проверяются раз в кадр; за кадр выполняется не больше одной задачи.
- Ошибка внутри
fnвыводится в консоль. - Задача снимается при выгрузке скрипта.
Возвращает: ничего.
-- Повтор раз в 10 секунд
local function tick()
print("Прошло ещё 10 секунд, тик ", globals.tickcount)
utils.schedule(10, tick)
end
utils.schedule(10, tick)
utils.console(...)#
Выполняет консольную команду игры. Аргументы приводятся к строкам и соединяются пробелом.
| Параметр | Тип | Описание |
|---|---|---|
... |
any |
части команды |
Возвращает: ничего.
utils.console("echo", "[script]", "загружен") -- выполнит: echo [script] загружен
utils.playsound(path: string, volume?: number)#
Проигрывает звук игры.
| Параметр | Тип | Описание |
|---|---|---|
path |
string |
путь к звуку игры |
volume |
number |
громкость, по умолчанию 1.0 |
Возвращает: ничего.
events.player_death:set(function(e)
if e.attacker == entity.local_controller() then
utils.playsound("buttons/arena_switch_press_02", 0.5)
end
end)