Введение

Wiki документация

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:portsetServerAddress("127.0.0.1:7777")
setBotNick(string nick)Устанавливает ник бота.nicksetBotNick("Bot1")
setBotPosition(float x, float y, float z)Устанавливает позицию бота.x,y,zsetBotPosition(100.0,200.0,10.0)
setBotQuaternion(float w,float x,float y,float z)Устанавливает кватернион.w,x,y,zsetBotQuaternion(1,0,0,0)
setBotRotation(float angle)Устанавливает угол поворота.angle (градусы)setBotRotation(90.0)
setBotHealth(float health)Устанавливает здоровье (0-100).healthsetBotHealth(100.0)
setBotArmor(float armor)Устанавливает броню (0-100).armorsetBotArmor(50.0)
setNetworkAdapter(string ip)Устанавливает IP сетевого адаптера.ipsetNetworkAdapter("192.168.1.1")
setWindowTitle(string title)Заголовок окна программы.titlesetWindowTitle("Raksamp Bot")
lockWindowTitle(bool lock)Блокирует изменение заголовка.locklockWindowTitle(true)
setWindowText(string text)Текст в строке состояния над чатом.textsetWindowText("Готов")
lockWindowText(bool lock)Блокирует строку состояния.locklockWindowText(true)
flashWindow()Мигание окна программы.НетflashWindow()
showWindow()Разворачивает окно.НетshowWindow()
setRate(int rate, int value)Устанавливает рейты.rate, valuesetRate(RATE_LUA,100)
runCommand(string cmd)Обрабатывает команду Raksamp.cmdrunCommand("!spawn")
reconnect(int ms)Переподключение с задержкой.ms (опционально)reconnect(5000)
spawn()Заспавнивает бота.Нетspawn()
updateSync()Обновляет синхронизацию бота.НетupdateSync()
resetConnectTimeout()Сбрасывает таймер переподключения.НетresetConnectTimeout()
setBotVehicle(int id, int seat=0)Назначает боту транспорт.id, seatsetBotVehicle(400,0)
coordStart(float x,float y,float z,int delay,float step,bool off_at_spawn)Запускает движение по координатам.x,y,z,delay,step,off_at_spawncoordStart(100,200,10,1000,1,true)
coordStop()Останавливает движение.НетcoordStop()
setLogPath(string path)Путь к файлу лога.pathsetLogPath("logs/bot.log")
setAutoPick(bool state)Автоматический сбор пикапов.statesetAutoPick(true)
proxyConnect(string address, string username, string password)Подключается к прокси.address, username, passwordproxyConnect("123.145.167.189:58765","user","pass")
proxyDisconnect()Отключается от прокси.НетproxyDisconnect()
setBotMoney(int money)Устанавливает деньги бота.moneysetBotMoney(1000)
registerHandler(string event, function handler)Регистрирует обработчик события.event, handlerregisterHandler("onConnect", function() print("ok") end)
destroyHandlers()Удаляет все обработчики событий.НетdestroyHandlers()

Функции получения данных

* не вернет ничего, если не существует

ФункцияОписаниеВозвращаетПример
getBotId()ID ботаintlocal id = getBotId()
getServerAddress()Адрес сервераstringlocal ip = getServerAddress()
getServerName()Название сервераstringlocal name = getServerName()
getBotNick()Ник ботаstringlocal nick = getBotNick()
getBotScore()Очки (уровень) ботаintlocal score = getBotScore()
getBotPing()Пинг ботаintlocal ping = getBotPing()
isBotSpawned()Заспавнен ли ботboollocal spawned = isBotSpawned()
getBotInterior()ID интерьераintlocal interior = getBotInterior()
getBotSkin()ID скинаintlocal skin = getBotSkin()
getBotPosition()Позицияfloat x,y,zlocal x,y,z = getBotPosition()
getBotQuaternion()Кватернионfloat w,x,y,zlocal w,x,y,z = getBotQuaternion()
getBotRotation()Угол поворотаfloatlocal angle = getBotRotation()
getBotHealth()Здоровьеfloatlocal health = getBotHealth()
getBotArmor()Броняfloatlocal armor = getBotArmor()
getNetworkAdapter()IP адаптераstringlocal ip = getNetworkAdapter()
getCommandLineArgs()Аргументы командной строкиstringlocal args = getCommandLineArgs()
isBotConnected()Подключен ли ботboollocal connected = isBotConnected()
getBotVehicle()ID транспорта ботаintlocal vehicle = getBotVehicle()
isCoordActive()Активно ли движение по координатамboollocal active = isCoordActive()
getPath(string additional)Корневой путь с суффиксомstringlocal path = getPath("scripts")
isProxyConnected()Подключен ли проксиboollocal connected = isProxyConnected()
getBotMoney()Деньги ботаintlocal money = getBotMoney()
getPlayerCount(bool stream=false)Количество игроковintlocal count = getPlayerCount()
isPlayerConnected(int id)Подключен ли игрокboollocal connected = isPlayerConnected(1)
doesPlayerExist(int id)Существует ли игрокboollocal exist = doesPlayerExist(1)
doesVehicleExist(int id)Существует ли транспортboollocal exist = doesVehicleExist(400)
doesPickupExist(int id)Существует ли пикапboollocal exist = doesPickupExist(1)
doesLabelExist(int id)Существует ли 3D-текстboollocal exist = doesLabelExist(1)
getAllPlayers()Данные всех игроковtablelocal players = getAllPlayers()
getAllVehicles()Данные всех ТСtablelocal vehicles = getAllVehicles()
getAllPickups()Данные всех пикаповtablelocal pickups = getAllPickups()
getAllLabels()Данные всех 3D-текстовtablelocal labels = getAllLabels()
getPlayer(int id)Данные игрокаtable/nillocal player = getPlayer(1)
getVehicle(int id)*Данные транспортаtable/nillocal vehicle = getVehicle(400)
getPickup(int id)*Данные пикапаtable/nillocal pickup = getPickup(1)
getLabel(int id)*Данные 3D-текстаtable/nillocal label = getLabel(1)

Структуры данных

getAllPlayers()
{
    [id] = {
        score, ping, nick, exist,
        skin, color,
        position = {x,y,z}
    }
}
getAllVehicles()
{
    [id] = {
        health, model, name, number,
        engine, lights, alarm, locked,
        position = {x,y,z}
    }
}
getAllPickups()
{
    [id] = {
        model, type,
        position = {x,y,z}
    }
}
getAllLabels()
{
    [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)Выполнена клиентская командаcmdtrue/false
onPrintLog(string text)Вывод в логtexttrue/false
onSendPacket(id, bs)Отправлен пакетid, bstrue/false
onReceivePacket(id, bs)Получен пакетid, bstrue/false
onSendRPC(id, bs)Отправлен RPCid, bstrue/false
onReceiveRPC(id, bs)Получен RPCid, bstrue/false
function onConnect() print(" Подключено") end
registerHandler("onDisconnect", function() print(" Отключено") end)

BitStream операции

Создание, запись, чтение, отправка пакетов/RPC.

local bs = bitStream.new()
bs:writeInt32(1337)
bs:sendPacket()
методы: writeBool, writeFloat, readString, sendRPC и др.

Функции аддона (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