Как сделать скидку на moder, если у игрока VIP

Как сделать скидку на следующую покупку если есть другая?
К примеру: Я вип, при покупке модера то у меня скидка размером випа.

Для этого нужен кое-какой новый функционал под видом “Функциональной цены”. Я до сих пор точно не знаю, как это правильно реализовать, чтобы никому ничего не сломать. Дело в том, что цена сейчас это просто число и оно статично, что позволяет сторонним интеграциям даже без объекта игрока посчитать цену на предмет. “Функциональная” цена уже будет требовать объект игрока для подсчета и некоторые скрипты, которые работают с ценами в текущем формате, например телеграм боты, могут сломаться.

Тем не менее, я все же планирую реализовать нечто подобное в виде. Возможно, на новой неделе займусь этим.

Пока что могу предложить сделать что-то типа кешбека для игроков, которые после випки покупают модерку, чтобы им вернулась стоимость випки.

Второй вариант - делать отдельное “меню апгрейда прав”, что в целом более правильно с фундаментальной точки зрения. Условно доступ к этому меню будет только у тех, у кого pl:HasPurchase(“group_vip”) и в этой менюшке на права для апгрейда будут другие цены

я думал над вторым вариантом, но мне не зашло. Хорошо спасибо что-то придумаю мб в будущем если сделаю напишу как.

1 лайк

В следующей версии будет возможность функционально изменять цену предмета и, возможно, заодно :SetDiscountedFrom без подобных костылей.

1 лайк

Ошибка, которую было допущено еще на первой версии продукта до сих пор мешала полноценно реализовать этот функционал с функциональным ITEM:GetPrice(pl)

Еще в 2020 году я уже сталкивался с этой проблемой, но за 2 года забыл о ней и вчера столкнулся вновь.

Дабы не тянуть кота за яйца, все, что связано с “курсом” донат валюты наконец будет удалено в следующем обновлении.

ITEM:Price() тоже планируется удалить, но следующие несколько версий он еще побудет. Он заменяется на ITEM.price, ITEM:GetPrice(pl) уже будет подсчитывать цену отдельно для конкретного игрока

Функциональная цена, как по мне, недостаточно веская причина для мажорного обновления, которое нужно делать вручную, поэтому я реализую еще несколько плюшек с доски задач, которые могут сломать какой-то скрипт части пользователей

Кстати, вот возможные кейсы применения будущей функциональной цены (тоже с доски задач)

  • Если у чела есть покупка А, то Б будет со скидкой
  • Купоны на скидку. Сразу setPrice return real, discounted_from
  • В зависимости от дня недели или времени суток
  • Заранее заложенные скидки на праздники
  • Предмет, где цена растет с покупкой
  • Предмет, где цена растет по часам
  • Цена на основе Score
  • Например, первая покупка выдает игроку модельку при спавне, а вторая уже стоит 0 рублей и будет отключать старую модельку (как бы оверрайд)
1 лайк

Предварительные изменения

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 и инструкцию по обновлению

2 лайка

Обновил как написано в чейнджлоге и каждый рестарт пишет

IGS Найдено новое soft обновление. Текущая версия, новая:       221122  221122

Еще после этого текст есть? Пофикшу

IGS Поиск обновлений
IGS Major обновлений нет
IGS Найдено новое soft обновление. Текущая версия, новая:       221122  221122
IGS Обновление загружено. Перезагрузите сервер для применения

Кстати, пофиксил, но еще не залил на git

1 лайк