Skip to content

Commit

Permalink
🆕 ITEM:SetCanSee(), ITEM:CanSee
Browse files Browse the repository at this point in the history
Замена метода SetHidden и IsHidden на функциональный SetCanSee. Идея отсюда: https://forum.gm-donate.net/t/kak-sdelat-proverku-chtoby-pokazyvalo-predmet-tolko-esli-u-tebya-kuplen-nuzhnyj-predmet/6060
  • Loading branch information
AMD-NICK committed Mar 8, 2024
1 parent ac82b8a commit 7cf9a5f
Show file tree
Hide file tree
Showing 7 changed files with 36 additions and 11 deletions.
4 changes: 2 additions & 2 deletions addons/igs-core/lua/igs/interface/activities/main.lua
Expand Up @@ -70,7 +70,7 @@ hook.Add("IGS.CatchActivities","main",function(activity,sidebar)

local check_skip = function(ITEM)
return ITEM.isnull -- пустышка
or ITEM.hidden -- еще в IGS.WIN.Group
or (not ITEM:CanSee( LocalPlayer() )) -- еще в IGS.WIN.Group
or ITEM:Group() -- группированные итемы засунуты в группу выше
or (fItemsFilter and fItemsFilter(ITEM) == false)
end
Expand Down Expand Up @@ -99,7 +99,7 @@ hook.Add("IGS.CatchActivities","main",function(activity,sidebar)
--[[-------------------------------------------------------------------------
Теги (Быстрый выбор категории)
---------------------------------------------------------------------------]]
bg.tags:AddTag("Сброс фильтров",function() bg.categs:Clear() addItems() end)
bg.tags:AddTag("Сброс фильтров", function() bg.categs:Clear() addItems() end)
:SetActive(true)
for categ in pairs(cats) do
Expand Down
2 changes: 1 addition & 1 deletion addons/igs-core/lua/igs/interface/activities/purchases.lua
Expand Up @@ -44,7 +44,7 @@ hook.Add("IGS.CatchActivities","purchases",function(activity,sidebar)
while true do
local random_ITEM = table.Random(IGS.GetItems())
if not random_ITEM:IsHidden() then
if random_ITEM:CanSee( LocalPlayer() ) then
IGS.WIN.Item(random_ITEM:UID())
break
end
Expand Down
2 changes: 1 addition & 1 deletion addons/igs-core/lua/igs/interface/vgui/igs_group.lua
Expand Up @@ -14,7 +14,7 @@ function PANEL:SetGroup(ITEM_GROUP)

local visible_items = {}
for _,GROUP_ITEM in ipairs(ITEM_GROUP:Items()) do
if not GROUP_ITEM.item:IsHidden() then
if GROUP_ITEM.item:CanSee( LocalPlayer() ) then
table.insert(visible_items, GROUP_ITEM)
end
end
Expand Down
Expand Up @@ -41,7 +41,7 @@ function IGS.WIN.Group(sGroupUID)
bg.scroll:AddItem( getSpacePanel() ) -- из-за паддинга #1
for _,v in pairs(GROUP:Items()) do
local ITEM = v.item
if not v.item:IsHidden() then -- еще в main_cl
if v.item:CanSee( LocalPlayer() ) then -- еще в main_cl
bg:AddIGSItem(ITEM, v.name)
end
end
Expand Down
2 changes: 1 addition & 1 deletion addons/igs-core/lua/igs/network/net_sv.lua
Expand Up @@ -62,7 +62,7 @@ local function IGS_Purchase(pl, uid, cb)
local price = ITEM:GetPrice(pl)
local err =
ITEM:IsHidden() and "Как вы меня нашли?"
not ITEM:CanSee( pl ) and "Как вы меня нашли?"
or not IGS.CanAfford(pl, price) and ("Для покупки нужно " .. PL_MONEY(price))
or IGS.IsInventoryOverloaded(pl) and "У вас перегруз в донат инвентаре. А еще вы один из немногих, кто видел это!"
or pl.igs_unfinished_purchase and "Запрос на покупку в процессе. Подождите, пожалуйста" -- в цикле с клиента вызов функции покупки
Expand Down
24 changes: 21 additions & 3 deletions addons/igs-core/lua/igs/objects/shop_item.lua
Expand Up @@ -146,14 +146,31 @@ function STORE_ITEM:IMG()
return self.image_url
end
function STORE_ITEM:SetCanSee(func_or_bool)
return set(self, "cansee", func_or_bool)
end
function STORE_ITEM:CanSee(pl)
if self.cansee ~= nil then
if type(self.cansee) == "boolean" then
return self.cansee
end
return self.cansee(pl) ~= false
end
return true
end
-- Нельзя купить, но можно активировать с инвентаря.
-- Полезно, чтобы "удалять" ненужные, но еще активные у людей итемы
-- Полезно, чтобы "удалять" ненужные, но еще активные у людей итемы.
-- #deprecated. Use SetCanSee instead
function STORE_ITEM:SetHidden(b)
return set(self,"hidden",b ~= false)
return self:SetCanSee(function() return b ~= false end)
end
-- #depecated
function STORE_ITEM:IsHidden()
return self.hidden
print("[IGS] ФУНКЦИЯ ITEM:IsHidden() УСТАРЕЛА. ИСПОЛЬЗУЙТЕ ITEM:CanSee(pl)")
return self:CanSee(CLIENT and LocalPlayer())
end
-- Для удобной установки метаданных итему вместо ITEM.key = val (полезно внутри функций, типа GROUP:Add(ITEM))
Expand Down Expand Up @@ -387,6 +404,7 @@ local null = IGS.Item("null", "null"):SetPrice(0)
:SetImage("http://i.imgur.com/32iTOFi.jpg")
:SetCanBuy(function() return "Этого предмета на сервере нет. Как вы нашли его?" end)
:SetCanActivate(function() return "Этого предмета на сервере нет. Можете уничтожить его" end) -- например купил в инвентарь, а потом uid сменился
:SetCanSee(false) -- чтобы не отображался в магазине
null.isnull = true -- для проверки во время активации
null.id = 0 -- на всякий
Expand Down
11 changes: 9 additions & 2 deletions addons/igs-modification/lua/igs/settings/sh_additems.lua
Expand Up @@ -11,7 +11,8 @@
:SetHighlightColor() --> Цвет заголовка
:SetDiscountedFrom() --> Скидка
:SetOnActivate() --> Свое действие при активации
:SetHidden() --> Скрытый предмет
:SetCanSee(false) --> Скрытый предмет
:SetCanSee(function(pl) return pl:HasPurchase("vip") end) --> Альтернативное применение
Полезное:
gm-donate.net/docs --> Подробнее о методах и все остальные
Expand Down Expand Up @@ -43,6 +44,12 @@ IGS("Отмычка", "otmichka") -- второй параметр не долж
-- БАННЕР 1000х400 (Не обязательно). Отобразится в подробностях итема
:SetImage("http://i.imgur.com/RqsP5nP.png")
-- Этот предмет будут видеть только те, кто купил group_vip_30d. У group_vip_30d должен быть :SetNetworked(true)
:SetCanSee(function(pl) return pl:HasPurchase("group_vip_30d") end)
-- Для разработчиков. С этим методом :HasPurchase("uid") будет работать не только на SERVER, но и на CLIENT
:SetNetworked(true)
--]]
--[[-------------------------------------------------------------------------
Expand Down Expand Up @@ -84,7 +91,7 @@ IGS("Доступ к Лебёдке","lebedka_navsegda"):SetTool("winch")
local HEAL = IGS("Аптечка", "heal_10hp", 0)
:SetDescription("Добавляет вам 10 хп")
:SetStackable()
:SetHidden()
:SetCanSee(false) -- скрытый предмет (не отображается в магазине)
:SetOnActivate(function(pl) pl:SetHealth(pl:Health() + 10) end)
IGS("Набор аптечек", "heal_x5", 20)
Expand Down

0 comments on commit 7cf9a5f

Please sign in to comment.