Система депозита

Добро пожаловать!

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

Зарегистрироваться!
  • Если Вы желаете помогать развитию проекта, готовы заполнять раздел(-ы) и подсказывать другим пользователям на портале, есть возможность попасть в команду редакторов. Для этого следует обратиться в техническую поддержку
Пользователь
Регистрация
21 Мар 2022
Сообщения
12
Всем здравствуйте! Выкладываю вам интересную систему депозита, на этот прекрасный портал. Сама система не очень сложна в импортирование в другие моды, по этому врезать в свой мод у вас не составит труда. Всем хорошего дня.
Код:
pPremium - заменяем на свою переменную випки (pVip, pVIP и т.д)
PI - заменяем на свое (pInfo, PlayerInfo, User и т.д)

Не забудьте объявить D_DEPOSIT, D_DEPOSIT_1 и т.д. По вашему желанию, можете их изменить
цифровым вариантом.

UpdatePlayerData - Обновление информации игрока, также изменяем под свой мод (Int_SetPlayerData, PlayerDataInt и т.д)

Переменные:
C++:
В enum про информацию о игроке. В мое случае это pInfo

pDeposit,
pLeftTime_Deposit[2],

C++:
case D_DEPOSIT:
{
        if(!response) return dialog_bank(playerid);
        new str_1[256];
        switch(listitem)
        {
            case 0:
            {
                str_1[0] = EOS;
                format(str_1, sizeof(str_1), "{FFCC00}Доступные средства на депозите: {33aa33}%d$\n{FFFF66}1.{FFFFFF} Пополнить депозит\n{FFFF66}2.{FFFFFF} Снять средства с депозита\n{FFFF66}3.{FFFFFF} Информация о процентных ставках", PI[playerid][pDeposit]);
                D(playerid, D_DEPOSIT, DIALOG_STYLE_LIST, "{FFFF66}Депозитный счёт", str_1, "Далее", "Назад");
                return 1;
            }
            case 1:
            {
                new current_time = gettime();
                if(PI[playerid][pLeftTime_Deposit][0] > current_time) return SendClientMessage(playerid, COLOR_WHITE, ""ORANGE"Извините, но Вы можете пополнять свой депозитный счёт только раз в сутки!");
                D(playerid, D_DEPOSIT_1, 1, "{FFFF66}Пополнение депозитного счёта", "{FFFFFF}Введите сумму, которую хотите положить на депозит", "Далее", "Назад");
            }
            case 2:
            {
                new current_time = gettime();
                if(PI[playerid][pLeftTime_Deposit][1] > current_time) return SendBotMessage(playerid, "Извините, но Вы можете снимать средства с депозитного счёта только раз в сутки!");
                D(playerid, D_DEPOSIT_3, 1, "{FFFF66}Снять деньги с депозитного счёта", "{FFFFFF}Введите сумму, которую хотите снять с депозита", "Далее", "Назад");
            }
            case 3:
            {
                new percent_info[14];
                switch(PI[playerid][pPremium])
                {
                    case 0: percent_info = "{99cc00}0.05%";
                    case 1: percent_info = "{ffcc00}0.1%";
                    case 2: percent_info = "{ff9900}0.5%";
                }
                str_1[0] = EOS;
                format(str_1,sizeof(str_1), "{ffffff}Ваша текущая ставка на депозитном счету: %s{FFFFFF}\n\nДля обычных клиентов: ставка 0.05%%\nДля обладателей {ff9900}VIP статуса{ffffff}: ставка 0.1%%\nДля обладателей {80CCFF}PREMIUM статуса{ffffff}: ставка 0.5%", percent_info);
                D(playerid, D_DEPOSIT_3, DIALOG_STYLE_MSGBOX, "{FFFF66}Информация о процентных ставках", str_1, "Закрыть", "Назад");
            } 
        }
    }
    case D_DEPOSIT_1:
    {
        if(!response) return DepositList(playerid);
        new price, string[128];
        if(sscanf(inputtext, "i", price)) return D(playerid, D_DEPOSIT_1, 1, "{FFFF66}Пополнение депозитного счёта", "{FFFFFF}Введите сумму, которую хотите положить на депозит", "Далее", "Назад");
        if(price < 1) return D(playerid, D_DEPOSIT_1, 1, "{FFFF66}Пополнение депозитного счёта", "{FFFFFF}Введите сумму, которую хотите положить на депозит", "Далее", "Назад");
        if(PI[playerid][pCash] < price)
        {
            D(playerid, D_DEPOSIT_1, 1, "{FFFF66}Пополнение депозитного счёта", "{FFFFFF}Введите сумму, которую хотите положить на депозит", "Далее", "Назад");
            return ErrorMessage(playerid, "У Вас недостаточно средств!");
        }
        if(PI[playerid][pPremium] < 2 && price + PI[playerid][pDeposit] > 10000000)
        {
            D(playerid, D_DEPOSIT_1, 1, "{FFFF66}Пополнение депозитного счёта", "{FFFFFF}Введите сумму, которую хотите положить на депозит", "Далее", "Назад");
            return ErrorMessage(playerid, "Вы не можете иметь на депозите более 10.000.000$, так как Вы не обладаете премиум статусом");
        }
        if(PI[playerid][pPremium] == 2 && price + PI[playerid][pDeposit] > 50000000)
        {
            D(playerid, D_DEPOSIT_1, 1, "{FFFF66}Пополнение депозитного счёта", "{FFFFFF}Введите сумму, которую хотите положить на депозит", "Далее", "Назад");
            return ErrorMessage(playerid, "Оуфф... Если Вы будете класть такие суммы, наш банк лопнет, извините!");
        }
        format(string, sizeof(string), "Вы успешно пополнили свой депозитный счёт на %d$", price);
        SCM(playerid, COLOR_GREEN, string);
        GiveMoney(playerid, -price, "");
        PI[playerid][pDeposit] += price;
        PI[playerid][pLeftTime_Deposit][0] = gettime() + 86400;
        UpdatePlayerData(playerid, "timedepos0", PI[playerid][pLeftTime_Deposit][0]);
        UpdatePlayerData(playerid, "deposit", PI[playerid][pDeposit]);
        SCM(playerid, COLOR_ORANGE, "Спасибо за Ваш визит, возвращайтесь завтра.");
    }
    case D_DEPOSIT_2:
    {
        if(!response) return DepositList(playerid);
    }
    case D_DEPOSIT_3:
    {
        if(!response) return DepositList(playerid);
        new price, string[128];
        if(sscanf(inputtext, "i", price)) return D(playerid, D_DEPOSIT_2, 1, "{FFFF66}Снять деньги с депозитного счёта", "{FFFFFF}Введите сумму, которую хотите снять с депозита", "Далее", "Назад");
        if(price < 1) return D(playerid, D_DEPOSIT_2, 1, "{FFFF66}Снять деньги с депозитного счёта", "{FFFFFF}Введите сумму, которую хотите снять с депозита", "Далее", "Назад");
        if(PI[playerid][pDeposit] < price)
        {
            D(playerid, D_DEPOSIT_2, 1, "{FFFF66}Снять деньги с депозитного счёта", "{FFFFFF}Введите сумму, которую хотите снять с депозита", "Далее", "Назад");
            return ErrorMessage(playerid, "На Вашем депозитному счету нет столько денежных средств!");
        }
        format(string,sizeof(string), "Вы успешно сняли с депозитного счёта %d$", price);
        SCM(playerid, COLOR_GREEN, string);
        GiveMoney(playerid, price, "");
        PI[playerid][pDeposit] -= price;
        PI[playerid][pLeftTime_Deposit][1] = gettime() + 86400;
        UpdatePlayerData(playerid, "timedepos1", PI[playerid][pLeftTime_Deposit][1]);
        UpdatePlayerData(playerid, "deposit", PI[playerid][pDeposit]);
        SCM(playerid, COLOR_ORANGE, "Спасибо за Ваш визит, возвращайтесь завтра.");
    }

Также добавить в PayDay:
C++:
if(PI[i][pPremium] == 2) percent = floatround((PI[i][pDeposit]/100)*(0.5));
else percent = floatround((PI[i][pDeposit]/100)*(0.1));
PI[i][pDeposit] += percent;
UpdatePlayerData(i, "deposit", PI[i][pDeposit]);

Добавте рядом с выводом баланса во-время PayDay
format(string, sizeof(string), "Депозитный счёт: "GREEN"%d$", PI[i][pDeposit]);
SendClientMessage(i, -1, string);

В загрузку аккаунта: (LoadAccount, Load_Account и т.д)
C++:
cache_get_value_name_int(0,"timedepos0", PI[playerid][pLeftTime_Deposit][0]); // timedepos0
cache_get_value_name_int(0,"timedepos1", PI[playerid][pLeftTime_Deposit][1]); // timedepos1
cache_get_value_name_int(0,"deposit", PI[playerid][pDeposit]); //deposit

В default (В моем случае это CallBack - to_default.)
C++:
PI[playerid][pLeftTime_Deposit][0]             = 0;
PI[playerid][pLeftTime_Deposit][1]             = 0;
PI[playerid][pDeposit]                         = 0;

Код:
Не забудьте добавить в базу данных в accounts - deposit, timedepos1, timedepos0

тип - int
Длина - 11
Default - 0

 
Последнее редактирование:
Создатель WayDev
Команда форума
Администратор
Регистрация
13 Мар 2022
Сообщения
886
Всё понятно расписано, но всё таки, не до конца расписал.
Например, люди могут не понять, что такое 'D', а это 'ShowPlayerDialog'. Так же и с ErrorMessage.

Приятно, что хоть кто-то написал систему депозита в моде Авроры :)
+rep.
 
Активный
Регистрация
21 Мар 2022
Сообщения
82
Всё понятно расписано, но всё таки, не до конца расписал.
Например, люди могут не понять, что такое 'D', а это 'ShowPlayerDialog'. Так же и с ErrorMessage.

Приятно, что хоть кто-то написал систему депозита в моде Авроры :)
+rep.
Ибо ты этого не делаешь :D
 
Заблокированный
Регистрация
20 Май 2022
Сообщения
122
ждём аврору 8.0 с системой депозитав :mad:
 
Пользователь
Регистрация
21 Мар 2022
Сообщения
12
Всё понятно расписано, но всё таки, не до конца расписал.
Например, люди могут не понять, что такое 'D', а это 'ShowPlayerDialog'. Так же и с ErrorMessage.

Приятно, что хоть кто-то написал систему депозита в моде Авроры :)
+rep.
Следующий раз буду обращать внимания на это. А так данный мод мне очень нравиться простотой своего кода. Мы ждем очень сильно Аврору 8.0
 
.NET software developer
Пользователь
Регистрация
20 Мар 2022
Сообщения
76
Следующий раз буду обращать внимания на это. А так данный мод мне очень нравиться простотой своего кода. Мы ждем очень сильно Аврору 8.0
Время и желание было бы - уже давно бы сделал, а сейчас - только ждать. Стоит помнить, что он это делает бесплатно
 
Сверху