Простенький модуль на выдавание донат валюты через SAM Admin Mo
-- Установить по пути
-- garrysmod/addons/igs-modification/lua/sam/modules
if SAM_LOADED then return end
local sam, command = sam, sam.command
print("[SAM] IGS модуль загружен!")
local limits_by_rank = {
["superadmin"] = 0, -- ЕСЛИ НОЛЬ ТО БЕСКОНЕЧНО!!!
["D-Creator"] = 100,
}
local block_data_file = "sam_igs_block_data.txt"
local block_duration = 30 * 24 * 60 * 60
local cooldown_data = {}
local function save_block_data()
if file.Exists(block_data_file, "DATA") then
file.Delete(block_data_file)
end
file.Write(block_data_file, util.TableToJSON(cooldown_data))
end
local function load_block_data()
if file.Exists(block_data_file, "DATA") then
local json_data = file.Read(block_data_file, "DATA")
cooldown_data = util.JSONToTable(json_data) or {}
end
end
load_block_data()
local function is_player_blocked(ply)
local steamID = ply:SteamID()
local block_info = cooldown_data[steamID]
if block_info then
local time_remaining = block_info.block_until - os.time()
if time_remaining > 0 then
return true, time_remaining
end
end
return false
end
local function block_player(ply)
local steamID = ply:SteamID()
cooldown_data[steamID] = {
block_until = os.time() + block_duration
}
save_block_data()
end
sam.command.set_category("IGS")
command.new("addfunds")
:SetPermission("igs_addfunds", "superadmin")
:Help("Выдать игроку донат валюту.")
:AddArg("player", {optional = true, default = "^"})
:AddArg("number", {default = 100, hint = "Сколько валюты дать."})
:OnExecute(function(ply, targets, don_amount)
local ply_rank = ply:GetUserGroup()
local max_limit = limits_by_rank[ply_rank]
local is_blocked, time_remaining = is_player_blocked(ply)
if is_blocked then
ply:ChatPrint("Вы исчерпали свой лимит на выдачу валюты. Попробуйте снова через " .. math.ceil(time_remaining / 86400) .. " дней.")
return
end
if not max_limit then
ply:ChatPrint("Для вашей привилегии не установлен лимит на выдачу валюты.")
return
end
if max_limit > 0 then
if don_amount > max_limit then
ply:ChatPrint("Ваш лимит на выдачу валюты: " .. max_limit .. ". Вы не можете выдать больше.")
return
end
end
for i = 1, #targets do
local target = targets[i]
target:AddIGSFunds(don_amount, "Выдача донат валюты через SAM.")
sam.player.send_message(nil, "{A} дал {T} {V} донат валюты.", {
A = ply, T = targets, V = don_amount
})
target:ChatPrint("Вам выдали " .. don_amount .. " донат валюты!")
end
if max_limit == 0 then
return
else
block_player(ply)
ply:ChatPrint("Вы исчерпали свой лимит на выдачу валюты и теперь не можете использовать эту команду в течении ".. math.ceil(time_remaining / 86400) .. " дней.")
end
end)
:End()