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

77 lines
1.8 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_number = function(argument, input, gsub)
if (input == "" or input == nil) and argument.optional then
if argument.default ~= nil then
return argument.default
end
return ""
end
local number = tonumber(input)
if gsub ~= false and not isnumber(number) then
number = tonumber(input:gsub("%D", ""), 10 /*gsub returns two args*/)
end
return number
end
command.new_argument("number")
:OnExecute(function(argument, input, ply, _, result, i)
local number = get_number(argument, input)
if number == "" then
result[i] = nil
elseif not number then
ply:sam_send_message("invalid", {
S = argument.hint or "number", S_2 = input
})
return false
else
if argument.min then
number = math.max(number, argument.min)
end
if argument.max then
number = math.min(number, argument.max)
end
if argument.round then
number = math.Round(number)
end
result[i] = number
end
end)
:Menu(function(set_result, body, buttons, argument)
local number_entry = buttons:Add("SAM.TextEntry")
number_entry:SetUpdateOnType(true)
number_entry:SetNumeric(true)
number_entry:SetTall(25)
number_entry:SetCheck(function(number)
number = get_number(argument, number, false)
set_result(number)
return number or false
end)
local hint = argument.hint or "number"
if argument.default then
hint = hint .. " = " .. tostring(argument.default)
end
number_entry:SetPlaceholder(hint)
return number_entry
end)
:End()