Non Vérifié Besoin d'aide

Cyffur

Membre 🏅
Level 1

Torrents Stats

Messages
17
J'aime
0
Trophées
29
Inscrit
24 Avril 2024
Pour vous expliquer : j'ai le code(qui est un menu de sélection d'arme) que je vous donnerai plus bas et dans ce code y'a un problème avec l'opacité par exemple ceci :
image.png
image.png

si une personne pourrait m'aider car la c'est vrm la galère.
Code:
air_selector = air_selector or {}
air_selector.MAX_COLUMNS = 6
air_selector.MAX_CELLS = 32
air_selector.columns = air_selector.columns or {}

function air_selector.clear_columns(initial)
    for i = 1, air_selector.MAX_COLUMNS do
        air_selector.columns[i] = air_selector.columns[i] or {}
   
        for slot_id = 1, air_selector.MAX_CELLS do
            if initial then
                air_selector.columns[i][slot_id] = {
                    x = 0, y = 0,
                    w = 0, h = 0,
                    weapon = nil,
                }
            else
                air_selector.columns[i][slot_id].weapon = nil
            end
        end
    end
end
air_selector.clear_columns(true)
local last_update = 0
function air_selector.update_weapons()
    if last_update > CurTime() then
        return
    end
    last_update = CurTime() + 0.25
    air_selector.clear_columns()
    local weapons = LocalPlayer():GetWeapons()
    local weapons_count = #weapons
    for i = 1, weapons_count do
        local weapon = weapons[i]
        local slot = weapon:GetSlot() + 1
        if slot > air_selector.MAX_COLUMNS then
            slot = air_selector.MAX_COLUMNS
        end

        local pos
        for cell = 1, air_selector.MAX_CELLS do
            if not air_selector.columns[slot][cell].weapon then
                pos = cell
                break
            end
        end
        if pos then
            air_selector.columns[slot][pos].weapon = weapon
        end
    end
end
air_selector.selected_column = 1
air_selector.selected_cell = 0
function air_selector.is_valid_cell(column, cell)
    if not column then
        column = air_selector.selected_column
    end
    if not cell then
        cell = air_selector.selected_cell
    end
    if not air_selector.columns[column] then
        return false
    end
    if not air_selector.columns[column][cell] then
        return false
    end
    if not air_selector.columns[column][cell].weapon then
        return false
    end
    return true
end
---@param column number
---@return number filled_cells
function air_selector.get_filled_cells(column)
    local filled_cells = 0
    if not air_selector.columns[column] then
        return 1
    end
    for cell = 1, air_selector.MAX_CELLS do
        if air_selector.columns[column][cell].weapon then
            filled_cells = filled_cells + 1
        end
    end
    if filled_cells == 0 then
        filled_cells = 1, false
    end
    return filled_cells
end
function air_selector.increment_column()
    air_selector.selected_column = air_selector.selected_column + 1
    air_selector.selected_cell = 1
    if air_selector.selected_column > air_selector.MAX_COLUMNS then
        air_selector.selected_column = 1
    elseif not air_selector.is_valid_cell() then
        air_selector.increment_column()
        return
    end
    air_selector.last_change = CurTime()
end
function air_selector.decrement_column()
    air_selector.selected_column = air_selector.selected_column - 1
    air_selector.selected_cell = air_selector.get_filled_cells(air_selector.selected_column)
    if air_selector.selected_column < 1 then
        air_selector.selected_column = air_selector.MAX_COLUMNS
    elseif not air_selector.is_valid_cell() then
        air_selector.decrement_column()
        return
    end
   
    air_selector.last_change = CurTime()
end
function air_selector.increment_cell(increment_column)
    air_selector.selected_cell = air_selector.selected_cell + 1
    local filled_cells = air_selector.get_filled_cells(air_selector.selected_column)
    if air_selector.selected_cell > filled_cells then
        if increment_column == false then
            air_selector.selected_cell = 1
        else
            air_selector.increment_column()
        end
    end
    air_selector.last_change = CurTime()
end
function air_selector.decrement_cell()
    air_selector.selected_cell = air_selector.selected_cell - 1
   
    if air_selector.selected_cell < 1 then
        air_selector.decrement_column()
    end
    air_selector.last_change = CurTime()
end
---@param column number
function air_selector.select_column(column)
    if air_selector.selected_column == column then
        air_selector.increment_cell(false)
        return
    end
   
    air_selector.selected_column = column
    air_selector.selected_cell = 1
    air_selector.last_change = CurTime()
end
hook.Add("PlayerBindPress", "air_selector.binds", function(ply, bind, pressed, key)
    if not pressed then
        return
    end
    if IsValid(LocalPlayer():GetVehicle()) then
        return
    end
    if bind == "invprev" then
        air_selector.decrement_cell()
        return true
    end
   
    if bind == "invnext" then
        air_selector.increment_cell()
        return true
    end
   
    if key >= 2 and key <= air_selector.MAX_COLUMNS + 1 then
        air_selector.select_column(key - 1)
        return true
    end
    if air_selector.lerp <= 1 then
        return
    end
    if bind == "+attack" then
        local wep = air_selector.columns[air_selector.selected_column][air_selector.selected_cell].weapon
        if wep and LocalPlayer():GetActiveWeapon() ~= wep then
            input.SelectWeapon(wep)
            LocalPlayer():EmitSound("common/wpn_hudoff.wav", 25, 90)
            air_selector.last_change = CurTime() - 5
            air_selector.lerp = 0
            return true
        end
    end
end)
air_selector.start_x = 500
air_selector.start_y = 40
air_selector.scale = ScrH() == 2160 and 2 or ScrH() / 1080
air_selector.s = air_selector.scale
air_selector.visible = false
air_selector.lerp = 0
air_selector.last_change = 0
surface.CreateFont("air_selector.font", {
    font = "Montserrat Medium",
    size = air_selector.s * 26,
    weight = 700,
    extended = true,
})
surface.CreateFont("air_selector.weapon_icons", {
    font = "HalfLife2",
    size = air_selector.s * 1000,
    weight = 550,
})
local long_box = 270 * air_selector.s
local small_box = 90 * air_selector.s
air_selector.icons = {
    ["weapon_smg1"] = "a",
    ["weapon_shotgun"] = "b",
    ["weapon_crowbar"] = "c",
    ["weapon_pistol"] = "d",
    ["weapon_357"] = "e",
    ["weapon_crossbow"] = "g",
    ["weapon_physgun"] = "h",
    ["weapon_rpg"] = "i",
    ["weapon_bugbait"] = "j",
    ["weapon_frag"] = "k",
    ["weapon_ar2"] = "l",
    ["weapon_physcannon"] = "m",
    ["weapon_stunstick"] = "n",
    ["weapon_slam"] = "o",
}
---@param x number
---@param y number
---@param column number
---@param cell boolean
---@return number @y
function air_selector.draw_cell(x, y, column, cell)
    local w, h = small_box, small_box
    local col = Color(50, 50, 50, 150)
    local text_col = color_white
   
    if air_selector.selected_column == column then
        w = long_box
        h = 40 * air_selector.s
        if air_selector.selected_cell == cell then
            h = 60 * air_selector.s
            col = Color(226, 160, 56, 150)
            text_col = Color(255, 255, 255, 255)
        end
    end
    local cell_table = air_selector.columns[column][cell]
    cell_table.x = Lerp(FrameTime() * 10, cell_table.x, x)
    cell_table.y = Lerp(FrameTime() * 10, cell_table.y, y)
    cell_table.w = Lerp(FrameTime() * 10, cell_table.w, w)
    cell_table.h = Lerp(FrameTime() * 10, cell_table.h, h)
    local real_y = y
    local real_h = h
    local x = cell_table.x
    local y = cell_table.y
    local w = cell_table.w
    local h = cell_table.h
   
    local wep = air_selector.columns[column][cell].weapon
    local name
    if wep then
        name = wep:GetPrintName()
        --print(wep:GetClass())
    end
    col.a = math.Clamp(air_selector.lerp, 0, 150)
    text_col.a = air_selector.lerp
   
    draw.RoundedBox(0, x, y, w, h, col)
    if cell == 1 then
        draw.SimpleText(column, "air_selector.font", x + 15 * air_selector.s, y + 10 * air_selector.s, text_col)
    end
   
    if column == air_selector.selected_column and name then
        draw.SimpleText(name, "air_selector.font", x + w / 2, y + h - 10 * air_selector.s, text_col, 1, 4)
        if air_selector.selected_cell == cell then
            draw.RoundedBox(8, x + w / 2 - 56 * air_selector.s, y, 112 * air_selector.s, 4 * air_selector.s, Color(255, 255, 255, air_selector.lerp))
            if wep and air_selector.icons[wep:GetClass()] then
                local x = x + w / 2
                local y = y + h / 2
                draw.SimpleText(air_selector.icons[wep:GetClass()], "air_selector.weapon_icons", x, y, text_col, 1, 1)
            end
        else
            draw.RoundedBox(8, x, y + h / 2 - 15 * air_selector.s, 4 * air_selector.s, 30 * air_selector.s,col)
        end
    end
    return real_y + real_h + 10 * air_selector.s
end
function air_selector.draw_columns()
    local x = air_selector.start_x
    for column = 1, air_selector.MAX_COLUMNS do
        local cells = air_selector.selected_column == column and 6 or 1
        local y = air_selector.start_y
        y = air_selector.draw_cell(x, y, column, 1)
        if air_selector.selected_column == column then
        for cell = 2, air_selector.MAX_CELLS do
            if air_selector.columns[column][cell].weapon then
                y = air_selector.draw_cell(x, y, column, cell)
            end
        end
        end
        if air_selector.selected_column == column then
            x = x + long_box + 10 * air_selector.s
        else
            x = x + small_box + 10 * air_selector.s
        end
    end
end
local last_cell = 1
local last_column = 1
hook.Add("DrawOverlay", "air_selector.paint", function()
    local to = (air_selector.last_change > CurTime() - 1) and 255 or 0
    air_selector.lerp = Lerp(FrameTime() * 10, air_selector.lerp, to)
    if air_selector.lerp <= 1 then
        air_selector.selected_column = 1
        air_selector.selected_cell = 0
        return
    end
    if last_cell ~= air_selector.selected_cell or last_column ~= air_selector.selected_column then
        LocalPlayer():EmitSound("common/wpn_select.wav", 20, 100)
        last_cell = air_selector.selected_cell
        last_column = air_selector.selected_column
    end
    air_selector.update_weapons()
    air_selector.draw_columns()
end)
 
Haut Bas