Помогите улучшить бот

bereg101

Участник
Автор темы
55
0
Версия MoonLoader
Другое
Всем привет. Помогите, пишу бота для сервера, суть бота простая: подбежать к точке, нажать кнопочку, подождать 10 сек, сбегать к чекпойнту и обратно.

Проблема в том, что админы постоянно проверяют бот ли ты или нет, сейчас они придумали ставить машину перед игроком и если игрок продолжает бежать вперед, через машину, то значит он бот.


Код бега максимально простой. Когда персонаж врезается в машину, то он продолжает бежать, но на месте. Что можно с этим сделать?
Код бега:
function BeginToPoint(x, y, z, radius, move_code, isSprint)
    if enabled ~= false then
        repeat
            local posX, posY, posZ = GetCoordinates()
            SetAngle(x, y, z)
            MovePlayer(move_code, isSprint)
            local dist = getDistanceBetweenCoords3d(x, y, z, posX, posY, z)
            last_dist = dist

            if dist > 50 then
                enabled = false
            end
            wait(0)
        until not enabled or dist < radius
    end
end


function MovePlayer(move_code, isSprint)
    setGameKeyState(1, move_code)
    --[[255 - обычный бег назад
       -255 - обычный бег вперед
      65535 - идти шагом вперед
     -65535 - идти шагом назад]]
    if isSprint then setGameKeyState(16, 255) end
end


function SetAngle(x, y, z)
    local posX, posY, posZ = GetCoordinates()
    local pX = x - posX
    local pY = y - posY
    local zAngle = getHeadingFromVector2d(pX, pY)

    if isCharInAnyCar(playerPed) then
        local car = storeCarCharIsInNoSave(playerPed)
        setCarHeading(car, zAngle)
    else
        setCharHeading(playerPed, zAngle)
    end

    restoreCameraJumpcut()
end
 

Rice.

Известный
Модератор
1,756
1,622
Немного костылей в студию:
Функция:
function TouchingCar(dist) -- dist - дистанция между машиной и персонажем
    for k, v in pairs(getAllVehicles()) do
        local mx, my, mz = getCharCoordinates(PLAYER_PED)
        local cx, cy, cz = getCarCoordinates(v)
        local Distance = getDistanceBetweenCoords3d(mx, my, mz, cx, cy, cz)
        if Distance <= dist and isCarOnScreen(v) then
            return true
        end
    end
    return false
end
Пример:
if enabled and TouchingCar(3) then -- Если включена функция + рядом с персонажем будет машина (дистанция = 3), то
    enabled = false -- Бот будет выключаться
end
UPD: Либо просто можешь морозить персонажа:
Lua:
if enabled and TouchingCar(3) then
    freezeCharPosition(PLAYER_PED, true)
else
    freezeCharPosition(PLAYER_PED, false)
end
 
  • Нравится
Реакции: bereg101