Система личных скидок в магазине

Активный
Статус
Сообщения
516
Лайки
32

8

месяц на сайте

Идея и назначение

Игрок может иметь персональный процент скидки на покупки.

Подходит для поощрения донатеров, ветеранов и победителей ивентов.


Суть реализации

1. Храним процент скидки для игрока.

2. При покупке применяем формулу скидки к цене.

3. Команда /setdiscount задаёт скидку, /mydiscount показывает её.


Реализация

Код:
new PlayerDiscount[MAX_PLAYERS];


CMD:setdiscount(playerid, params[])
{
    new target, d;

    if(sscanf(params, "ui", target, d))
        return SendClientMessage(playerid, -1, "Используй: /setdiscount [id] [0-50].");

    if(!IsPlayerConnected(target))
        return SendClientMessage(playerid, -1, "Игрок не найден.");

    if(d < 0) d = 0;
    if(d > 50) d = 50;

    PlayerDiscount[target] = d;

    SendClientMessage(playerid, -1, "Скидка игроку установлена.");

    return 1;
}


CMD:mydiscount(playerid)
{
    new msg[64];

    format(msg, sizeof msg, "Твоя персональная скидка: %d%%.", PlayerDiscount[playerid]);
    SendClientMessage(playerid, -1, msg);

    return 1;
}


stock GetDiscountedPrice(playerid, baseprice)
{
    new d = PlayerDiscount[playerid];
    if(d <= 0) return baseprice;

    return baseprice - (baseprice * d / 100);
}


Дополнительные идеи

1. Делать временные скидки на праздники.

2. Привязать скидку к репутации игрока.

3. Показывать цену до и после скидки в диалогах.
 

0 человек читают эту тему (Всего: 0, Пользователей: 0, Гостей: 0)

Сверху