Всем ку, хочу сделать чтобы определённый предмет можно было покупать лишь один раз, а потом он исчезал из донат меню для того, кто его купил. Раньше уже делал так, в офф документации на гитхабе увидел способ, но сейчас уже забыл, да и документацию не знаю где найти, помогите пожалуйста!
Подобным образом делают тестовые випки, но они не исчезают после покупки, а просто становятся недоступными для повторного использования
Пример:
IGS("Тестовая VIP", "vip_test", 0)
:SetDescription("Тестовая випка на 7 дней")
:SetMaxPlayerPurchases(1)
:SetTerm(7)
Немного объяснения от @W1skarik:
:SetTerm(1) -- донат на один день
:SetMaxGlobalPurchases(iMax) --[[Делает лимитированный предмет.
После максимального числа покупок он скроется с /donate меню ]]
:SetMaxPlayerPurchases(num) (пример 6)
--[[
Устанавливает максимальное количество покупок услуги для игрока.
При SetMaxPlayerPurchases(1) игрок сможет купить эту услугу только один раз,
что полезно для тестовых випок
]]
Спасибо, мне как раз для тестовой випки нужно было)))
Подскажите, как сделать бесплатный вип на месяц по команде !vip на 30 дней. Буду очень благодарен :3
Нужно создать VIP на месяц, примерно как описано ниже.
IGS("VIP месяц","vip_na_mesyac"):SetULXGroup("vip")
:SetPrice(70)
:SetTerm(30) -- 30 дней
:SetCategory("Группы")
:SetDescription("Описание")
:SetMaxPlayerPurchases(1) -- это делает, чтобы игрок мог купить эту услугу только 1 раз за все время
Дальше в файле addons/igs-modification/lua/autorun/server/test_vip.lua
hook.Add("PlayerSay", "test_vip", function(pl, str)
if str == "!vip" and not pl.test_vip and not pl:IsUserGroup("vip") then
pl.test_vip = true
IGS.PlayerActivateItem(pl, "vip_na_mesyac") -- тут важно указать тот же UID, что у випки на 30 дней
IGS.Notify(pl, "Вы активировали VIP на 30 дней")
return ""
end
end)
У кода команды !vip выше есть изъян. Игрок в теории через 30 дней сможет снова активировать випку, так как в самой команде нет проверки, активировалась ли услуга ранее. Если нужно будет исправление – напишите
Возможно это работает лучше
if SERVER then
hook.Add("PlayerSay", "VidachaPlatinum", function(ply, text)
if text == "!vip" then
if ply:GetUserGroup() == "user" then
if file.Exists("free_vips/" .. ply:SteamID64() .. ".txt", "DATA") == true then return "" end
file.CreateDir("free_vips")
local date = os.time() + 172800
file.Write("free_vips/" .. ply:SteamID64() .. ".txt", date)
RunConsoleCommand("sam", "setrank", ply:Name(), "vip", "1440", "user")
ply:ChatPrint("Вы получили VIP на 24 часа!")
return ""
else
ply:ChatPrint("У вас уже есть привилегия!")
return ""
end
end
end)
end
для sam можно пожалуйста код?
Просто измени код создания випки на что-то подобное, не меняя ее айди. Все остальное менять не надо [SAM] Как продавать донат группы