Введение
RakSAMP Lite — официальная тема / скачать
Raksamp — минималистичный фейк-клиент для SA:MP, предоставляющий мощный Lua API для создания ботов, автоматизации действий и взаимодействия с игровым сервером. API позволяет управлять поведением бота, обрабатывать сетевые события и расширять функционал через скрипты. Эта документация подробно описывает все функции, события и структуры данных, доступные в Lua API, с примерами и рекомендациями.
Основные функции
Эти функции управляют поведением бота и настройками клиента.
| Функция | Описание | Параметры | Пример |
|---|---|---|---|
print(string text) | Выводит сообщение в консоль. | text: Текст | print("Привет, мир!") |
sleep(int ms) | Приостанавливает программу (блокирует). | ms: миллисекунды | sleep(1000) |
exit() | Завершает программу, отключаясь от сервера. | Нет | exit() |
setServerAddress(string address) | Устанавливает адрес сервера. | address: IP:port | setServerAddress("127.0.0.1:7777") |
setBotNick(string nick) | Устанавливает ник бота. | nick | setBotNick("Bot1") |
setBotPosition(float x, float y, float z) | Устанавливает позицию бота. | x,y,z | setBotPosition(100.0,200.0,10.0) |
setBotQuaternion(float w,float x,float y,float z) | Устанавливает кватернион. | w,x,y,z | setBotQuaternion(1,0,0,0) |
setBotRotation(float angle) | Устанавливает угол поворота. | angle (градусы) | setBotRotation(90.0) |
setBotHealth(float health) | Устанавливает здоровье (0-100). | health | setBotHealth(100.0) |
setBotArmor(float armor) | Устанавливает броню (0-100). | armor | setBotArmor(50.0) |
setNetworkAdapter(string ip) | Устанавливает IP сетевого адаптера. | ip | setNetworkAdapter("192.168.1.1") |
setWindowTitle(string title) | Заголовок окна программы. | title | setWindowTitle("Raksamp Bot") |
lockWindowTitle(bool lock) | Блокирует изменение заголовка. | lock | lockWindowTitle(true) |
setWindowText(string text) | Текст в строке состояния над чатом. | text | setWindowText("Готов") |
lockWindowText(bool lock) | Блокирует строку состояния. | lock | lockWindowText(true) |
flashWindow() | Мигание окна программы. | Нет | flashWindow() |
showWindow() | Разворачивает окно. | Нет | showWindow() |
setRate(int rate, int value) | Устанавливает рейты. | rate, value | setRate(RATE_LUA,100) |
runCommand(string cmd) | Обрабатывает команду Raksamp. | cmd | runCommand("!spawn") |
reconnect(int ms) | Переподключение с задержкой. | ms (опционально) | reconnect(5000) |
spawn() | Заспавнивает бота. | Нет | spawn() |
updateSync() | Обновляет синхронизацию бота. | Нет | updateSync() |
resetConnectTimeout() | Сбрасывает таймер переподключения. | Нет | resetConnectTimeout() |
setBotVehicle(int id, int seat=0) | Назначает боту транспорт. | id, seat | setBotVehicle(400,0) |
coordStart(float x,float y,float z,int delay,float step,bool off_at_spawn) | Запускает движение по координатам. | x,y,z,delay,step,off_at_spawn | coordStart(100,200,10,1000,1,true) |
coordStop() | Останавливает движение. | Нет | coordStop() |
setLogPath(string path) | Путь к файлу лога. | path | setLogPath("logs/bot.log") |
setAutoPick(bool state) | Автоматический сбор пикапов. | state | setAutoPick(true) |
proxyConnect(string address, string username, string password) | Подключается к прокси. | address, username, password | proxyConnect("123.145.167.189:58765","user","pass") |
proxyDisconnect() | Отключается от прокси. | Нет | proxyDisconnect() |
setBotMoney(int money) | Устанавливает деньги бота. | money | setBotMoney(1000) |
registerHandler(string event, function handler) | Регистрирует обработчик события. | event, handler | registerHandler("onConnect", function() print("ok") end) |
destroyHandlers() | Удаляет все обработчики событий. | Нет | destroyHandlers() |
Функции получения данных
* не вернет ничего, если не существует
| Функция | Описание | Возвращает | Пример |
|---|---|---|---|
getBotId() | ID бота | int | local id = getBotId() |
getServerAddress() | Адрес сервера | string | local ip = getServerAddress() |
getServerName() | Название сервера | string | local name = getServerName() |
getBotNick() | Ник бота | string | local nick = getBotNick() |
getBotScore() | Очки (уровень) бота | int | local score = getBotScore() |
getBotPing() | Пинг бота | int | local ping = getBotPing() |
isBotSpawned() | Заспавнен ли бот | bool | local spawned = isBotSpawned() |
getBotInterior() | ID интерьера | int | local interior = getBotInterior() |
getBotSkin() | ID скина | int | local skin = getBotSkin() |
getBotPosition() | Позиция | float x,y,z | local x,y,z = getBotPosition() |
getBotQuaternion() | Кватернион | float w,x,y,z | local w,x,y,z = getBotQuaternion() |
getBotRotation() | Угол поворота | float | local angle = getBotRotation() |
getBotHealth() | Здоровье | float | local health = getBotHealth() |
getBotArmor() | Броня | float | local armor = getBotArmor() |
getNetworkAdapter() | IP адаптера | string | local ip = getNetworkAdapter() |
getCommandLineArgs() | Аргументы командной строки | string | local args = getCommandLineArgs() |
isBotConnected() | Подключен ли бот | bool | local connected = isBotConnected() |
getBotVehicle() | ID транспорта бота | int | local vehicle = getBotVehicle() |
isCoordActive() | Активно ли движение по координатам | bool | local active = isCoordActive() |
getPath(string additional) | Корневой путь с суффиксом | string | local path = getPath("scripts") |
isProxyConnected() | Подключен ли прокси | bool | local connected = isProxyConnected() |
getBotMoney() | Деньги бота | int | local money = getBotMoney() |
getPlayerCount(bool stream=false) | Количество игроков | int | local count = getPlayerCount() |
isPlayerConnected(int id) | Подключен ли игрок | bool | local connected = isPlayerConnected(1) |
doesPlayerExist(int id) | Существует ли игрок | bool | local exist = doesPlayerExist(1) |
doesVehicleExist(int id) | Существует ли транспорт | bool | local exist = doesVehicleExist(400) |
doesPickupExist(int id) | Существует ли пикап | bool | local exist = doesPickupExist(1) |
doesLabelExist(int id) | Существует ли 3D-текст | bool | local exist = doesLabelExist(1) |
getAllPlayers() | Данные всех игроков | table | local players = getAllPlayers() |
getAllVehicles() | Данные всех ТС | table | local vehicles = getAllVehicles() |
getAllPickups() | Данные всех пикапов | table | local pickups = getAllPickups() |
getAllLabels() | Данные всех 3D-текстов | table | local labels = getAllLabels() |
getPlayer(int id) | Данные игрока | table/nil | local player = getPlayer(1) |
getVehicle(int id)* | Данные транспорта | table/nil | local vehicle = getVehicle(400) |
getPickup(int id)* | Данные пикапа | table/nil | local pickup = getPickup(1) |
getLabel(int id)* | Данные 3D-текста | table/nil | local label = getLabel(1) |
Структуры данных
{
[id] = {
score, ping, nick, exist,
skin, color,
position = {x,y,z}
}
}
{
[id] = {
health, model, name, number,
engine, lights, alarm, locked,
position = {x,y,z}
}
}
{
[id] = {
model, type,
position = {x,y,z}
}
}
{
[id] = {
distance, color, test_los,
player_id, vehicle_id, text,
position = {x,y,z}
}
}
Рейты
Константы для setRate():
RATE_SLEEP
RATE_CONNECT
RATE_RECONNECT
RATE_NETWORK
RATE_LUA
RATE_SPECTATE
RATE_ONFOOT
RATE_INCAR
RATE_AIM
setRate(RATE_LUA, 100) -- onUpdate каждые 100 мс
События
registerHandler| Событие | Описание | Параметры | Возврат |
|---|---|---|---|
onLoad() | Скрипт загружен | нет | нет |
onUnload() | Скрипт выгружен | нет | нет |
onUpdate() | Вызывается каждые N мс (RATE_LUA) | нет | нет |
onRequestConnect() | Запрос на подключение | нет | true/false |
onConnect() | Подключение к серверу | нет | нет |
onDisconnect() | Отключение | нет | нет |
onProxyConnect() | Подключение к прокси | нет | нет |
onProxyDisconnect() | Отключение от прокси | нет | нет |
onProxyError() | Ошибка прокси | нет | нет |
onCoordStart() | Начало движения по координатам | нет | нет |
onCoordStop() | Остановка движения | нет | нет |
onRunCommand(string cmd) | Выполнена клиентская команда | cmd | true/false |
onPrintLog(string text) | Вывод в лог | text | true/false |
onSendPacket(id, bs) | Отправлен пакет | id, bs | true/false |
onReceivePacket(id, bs) | Получен пакет | id, bs | true/false |
onSendRPC(id, bs) | Отправлен RPC | id, bs | true/false |
onReceiveRPC(id, bs) | Получен RPC | id, bs | true/false |
function onConnect() print(" Подключено") end
registerHandler("onDisconnect", function() print(" Отключено") end)
BitStream операции
Создание, запись, чтение, отправка пакетов/RPC.
local bs = bitStream.new()
bs:writeInt32(1337)
bs:sendPacket()Функции аддона (require "addon")
isBotInAnyVehicle()sendDialogResponse(id,button,list,input)sendVehicleEnter(id, passenger)sendInput(text)bitStream:readString8/writeString8
Управление задачами
newTask(function, halted, ...), wait(ms).
newTask(function() wait(1000) print("done") end)Методы: task:halt(), task:resume(), task:kill().
HTTP-запросы
requests.get/post синхронно.
local requests = require("requests")
local resp = requests.get("https://api.ipify.org")
print(resp.text)Обработка клавиш
sendKey(id), sendSpecialKey(id) (1=Y,2=N,3=H).
sendKey(1024) -- Alt
sendSpecialKey(1) -- Y
updateSync()Поддержка прокси SOCKS5
proxyConnect("ip:port","user","pass")
function onProxyConnect() print("Прокси активен") endВстроенные команды
!exit/!quit!reconnect!players!goto <id>!vehicles!reload