Files
wnsrc/addons/sam-master/lua/sam/command/arguments/length.lua
lifestorm ba1fc01b16 Upload
2024-08-04 23:12:27 +03:00

72 lines
1.5 KiB
Lua

--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
if SAM_LOADED then return end
local sam, command = sam, sam.command
local get_length = function(arg, input)
if (input == "" or input == nil) and arg.optional then
if arg.default ~= nil then
return arg.default
end
return ""
end
return sam.parse_length(input)
end
command.new_argument("length")
:OnExecute(function(arg, input, ply, _, result, i)
local length = get_length(arg, input)
if length == "" then
result[i] = nil
elseif not length then
ply:sam_send_message("invalid", {
S = "length", S_2 = input
})
return false
else
if arg.min and length ~= 0 then
length = math.max(length, arg.min)
end
if arg.max then
if length == 0 then
length = arg.max
else
length = math.min(length, arg.max)
end
end
result[i] = length
end
end)
:Menu(function(set_result, body, buttons, argument)
local length_input = buttons:Add("SAM.TextEntry")
length_input:SetTall(25)
length_input:SetCheck(function(new_limit)
new_limit = get_length(argument, new_limit) or nil
set_result(new_limit)
return new_limit or false
end)
local hint = argument.hint or "length"
if argument.default then
hint = hint .. " = " .. tostring(argument.default)
end
length_input:SetPlaceholder(hint)
return length_input
end)
:End()