Lua Бот на лесопилку Diamond RP [upd: 25/03/20]

Receiver

🥩 Передай meat, всё в скип, я в темпе
Автор темы
Проверенный
597
819
Версия SA-MP
  1. 0.3.7 (R1)
———————————————————————— ОПИСАНИЕ ————————————————————————
Добрый вечер, я диспетчер! Вам не нужен секс на вечер?
Это бот на лесопилку Diamond RP. Активация: //leso в чат. Можно задать лимит кругов.
Провернуть можно это так: //leso [кол-во кругов]. Он не обходит игроков, он не отвечает
на капчу и не оповещает о слапе или ответе администратора. Зато работает 💪 🤪, а
ещё у него открытый исходный код и вы можете свободно его модифицировать.

Зависимости: SAMP.Lua и ImGUI.
———————————————————————— Летсплей ————————————————————————
——————————————————————————————————————————————————————
  • Прикрутил ImGUI интерфейс и окно с информацией тоже перенёс на него. (Интерфейс был деликатно спизжен у MDX-SCRIPTS)
  • Добавил работу в свёрнутом режиме и возможность обнуления статистики
  • Сделан более плавный поворот персонажа
  • Если вы сломаете тележку или дерево к которому подошёл бот уже срубили, то он пойдёт искать другое, а не будет стоять на месте, как это было прежде.
  • В интерфейсе добавлены настроечки "Бег до дерева", "Рандомные прыжки", теперь не придётся лезть в код, чтобы их включить.
  • Исправил баг с запинанием бота при подходе к точке разгрузки
 

Вложения

  • sawmill bot.lua
    5.3 KB · Просмотры: 1,484
  • Sawmill-Bot v2.rar
    11.4 KB · Просмотры: 3,170
Последнее редактирование:

Joni Scripts

Известный
535
374
Сам бот сделан неплохо 😀
Но как будет выглядеть поворот после сдачи дерева у людей?
 

T1cKz

Известный
596
246
Сам бот сделан неплохо 😀
Но как будет выглядеть поворот после сдачи дерева у людей?
Резкий очень будет. палевно.

Мб попробуй с моей функцией?
local jumpThr
function runTo(x, y, z, runKey, xcam, plusChange)
repeat
local pX, pY, pZ = getCharCoordinates(playerPed)
local gg = fix(representIntAsFloat(readMemory(0xB6F258, 4, false)))
local wp = fix(representIntAsFloat(readMemory(0xB6F248, 4, false)))
local gg = gg + math.pi
local nad = GetAngleBeetweenTwoPoints(x,y)
local test = GetAngleBeetweenTwoPoints(x,y) - gg - math.pi
local dist = getDistanceBetweenCoords3d(x,y,z, pX, pY, pZ)

if plusChange == nil then plusChange = 0.0 end
local ot = 1.5
local waitTime = representIntAsFloat(readMemory(0xB7CB5C, 4, false))/42
wait(waitTime)
if runKey ~= nil then
setGameKeyState(1, -128)
else
setGameKeyState(1, -128)
end
if runKey == 1 then
setGameKeyState(16, 255)
elseif runKey == 2 then
setGameKeyState(21, 255)
elseif runKey == 3 then
if dist >= 5.4 then
if jumpThr == nil then
local x = math.random(1, 100000)
if x >= 94000 then
jumpThr = lua_thread.create(function()
wait(200)
setGameKeyState(14, 255) -- its not jump
jumpThr = nil
end)
end
end
end
elseif runKey == 4 then
setGameKeyState(17, 255)
end
local changeFloat = 0.04 --DEFAULT 0.04
if runKey == 1 then
if dist > 5.0 then changeFloat = 0.08 +plusChange
elseif dist > 3.0 then changeFloat = 0.1 +plusChange
elseif dist > 1.8 then changeFloat = 0.04 + plusChange
end
elseif runKey == 0 then
if dist > 5.0 then changeFloat = 0.08 + plusChange
elseif dist > 3.0 then changeFloat = 0.12 + plusChange
elseif dist > 1.8 then changeFloat = 0.14 +plusChange
end
elseif runKey == 3 then
if dist > 5.0 then changeFloat = 0.08 + plusChange
elseif dist > 3.0 then changeFloat = 0.12 + plusChange
elseif dist > 1.8 then changeFloat = 0.14 +plusChange
end
end
if dist > 1.8 then
if test > -0.1 and test < 0.03 then setCameraPositionUnfixed(xcam, GetAngleBeetweenTwoPoints(x,y))
elseif test < -5.7 and test > -5.93 then setCameraPositionUnfixed(xcam, GetAngleBeetweenTwoPoints(x,y))
elseif test < -6.0 and test > -6.4 then setCameraPositionUnfixed(xcam, GetAngleBeetweenTwoPoints(x,y))
elseif test > 0.04 then setCameraPositionUnfixed(xcam, fix(representIntAsFloat(readMemory(0xB6F258, 4, false)))+changeFloat)
elseif test < -3.5 and test > -5.67 then setCameraPositionUnfixed(xcam, fix(representIntAsFloat(readMemory(0xB6F258, 4, false)))+changeFloat)
else setCameraPositionUnfixed(xcam, fix(representIntAsFloat(readMemory(0xB6F258, 4, false)))-changeFloat)
end
else
setCameraPositionUnfixed(wp, GetAngleBeetweenTwoPoints(x,y))
end
until dist < ot
end

function GetAngleBeetweenTwoPoints(x2,y2)
local x1, y1, z1 = getCharCoordinates(playerPed)
local plus = 0.0
local mode = 1
if x1 < x2 and y1 > y2 then plus = math.pi/2; mode = 2; end
if x1 < x2 and y1 < y2 then plus = math.pi; end
if x1 > x2 and y1 < y2 then plus = math.pi*1.5; mode = 2; end
local lx = x2 - x1
local ly = y2 - y1
lx = math.abs(lx)
ly = math.abs(ly)
if mode == 1 then ly = ly/lx;
else ly = lx/ly; end
ly = math.atan(ly)
ly = ly + plus
return ly
end

function GetXAngle(startDist, dist, startXAngle, x,y,z)
local x1, y1, z1 = getCharCoordinates(playerPed)
local xAngle
if mnum(z) > mnum(z1) then
xAngle = 2
elseif -68 >= z and dist > 2.8 and z1 <= -67.0 then
xAngle = 0
else
local interest = (dist*100)/startDist
if interest == 0 then
interest = 100
end
if interest > 65 then
xAngle = 2*(100-interest)/100-2
else
xAngle = 2*interest/100-2
end
end
return xAngle
end


function mnum(number)
return (number - (number % 0.1))+0.1
end

function fix(angle) -- фикс, не помню у кого спиздил
while angle > math.pi do
angle = angle - (math.pi*2)
end
while angle < -math.pi do
angle = angle + (math.pi*2)
end
return angle
end
 
  • Нравится
Реакции: _raz0r

Receiver

🥩 Передай meat, всё в скип, я в темпе
Автор темы
Проверенный
597
819
Резкий очень будет. палевно.

Мб попробуй с моей функцией?
local jumpThr
function runTo(x, y, z, runKey, xcam, plusChange)
repeat
local pX, pY, pZ = getCharCoordinates(playerPed)
local gg = fix(representIntAsFloat(readMemory(0xB6F258, 4, false)))
local wp = fix(representIntAsFloat(readMemory(0xB6F248, 4, false)))
local gg = gg + math.pi
local nad = GetAngleBeetweenTwoPoints(x,y)
local test = GetAngleBeetweenTwoPoints(x,y) - gg - math.pi
local dist = getDistanceBetweenCoords3d(x,y,z, pX, pY, pZ)

if plusChange == nil then plusChange = 0.0 end
local ot = 1.5
local waitTime = representIntAsFloat(readMemory(0xB7CB5C, 4, false))/42
wait(waitTime)
if runKey ~= nil then
setGameKeyState(1, -128)
else
setGameKeyState(1, -128)
end
if runKey == 1 then
setGameKeyState(16, 255)
elseif runKey == 2 then
setGameKeyState(21, 255)
elseif runKey == 3 then
if dist >= 5.4 then
if jumpThr == nil then
local x = math.random(1, 100000)
if x >= 94000 then
jumpThr = lua_thread.create(function()
wait(200)
setGameKeyState(14, 255) -- its not jump
jumpThr = nil
end)
end
end
end
elseif runKey == 4 then
setGameKeyState(17, 255)
end
local changeFloat = 0.04 --DEFAULT 0.04
if runKey == 1 then
if dist > 5.0 then changeFloat = 0.08 +plusChange
elseif dist > 3.0 then changeFloat = 0.1 +plusChange
elseif dist > 1.8 then changeFloat = 0.04 + plusChange
end
elseif runKey == 0 then
if dist > 5.0 then changeFloat = 0.08 + plusChange
elseif dist > 3.0 then changeFloat = 0.12 + plusChange
elseif dist > 1.8 then changeFloat = 0.14 +plusChange
end
elseif runKey == 3 then
if dist > 5.0 then changeFloat = 0.08 + plusChange
elseif dist > 3.0 then changeFloat = 0.12 + plusChange
elseif dist > 1.8 then changeFloat = 0.14 +plusChange
end
end
if dist > 1.8 then
if test > -0.1 and test < 0.03 then setCameraPositionUnfixed(xcam, GetAngleBeetweenTwoPoints(x,y))
elseif test < -5.7 and test > -5.93 then setCameraPositionUnfixed(xcam, GetAngleBeetweenTwoPoints(x,y))
elseif test < -6.0 and test > -6.4 then setCameraPositionUnfixed(xcam, GetAngleBeetweenTwoPoints(x,y))
elseif test > 0.04 then setCameraPositionUnfixed(xcam, fix(representIntAsFloat(readMemory(0xB6F258, 4, false)))+changeFloat)
elseif test < -3.5 and test > -5.67 then setCameraPositionUnfixed(xcam, fix(representIntAsFloat(readMemory(0xB6F258, 4, false)))+changeFloat)
else setCameraPositionUnfixed(xcam, fix(representIntAsFloat(readMemory(0xB6F258, 4, false)))-changeFloat)
end
else
setCameraPositionUnfixed(wp, GetAngleBeetweenTwoPoints(x,y))
end
until dist < ot
end

function GetAngleBeetweenTwoPoints(x2,y2)
local x1, y1, z1 = getCharCoordinates(playerPed)
local plus = 0.0
local mode = 1
if x1 < x2 and y1 > y2 then plus = math.pi/2; mode = 2; end
if x1 < x2 and y1 < y2 then plus = math.pi; end
if x1 > x2 and y1 < y2 then plus = math.pi*1.5; mode = 2; end
local lx = x2 - x1
local ly = y2 - y1
lx = math.abs(lx)
ly = math.abs(ly)
if mode == 1 then ly = ly/lx;
else ly = lx/ly; end
ly = math.atan(ly)
ly = ly + plus
return ly
end

function GetXAngle(startDist, dist, startXAngle, x,y,z)
local x1, y1, z1 = getCharCoordinates(playerPed)
local xAngle
if mnum(z) > mnum(z1) then
xAngle = 2
elseif -68 >= z and dist > 2.8 and z1 <= -67.0 then
xAngle = 0
else
local interest = (dist*100)/startDist
if interest == 0 then
interest = 100
end
if interest > 65 then
xAngle = 2*(100-interest)/100-2
else
xAngle = 2*interest/100-2
end
end
return xAngle
end


function mnum(number)
return (number - (number % 0.1))+0.1
end

function fix(angle) -- фикс, не помню у кого спиздил
while angle > math.pi do
angle = angle - (math.pi*2)
end
while angle < -math.pi do
angle = angle + (math.pi*2)
end
return angle
end
Ты шо, зачем такие громадные функции. Просто замени поворот персонажа на поворот камеры. Я это пофикшу в след. обновлении
 

Joni Scripts

Известный
535
374
Ты шо, зачем такие громадные функции. Просто замени поворот персонажа на поворот камеры. Я это пофикшу в след. обновлении
Просто бег от @T1cKz более приятнее выглядеть и у персонажа не будет "скольжения" от лица других игроков
 

T1cKz

Известный
596
246
Ты шо, зачем такие громадные функции. Просто замени поворот персонажа на поворот камеры. Я это пофикшу в след. обновлении
Эта функция ещё требует доработки, но бег через неё очень даже неплохой. В ней уже есть рандом прыжки, и прочие функции по типу "Бежать и бить" и тд.
 

maxirose

Известный
3
0
Ребят, а можно часть кода, которая отвечает за автоклик по текстдравам?
 

paulohardy

вы еще постите говно? тогда я иду к вам
Всефорумный модератор
1,891
1,254
Чел, я бы с большим удовольствием это сделал и не задавал глупый вопрос, если бы хоть что-то там понимал
1585415586796.png
 
  • Нравится
Реакции: Receiver

Ricola

Новичок
2
0
Sawmill Bot: D:\GTA \moonloader\sawmill bot.lua:7: module 'imgui' not found:
no field package.preload['imgui']
Как решить такую проблему?