[IGS] :SetGetPrice(func)

Здравствуйте, жители форума gm-donate! У меня возник вопрос с функцией :SetGetPrice(func) от этого прекрасного автодоната. Можете привести пример использование сией функции?

Привет. Эта функция пока что включена только в dev версию IGS (не в релизе). Чтобы ее установить – нужно закинуть igs-core в addons.

С таким способом установки автоматические обновления не будут работать и не будет оказываться бесплатная поддержка по аддону (потому что нам трудно понять какая dev версия установлена у того или иного юзера), поэтому рекомендую все же дождаться релизной версии IGS

В любом случае ты можешь скачать igs-core в addons, потестить и сообщить, все ли работает у тебя и ничего ли не сломалось. Если все хорошо – я постараюсь выпустить релиз сегодня вечером - завтра

Пример использования (я тестил снизу sh_additems.lua файла)

for _,ITEM in pairs( IGS.GetItems() ) do
	ITEM:SetGetPrice(function(pl)
		if pl == player.GetBySteamID("string steamID") then
			ITEM:SetDiscountedFrom(ITEM.price)
			return ITEM.price * 0.1
		end
	end)
end

Код делал скидку 10% на все предметы для одного игрока

Спасибо, значит оно работает как я и хотел. Теперь смогу сделать скидку на привилегии если у тебя была привилегия ниже

А можешь скинуть такой код? Если не против конечно

Если я правильно понял, то должно выглядеть примерно вот так

IGS("vip", "vip"):SetULXGroup("vip")
 	:SetPrice(100)
 	:SetTerm(30)
 	:SetCategory("Группы")

 IGS("moderator", "moderator"):SetULXGroup("moderator")
 	:SetPrice(150)
 	:SetGetPrice(function(pl)
		if pl:HasPurchase("vip") then -- проверка есть ли у нас привилегия ниже(в моем случае vip)
			ITEM:SetDiscountedFrom(ITEM.price)
			return ITEM.price * 0.5 -- делаем скидку 50%
		end
	end)
 	:SetTerm(30)
 	:SetCategory("Группы")

В моек конкретном случае я же правильно все сделал?

IGS("vip", "vip"):SetULXGroup("vip")
 	:SetPrice(100)
 	:SetTerm(30)
 	:SetCategory("Группы")

 IGS("moderator", "moderator"):SetULXGroup("moderator")
 	:SetPrice(150)
 	:SetGetPrice(function(pl)
		if pl:HasPurchase("vip") then -- проверка есть ли у нас привилегия ниже(в моем случае vip)
			ITEM:SetDiscountedFrom(ITEM.price)
			return ITEM.price * 0.5 -- делаем скидку 50%
		end
	end)
 	:SetTerm(30)
 	:SetCategory("Группы")

На первый взгляд, правильно

Отмена. Не ворк

[igs-modification] addons/igs-modification/lua/igs/settings/sh_additems.lua:10: attempt to index global 'ITEM' (a nil value)
  1. getprice - addons/igs-modification/lua/igs/settings/sh_additems.lua:10
   2. GetPrice - addons/igs-core/lua/igs/objects/shop_item.lua:64
    3. IGS_Purchase - addons/igs-core/lua/igs/network/net_sv.lua:62
     4. fCallback - addons/igs-core/lua/igs/network/net_sv.lua:109
      5. func - addons/igs-core/lua/igs/network/net_sv.lua:49
       6. unknown - lua/includes/extensions/net.lua:33

Открой этот файл и найди в нем STORE_ITEM:GetPrice(pl), затем допиши в нее self вот так:

Я включу эти изменения в релизную версию IGS

После того, как сделаешь это, отредактируй код предмета до вот такого:

IGS("vip", "vip"):SetULXGroup("vip")
 	:SetPrice(100)
 	:SetTerm(30)
 	:SetCategory("Группы")

 IGS("moderator", "moderator"):SetULXGroup("moderator")
 	:SetPrice(150)
 	:SetGetPrice(function(pl, ITEM)
		if pl:HasPurchase("vip") then -- проверка есть ли у нас привилегия ниже(в моем случае vip)
			ITEM:SetDiscountedFrom(ITEM.price)
			return ITEM.price * 0.5 -- делаем скидку 50%
		end
	end)
 	:SetTerm(30)
 	:SetCategory("Группы")