Неактуально Исходник [RakBot] RakBotAddon - улучшение RakBot-API

Статус
В этой теме нельзя размещать новые ответы.

kizn

\ 0 _ 0 /
Автор темы
Всефорумный модератор
2,408
2,090
Описание:

RakBotAddon - это библиотека, которая исправляет некоторые баги функций RakBot и добавляет свои функции.
Текущая версия: 1.2

Изменения в библиотеке:

1.01: Исправлен краш RakBot при попытке ввести % в printLog (спс @fr1t.)
1.02: Исправлен баг неработы sendPickup (забыл переименовать переменную)
1.03: Поправлен printLog (теперь можно printLog(true) и все будет хайпово), добавлена проверка на число в sendPickup
1.1: Добавлено исправление функции getMoney (фикс от @BBooGG)
1.2: Исправлено возвращение boolean-значений внутри onRecvRpc и onRecvPacket (спасибо @BBooGG)
1.21: Удалил setWindowName, так как по сути она не расширяет возможности RakBot и бесполезна, кому такое нужно может добавить в код сам.

Исправлено:

printLog
- теперь он принимает неограниченное количество аргументов, как print, и не вылетает, если передать ему число.
sendPickup - в RakBot эта функция телепортирует вас на пикап и стоит там, в библиотеке происходит обычная эмуляция поднятия пикапа.
getRakBotPath - в версии 0.8.1 путь ракбота получается без \ на конце, это исправлено.
getMoney -

Если сервак установит деньги и потом вызовет requestspawn то ракбот автоматом установит кол-во денег на 0.

Функции:

getAllVehicles()
- возвращает массив, где индекс - это айди автомобиля. Структура:
Lua:
-- vehData - это уже полученный массив с информацией о автомобиле, который находится внутри массива getAllVehicles()
vehData.vehId
vehData.modelId
vehData.position = { x, y, z }
vehData.angle
vehData.color1
vehData.color2
vehData.health
vehData.interior
vehData.doorDamageStatus
vehData.panelDamageStatus
vehData.lightDamageStatus
vehData.tireDamageStatus
vehData.addsiren
vehData.modslot0
vehData.modslot1
vehData.modslot2
vehData.modslot3
vehData.modslot4
vehData.modslot5
vehData.modslot6
vehData.modslot7
vehData.modslot8
vehData.modslot9
vehData.modslot10
vehData.modslot11
vehData.modslot12
vehData.modslot13
vehData.paintJob
vehData.bodyColor1
vehData.bodyColor2
getAllChars() - возвращает массив игроков в зоне стрима, где индекс - айди игрока. Структура:
Lua:
-- charData - это уже полученный массив с информацией о игроке, который находится внутри массива getAllChars()
charData.playerId
charData.team
charData.model
charData.position = { x, y, z }
charData.rotation
charData.color
charData.fightingStyle
getAllPickups() - возвращает массив пикапов в зоне стрима, где индекс - айди пикапа. Структура:
Lua:
-- pickupData - это уже полученный массив с информацией о пикапе, который находится внутри массива getAllPickups()
pickupData.pickupId
pickupData.modelId
pickupData.pickupType
pickupData.position = { x, y, z }
Примечание - длину массивов, которую отдают функции выше нельзя узнать через #array

sampGetPlayerNickname(playerId)
- получить никнейм игрока через его айди

getDistanceBetweenCoords3d(x, y, z, x1, y1, z1) - получить дистанцию между координатами (как в MoonLoader)


В будущем:

Добавить функцию getAllObjects() [p.s кто может помочь с написанием этой функции для ракбот напишите в лс]

Особенности:

Вы можете использовать onRecvRpc и onRecvPacket в вашем скрипте без проблем (хотя если вы используете LuaAddons вместо onRecvRpc используйте onRRpc), хотя эти функции также используются в моей библиотеке. Это сделано через метатаблицу _G, спасибо, что натолкнул на идею @whyrinki

Если какая-то другая библиотека решит использовать метатаблицу, скрипт скопирует ее свойства и перенесет в свою метатаблицу, чтобы метатаблица не пересоздавалась
(всегда подключайте RakBotAddon последним из всех библиотек)

Установка:


Переместить файл RakBotAddon.lua в "Папка RakBot"->scripts->libs

Подключение:

Прописать в вашем скрипте в начале:
Lua:
package.path = getRakBotPath().."/scripts/libs/?.lua;"..getRakBotPath().."/scripts/libs/?/init.lua;";
package.cpath = getRakBotPath().."/scripts/libs/?.dll";

Затем:
Lua:
require('RakBotAddon')

Или, если вы хотите в окне RakBot видеть отладочные сообщения библиотеки, подключите вот так:
Lua:
require('RakBotAddon').debug = true

Ваши идеи/предложения можете писать в этой теме, возможно в библиотеку будут добавляться новые функции.

Скачать актуальную версию RakBotAddon вы можете по данной
ссылке
 

Вложения

  • RakBotAddon.lua
    7.9 KB · Просмотры: 389
Последнее редактирование:

madrasso

Потрачен
883
325
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Описание:

RakBotAddon - это библиотека, которая исправляет некоторые баги функций RakBot и добавляет свои функции.
Текущая версия: 1.02

Изменения в библиотеке:

1.01: Исправлен краш RakBot при попытке ввести % в printLog (спс @fr1t.)
1.02: Исправлен баг неработы sendPickup (забыл переименовать переменную)

Исправлено:

printLog
- теперь он принимает неограниченное количество аргументов, как print, и не вылетает, если передать ему число.
sendPickup - в RakBot эта функция телепортирует вас на пикап и стоит там, в библиотеке происходит обычная эмуляция поднятия пикапа.
getRakBotPath - в версии 0.8.1 путь ракбота получается без \ на конце, это исправлено.

Функции:

getAllVehicles()
- возвращает массив, где индекс - это айди автомобиля. Структура:
Lua:
-- vehData - это уже полученный массив с информацией о автомобиле, который находится внутри массива getAllVehicles()
vehData.vehId
vehData.modelId
vehData.position = { x, y, z }
vehData.angle
vehData.color1
vehData.color2
vehData.health
vehData.interior
vehData.doorDamageStatus
vehData.panelDamageStatus
vehData.lightDamageStatus
vehData.tireDamageStatus
vehData.addsiren
vehData.modslot0
vehData.modslot1
vehData.modslot2
vehData.modslot3
vehData.modslot4
vehData.modslot5
vehData.modslot6
vehData.modslot7
vehData.modslot8
vehData.modslot9
vehData.modslot10
vehData.modslot11
vehData.modslot12
vehData.modslot13
vehData.paintJob
vehData.bodyColor1
vehData.bodyColor2
getAllChars() - возвращает массив игроков в зоне стрима, где индекс - айди игрока. Структура:
Lua:
-- charData - это уже полученный массив с информацией о игроке, который находится внутри массива getAllChars()
charData.playerId
charData.team
charData.model
charData.position = { x, y, z }
charData.rotation
charData.color
charData.fightingStyle
getAllPickups() - возвращает массив пикапов в зоне стрима, где индекс - айди пикапа. Структура:
Lua:
-- pickupData - это уже полученный массив с информацией о пикапе, который находится внутри массива getAllPickups()
pickupData.pickupId
pickupData.modelId
pickupData.pickupType
pickupData.position = { x, y, z }
Примечание - длину массивов, которую отдают функции выше нельзя узнать через #array

sampGetPlayerNickname(playerId)
- получить никнейм игрока через его айди

getDistanceBetweenCoords3d(x, y, z, x1, y1, z1) - получить дистанцию между координатами (как в MoonLoader)

setWindowName(windowName) - установить название окну (спасибо @randazzo за сниппет)

В будущем:

Добавить функцию getAllObjects() [p.s кто может помочь с написанием этой функции для ракбот напишите в лс]

Особенности:

Вы можете использовать onRecvRpc и onRecvPacket в вашем скрипте без проблем, хотя эти функции также используются в моей библиотеке. Это сделано через метатаблицу _G, спасибо, что натолкнул на идею @whyrinki

Если какая-то другая библиотека решит использовать метатаблицу, скрипт скопирует ее свойства и перенесет в свою метатаблицу, чтобы метатаблица не пересоздавалась (всегда подключайте RakBotAddon последним из всех библиотек)

Установка:


Переместить файл RakBotAddon.lua в "Папка RakBot"->scripts->libs

Подключение:

Прописать в вашем скрипте в начале:
Lua:
package.path = getRakBotPath().."/scripts/libs/?.lua;"..getRakBotPath().."/scripts/libs/?/init.lua;";
package.cpath = getRakBotPath().."/scripts/libs/?.dll";

Затем:
Lua:
require('RakBotAddon')

Или, если вы хотите в окне RakBot видеть отладочные сообщения библиотеки, подключите вот так:
Lua:
require('RakBotAddon').debug = true

Ваши идеи/предложения можете писать в этой теме, возможно в библиотеку будут добавляться новые функции.
setWindowName не сработает, в случае, если окно будет не активно

И по-моему GetActiveWindow не хотела у меня в ракботе работать, возвращало 0
 
  • Нравится
Реакции: kizn

yung milonov

Известный
1,005
511
А можно использовать RakCloud и радоваться жизни 🙂
1630908311209.jpg
 

Fluffy1560

Активный
278
34
Хелп,я туп, как вытащить пикапы из массива или найти пикап по модели?
 

#kweeZ

Известный
577
123
Хелп,я туп, как вытащить пикапы из массива или найти пикап по модели?
Но лучше ещё сравнивай по координатам, так как вокруг может быть много одинаковых моделей
Lua:
function onRecvRpc(id, data, size)
  if id == 95 then
    local bs = bitStreamInit(data, size)
    local pickupID = bitStreamReadDWord(bs)
    local pickupMODEL = bitStreamReadDWord(bs)
    local pickupTYPE = bitStreamReadDWord(bs)
    local pickupX = bitStreamReadFloat(bs)
    local pickupY = bitStreamReadFloat(bs)
    local pickupZ = bitStreamReadFloat(bs)
    bitStreamDelete(bs)
    if pickupMODEL == 1111 then
    -- your core
    end
  end
end
 
  • Нравится
Реакции: Ivkide и Fluffy1560

Fluffy1560

Активный
278
34
Но лучше ещё сравнивай по координатам, так как вокруг может быть много одинаковых моделей
Lua:
function onRecvRpc(id, data, size)
  if id == 95 then
    local bs = bitStreamInit(data, size)
    local pickupID = bitStreamReadDWord(bs)
    local pickupMODEL = bitStreamReadDWord(bs)
    local pickupTYPE = bitStreamReadDWord(bs)
    local pickupX = bitStreamReadFloat(bs)
    local pickupY = bitStreamReadFloat(bs)
    local pickupZ = bitStreamReadFloat(bs)
    bitStreamDelete(bs)
    if pickupMODEL == 1111 then
    -- your core
    end
  end
end
Пасиба большое, у меня вопрос появился, я правильно код понимаю
Функция начинает перехват пакетов и ждёт пока придёт пакет с определённым ид
После сохраняет его данные и размер в локальную переменную и дальше идёт расшифровка?
Вопрос ток зачем в конце его удалять?
 

Fluffy1560

Активный
278
34
При попытке взять второй пикап
Lua:
[12:05:23] [ERROR] stack traceback:
[12:05:23] [ERROR]     [C]: in function 'bitStreamWriteDWord'
[12:05:23] [ERROR]     D:\RakBot Crack 0.8.2.1\/scripts/libs/RakBotAddon.lua:220: in function 'sendPickup'
[12:05:23] [ERROR]     D:\RakBot Crack 0.8.2.1\scripts\tph.lua:50: in function <D:\RakBot Crack 0.8.2.1\scripts\tph.lua:47>
 

kizn

\ 0 _ 0 /
Автор темы
Всефорумный модератор
2,408
2,090
При попытке взять второй пикап
Lua:
[12:05:23] [ERROR] stack traceback:
[12:05:23] [ERROR]     [C]: in function 'bitStreamWriteDWord'
[12:05:23] [ERROR]     D:\RakBot Crack 0.8.2.1\/scripts/libs/RakBotAddon.lua:220: in function 'sendPickup'
[12:05:23] [ERROR]     D:\RakBot Crack 0.8.2.1\scripts\tph.lua:50: in function <D:\RakBot Crack 0.8.2.1\scripts\tph.lua:47>
код свой покажи
 

#kweeZ

Известный
577
123
При попытке взять второй пикап
Lua:
[12:05:23] [ERROR] stack traceback:
[12:05:23] [ERROR]     [C]: in function 'bitStreamWriteDWord'
[12:05:23] [ERROR]     D:\RakBot Crack 0.8.2.1\/scripts/libs/RakBotAddon.lua:220: in function 'sendPickup'
[12:05:23] [ERROR]     D:\RakBot Crack 0.8.2.1\scripts\tph.lua:50: in function <D:\RakBot Crack 0.8.2.1\scripts\tph.lua:47>
Юзай обычную функцию с ракбота тогда, только чекай координаты под ним
 

Fluffy1560

Активный
278
34
код свой покажи
Lua:
package.path = getRakBotPath().."/scripts/libs/?.lua;"..getRakBotPath().."/scripts/libs/?/init.lua;";
package.cpath = getRakBotPath().."/scripts/libs/?.dll";
require('RakBotAddon')
function onRecvRpc(id, data, size)
if id == 95 then
local bs = bitStreamInit(data, size)
pickupID = bitStreamReadDWord(bs)
pickupMODEL = bitStreamReadDWord(bs)
local pickupTYPE = bitStreamReadDWord(bs)
local pickupX = bitStreamReadFloat(bs)
local pickupY = bitStreamReadFloat(bs)
local pickupZ = bitStreamReadFloat(bs)
bitStreamDelete(bs)
if pickupMODEL == 1275 then
  pic1275 = pickupID
  printLog("id"..pickupID)
 end
 if pickupMODEL == 1318 then
  pic1318 = pickupID
  printLog("gfind"..pic1318)
end
end
end


 xm = -1892,67
 ym = -1678,37
px = -1968,26
 py = -1555,36
 pz = 7,48
 dx = -1891,57
dy = -1683,07
dz = -5,32
 function onRunCommand(cmd)
  defCallAdd(100, false, function ()
    if cmd == "!tph" then
    coordMasterStart(-1891, -1677, 23)
    end
end)

function onCoordMasterComplete()
  if 1 == 1 then
  sendPickup(pic1275)
  end
end
botid = getBotId()
function onSetSkin(playerId, skinId)
  if (playerId == botid) and (skinId == 16) then
  printLog("idp"..playerId)
  sendPickup(pic1317)
  end
end
end
 

kizn

\ 0 _ 0 /
Автор темы
Всефорумный модератор
2,408
2,090
Lua:
package.path = getRakBotPath().."/scripts/libs/?.lua;"..getRakBotPath().."/scripts/libs/?/init.lua;";
package.cpath = getRakBotPath().."/scripts/libs/?.dll";
require('RakBotAddon')
function onRecvRpc(id, data, size)
if id == 95 then
local bs = bitStreamInit(data, size)
pickupID = bitStreamReadDWord(bs)
pickupMODEL = bitStreamReadDWord(bs)
local pickupTYPE = bitStreamReadDWord(bs)
local pickupX = bitStreamReadFloat(bs)
local pickupY = bitStreamReadFloat(bs)
local pickupZ = bitStreamReadFloat(bs)
bitStreamDelete(bs)
if pickupMODEL == 1275 then
  pic1275 = pickupID
  printLog("id"..pickupID)
end
if pickupMODEL == 1318 then
  pic1318 = pickupID
  printLog("gfind"..pic1318)
end
end
end


xm = -1892,67
ym = -1678,37
px = -1968,26
py = -1555,36
pz = 7,48
dx = -1891,57
dy = -1683,07
dz = -5,32
function onRunCommand(cmd)
  defCallAdd(100, false, function ()
    if cmd == "!tph" then
    coordMasterStart(-1891, -1677, 23)
    end
end)

function onCoordMasterComplete()
  if 1 == 1 then
  sendPickup(pic1275)
  end
end
botid = getBotId()
function onSetSkin(playerId, skinId)
  if (playerId == botid) and (skinId == 16) then
  printLog("idp"..playerId)
  sendPickup(pic1317)
  end
end
end
у тебя переменная pic1317 даже не определена. внимательнее смотри, а чтобы внимательнее смотреть соблюдай табуляцию.
код обновлю, сделаю проверку на число
 
Статус
В этой теме нельзя размещать новые ответы.