Делать цену предмета дешевле для тех, кто долго играет

Доброго времени суток, уважаемые жители форума, задаюсь вопросом, возможно ли сделать так, чтобы игрокам, которые играли уже продолжительное количество времени, например, 30 часов, то им дается скидка в 15% на услуги?

если через utime то в теории так:

hook.Add("PlayerInitialSpawn", "SaleForOlds", function(ply)

    local stariktime = ply:GetUTimeTotalTime()

    if stariktime >= 108000 then
        -- Применяем скидку ко всем предметам
        for _, ITEM in pairs(IGS.GetItems()) do
            ITEM:SetDiscountedFrom(ITEM.price) -- бирочка о скидке
            ITEM:SetPrice(ITEM.price * 0.6) -- скидка 40%
        end
    end
end)

но код не проверял, потестишь

1 лайк

Благодарю Вас. И вправду работает, чёт я протупил чутка

Не знаю, правильный ли это хук, поправь, если я ошибаюсь. @GMD

 local REQUIRED_TIME = (60 * 60) * 30

hook.Add("IGS.Loaded", "SaleForOlds", function()
	for _, ITEM in pairs(IGS.GetItems()) do
		ITEM:SetGetPrice(function(pl)
			local totalPlayedTime = pl:GetUTimeTotalTime()
			
			if totalPlayedTime > REQUIRED_TIME then
				local price = ITEM:Price()
				ITEM:SetDiscountedFrom(price)
				return math.Round(price * 0.6)
			end
		end)
	end
end)
1 лайк

image

По идее все правильно, но у челика снизу дичь происходит. Можешь проверить свой код?

Если будет рабочим, то добавь метку “связано с гмд”, “рекомендуем”, а еще сошлись с документации с метода SetGetPrice на эту тему.

П.С. Тему переименовал
П.П.С. Есть предположение, что оно там хочет math.Round у него

1 лайк

Исправил, можешь проверить

1 лайк

Всё работает теперь отлично, спасиб)

2 лайка