LUA [NL] Drag System

  • 287
  • 42
Drag system:
--[[
    @region: script information
    * @ Drag system.
    * @ Created by shelzy#6665.
    * @ Version: 1.0.0
    @endregion
]]




--- @region: drag system
local draggables = {
    screen_size = EngineClient.GetScreenSize(),

    menu = {},
    drag = {},
    current_drugging_item = nil,
    items = {"logo"}, --здесь вы должны прописать названия елементов, пример: {"keybinds", "spectators"}

    in_bounds = function(vec1, vec2) --проверка на то, что ваш курсор находится в зоне от первого вектора(vec1) до второго(vec2)
        local mouse_pos = Cheat.GetMousePos()
        return mouse_pos.x >= vec1.x and mouse_pos.x <= vec2.x and mouse_pos.y >= vec1.y and mouse_pos.y <= vec2.y
    end
}

for i = 1, #draggables.items do --здесь создаются слайдеры в меню
    draggables.menu[i] =
    {
        pos_x = Menu.SliderInt("Main", draggables.items[i].."_pos_x", math.floor(0.1*draggables.screen_size.x), 0, draggables.screen_size.x),
        pos_y = Menu.SliderInt("Main", draggables.items[i].."_pos_y", math.floor(0.2*i*draggables.screen_size.y), 0, draggables.screen_size.y),
    }
end

draggables.update = function() --слайдеры которые мы создали ранее, скрываются из меню
    for k, v in ipairs(draggables.menu) do
        v.pos_x:SetVisible(false)
        v.pos_y:SetVisible(false)
    end
end
draggables.update()

draggables.drag_handle = function(x, y, w, h, item, box)
    if draggables.drag[item] == nil then
        draggables.drag[item] = {}
        draggables.drag[item].drag_position = Vector2.new(0,0)
        draggables.drag[item].is_dragging = false
    end

    if draggables.in_bounds(Vector2.new(x:Get(), y:Get()), Vector2.new(x:Get() + w, y:Get() + h)) and draggables.in_bounds(Vector2.new(0, 0), draggables.screen_size) then
        if Cheat.IsKeyDown(0x01) and draggables.drag[item].is_dragging == false and (draggables.current_drugging_item == nil or draggables.current_drugging_item == item) then
            draggables.drag[item].is_dragging = true
            draggables.current_drugging_item = item
            draggables.drag[item].drag_position = Vector2.new(x:Get() - Cheat.GetMousePos().x, y:Get() - Cheat.GetMousePos().y)
        end
    end

    if not draggables.in_bounds(Vector2.new(0, 0), draggables.screen_size) then
        draggables.drag[item].is_dragging = false
    end

    if not Cheat.IsKeyDown(0x01) then
        draggables.drag[item].is_dragging = false
        draggables.current_drugging_item = nil
    end

    if draggables.drag[item].is_dragging == true and Cheat.IsMenuVisible() then
        x:Set(Cheat.GetMousePos().x + draggables.drag[item].drag_position.x)
        y:Set(Cheat.GetMousePos().y + draggables.drag[item].drag_position.y)
    end

    if box then
        Render.Box(Vector2.new(x:Get(), y:Get()), Vector2.new(x:Get() + w, y:Get() + h), Color.new(1, 1, 1, 1))
    end
end
--- @endregion




--- @region: logo
local logo = {}

-- здесь рендерится картинка для примера

logo.image = nil
logo.image_size = Vector2.new(150, 150)

logo.update = function()
    if logo.image ~= nil then
        return
    end

    Http.GetAsync("[MEDIA=imgur]32eIvMx[/MEDIA]", function(url)
        logo.image = Render.LoadImage(url, logo.image_size)
    end)
end


Render.Logo = function(vector)
    logo.update()

    if logo.image == nil then
        return
    end

    Render.Image(logo.image, vector, logo.image_size)
end
--- @endregion





--- @region: draw
Cheat.RegisterCallback("draw", function()
    local x, y = draggables.menu[1].pos_x, draggables.menu[1].pos_y

    Render.Logo(Vector2.new(x:Get(), y:Get()))

    draggables.drag_handle(x, y, logo.image_size.x, logo.image_size.y, draggables.items[1], true)
end)
--- @endregion
[/i][/i][/i]
 
  • 9
  • 1
Контакты для связи отсутствуют.
Drag system:
--[[
    @region: script information
    * @ Drag system.
    * @ Created by shelzy#6665.
    * @ Version: 1.0.0
    @endregion
]]




--- @region: drag system
local draggables = {
    screen_size = EngineClient.GetScreenSize(),

    menu = {},
    drag = {},
    current_drugging_item = nil,
    items = {"logo"}, --здесь вы должны прописать названия елементов, пример: {"keybinds", "spectators"}

    in_bounds = function(vec1, vec2) --проверка на то, что ваш курсор находится в зоне от первого вектора(vec1) до второго(vec2)
        local mouse_pos = Cheat.GetMousePos()
        return mouse_pos.x >= vec1.x and mouse_pos.x <= vec2.x and mouse_pos.y >= vec1.y and mouse_pos.y <= vec2.y
    end
}

for i = 1, #draggables.items do --здесь создаются слайдеры в меню
    draggables.menu[i] =
    {
        pos_x = Menu.SliderInt("Main", draggables.items[i].."_pos_x", math.floor(0.1*draggables.screen_size.x), 0, draggables.screen_size.x),
        pos_y = Menu.SliderInt("Main", draggables.items[i].."_pos_y", math.floor(0.2*i*draggables.screen_size.y), 0, draggables.screen_size.y),
    }
end

draggables.update = function() --слайдеры которые мы создали ранее, скрываются из меню
    for k, v in ipairs(draggables.menu) do
        v.pos_x:SetVisible(false)
        v.pos_y:SetVisible(false)
    end
end
draggables.update()

draggables.drag_handle = function(x, y, w, h, item, box)
    if draggables.drag[item] == nil then
        draggables.drag[item] = {}
        draggables.drag[item].drag_position = Vector2.new(0,0)
        draggables.drag[item].is_dragging = false
    end

    if draggables.in_bounds(Vector2.new(x:Get(), y:Get()), Vector2.new(x:Get() + w, y:Get() + h)) and draggables.in_bounds(Vector2.new(0, 0), draggables.screen_size) then
        if Cheat.IsKeyDown(0x01) and draggables.drag[item].is_dragging == false and (draggables.current_drugging_item == nil or draggables.current_drugging_item == item) then
            draggables.drag[item].is_dragging = true
            draggables.current_drugging_item = item
            draggables.drag[item].drag_position = Vector2.new(x:Get() - Cheat.GetMousePos().x, y:Get() - Cheat.GetMousePos().y)
        end
    end

    if not draggables.in_bounds(Vector2.new(0, 0), draggables.screen_size) then
        draggables.drag[item].is_dragging = false
    end

    if not Cheat.IsKeyDown(0x01) then
        draggables.drag[item].is_dragging = false
        draggables.current_drugging_item = nil
    end

    if draggables.drag[item].is_dragging == true and Cheat.IsMenuVisible() then
        x:Set(Cheat.GetMousePos().x + draggables.drag[item].drag_position.x)
        y:Set(Cheat.GetMousePos().y + draggables.drag[item].drag_position.y)
    end

    if box then
        Render.Box(Vector2.new(x:Get(), y:Get()), Vector2.new(x:Get() + w, y:Get() + h), Color.new(1, 1, 1, 1))
    end
end
--- @endregion




--- @region: logo
local logo = {}

-- здесь рендерится картинка для примера

logo.image = nil
logo.image_size = Vector2.new(150, 150)

logo.update = function()
    if logo.image ~= nil then
        return
    end

    Http.GetAsync("[MEDIA=imgur]32eIvMx[/MEDIA]", function(url)
        logo.image = Render.LoadImage(url, logo.image_size)
    end)
end


Render.Logo = function(vector)
    logo.update()

    if logo.image == nil then
        return
    end

    Render.Image(logo.image, vector, logo.image_size)
end
--- @endregion





--- @region: draw
Cheat.RegisterCallback("draw", function()
    local x, y = draggables.menu[1].pos_x, draggables.menu[1].pos_y

    Render.Logo(Vector2.new(x:Get(), y:Get()))

    draggables.drag_handle(x, y, logo.image_size.x, logo.image_size.y, draggables.items[1], true)
end)
--- @endregion
[/i][/i][/i]

кринж
 
Сверху Снизу