Torrents Stats
- Partagées
- 130 Go
- Téléchargées
- 0 bytes
- Ratio
- -
- 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 :
si une personne pourrait m'aider car la c'est vrm la galère.
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)