Пользователь
- Регистрация
- 21 Мар 2022
- Сообщения
- 12
- Автор темы
- #1
Всем здравствуйте! Выкладываю вам интересную систему депозита, на этот прекрасный портал. Сама система не очень сложна в импортирование в другие моды, по этому врезать в свой мод у вас не составит труда. Всем хорошего дня.
Код:
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
Последнее редактирование: