Skip to content

Основная среда API

Квадратные скобки в сигнатурах обозначают необязательные параметры. Ошибка типа, диапазона, разрешения, фазы или бюджета обычно вызывает ошибку Lua.

Идентификация

ЗначениеТипОписание
samp.api.versionstringАктивная версия API, сейчас "1.0".
samp.plugin.idstringID установленного плагина.
samp.plugin.versionstringВерсия установленного плагина.

samp.api.has(name [, minimumVersion])

Возвращает boolean. Имя возможности — строка до 128 байт; версия имеет вид "1.0". Результат true, только если поддерживаются и возможность, и версия.

Журнал

lua
samp.log.debug(message)
samp.log.info(message)
samp.log.warn(message)
samp.log.error(message)

message — строка до 2 048 байт. Функции ничего не возвращают.

Подписки

samp.events.on(name, callback [, options])

Возвращает Handle с методом unsubscribe():

lua
local sub = samp.events.on("player.spawned", callback, {
    priority = 100,
    once = true
})
sub:unsubscribe()
ПараметрПравила
nameНепустая строка до 96 байт.
callbackФункция callback(event).
options.priorityЦелое -1000..1000, по умолчанию 0; большее выполняется раньше.
options.onceBoolean, по умолчанию false; удалить после первой доставки.

До 256 подписок на плагин. Разрешение события проверяется при подписке. unsubscribe() идемпотентен. Поля описаны в событиях.

Модули

require(name)

Загружает modules/<name>.lua; точки превращаются в каталоги. Имя до 128 байт, только буквы, цифры, _ и ., без точки в начале/конце и без ... Результат кэшируется. Если модуль вернул nil, вызывающий получает true. Доступ за пределы собственного modules/ и нативные модули запрещены.

Таймеры и задачи

СигнатураКонтракт
samp.timer.after(delayMs, callback)Одноразовый таймер; задержка 0..86 400 000 мс; возвращает { cancel }; максимум 256.
samp.task.spawn(callback)Управляемая корутина; возвращает { cancel }; максимум 256.
samp.task.sleep(delayMs)Приостанавливает только управляемую задачу на 0..86 400 000 мс.

cancel() идемпотентен. Обычные события и изменяемые перехваты не могут yield.

Приватное хранилище

Требуется plugin.storage:

lua
samp.storage.get(key [, default])
samp.storage.set(key, value)
samp.storage.remove(key)

Ключ имеет 1–64 ASCII-символа, начинается с буквы/цифры; далее разрешены также _, -, .. Значение — string, boolean или конечный number. Строка — до 16 КиБ. Лимит плагина: 128 записей и 1 МиБ данных. Отсутствующий ключ возвращает default или nil; set и remove ничего не возвращают.

Форматирование

samp.format.number(value [, precision]) возвращает независимую от локали десятичную строку. Значение конечное, модуль до 9 000 000 000 000; precision — целое 0..6, по умолчанию 0.

Состояние игры

samp.game.state() требует game.state.read и возвращает:

ПолеТипЗначение
sessionIdintegerТекущая сессия.
playerGenerationintegerПоколение локального игрока.
readybooleanИгровые службы готовы.
pausedbooleanИгра приостановлена.
multiplayerbooleanСреда multiplayer существует.
localPlayerAvailablebooleanМожно получить Player Handle.
interiorintegerТекущий интерьер или 0.

Сервер

samp.server.current() требует server.state.read и возвращает nil без multiplayer, иначе table:

ПолеТипЗначение
sessionIdintegerСессия снимка.
addressstringХост или IP.
portintegerПорт.
namestringUTF-8 имя, иногда пустое до получения.
statestringwaiting, connecting, connected, joining, restarting или unknown.
connectedbooleanСоединение завершено.
connectingbooleanИдёт соединение/вход.
lanbooleanРежим LAN.