add sborka

This commit is contained in:
2026-03-31 10:27:04 +03:00
commit f5e5f56c84
2345 changed files with 382127 additions and 0 deletions

View File

@@ -0,0 +1,108 @@
local HOUR = 60 * 60
local REWARD_AFTER = HOUR * 2
local REWARD_SIZE = 150
local startTime = os.time()
local animatedProgress = 0
CreateClientConVar("cl_igs_session_ui_hide", "0", true, false)
surface.CreateFont("IGS_SessionTitle", {
font = "Roboto",
size = 17,
weight = 600
})
surface.CreateFont("IGS_SessionSub", {
font = "Roboto",
size = 14,
weight = 400
})
surface.CreateFont("IGS_Tooltip", {
font = "Roboto",
size = 12,
weight = 400
})
local coinMat = Material("icon16/coins.png")
local gearMat = Material("icon16/cog.png") -- ⚙ значок настроек (скрыть)
net.Receive("igs_session_start", function()
startTime = net.ReadInt(32)
end)
local function GetMinutesLeft()
local elapsed = os.time() - startTime
local left = math.max(0, REWARD_AFTER - elapsed)
return math.ceil(left / 60)
end
-- 🔥 Toggle по клавише F6
hook.Add("Think", "igs_session_ui_toggle", function()
if input.IsKeyDown(KEY_F2) and not _igsKeyPressed then
_igsKeyPressed = true
RunConsoleCommand("cl_igs_session_ui_hide",
GetConVar("cl_igs_session_ui_hide"):GetInt() == 1 and "0" or "1")
elseif not input.IsKeyDown(KEY_F2) then
_igsKeyPressed = false
end
end)
local width, height = 300, 98
hook.Add("HUDPaint", "igs_session_ui", function()
local pl = LocalPlayer()
if not IsValid(pl) then return end
local hidden = GetConVar("cl_igs_session_ui_hide"):GetInt() == 1
local minutesLeft = GetMinutesLeft()
if minutesLeft <= 0 then return end
if hidden then
-- Показываем только маленький tooltip внизу
local tx = ScrW() - 130
local ty = 20
draw.SimpleText("Нажмите F2 — показать", "IGS_Tooltip",
tx, ty, Color(200,200,200))
return
end
local x = ScrW() - width - 20
local y = 20
draw.RoundedBox(8, x, y, width, height, Color(0,0,0,190))
local realProgress = 1 - (minutesLeft * 60) / REWARD_AFTER
animatedProgress = Lerp(FrameTime() * 3, animatedProgress, realProgress)
surface.SetDrawColor(255,255,255)
surface.SetMaterial(coinMat)
surface.DrawTexturedRect(x + 10, y + 10, 18, 18)
draw.SimpleText("Бонус за игру! " .. REWARD_SIZE .. " руб",
"IGS_SessionTitle", x + 32, y + 11, Color(255,255,255))
draw.RoundedBox(5, x + 10, y + 35,
(width - 20) * animatedProgress, 15,
Color(72,92,44))
draw.SimpleText("Осталось: " .. minutesLeft .. " мин",
"IGS_SessionSub", x + 10, y + 60, Color(220,220,220))
-- ⚙ Кнопка скрытия
surface.SetMaterial(gearMat)
surface.DrawTexturedRect(x + width - 27, y + 10, 16, 16)
-- Проверка клика по кнопке
if input.IsMouseDown(MOUSE_LEFT) then
local mx, my = gui.MousePos()
if mx >= x + width - 27 and mx <= x + width - 11
and my >= y + 10 and my <= y + 26 then
RunConsoleCommand("cl_igs_session_ui_hide", "1")
end
end
-- Tooltip внизу панели
draw.SimpleText("Нажмите F2 — скрыть", "IGS_Tooltip",
x + 10, y + height - 18, Color(200, 200, 200, 180))
end)

View File

@@ -0,0 +1,121 @@
file.CreateDir("igs")
-- Вы можете сделать форк основного репозитория, сделать там изменения и указать его имя здесь
-- Таким образом IGS будет грузиться у всех с вашего репозитория
IGS_REPO = "GM-DONATE/IGS" -- "AMD-NICK/IGS-1"
if not IGS_REPO or file.Exists("autorun/l_ingameshop.lua", "LUA") then return end -- force lua
local function checkRunString()
RunString("IGS_Test_RS = true", "IGS_Test_RS")
assert(IGS_Test_RS, "RunString не работает: https://forum.gm-donate.net/t/1663")
IGS_Test_RS = nil
end
checkRunString() -- сразу может быть, а потом пропасть
-- http либа работает не сразу
local fetchDelayed = function(delay, url, fOk, fErr, tHeaders)
timer.Simple(delay, function()
http.Fetch(url, fOk, fErr, tHeaders)
end)
end
local replaceGithubUrl = function(original)
return original
:gsub("^https://api.github.com", "https://gh.gm-donate.net/api")
:gsub("^https://github.com", "https://gh.gm-donate.net")
end
local function wrapFetch(url, cb, retry_)
local retry3Times = function()
retry_ = retry_ or 1
if retry_ < 3 then
wrapFetch(url, cb, retry_ + 1)
elseif retry_ == 3 then -- last chance
local newurl = replaceGithubUrl(url)
wrapFetch(newurl or url, cb, retry_ + 1)
else
return true
end
end
local patt = "IGS Не может выполнить HTTP запрос и загрузить скрипт\nURL: %s\nError: %s\n"
fetchDelayed((retry_ or 0) * 5, url, cb, function(err) -- timeout, unsuccessful
local fault = retry3Times()
if not fault then return end -- пытается дальше
-- попытки исчерпались
error(patt:format(url, err))
end)
end
local function downloadSuperfile(version, cb, _failure)
local url = "https://github.com/" .. IGS_REPO .. "/releases/download/" .. version .. "/superfile.json"
if _failure then ErrorNoHalt("[IGS] #" .. _failure .. " повторение загрузки", url) end
wrapFetch(url, function(superfile)
local dat = util.JSONToTable(superfile)
if not dat and (_failure or 0) < 3 then
downloadSuperfile(version, cb, (_failure or 0) + 1)
return
end
local err =
not dat and "superfile.json получен не в правильном формате"
or dat.error and ("Ошибка от GitHub: " .. dat.error)
assert(not err, (err or "") .. "\n" .. url .. "\nПопробуйте снова или почитайте тут https://forum.gm-donate.net/t/1663")
file.Write("igs/superfile.txt", superfile)
cb(superfile)
end)
end
local function loadFromFile(superfile)
checkRunString()
local path = "autorun/l_ingameshop.lua"
IGS_MOUNT = util.JSONToTable(superfile)
RunString(IGS_MOUNT[path], path)
end
local function findFreshestVersion(cb)
wrapFetch("https://api.github.com/repos/" .. IGS_REPO .. "/releases", function(json)
local releases = util.JSONToTable(json)
table.sort(releases, function(a, b) -- свежайшие версии сначала
return tonumber(a.tag_name) > tonumber(b.tag_name)
end)
local freshest_version = releases[1]
assert(freshest_version, "Релизов нет. Нужно запустить CI: https://forum.gm-donate.net/t/1663")
cb(freshest_version.tag_name)
end)
end
if SERVER then
local superfile = file.Read("igs/superfile.txt")
local version = cookie.GetString("igs_version")
if superfile and version then -- 2 может не быть, если сервер перенесли без sv.db
loadFromFile(superfile)
elseif not version then
findFreshestVersion(function(freshest_version)
cookie.Set("igs_version", freshest_version)
downloadSuperfile(freshest_version, loadFromFile)
end)
else -- version
downloadSuperfile(version, loadFromFile)
end
elseif CLIENT then
CreateConVar("igs_version", "", {FCVAR_REPLICATED})
local version = GetConVar("igs_version"):GetString()
assert(tonumber(version), "cvar igs_version не передался клиенту. " .. version .. ": https://forum.gm-donate.net/t/1663")
downloadSuperfile(version, loadFromFile)
end

View File

@@ -0,0 +1,68 @@
if SERVER then
util.AddNetworkString("igs_session_start")
util.AddNetworkString("igs_session_reward_given")
local HOUR = 60 * 60
local REWARD_AFTER = HOUR * 2 -- 2 часа
local REWARD_SIZE = 150 -- 150 рублей (изменено по просьбе пользователя)
-- Таблица для отслеживания времени начала сессии игроков
local playerSessionStart = {}
local playerRewardGiven = {}
-- Отправка времени начала сессии при спавне
hook.Add("PlayerInitialSpawn", "igs.session_reward_ui", function(pl)
playerSessionStart[pl:SteamID()] = os.time()
local lastRewardDate = pl:GetPData("igs_playtime_bonus_date", "")
local currentDate = os.date("%d-%m-%Y")
playerRewardGiven[pl:SteamID()] = (lastRewardDate == currentDate)
net.Start("igs_session_start")
net.WriteInt(os.time(), 32)
net.Send(pl)
end)
-- Очистка данных при отключении игрока
hook.Add("PlayerDisconnected", "igs.session_cleanup", function(pl)
playerSessionStart[pl:SteamID()] = nil
playerRewardGiven[pl:SteamID()] = nil
end)
-- Проверка и выдача награды каждые 60 секунд
timer.Create("igs.check_session_rewards", 60, 0, function()
for _, pl in pairs(player.GetAll()) do
local steamID = pl:SteamID()
local startTime = playerSessionStart[steamID]
local rewardGiven = playerRewardGiven[steamID]
if startTime and not rewardGiven then
local elapsed = os.time() - startTime
-- Если прошло 2 часа - выдаем награду
if elapsed >= REWARD_AFTER then
-- Проверяем, что игрок не AFK (опционально)
if IsValid(pl) and pl:Alive() then
-- Выдаем рубли на баланс IGS
pl:AddIGSFunds(REWARD_SIZE, "Бонус за 2 часа игры")
-- Уведомление игроку
IGS.Notify(pl, "Вы получили " .. REWARD_SIZE .. " руб за 2 часа игры!")
-- Помечаем, что награда выдана
playerRewardGiven[steamID] = true
pl:SetPData("igs_playtime_bonus_date", os.date("%d-%m-%Y"))
-- Логирование
print("[IGS Session Reward] " .. pl:Nick() .. " (" .. steamID .. ") получил " .. REWARD_SIZE .. " руб за 2 часа игры")
-- Отправляем клиенту сигнал об успешной выдаче
net.Start("igs_session_reward_given")
net.Send(pl)
end
end
end
end
end)
end

View File

@@ -0,0 +1,120 @@
-- \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/
--[[-------------------------------------------------------------------------
ПРЕДМЕТЫ ДОБАВЛЯЮТСЯ В sh_additems.lua
---------------------------------------------------------------------------]]
-- /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\
--[[-------------------------------------------------------------------------
Настройки валюты
---------------------------------------------------------------------------]]
IGS.C.CURRENCY_SIGN = "RUB"
-- Множественные названия валюты.
-- Пример 1: Доллар, Доллара, Долларов
-- Пример 2: Поинт, Поинта, Поинтов
IGS.C.CurrencyPlurals = {
"рубль", -- 1 алкобакс
"рубля", -- 3 алкобакса
"рублей" -- 5 алкобаксов
}
--[[-------------------------------------------------------------------------
Настройки активации интерфейса
---------------------------------------------------------------------------]]
-- На какую кнопку будет открываться донат менюшка
-- https://wiki.facepunch.com/gmod/Enums/KEY
IGS.C.MENUBUTTON = KEY_F9
-- /команда для открытия донат менюшки
IGS.C.COMMANDS = {
["donate"] = true,
["донат"] = true,
}
--[[-------------------------------------------------------------------------
Донат инвентарь
---------------------------------------------------------------------------]]
-- Если отключить, вкладка инвентаря исчезнет, а предметы при покупке сразу будут активироваться
-- Станут недоступны некоторые методы, вроде :SetItems(, так как используют инвентарь
IGS.C.Inv_Enabled = true
-- Разрешить выбрасывать предметы с инвентаря на пол
-- Это позволит игрокам покупать донат подарки для друзей или вам делать донат раздачи
IGS.C.Inv_AllowDrop = true
if SERVER then return end -- не смотрите так на меня :)
-- Показывать ли уведомление о новых предметах в донат меню
-- Выглядит вот так https://img.qweqwe.ovh/1526574184864.png
IGS.C.NotifyAboutNewItems = true
-- Эта иконка будет отображена для предмета, если для него не будет установлена кастомная через :SetIcon()
-- Отображается вот тут: https://img.qweqwe.ovh/1494088609445.png
-- Хостинг картинок: https://t.me/cfr2bot
IGS.C.DefaultIcon = "https://file.def.pm/42Hr9k9U.jpeg"
-- Уберите "--" с начала строки, чтобы отключить появление определенного фрейма
IGS.C.DisabledFrames = {
-- ["faq_and_help"] = true, -- Чат бот (страница помощи)
-- ["profile"] = true, -- Страница профиля игрока (с транзакциями)
-- ["purchases"] = true, -- Активные покупки
}
-- показывать супер-админам все модули на клиенте тоже
if CLIENT then
local plyMeta = FindMetaTable("Player")
if plyMeta and not plyMeta._IGS_HasPurchase_Orig_CL then
plyMeta._IGS_HasPurchase_Orig_CL = plyMeta.HasPurchase
function plyMeta:HasPurchase(uid, ...)
if self:IsSuperAdmin() then
return true
end
if plyMeta._IGS_HasPurchase_Orig_CL then
return plyMeta._IGS_HasPurchase_Orig_CL(self, uid, ...)
end
return false
end
end
end
-- Оставьте так, если не уверены
-- Инфо: https://vk.cc/6xaFOe
IGS.C.DATE_FORMAT = "%d.%m.%y %H:%M:%S"
IGS.C.DATE_FORMAT_SHORT = "%d.%m.%y"
hook.Add("IGS.Initialized", "IGS.ColorsLoad", function()
IGS.S.COLORS.FRAME_HEADER = Color(0, 0, 0)
IGS.S.COLORS.ACTIVITY_BG = Color(0, 0, 0, 253)
IGS.S.COLORS.TAB_BAR = Color(0, 0, 0)
IGS.S.COLORS.PASSIVE_SELECTIONS = Color(0, 0, 0)
IGS.S.COLORS.INNER_SELECTIONS = Color(0, 0, 0)
IGS.S.COLORS.SOFT_LINE = Color(0, 67, 28)
IGS.S.COLORS.HARD_LINE = Color(0, 67, 28)
IGS.S.COLORS.HIGHLIGHTING = Color(0, 67, 28)
IGS.S.COLORS.HIGHLIGHT_INACTIVE = Color(0, 67, 28)
IGS.S.COLORS.TEXT_HARD = Color(255,255,255)
IGS.S.COLORS.TEXT_SOFT = Color(255,255,255)
IGS.S.COLORS.TEXT_ON_HIGHLIGHT = Color(255,255,255)
IGS.S.COLORS.LOG_SUCCESS = Color(76,217,100)
IGS.S.COLORS.LOG_ERROR = Color(255,45,85)
IGS.S.COLORS.LOG_NORMAL = Color(255,255,255)
IGS.S.COLORS.ICON = Color(255,255,255)
end)

View File

@@ -0,0 +1,8 @@
-- Вот так просто! :)
-- ID проекта в системе
IGS.C.ProjectID = 4637
-- Секретный ключ проекта. Никому не сообщайте.
-- С этим ключом можно запрашивать и изменять данные ваших донатеров
IGS.C.ProjectKey = "50900bf9130d4bc45368a09e8defe96a"

View File

@@ -0,0 +1,518 @@
--[[-------------------------------------------------------------------------
Обязательные методы:
:SetPrice()
:SetDescription()
Популярные:
:SetTerm() --> Срок действия в днях (по умолчанию 0, т.е. одноразовая активация)
:SetStackable() --> Разрешает покупать несколько одинаковых предметов
:SetCategory() --> Группирует предметы
:SetIcon() --> Картинка или модель в качестве иконки
:SetHighlightColor() --> Цвет заголовка
:SetDiscountedFrom() --> Скидка
:SetOnActivate() --> Свое действие при активации
:SetHidden() --> Скрытый предмет
Полезное:
gm-donate.net/docs --> Подробнее о методах и все остальные
gm-donate.net/support --> Быстрая помощь и настройка от нас
gm-donate.net/mods --> Бесплатные модули
---------------------------------------------------------------------------]]
-- Ниже примеры с объяснением
--[[-------------------------------------------------------------------------
Разрешаем покупать отмычку а F4 только донатерам (DarkRP)
https://img.qweqwe.ovh/1493244432112.png -- частичное объяснение
---------------------------------------------------------------------------]]
IGS("VSS Vintorez", "tacrp_io_vss"):SetWeapon("tacrp_io_vss")
:SetPrice(1000)
:SetTerm(45)
:SetDescription("Данное оружие является трофейным оружием, также не забудьте прочесть правила донат вооружения. При оплате напрямую в дискорде будет скидка 20%")
:SetIcon("https://i.yapx.ru/dMq2U.png", false)
:SetCategory("Трофейное Оружие")
IGS("AI AS50", "tacrp_as50"):SetWeapon("tacrp_as50")
:SetPrice(1500)
:SetTerm(45)
:SetDescription("Данное оружие является трофейным оружием, также не забудьте прочесть правила донат вооружения. При оплате напрямую в дискорде будет скидка 20%")
:SetIcon("https://i.yapx.ru/dMq2U.png", false)
:SetCategory("Трофейное Оружие")
IGS("PGM Hecate II", "tacrp_ex_hecate"):SetWeapon("tacrp_ex_hecate")
:SetPrice(1200)
:SetTerm(45)
:SetDescription("Данное оружие является трофейным оружием, также не забудьте прочесть правила донат вооружения. При оплате напрямую в дискорде будет скидка 20%")
:SetIcon("https://i.yapx.ru/dMq2U.png", false)
:SetCategory("Трофейное Оружие")
IGS("AK12", "tacrp_ak_ak12"):SetWeapon("tacrp_ak_ak12")
:SetPrice(1000)
:SetTerm(45)
:SetDescription("Данное оружие является трофейным оружием, также не забудьте прочесть правила донат вооружения. При оплате напрямую в дискорде будет скидка 20%")
:SetIcon("https://i.yapx.ru/dMq2U.png", false)
:SetCategory("Трофейное Оружие")
IGS("KAC PDW", "tacrp_pdw"):SetWeapon("tacrp_pdw")
:SetPrice(1000)
:SetTerm(45)
:SetDescription("Данное оружие является трофейным оружием, также не забудьте прочесть правила донат вооружения. При оплате напрямую в дискорде будет скидка 20%")
:SetIcon("https://i.yapx.ru/dMq2U.png", false)
:SetCategory("Трофейное Оружие")
IGS("HK417", "tacrp_hk417"):SetWeapon("tacrp_hk417")
:SetPrice(500)
:SetTerm(45)
:SetDescription("Данное оружие является трофейным оружием, также не забудьте прочесть правила донат вооружения. При оплате напрямую в дискорде будет скидка 20%")
:SetIcon("https://i.yapx.ru/dMq2U.png", false)
:SetCategory("Трофейное Оружие")
IGS("SCAR H SSR", "tacrp_io_scarh"):SetWeapon("tacrp_io_scarh")
:SetPrice(1200)
:SetTerm(45)
:SetDescription("Данное оружие является трофейным оружием, также не забудьте прочесть правила донат вооружения. При оплате напрямую в дискорде будет скидка 20%")
:SetIcon("https://i.yapx.ru/dMq2U.png", false)
:SetCategory("Трофейное Оружие")
IGS("HK MG4", "tacrp_mg4"):SetWeapon("tacrp_mg4")
:SetPrice(900)
:SetTerm(45)
:SetDescription("Данное оружие является трофейным оружием, также не забудьте прочесть правила донат вооружения. При оплате напрямую в дискорде будет скидка 20%")
:SetIcon("https://i.yapx.ru/dMq2U.png", false)
:SetCategory("Трофейное Оружие")
IGS("HK MK8 LMG", "tacrp_io_xm8lmg"):SetWeapon("tacrp_io_xm8lmg")
:SetPrice(900)
:SetTerm(45)
:SetDescription("Данное оружие является трофейным оружием, также не забудьте прочесть правила донат вооружения. При оплате напрямую в дискорде будет скидка 20%")
:SetIcon("https://i.yapx.ru/dMq2U.png", false)
:SetCategory("Трофейное Оружие")
IGS("KRISS Vector", "tacrp_superv"):SetWeapon("tacrp_superv")
:SetPrice(1000)
:SetTerm(45)
:SetDescription("Данное оружие является трофейным оружием, также не забудьте прочесть правила донат вооружения. При оплате напрямую в дискорде будет скидка 20%")
:SetIcon("https://i.yapx.ru/dMq2U.png", false)
:SetCategory("Трофейное Оружие")
IGS("AAC Honey Badger", "tacrp_sd_aac_hb"):SetWeapon("tacrp_sd_aac_hb")
:SetPrice(1500)
:SetTerm(45)
:SetDescription("Данное оружие является трофейным оружием, также не забудьте прочесть правила донат вооружения. При оплате напрямую в дискорде будет скидка 20%")
:SetIcon("https://i.yapx.ru/dMq2U.png", false)
:SetCategory("Трофейное Оружие")
IGS("AN-94", "tacrp_ak_an94"):SetWeapon("tacrp_ak_an94")
:SetPrice(1000)
:SetTerm(45)
:SetDescription("Данное оружие является трофейным оружием, также не забудьте прочесть правила донат вооружения. При оплате напрямую в дискорде будет скидка 20%")
:SetIcon("https://i.yapx.ru/dMq2U.png", false)
:SetCategory("Трофейное Оружие")
IGS("SIG SG 551", "tacrp_sg551"):SetWeapon("tacrp_sg551")
:SetPrice(800)
:SetTerm(45)
:SetDescription("Данное оружие является трофейным оружием, также не забудьте прочесть правила донат вооружения. При оплате напрямую в дискорде будет скидка 20%")
:SetIcon("https://i.yapx.ru/dMq2U.png", false)
:SetCategory("Трофейное Оружие")
IGS("SIG SG 550-2 SP", "tacrp_io_sg550r"):SetWeapon("tacrp_io_sg550r")
:SetPrice(1200)
:SetTerm(45)
:SetDescription("Данное оружие является трофейным оружием, также не забудьте прочесть правила донат вооружения. При оплате напрямую в дискорде будет скидка 20%")
:SetIcon("https://i.yapx.ru/dMq2U.png", false)
:SetCategory("Трофейное Оружие")
IGS("SIG SG 550-1 Sniper", "tacrp_io_sg550"):SetWeapon("tacrp_io_sg550")
:SetPrice(1500)
:SetTerm(45)
:SetDescription("Данное оружие является трофейным оружием, также не забудьте прочесть правила донат вооружения. При оплате напрямую в дискорде будет скидка 20%")
:SetIcon("https://i.yapx.ru/dMq2U.png", false)
:SetCategory("Трофейное Оружие")
IGS("HK XM8 Compact", "tacrp_io_xm8car"):SetWeapon("tacrp_io_xm8car")
:SetPrice(1500)
:SetTerm(45)
:SetDescription("Данное оружие является трофейным оружием, также не забудьте прочесть правила донат вооружения. При оплате напрямую в дискорде будет скидка 20%")
:SetIcon("https://i.yapx.ru/dMq2U.png", false)
:SetCategory("Трофейное Оружие")
IGS("HK SL8", "tacrp_io_sl8"):SetWeapon("tacrp_io_sl8")
:SetPrice(800)
:SetTerm(45)
:SetDescription("Данное оружие является трофейным оружием, также не забудьте прочесть правила донат вооружения. При оплате напрямую в дискорде будет скидка 20%")
:SetIcon("https://i.yapx.ru/dMq2U.png", false)
:SetCategory("Трофейное Оружие")
IGS("Desert Eagle", "tacrp_io_degala"):SetWeapon("tacrp_io_degala")
:SetPrice(500)
:SetTerm(45)
:SetDescription("Данное оружие является трофейным оружием, также не забудьте прочесть правила донат вооружения. При оплате напрямую в дискорде будет скидка 20%")
:SetIcon("https://i.yapx.ru/dMq2U.png", false)
:SetCategory("Трофейное Оружие")
IGS("FN Five-seveN", "tacrp_io_fiveseven"):SetWeapon("tacrp_io_fiveseven")
:SetPrice(250)
:SetTerm(45)
:SetDescription("Данное оружие является трофейным оружием, также не забудьте прочесть правила донат вооружения. При оплате напрямую в дискорде будет скидка 20%")
:SetIcon("https://i.yapx.ru/dMq2U.png", false)
:SetCategory("Трофейное Оружие")
IGS("Manurhin MR96", "tacrp_mr96"):SetWeapon("tacrp_mr96")
:SetPrice(700)
:SetTerm(45)
:SetDescription("Данное оружие является трофейным оружием, также не забудьте прочесть правила донат вооружения. При оплате напрямую в дискорде будет скидка 20%")
:SetIcon("https://i.yapx.ru/dMq2U.png", false)
:SetCategory("Трофейное Оружие")
IGS("Крюк Кошка", "weapon_rope_knife"):SetWeapon("weapon_rope_knife")
:SetPrice(350)
:SetTerm(45)
:SetDescription("Данное оружие является трофейным оружием, также не забудьте прочесть правила донат вооружения. При оплате напрямую в дискорде будет скидка 20%")
:SetIcon("https://i.yapx.ru/dMq2U.png", false)
:SetCategory("Трофейное Оружие")
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
IGS("Починка транспорта", "repcar"):SetWeapon("weapon_lvsrepair")
:SetPrice(300)
:SetTerm(30)
:SetDescription("Починка транспорта")
:SetIcon("https://i.yapx.ru/dMq2U.png", false)
:SetCategory("РП Предметы")
IGS("Сигаретка", "sigareta"):SetWeapon("weapon_cigarette_camel")
:SetPrice(150)
:SetTerm(30)
:SetDescription("Сигаретка")
:SetIcon("https://i.yapx.ru/dMq2U.png", false)
:SetCategory("РП Предметы")
IGS("Гитара ", "guitar"):SetWeapon("guitar")
:SetPrice(250)
:SetTerm(30)
:SetDescription("Гитара, для атмосферы")
:SetIcon("https://i.yapx.ru/dMq2U.png", false)
:SetCategory("РП Предметы")
IGS("Наручники", "weapon_cuff_elastic"):SetWeapon("weapon_cuff_elastic")
:SetPrice(300)
:SetTerm(30)
:SetDescription("Наручники не знаю зачем они тебе, но юзай ток по назначению")
:SetIcon("https://i.yapx.ru/dMq2U.png", false)
:SetCategory("РП Предметы")
IGS("Аптечка", "fas2_ifak"):SetWeapon("fas2_ifak")
:SetPrice(500)
:SetTerm(30)
:SetDescription("Наручники не знаю зачем они тебе, но юзай ток по назначению")
:SetIcon("https://i.yapx.ru/dMq2U.png", false)
:SetCategory("РП Предметы")
IGS("Камера", "cam"):SetWeapon("gmod_camera")
:SetPrice(50)
:SetPerma(0)
:SetDescription("Камера для создания красивых скриншотов")
:SetIcon("https://i.yapx.ru/dMq2U.png", false)
:SetCategory("РП Предметы")
IGS("Боди-камера", "bodycam_tablet"):SetWeapon("bodycam_tablet")
:SetPrice(500)
:SetPerma(30)
:SetDescription("Камера за слежкой за бойцами")
:SetIcon("https://i.yapx.ru/dMq2U.png", false)
:SetCategory("РП Предметы")
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
IGS("Premium на месяц", "vip_na_mesyac3"):SetSAMGroup("prem")
:SetPrice(450)
:SetTerm(30)
:SetCategory("Группы на месяц")
:SetDescription("Вся информация в нашем ДС")
:SetIcon("https://i.yapx.ru/dMq2U.png")
IGS("Sponsor на месяц", "sponsor_na_mesyac5"):SetSAMGroup("sponsor")
:SetPrice(1300)
:SetTerm(30)
:SetCategory("Группы на месяц")
:SetDescription("С этой покупкой вы получите так же как и спонсор но в добавок к этому Участвовать в ЗБТ и приватных голосованиях, игнорирование жалоб, особую привелегию на сервере и в дискорде. При оплате напрямую в дискорде будет скидка 20%")
:SetIcon("https://i.yapx.ru/dMq2U.png")
IGS("Перевод в любое подразделение", "perevod")
:SetPrice(1)
:SetPerma(0)
:SetCategory("Профессии")
:SetDescription("ДЛЯ ПОКУПКИ ОБРАТИТЕСЬ В ДОНАТ ТИКЕТ В НАШЕМ ДС !!!")
:SetIcon("https://i.yapx.ru/dMq2U.png")
IGS("Личная профессия", "lichaprof")
:SetPrice(1)
:SetPerma(0)
:SetCategory("Профессии")
:SetDescription("Перед покупкой откройте тикет в ДС !!!! Личная профессия предназначена только для одного человека. При покупке вам предоставляется выбор между двумя профессиями: пилот или танкист (на стороне конфликта, за которую вы играете). Никто не продаст вам танки, вертолеты и прочее для вашей личной профессии.")
:SetIcon("https://i.yapx.ru/dMq2U.png")
IGS("Говорилка", "govorilka")
:SetPrice(350)
:SetTerm(30)
--[[
IGS("Отмычка", "otmichka") -- второй параметр не должен(!) повторяться с другими предметами
:SetPrice(1) -- 1 рубль
-- 0 - одноразовое (Т.е. купил, выполнилось OnActivate и забыл. Полезно для валюты)
-- 30 - месяц, 7 - неделя и т.д. :SetPerma() - навсегда
:SetTerm(30)
:SetDarkRPItem("lockpick") -- реальный класс энтити
:SetDescription("Разрешает вам покупать отмычку") -- описание
:SetCategory("Оружие") -- категория
-- квадратная ИКОНКА (Не обязательно). Отобразится на главной странице. Может быть с прозрачностью
:SetIcon("http://i.imgur.com/4zfVs9s.png")
-- БАННЕР 1000х400 (Не обязательно). Отобразится в подробностях итема
:SetImage("http://i.imgur.com/RqsP5nP.png")
--]]
--[[-------------------------------------------------------------------------
Доступ к энтити, оружию и машинам через спавнменю
---------------------------------------------------------------------------]]
--[[IGS("Cheytac m200", "tfa_ins2_warface_cheytac_m200"):SetWeapon("tfa_ins2_warface_cheytac_m200")
:SetPrice(1500)
:SetTerm(30)
:SetDescription("Данное оружие является трофейным оружием, также не забудьте прочесть правила донат воружения")
:SetIcon("https://i.postimg.cc/CxHrpmR1/ftava.jpg", false)
:SetCategory("Оружие на месяц")
IGS("aks tactical", "tfa_ins2_aks_r"):SetWeapon("tfa_ins2_aks_r")
:SetPrice(1200)
:SetTerm(30)
:SetDescription("Данное оружие является трофейным оружием, также не забудьте прочесть правила донат воружения")
:SetIcon("https://i.postimg.cc/CxHrpmR1/ftava.jpg", false)
:SetCategory("Оружие на месяц")
IGS("ksvk 12.7", "tfa_blast_ksvk_cqb"):SetWeapon("tfa_blast_ksvk_cqb")
:SetPrice(1500)
:SetTerm(30)
:SetDescription("Данное оружие является трофейным оружием, также не забудьте прочесть правила донат воружения")
:SetIcon("https://i.postimg.cc/CxHrpmR1/ftava.jpg", false)
:SetCategory("Оружие на месяц")
IGS("ak12", "tfa_inss_wpn_ak12"):SetWeapon("tfa_inss_wpn_ak12")
:SetPrice(1100)
:SetTerm(30)
:SetDescription("Данное оружие является трофейным оружием, также не забудьте прочесть правила донат воружения")
:SetIcon("https://i.postimg.cc/CxHrpmR1/ftava.jpg", false)
:SetCategory("Оружие на месяц")
IGS("mk18 mod", "tfa_new_inss_mk18"):SetWeapon("tfa_new_inss_mk18")
:SetPrice(1500)
:SetTerm(30)
:SetDescription("Данное оружие является трофейным оружием, также не забудьте прочесть правила донат воружения")
:SetIcon("https://i.postimg.cc/CxHrpmR1/ftava.jpg", false)
:SetCategory("Оружие на месяц")
IGS("m16a4", "tfa_inss_wpn_m16a4"):SetWeapon("tfa_inss_wpn_m16a4")
:SetPrice(1000)
:SetTerm(30)
:SetDescription("Данное оружие является трофейным оружием, также не забудьте прочесть правила донат воружения")
:SetIcon("https://i.postimg.cc/CxHrpmR1/ftava.jpg", false)
:SetCategory("Оружие на месяц")
IGS("mugpul", "tfa_ins2_moe_akm"):SetWeapon("tfa_ins2_moe_akm")
:SetPrice(1000)
:SetTerm(30)
:SetDescription("Данное оружие является трофейным оружием, также не забудьте прочесть правила донат воружения")
:SetIcon("https://i.postimg.cc/CxHrpmR1/ftava.jpg", false)
:SetCategory("Оружие на месяц")
IGS("FN FAL", "tfa_inss_wpn_fn_fal"):SetWeapon("tfa_inss_wpn_fn_fal")
:SetPrice(1000)
:SetTerm(30)
:SetDescription("Данное оружие является трофейным оружием, также не забудьте прочесть правила донат воружения")
:SetIcon("https://i.postimg.cc/CxHrpmR1/ftava.jpg", false)
:SetCategory("Оружие на месяц")
IGS("l1a1", "tfa_inss_wpn_l1a1"):SetWeapon("tfa_inss_wpn_l1a1")
:SetPrice(1000)
:SetTerm(30)
:SetDescription("Данное оружие является трофейным оружием, также не забудьте прочесть правила донат воружения")
:SetIcon("https://i.postimg.cc/CxHrpmR1/ftava.jpg", false)
:SetCategory("Оружие на месяц")
---------------------------------------------------------------------------------------------------------------------------
-- IGS("Cheytac m200", "tfa_mw_om50_2"):SetWeapon("tfa_ins2_warface_cheytac_m200")
-- :SetPrice(4500)
-- :SetTerm(181)
-- :SetHidden()
-- :SetDescription("Данное оружие является трофейным оружием, также не забудьте прочесть правила донат воружения")
-- :SetIcon("https://i.postimg.cc/CxHrpmR1/ftava.jpg", false)
-- :SetCategory("Оружие на полгода")
---------------------------------------------------------------------------------------------------------------------------
IGS("Починка транспорта", "repcar"):SetWeapon("weapon_lvsrepair")
:SetPrice(250)
:SetTerm(30)
:SetDescription("Починка транспорта")
:SetIcon("https://i.postimg.cc/CxHrpmR1/ftava.jpg", false)
:SetCategory("РП Предметы")
IGS("Сигаретка", "sigareta"):SetWeapon("weapon_cigarette_camel")
:SetPrice(50)
:SetTerm(30)
:SetDescription("Сигаретка")
:SetIcon("https://i.postimg.cc/CxHrpmR1/ftava.jpg", false)
:SetCategory("РП Предметы")
IGS("Гитара ", "guitar"):SetWeapon("guitar")
:SetPrice(100)
:SetTerm(30)
:SetDescription("Гитара, для атмосферы")
:SetIcon("https://i.postimg.cc/CxHrpmR1/ftava.jpg", false)
:SetCategory("РП Предметы")
IGS("Наручники", "cuff"):SetWeapon("weapon_cuff_elastic")
:SetPrice(350)
:SetTerm(30)
:SetDescription("Наручники не знаю зачем они тебе, но юзай ток по назначению")
:SetIcon("https://i.postimg.cc/CxHrpmR1/ftava.jpg", false)
:SetCategory("РП Предметы")
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
IGS("Починка транспорта", "repcar22"):SetWeapon("weapon_lvsrepair")
:SetPrice(500)
:SetPerma()
:SetDescription("Починка транспорта")
:SetIcon("https://i.postimg.cc/CxHrpmR1/ftava.jpg", false)
:SetCategory("РП Предметы навсегда")
IGS("Сигаретка", "sigareta22"):SetWeapon("weapon_cigarette_camel")
:SetPrice(300)
:SetPerma()
:SetDescription("Сигаретка")
:SetIcon("https://i.postimg.cc/CxHrpmR1/ftava.jpg", false)
:SetCategory("РП Предметы навсегда")
IGS("Гитара", "gitara2"):SetWeapon("guitar")
:SetPrice(400)
:SetPerma()
:SetDescription("Гитара, для атмосферы")
:SetIcon("https://i.postimg.cc/CxHrpmR1/ftava.jpg", false)
:SetCategory("РП Предметы навсегда")
IGS("Наручники", "cuff2"):SetWeapon("weapon_cuff_elastic")
:SetPrice(550)
:SetPerma()
:SetDescription("Наручники не знаю зачем они тебе, но юзай ток по назначению")
:SetIcon("https://i.postimg.cc/CxHrpmR1/ftava.jpg", false)
:SetCategory("РП Предметы навсегда")
IGS("Админ на месяц", "premium_navsegda"):SetSAMGroup("dadmin")
:SetPrice(1000)
:SetTerm(30)
:SetCategory("Группы на месяц")
:SetDescription("С этой покупкой вы можете попробовать себя в роли админа.")
:SetIcon("https://i.postimg.cc/CxHrpmR1/ftava.jpg")
IGS("Админ на три месяца", "premium_navsegda_3"):SetSAMGroup("dadmin")
:SetPrice(1799)
:SetTerm(90)
:SetCategory("Группы на три месяца")
:SetDescription("С этой покупкой вы можете попробовать себя в роли админа.")
:SetIcon("https://i.postimg.cc/CxHrpmR1/ftava.jpg")
IGS("Админ на полгода", "premium_navsegda_6"):SetSAMGroup("dadmin")
:SetPrice(2600)
:SetTerm(181)
:SetCategory("Группы на полгода")
:SetDescription("С этой покупкой вы можете попробовать себя в роли админа.")
:SetIcon("https://i.postimg.cc/CxHrpmR1/ftava.jpg")
IGS("Админ навсегда", "premium_navsegda2"):SetSAMGroup("dadmin")
:SetPrice(2000)
:SetPerma()
:SetHidden()
:SetCategory("Группы навсегда")
:SetDescription("С этой покупкой вы можете попробовать себя в роли админа.")
:SetIcon("https://i.postimg.cc/CxHrpmR1/ftava.jpg")
IGS("Premium на месяц", "vip_na_mesyac3"):SetSAMGroup("prem")
:SetPrice(500)
:SetTerm(30)
:SetCategory("Группы на месяц")
:SetDescription("Вся информация в нашем ДС")
:SetIcon("https://i.postimg.cc/CxHrpmR1/ftava.jpg")
IGS("Premium на три месяца", "vip_na_mesyac_51"):SetSAMGroup("prem")
:SetPrice(850)
:SetTerm(90)
:SetCategory("Группы на три месяца")
:SetDescription("Вся информация в нашем ДС")
:SetIcon("https://i.postimg.cc/CxHrpmR1/ftava.jpg")
IGS("Premium на полгода", "vip_na_mesyac_61"):SetSAMGroup("prem")
:SetPrice(1650)
:SetTerm(181)
:SetCategory("Группы на полгода")
:SetDescription("Вся информация в нашем ДС")
:SetIcon("https://i.postimg.cc/CxHrpmR1/ftava.jpg")
IGS("Premium навсегда", "vip_na_mesyac4"):SetSAMGroup("prem")
:SetPrice(2100)
:SetPerma()
:SetHidden()
:SetCategory("Группы навсегда")
:SetDescription("Вся информация в нашем ДС")
:SetIcon("https://i.postimg.cc/CxHrpmR1/ftava.jpg")
IGS("IL TRO", "mozartgroup")
:SetPrice(500)
:SetPerma()
:SetHidden()
:SetCategory("Готовые Профессии")
:SetDescription("После покупки, обратите внимание на то что вам нужно запросить роль в дс подразделений. И просмотреть информацию о вашем подразделение после чего вы сможете получить професию")
:SetIcon("https://i.postimg.cc/CxHrpmR1/ftava.jpg")
IGS("ДШРГ Русич", "wagner")
:SetPrice(500)
:SetPerma()
:SetHidden()
:SetCategory("Готовые Профессии")
:SetDescription("После покупки, обратите внимание на то что вам нужно запросить роль в дс подразделений. И просмотреть информацию о вашем подразделение после чего вы сможете получить професию")
:SetIcon("https://i.postimg.cc/CxHrpmR1/ftava.jpg")
IGS("Перевод в любое подразделение", "perevod")
:SetPrice(1)
:SetPerma()
:SetCategory("Профессии")
:SetDescription("ДЛЯ ПОКУПКИ ОБРАТИТЕСЬ В ДОНАТ ТИКЕТ В НАШЕМ ДС !!!")
:SetIcon("https://i.postimg.cc/CxHrpmR1/ftava.jpg")
IGS("Личная профессия", "lichaprof")
:SetPrice(1000)
:SetPerma()
:SetCategory("Профессии")
:SetDescription("Перед покупкой откройте тикет в ДС !!!! Личная профессия предназначена только для одного человека. При покупке вам предоставляется выбор между двумя профессиями: пилот или танкист (на стороне конфликта, за которую вы играете). Никто не продаст вам танки, вертолеты и прочее для вашей личной профессии.")
:SetIcon("https://i.postimg.cc/CxHrpmR1/ftava.jpg")
IGS("Sponsor на месяц", "sponsor_na_mesyac5"):SetSAMGroup("sponsor")
:SetPrice(2000)
:SetPerma()
:SetCategory("Группы на месяц")
:SetDescription("С этой покупкой вы получите так же как и спонсор но в добавок к этому Участвовать в ЗБТ и приватных голосованиях, игнорирование жалоб, особую привелегию на сервере и в дискорде")
:SetIcon("https://i.postimg.cc/CxHrpmR1/ftava.jpg")
IGS("Sponsor навсегда", "sponsor_navsegda6"):SetSAMGroup("sponsor")
:SetPrice(5000)
:SetPerma()
:SetCategory("Группы навсегда")
:SetDescription("С этой покупкой вы получите так же как и спонсор но в добавок к этому Участвовать в ЗБТ и приватных голосованиях, игнорирование жалоб, особую привелегию на сервере и в дискорде")
:SetIcon("https://i.postimg.cc/CxHrpmR1/ftava.jpg")]]
for _,ITEM in pairs(IGS.GetItems()) do
ITEM:SetDiscountedFrom(ITEM.price) -- бирочка о скидке
ITEM:SetPrice(ITEM.price * 0.9) -- скидка 0%
end

View File

@@ -0,0 +1,65 @@
--[[-------------------------------------------------------------------------
Цены в .Add указываются в рублях
---------------------------------------------------------------------------]]
-- Уровни сработают только, если не произойдет ошибки при пополнении счета
-- Правда я не представляю что нужно сделать, чтобы произошла ошибка (Не пришел сигнал PAY с автодоната)
IGS.LVL.Add(1, "Новичок")
:SetBonus(function(pl)
local bonus = pl:IGSFunds() * .1
pl:AddIGSFunds(bonus,"Бонус за первое пополнение")
IGS.Notify(pl,"Вы получили " .. PL_MONEY(bonus) .. "\nв качестве бонуса за первое пополнение счета")
end)
:SetDescription("При первом пополнении счета получите 10% в подарок автоматически и бесплатно") -- выше в catchDSHints еще
IGS.LVL.Add(100, "Стартанувший")
IGS.LVL.Add(500, "В теме")
IGS.LVL.Add(1000, "Бывалый")
:SetDescription("Позволяет получить уникальный статус \"Мегалодон\" на форуме")
IGS.LVL.Add(1500, "Вроде не бомж")
:SetDescription("Скоро новый бонус")
IGS.LVL.Add(2000, "Точно не бомж")
:SetDescription("Еще капельку и бонус. Следующий лвл")
IGS.LVL.Add(2500, "При деньгах")
:SetDescription("Бонус 20% на пополнение счета")
:SetBonus(function(pl)
local bonus = pl:IGSFunds() * .2 -- на самом деле бонус начислит на всю имеющуюся сумму, а не сумму пополнения. Так что ахтунг
pl:AddIGSFunds(bonus,"Бонус за 2500 руб транзакций")
IGS.Notify(pl,"Вы получили " .. PL_MONEY(bonus) .. "\nв качестве бонуса за новый бизнес ЛВЛ")
end)
IGS.LVL.Add(3000, "Щедрый")
:SetDescription("Премиум поддержка от правительства")
IGS.LVL.Add(4000, "Очень щедрый")
:SetDescription("На след. лвл новый бонус")
IGS.LVL.Add(5000, "Пиздец щедрый")
:SetDescription("Статус Убердон на форуме")
IGS.LVL.Add(6000, "Мажор")
:SetDescription("Предложение о сотрудничестве")
IGS.LVL.Add(7000, "Супермажик")
IGS.LVL.Add(8000, "Гипермажик")
IGS.LVL.Add(9000, "Убермажор")
IGS.LVL.Add(10000, "Миллионер")
:SetDescription("Премиум поддержка от основателя в любое время суток")
IGS.LVL.Add(12000, "МультиМиллионер")
IGS.LVL.Add(15000, "Миллиардер")
IGS.LVL.Add(20000, "МультиМиллиардер")
IGS.LVL.Add(25000, "Кыш с дороги")
IGS.LVL.Add(30000, "Сядь в лужу, я пройду")
IGS.LVL.Add(35000, "Я тебя куплю")
IGS.LVL.Add(40000, "Я куплю тебя и твою семью")
IGS.LVL.Add(50000, "Бог один и это Я")