Декомпиляция скриптов

FYP

Известный
Автор темы
Администратор
1,758
5,723
GVWUrNJ.png
eNo5cSj.png


Общая тема для просьб о помощи в декомпиляциии и декриптованиии скриптов, плагинов и приложений.
Запрещено просить о декомпиляции/декриптовании софта, выставленного на продажу на нашем сайте.

Рекомендации:
  1. Сначала воспользуйтесь поиском по теме и по форуму, возможно его в декомпилированном виде или с исходным кодом уже выкладывали у нас на сайте.
  2. Попытайтесь декомпилировать самостоятельно: CLEO - декриптор, декомпилятор; AHK - распаковщик .exe; LuaJIT - декомпилятор1, декомпилятор2.
  3. Просить о декомпиляции .asi, .sf, .dll, .exe почти бесполезно, часто такие просьбы остаются без ответа и вряд ли вам это что-то даст. Можете попробовать сами, IDA Pro или Ghidra к вашим услугам.
    • Это не касается .exe, которые являются скомпилированными AutoHotKey-скриптами (.ahk).
  4. Добавьте название скрипта к сообщению, если оно известно - это поможет другим пользователям найти его с помощью поиска.
  5. Сообщения по типу "спасибо, помог" по правилам форума считаются флудом и скорее всего будут удалены. Если вам помогли, вы можете нажать кнопку Мне нравится под ответом - это даст понять, что ответ верный.
 
Последнее редактирование:

Useful_User

Потрачен
66
27
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Декомпил нужен. С целью изучения функций и подобного.
 

Вложения

  • u4u lua, da.luac
    5.8 KB · Просмотры: 5

™ ChipFamily

По ту сторону надежды.
5,144
1,981
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Декомпил нужен. С целью изучения функций и подобного.
Lua:
slot0 = require("vector3d")

function _()
    return false
end

slot1 = 110
slot2 = 5
slot3 = false
slot5 = false
slot6 = renderCreateFont("Century Gothic", 13, 10)
slot7 = false
slot8 = -1
slot9 = 21
slot10 = 0
slot11, slot12 = getScreenResolution()

function getTargetBlipCoordinatesFixed()
    slot0, slot1, slot2, slot3 = getTargetBlipCoordinates()

    if not slot0 then
        return false
    end

    requestCollision(slot1, slot2)
    loadScene(slot1, slot2, slot3)

    slot8, slot9, slot10, slot11 = getTargetBlipCoordinates()

    return slot4, slot5, slot6, slot7
end

require("lib.samp.events").onSendPlayerSync = function (slot0)
    uv0 = math.sqrt(slot0.moveSpeed.x^2 + slot0.moveSpeed.y^2 + slot0.moveSpeed.z^2) * 140

    if uv1 then
        slot1.x = uv2 / 140
        slot1.y = 0
        slot1.z = -1
    end
end

function secundomer()
    print("1")

    while true do
        wait(0)

        if uv0 == 1 then
            wait(100)
            printString(0 + 0.1, 2000)
        elseif uv0 == 0 then
            slot0 = 0
        end
    end
end

function main()
    while not isSampAvailable() do
        wait(0)
    end

    sampRegisterChatCommand("poehali", sup)
    lua_thread.create(secundomer)

    while true do
        wait(0)

        while uv0 do
            wait(uv1)

            uv2 = 1
            isBlipExists, blipX, blipY, blipZ = getTargetBlipCoordinates()

            if isBlipExists then
                requestCollision(blipX, blipY)

                blipZ = getGroundZFor3dCoord(blipX, blipY, blipZ)
                blipZ = blipZ + 5.9855
            else
                sampAddChatMessage("ћетка на карте отсутствует", 6586937)

                uv0 = false

                freezeCharPositionAndDontLoadCollision(playerPed, false)
            end

            freezeCharPositionAndDontLoadCollision(playerPed, true)

            slot0, slot1, slot2 = GetCoordinates()
            vx = blipX - slot0
            vy = blipY - slot1
            vz = blipZ - slot2
            slot3 = uv3(vx, vy, vz)

            slot3:normalize()
            teleportPlayer(slot0 + slot3.x * uv4, slot1 + slot3.y * uv4, slot2 + slot3.z * uv4)

            slot11, slot12, slot13 = GetCoordinates()
            mamagdeya = getDistanceBetweenCoords3d(blipX, blipY, blipZ, slot4, slot5, slot6)

            if mamagdeya < uv4 then
                wait(uv1)
                teleportPlayer(blipX, blipY, blipZ)

                uv0 = false
                uv5 = false
                uv2 = 0

                freezeCharPositionAndDontLoadCollision(playerPed, false)
            end
        end
    end
end

function sup()
    uv0 = not uv0

    if uv0 then
        uv1 = 30

        print("21")
    end

    sampAddChatMessage("летим в пизду с помощью скрипта отча¤вшегос¤ скриптера", -1)

    isBlipExists, blipX, blipY, blipZ = getTargetBlipCoordinates()

    if isBlipExists then
        uv2 = true
    else
        sampAddChatMessage("ћетка на карте отсутствует", 6586937)
    end
end

function SetAngle(slot0, slot1, slot2)
    slot3, slot4, slot5 = GetCoordinates()

    if isCharInAnyCar(playerPed) then
        setCarHeading(storeCarCharIsInNoSave(playerPed), getHeadingFromVector2d(slot6, slot7))
    else
        setCharHeading(playerPed, slot8)
    end

    restoreCameraJumpcut()
end

function GetCoordinates()
    if isCharInAnyCar(playerPed) then
        return getCarCoordinates(storeCarCharIsInNoSave(playerPed))
    else
        return getOffsetFromCharInWorldCoords(playerPed, 0, 0, 0.2855)
    end
end

function teleportPlayer(slot0, slot1, slot2)
    if isCharInAnyCar(playerPed) then
        setCharCoordinates(playerPed, slot0, slot1, slot2)
    end

    setCharCoordinatesDontResetAnim(playerPed, slot0, slot1, slot2)
end

function setCharCoordinatesDontResetAnim(slot0, slot1, slot2, slot3)
    if doesCharExist(slot0) then
        setEntityCoordinates(getCharPointer(slot0), slot1, slot2, slot3)
    end
end

function setEntityCoordinates(slot0, slot1, slot2, slot3)
    if slot0 ~= 0 and readMemory(slot0 + 20, 4, false) ~= 0 then
        writeMemory(slot4 + 48 + 0, 4, representFloatAsInt(slot1), false)
        writeMemory(slot4 + 48 + 4, 4, representFloatAsInt(slot2), false)
        writeMemory(slot4 + 48 + 8, 4, representFloatAsInt(slot3), false)
    end
end
 

ToGoRo

Известный
80
6
Give Source Code.
 

Вложения

  • OP-HaX.cs
    106.2 KB · Просмотры: 4
Последнее редактирование:

™ ChipFamily

По ту сторону надежды.
5,144
1,981
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Lua:
script_name("mdx scripts | AUTO LOGIN")
script_author("madrasso")
script_description("auto login for diamond rp")
script_version("1.0")
script_properties("work-in-pause")

slot0 = require("lib.imgui")
slot3 = require("lib.encoding")
slot4 = {
    "Emerald",
    "Sapphire",
    "Onyx",
    "Amber",
    "Quartz",
    "Radiant",
    "Trilliant",
    "Crystal"
}
slot3.default = "CP1251"
u8 = slot3.UTF8
cp1251 = slot3.CP1251
slot6 = slot0.ImBool(false)
slot7 = slot0.ImBuffer("", 256)
slot8 = slot0.ImBool(require("inicfg").load({
    settings = {
        autolog = false
    },
    Emerald = {},
    Radiant = {},
    Trilliant = {},
    Crystal = {},
    Sapphire = {},
    Onyx = {},
    Amber = {},
    Quartz = {}
}, "[MDX] AUTO LOGIN").settings.autolog)

function main()
    script_settings()

    while not isSampfuncsLoaded() or not isSampLoaded() do
        wait(0)
    end

    while not isSampAvailable() do
        wait(0)
    end

    apply_style()
    sampRegisterChatCommand("alog", status)
    print(uv0.Emerald[nick])

    while true do
        wait(0)

        uv1.Process = uv2.v
    end
end

function status()
    slot0, slot3 = sampGetPlayerIdByCharHandle(PLAYER_PED)

    for slot6 = 1, #uv0, 1 do
        if sampGetCurrentServerName():find(uv0[slot6]) then
            if uv1[uv0[slot6]][sampGetPlayerNickname(slot1)] ~= nil then
                uv2.v = tostring(uv1[uv0[slot6]][sampGetPlayerNickname(slot1)])
            end

            break
        end
    end

    uv3.v = not uv3.v
end

require("lib.samp.events").onShowDialog = function (slot0, slot1, slot2, slot3, slot4, slot5)
    if slot5:find("Чтобы войти введите пароль") and uv0.v then
        slot6, slot9 = sampGetPlayerIdByCharHandle(PLAYER_PED)

        for slot12 = 1, #uv1, 1 do
            if sampGetCurrentServerName():find(uv1[slot12]) then
                if uv2[uv1[slot12]][sampGetPlayerNickname(slot7)] then
                    lua_thread.create(function ()
                        wait(50)
                        sampSetCurrentDialogEditboxText(uv0[uv1][uv2])
                        sampCloseCurrentDialogWithButton(1)
                    end)
                end
            end
        end
    end
end

function slot0.OnDrawFrame()
    if uv0.v then
        slot0, slot1 = getScreenResolution()
        slot2 = uv1.ImVec2(113, 0)

        uv1.SetNextWindowPos(uv1.ImVec2(slot0 / 2, slot1 / 2), uv1.Cond.FirstUseEver, uv1.ImVec2(0.5, 0.5))
        uv1.SetNextWindowSize(uv1.ImVec2(345, 135), uv1.Cond.FirstUseEver)
        uv1.Begin(u8("mdx scripts | autologin"), uv0, uv1.WindowFlags.NoResize)
        uv1.BeginChild("##autologin", uv1.ImVec2(315, 52), true)

        if uv1.Checkbox(u8("Статус##2"), uv2) then
            uv3.settings.autolog = uv2.v
        end

        uv1.SameLine()
        uv1.PushItemWidth(150)
        uv1.InputText(u8("Пароль"), uv4)
        uv1.PopItemWidth()
        uv1.EndChild()
        uv1.SetCursorPosX(50)

        if uv1.Button(u8("Сохранить"), slot2) then
            if uv4.v ~= "" and uv4.v ~= nil then
                slot3, slot6 = sampGetPlayerIdByCharHandle(PLAYER_PED)

                for slot9 = 1, 8, 1 do
                    if sampGetCurrentServerName():find(uv5[slot9]) then
                        uv3[uv5[slot9]][sampGetPlayerNickname(slot4)] = tostring(uv4.v)

                        sampAddChatMessage("[MDX]:    {FFFFFF}Аккаунт ' {" .. scr.settings.mainColor .. "}" .. sampGetPlayerNickname(slot4) .. "{FFFFFF} ' был успешно сохранён, пароль: '{" .. scr.settings.mainColor .. "}" .. tostring(u8:decode(uv4.v)) .. "{ffffff}'", scr.settings.mainColorX)
                        uv6.save(uv3, "[MDX] AUTO LOGIN")

                        break
                    end
                end
            else
                sampAddChatMessage("[MDX]:    {FFFFFF}Введите корректный пароль.", scr.settings.mainColorX)
            end
        end

        uv1.SameLine()

        if uv1.Button(u8("Удалить"), slot2) then
            slot3, slot6 = sampGetPlayerIdByCharHandle(PLAYER_PED)
            slot5 = sampGetPlayerNickname(slot4)

            for slot9 = 1, #uv5, 1 do
                if sampGetCurrentServerName():find(uv5[slot9]) then
                    if uv3[uv5[slot9]][slot5] then
                        uv3[slot10][slot5] = nil

                        sampAddChatMessage("[MDX]:    {FFFFFF}Аккаунт ' {" .. scr.settings.mainColor .. "}" .. slot5 .. "{FFFFFF} ' был успешно удалён", scr.settings.mainColorX)
                        uv6.save(uv3, "[MDX] AUTO LOGIN")

                        break
                    end

                    if uv3[slot10][slot5] == nil then
                        sampAddChatMessage("[MDX]:    {FFFFFF}Аккаунт ' {" .. scr.settings.mainColor .. "}" .. slot5 .. "{FFFFFF} ' не обнаружен.", scr.settings.mainColorX)
                    end

                    break
                end
            end
        end

        uv1.End()
    end
end

function script_settings()
    scr = {
        settings = {
            mainColorX = "0x4296fa",
            mainColor = "4296fa",
            imgui = {
                mainColor = uv0.ImVec4(0, 0.46, 0.65, 1)
            }
        }
    }
end

function apply_style()
    uv0.SwitchContext()

    slot0 = uv0.GetStyle()
    slot0.WindowPadding = slot4(15, 15)
    slot0.WindowRounding = 5
    slot0.FramePadding = slot4(5, 5)
    slot0.FrameRounding = 4
    slot0.ItemSpacing = slot4(12, 8)
    slot0.ItemInnerSpacing = slot4(8, 6)
    slot0.IndentSpacing = 25
    slot0.ScrollbarSize = 15
    slot0.ScrollbarRounding = 9
    slot0.GrabMinSize = 5
    slot0.GrabRounding = 3
    slot0.Colors[uv0.Col.Text] = slot3(1, 1, 1, 1)
    slot0.Colors[uv0.Col.TextDisabled] = slot3(0.5, 0.5, 0.5, 1)
    slot0.Colors[uv0.Col.WindowBg] = slot3(0.06, 0.06, 0.06, 0.94)
    slot0.Colors[uv0.Col.ChildWindowBg] = slot3(1, 1, 1, 0)
    slot0.Colors[uv0.Col.PopupBg] = slot3(0.08, 0.08, 0.08, 0.94)
    slot0.Colors[uv0.Col.ComboBg] = slot0.Colors[uv0.Col.PopupBg]
    slot0.Colors[uv0.Col.Border] = slot3(0.43, 0.43, 0.5, 0.5)
    slot0.Colors[uv0.Col.BorderShadow] = slot3(0, 0, 0, 0)
    slot0.Colors[uv0.Col.FrameBg] = slot3(0.16, 0.29, 0.48, 0.54)
    slot0.Colors[uv0.Col.FrameBgHovered] = slot3(0.26, 0.59, 0.98, 0.4)
    slot0.Colors[uv0.Col.FrameBgActive] = slot3(0.26, 0.59, 0.98, 0.67)
    slot0.Colors[uv0.Col.TitleBg] = slot3(0.04, 0.04, 0.04, 1)
    slot0.Colors[uv0.Col.TitleBgActive] = slot3(0.16, 0.29, 0.48, 1)
    slot0.Colors[uv0.Col.TitleBgCollapsed] = slot3(0, 0, 0, 0.51)
    slot0.Colors[uv0.Col.MenuBarBg] = slot3(0.14, 0.14, 0.14, 1)
    slot0.Colors[uv0.Col.ScrollbarBg] = slot3(0.02, 0.02, 0.02, 0.53)
    slot0.Colors[uv0.Col.ScrollbarGrab] = slot3(0.31, 0.31, 0.31, 1)
    slot0.Colors[uv0.Col.ScrollbarGrabHovered] = slot3(0.41, 0.41, 0.41, 1)
    slot0.Colors[uv0.Col.ScrollbarGrabActive] = slot3(0.51, 0.51, 0.51, 1)
    slot0.Colors[uv0.Col.CheckMark] = slot3(0.26, 0.59, 0.98, 1)
    slot0.Colors[uv0.Col.SliderGrab] = slot3(0.24, 0.52, 0.88, 1)
    slot0.Colors[uv0.Col.SliderGrabActive] = slot3(0.26, 0.59, 0.98, 1)
    slot0.Colors[uv0.Col.Button] = slot3(0.26, 0.59, 0.98, 0.4)
    slot0.Colors[uv0.Col.ButtonHovered] = slot3(0.26, 0.59, 0.98, 1)
    slot0.Colors[uv0.Col.ButtonActive] = slot3(0.06, 0.53, 0.98, 1)
    slot0.Colors[uv0.Col.Header] = slot3(0.26, 0.59, 0.98, 0.31)
    slot0.Colors[uv0.Col.HeaderHovered] = slot3(0.26, 0.59, 0.98, 0.8)
    slot0.Colors[uv0.Col.HeaderActive] = slot3(0.26, 0.59, 0.98, 1)
    slot0.Colors[uv0.Col.Separator] = slot0.Colors[uv0.Col.Border]
    slot0.Colors[uv0.Col.SeparatorHovered] = slot3(0.26, 0.59, 0.98, 0.78)
    slot0.Colors[uv0.Col.SeparatorActive] = slot3(0.26, 0.59, 0.98, 1)
    slot0.Colors[uv0.Col.ResizeGrip] = slot3(0.26, 0.59, 0.98, 0.25)
    slot0.Colors[uv0.Col.ResizeGripHovered] = slot3(0.26, 0.59, 0.98, 0.67)
    slot0.Colors[uv0.Col.ResizeGripActive] = slot3(0.26, 0.59, 0.98, 0.95)
    slot0.Colors[uv0.Col.CloseButton] = slot3(0.41, 0.41, 0.41, 0.5)
    slot0.Colors[uv0.Col.CloseButtonHovered] = slot3(0.98, 0.39, 0.36, 1)
    slot0.Colors[uv0.Col.CloseButtonActive] = slot3(0.98, 0.39, 0.36, 1)
    slot0.Colors[uv0.Col.PlotLines] = slot3(0.61, 0.61, 0.61, 1)
    slot0.Colors[uv0.Col.PlotLinesHovered] = slot3(1, 0.43, 0.35, 1)
    slot0.Colors[uv0.Col.PlotHistogram] = slot3(0.9, 0.7, 0, 1)
    slot0.Colors[uv0.Col.PlotHistogramHovered] = slot3(1, 0.6, 0, 1)
    slot0.Colors[uv0.Col.TextSelectedBg] = slot3(0.26, 0.59, 0.98, 0.35)
    slot0.Colors[uv0.Col.ModalWindowDarkening] = slot3(0.8, 0.8, 0.8, 0.35)
end
 

Useful_User

Потрачен
66
27
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
@™ ChipFamily

Хотел бы сурс для изучения, буду благодарен.
 

Вложения

  • PizzaBot.luac
    9.4 KB · Просмотры: 5

™ ChipFamily

По ту сторону надежды.
5,144
1,981
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
@™ ChipFamily

Хотел бы сурс для изучения, буду благодарен.
Lua:
script_name("PizzaBot")
script_authors("by_k0lenval")
script_version("0.2b")
script_dependencies()

slot0 = require("vkeys")
slot1 = require("memory")
slot2 = require("lib.samp.events")
slot3, slot4, slot5, slot6, slot7 = nil

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then
        return
    end

    while not isSampAvailable() do
        wait(0)
    end

    sampAddChatMessage(string.format("{00AAFF}%s {FFFF00}успешно загружен. Команда активации - {FF4400}/pizb", thisScript().name), 16776960)
    sampRegisterChatCommand("pizb", cmd_bot)

    while true do
        wait(0)

        if uv0 and isPlayerPlaying(playerHandle) and sampGetPlayerIdByCharHandle(PLAYER_PED) then
            if uv1 == -1 then
                if isCharInAnyCar(PLAYER_PED) == false then
                    BeginToPoint(1751, 2216, 10.84, 0.6, true, false, true, false)

                    uv2 = 0
                else
                    setGameKeyState(15, 255)
                    wait(200)
                end
            end

            if uv1 == 0 and uv2 ~= 0 and isCharInAnyCar(PLAYER_PED) then
                uv1 = InCarGo(uv2, uv1)
            end

            if uv1 == 1 and isCharInAnyCar(PLAYER_PED) == false then
                slot0 = 0
                slot1 = 0
                slot2 = 0

                if uv2 == 2030 then
                    slot2 = 10.35
                    slot1 = 987.18
                    slot0 = 2031.56
                end

                if uv2 == 2600 then
                    slot2 = 10.35
                    slot1 = 1058.92
                    slot0 = 2599.83
                end

                if uv2 == 2320 then
                    slot2 = 10.35
                    slot1 = 2420.32
                    slot0 = 2326.42
                end

                if uv2 == 2345 then
                    slot2 = 10.35
                    slot1 = 2406.56
                    slot0 = 2350.04
                end

                if uv2 == 2534 then
                    slot2 = 10.82
                    slot1 = 2135.69
                    slot0 = 2536.94
                end

                if uv2 == -53 then
                    slot2 = 18.9
                    slot1 = 1207.61
                    slot0 = -61.68
                end

                if uv2 == -85 then
                    slot2 = 3.12
                    slot1 = 102.05
                    slot0 = -86.58
                end

                if uv2 == -86 then
                    slot2 = 1.43
                    slot1 = -311.71
                    slot0 = -103.62
                end

                if slot0 ~= 0 then
                    BeginToPoint(slot0, slot1, slot2, 0.8, true, false, false, true)
                end
            end

            if uv1 == 2 and isCharInAnyCar(PLAYER_PED) then
                uv1 = InCarGo(uv2, uv1)
            end
        end
    end
end

function InCarGo(slot0, slot1)
    slot3 = {}

    if io.open("moonloader\\PathPizBot\\" .. slot0 .. ".txt", "r+") == nil then
        return slot1
    end

    if slot2 then
        for slot7 in slot2:lines() do
            table.insert(slot3, slot7)
        end
    end

    if slot1 == 2 then
        slot3 = ReverseTable(slot3)
    end

    if slot3 then
        for slot7, slot8 in pairs(slot3) do
            uv0 = storeCarCharIsInNoSave(PLAYER_PED)
            slot10 = os.time()

            if uv1 == false then
                break
            end

            slot11, slot12, slot13, slot14 = slot8:match("{(.*)}:{(.*)}:{(.*)}:{(.*)}")
        end

        if slot1 == 2 then
            slot1 = -1
        elseif slot1 == 0 then
            slot1 = 1
        end
    end

    return slot1
end

function EnterCarExist()
    while true do
        wait(0)

        if uv0 and isCharInAnyCar(PLAYER_PED) == false and (uv1 == 0 or uv1 == 2) then
            wait(100)

            BoolFind, Car, Lock = FuncFindCar(uv2)

            if BoolFind then
                slot4, slot5, slot6 = getCarCoordinates(Car)

                BeginToPoint(slot0, slot1, slot2, 2, true, true, false, false, Lock)
            else
                print("Не найден байк")
            end

            if isCharInAnyCar(PLAYER_PED) and doesVehicleExist(Car) and getCarDoorLockStatus(Car) == 0 then
                wait(1000)
                sampSendChat("/jlock")
                setCharCanBeKnockedOffBike(PLAYER_PED, true)
            end
        end
    end
end

function ReverseTable(slot0)
    slot1 = {
        [#slot0 + 1 - slot6] = slot7
    }

    for slot6, slot7 in ipairs(slot0) do
    end

    return slot1
end

function turning_mechanism(slot0, slot1, slot2, slot3, slot4)
    if getHeadingFromVector2d(math.deg(math.sin(slot5)), math.deg(math.cos(math.rad(getHeadingFromVector2d(slot0 - slot2, slot1 - slot3) + math.abs(getCarHeading(slot4) - 360))))) > 180 and slot6 < 355 then
        setGameKeyState(0, -128)
    elseif slot6 > 5 and slot6 <= 180 then
        setGameKeyState(0, 128)
    else
        setGameKeyState(0, 0)
    end
end

function press_gas()
    writeMemory(12006520, 1, 255, false)
end

function press_brake()
    writeMemory(12006500, 1, 255, false)
end

function FuncFindCar(slot0)
    slot3 = false
    slot4 = 0
    slot5 = false

    for slot9, slot10 in pairs(slot1) do
        if doesVehicleExist(slot10) and getNameOfVehicleModel(getCarModel(slot10)) == "PIZZABO" and getDriverOfCar(slot10) == -1 and getCarDoorLockStatus(slot10) == 0 or doesVehicleExist(slot10) and getNameOfVehicleModel(getCarModel(slot10)) == "PIZZABO" and getDriverOfCar(slot10) == -1 and slot0 == slot10 then
            slot18, slot19, slot20 = getCharCoordinates(PLAYER_PED)
            slot21, slot22, slot23 = getCarCoordinates(slot10)

            if ({})[1] == nil then
                slot2 = {
                    slot10,
                    getDistanceBetweenCoords3d(slot11, slot12, slot13, slot14, slot15, slot16)
                }
            elseif slot17 < slot2[2] then
                slot2 = {
                    slot10,
                    slot17
                }
            end
        end
    end

    if slot2[1] ~= nil and slot2[2] < 80 then
        if slot0 == slot2[1] then
            slot5 = true
        end

        slot3 = true
    end

    return slot3, slot2[1], slot5
end

function BeginToPoint(slot0, slot1, slot2, slot3, slot4, slot5, slot6, slot7, slot8)
    slot9 = os.time()
    slot10, slot11, slot19 = getCharCoordinates(PLAYER_PED)
    slot13 = getDistanceBetweenCoords3d(slot0, slot1, slot2, slot10, slot11, slot12)
    slot15 = math.ceil(getHeadingFromVector2d(slot0 - slot10, slot1 - slot11))

    for slot22 = 0, 180, 1 do
        slot18 = 0 + 1
        slot17 = math.ceil(getCharHeading(PLAYER_PED)) - 1

        if math.ceil(getCharHeading(PLAYER_PED)) + 1 > 360 then
            slot16 = 0
        end

        if slot17 < 0 then
            slot17 = 360
        end

        if slot16 == slot15 or slot17 == slot15 then
            break
        end
    end

    if slot16 == slot15 then
        for slot22 = 0, slot18, math.random(3, 5) do
            if slot7 and slot3 < slot13 then
                setGameKeyState(1, -255)
            elseif slot7 == false then
                setGameKeyState(1, -255)
            end

            wait(0)

            if uv0 then
                setCameraPositionUnfixed(-0.3, math.rad(slot14 + slot22 + 270))
            end
        end
    else
        for slot22 = 0, slot18, math.random(3, 5) do
            if slot7 and slot3 < slot13 then
                setGameKeyState(1, -255)
            elseif slot7 == false then
                setGameKeyState(1, -255)
            end

            wait(0)

            if uv0 then
                setCameraPositionUnfixed(-0.3, math.rad(slot14 - slot22 + 270))
            end
        end
    end

    wait(0)

    slot19 = true
    slot20 = true
    slot21 = true
    slot22 = true
    slot23, slot24, slot25 = getCharCoordinates(PLAYER_PED)
    slot26 = math.rad(getHeadingFromVector2d(slot0 - slot23, slot1 - slot24))
    slot13 = getDistanceBetweenCoords3d(slot0, slot1, slot2, slot23, slot24, slot2)
end

function ClearLine(slot0)
    slot1, slot2, slot3 = getCharCoordinates(PLAYER_PED)

    for slot7 = 0.3, 2, 0.2 do
        if isLineOfSightClear(slot9, slot10, slot3 - 0.5, slot11, slot12, slot3 - 0.5, true, true, true, true, false) and isLineOfSightClear(slot14, slot15, slot3 - 0.5, slot16, slot17, slot3 - 0.5, true, true, true, true, false) and isLineOfSightClear(slot1, slot2, slot3 - 0.5, slot1 + 2 * math.cos(slot0 + 1.37 - slot7), slot2 + 2 * math.sin(slot0 + 1.37 - slot7), slot3 - 0.5, true, true, true, true, false) then
            setCameraPositionUnfixed(-0.3, math.rad(getHeadingFromVector2d(slot19 - slot1, slot20 - slot2)) + 0.1 + 4.7)

            break
        end

        if isLineOfSightClear(slot22, slot23, slot3 - 0.5, slot24, slot25, slot3 - 0.5, true, true, true, true, false) and isLineOfSightClear(slot27, slot28, slot3 - 0.5, slot29, slot30, slot3 - 0.5, true, true, true, true, false) and isLineOfSightClear(slot1, slot2, slot3 - 0.5, slot1 + 2 * math.cos(slot0 + 1.37 + slot7), slot2 + 2 * math.sin(slot0 + 1.37 + slot7), slot3 - 0.5, true, true, true, true, false) then
            setCameraPositionUnfixed(-0.3, math.rad(getHeadingFromVector2d(slot32 - slot1, slot33 - slot2)) + 0.1 + 4.7)

            break
        end
    end
end

function cmd_bot(slot0)
    uv0 = not uv0

    if uv0 then
        lua_thread.create(EnterCarExist)

        uv1 = -1
        uv2 = -1
        uv3 = 0
        _, uv4 = sampGetPlayerIdByCharHandle(PLAYER_PED)

        writeMemory(7634870, 1, 1, 1)
        writeMemory(7635034, 1, 1, 1)
        uv5.fill(7623723, 144, 8)
        uv5.fill(5499528, 144, 6)
        sampAddChatMessage(string.format("[%s %s %s]:{FF4040} Активирован", thisScript().name, thisScript().version, thisScript().authors[1]), 4259648)
    else
        showCursor(false, false)
        writeMemory(7634870, 1, 0, 0)
        writeMemory(7635034, 1, 0, 0)
        uv5.hex2bin("5051FF1500838500", 7623723, 8)
        uv5.hex2bin("0F847B010000", 5499528, 6)
        sampAddChatMessage(string.format("[%s]: {3398fe}Деактивирован", thisScript().name), 16728128)
    end
end

function slot2.onSetPlayerAttachedObject(slot0, slot1, slot2, slot3)
    if uv0 and slot0 == uv1 then
        if uv2 == -1 and slot3.modelId == 2814 then
            uv2 = 0
        end

        if uv2 == 1 and slot3.modelId == 0 and isCharInAnyCar(PLAYER_PED) == false then
            uv2 = 2
        end
    end
end

function slot2.onSetCheckpoint(slot0, slot1)
    if uv0 and uv1 == 0 and slot1 == 3 then
        uv2 = math.floor(slot0.x)
    end
end

function slot2.onShowDialog(slot0, slot1, slot2, slot3, slot4, slot5)
    if uv0 and slot0 == 0 and slot5:find("Вы успешно положили пиццу") then
        return false
    end
end

function slot2.onCreateObject(slot0, slot1)
    if uv0 then
        return false
    end
end

function slot2.onShowTextDraw(slot0, slot1)
    if uv0 then
        if slot1.text == "eng" and slot1.boxColor == -14803284 then
            sampSendChat("/engine")
        end

        if slot1.text:find("icon2") then
            sampSendClickTextdraw(slot0)
        end
    end
end

function slot2.onApplyPlayerAnimation(slot0, slot1, slot2, slot3, slot4, slot5, slot6, slot7)
    if uv0 and slot0 == uv1 then
        return false
    end
end