Как сделать скидку на следующую покупку если есть другая?
К примеру: Я вип, при покупке модера то у меня скидка размером випа.
Для этого нужен кое-какой новый функционал под видом “Функциональной цены”. Я до сих пор точно не знаю, как это правильно реализовать, чтобы никому ничего не сломать. Дело в том, что цена сейчас это просто число и оно статично, что позволяет сторонним интеграциям даже без объекта игрока посчитать цену на предмет. “Функциональная” цена уже будет требовать объект игрока для подсчета и некоторые скрипты, которые работают с ценами в текущем формате, например телеграм боты, могут сломаться.
Тем не менее, я все же планирую реализовать нечто подобное в виде. Возможно, на новой неделе займусь этим.
Пока что могу предложить сделать что-то типа кешбека для игроков, которые после випки покупают модерку, чтобы им вернулась стоимость випки.
Второй вариант - делать отдельное “меню апгрейда прав”, что в целом более правильно с фундаментальной точки зрения. Условно доступ к этому меню будет только у тех, у кого pl:HasPurchase(“group_vip”) и в этой менюшке на права для апгрейда будут другие цены
я думал над вторым вариантом, но мне не зашло. Хорошо спасибо что-то придумаю мб в будущем если сделаю напишу как.
В следующей версии будет возможность функционально изменять цену предмета и, возможно, заодно :SetDiscountedFrom без подобных костылей.
Ошибка, которую было допущено еще на первой версии продукта до сих пор мешала полноценно реализовать этот функционал с функциональным ITEM:GetPrice(pl)
Еще в 2020 году я уже сталкивался с этой проблемой, но за 2 года забыл о ней и вчера столкнулся вновь.
Дабы не тянуть кота за яйца, все, что связано с “курсом” донат валюты наконец будет удалено в следующем обновлении.
ITEM:Price()
тоже планируется удалить, но следующие несколько версий он еще побудет. Он заменяется на ITEM.price, ITEM:GetPrice(pl) уже будет подсчитывать цену отдельно для конкретного игрока
Функциональная цена, как по мне, недостаточно веская причина для мажорного обновления, которое нужно делать вручную, поэтому я реализую еще несколько плюшек с доски задач, которые могут сломать какой-то скрипт части пользователей
Кстати, вот возможные кейсы применения будущей функциональной цены (тоже с доски задач)
- Если у чела есть покупка А, то Б будет со скидкой
- Купоны на скидку. Сразу setPrice return real, discounted_from
- В зависимости от дня недели или времени суток
- Заранее заложенные скидки на праздники
- Предмет, где цена растет с покупкой
- Предмет, где цена растет по часам
- Цена на основе Score
- Например, первая покупка выдает игроку модельку при спавне, а вторая уже стоит 0 рублей и будет отключать старую модельку (как бы оверрайд)
Предварительные изменения
19 файлов изменено
Добавлено:
- ITEM:SetGetPrice(func)
- ITEM:GetPrice(pl)
- Клиентский хук IGS.ServersLoaded (был только серверный)
Удалены:
- IGS.RealPrice(am)
- ITEM:PriceInCurrency()
- IGS.PriceInCurrency(am)
- IGS.IsCurrencyEnabled()
- IGS.GetCurrencyPrice()
- С конфига IGS.C.CURRENCY_NAME
- С конфига IGS.C.AboutCurrencyText
- хук IGS.OnSettingsUpdated (Заменить на IGS.Loaded)
- IGS.UpdateMoneySettings(iMinCharge,iCurrencyPrice)
- nw var igs_settings
- cl IGS.WIN.AboutCurrency(bHideClose)
Изменены:
- IGS.FormItemInfo. Вторым аргументом принимает игрока
Сделай пост об этом пожалуйста
И было бы классно если бы написал что на что менять по типу
PL_IGS => PL_MONEY
пост о чем? Обновления еще нет. Больше ничего, кроме PL_IGS => PL_MONEY и ITEM:Price() > ITEM.price менять не нужно
Да в целом об обновлениях думаю это было бы полезно для тех кто не заходит на гит
Когда будет обновление, тогда и будет пост
Пишу changelog и инструкцию по обновлению
Обновил как написано в чейнджлоге и каждый рестарт пишет
IGS Найдено новое soft обновление. Текущая версия, новая: 221122 221122
Еще после этого текст есть? Пофикшу
IGS Поиск обновлений
IGS Major обновлений нет
IGS Найдено новое soft обновление. Текущая версия, новая: 221122 221122
IGS Обновление загружено. Перезагрузите сервер для применения
Кстати, пофиксил, но еще не залил на git