Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Мануал Система инвестиции

Dima_Tushin

Компетентный
Здравствуйте пользователи Pawno-Info хочу поделиться с вами системой инвестиции v 0.2

Начнем.

к pInfo
PHP:
    pInvest,//Проверка на инвестирования
    pInvestTime,//Таймер инвестирования
    pInvestBank,//Сумма инвестирования
    pInvestProcent,//Процент инвестирования
переходим к диалогам
PHP:
        case 68:
        {
            if(response)
            {
                switch(listitem)
                {
                    case 0: ShowPlayerDialog(playerid, 9999, DIALOG_STYLE_MSGBOX, "Информация о инвестиции", invest, "Готово", "");
                    case 1: ShowPlayerDialog(playerid, 69, DIALOG_STYLE_LIST, "Инвестировать", "[0] сутки\n[1] 7 дней\n[2] 14 дней\n[3] 21 день\n[4] 28 дней", "Далее", "Отмена");
                    case 2:
                    {
                        if(PlayerInfo[playerid][pInvest] == 0)
                            return SendClientMessage(playerid, COLOR_WHITE, "[Ошибка]: Вы не инвестировали деньги!");
                        if(gettime() <= PlayerInfo[playerid][pInvestTime])
                        {
                            format(string, sizeof(string), "Дата завершения депозита: %s", date("%dd.%mm.%yyyy %hh:%ii:%ss", PlayerInfo[playerid][pInvestTime]));
                            ShowPlayerDialog(playerid, 9999, DIALOG_STYLE_MSGBOX, "Уведомление", string, "Готово", "");
                            return 1;
                        }
                        else
                        {
                            PlayerInfo[playerid][pMoney] += PlayerInfo[playerid][pInvestProcent]+PlayerInfo[playerid][pInvestBank];
                            static const banks[] = "Вы получили прибыль в размере: %d вирт. Общий заработок составил: %d";
                            static strings[sizeof(banks) + (-2 + 50)];
                            format(strings, sizeof(strings), banks, PlayerInfo[playerid][pInvestProcent], PlayerInfo[playerid][pInvestProcent]+PlayerInfo[playerid][pInvestBank]);
                            SendClientMessage(playerid, COLOR_WHITE, strings);
                            PlayerInfo[playerid][pInvest] = 0;
                            PlayerInfo[playerid][pInvestTime] = 0;
                            PlayerInfo[playerid][pInvestBank] = 0;
                            PlayerInfo[playerid][pInvestProcent] = 0;
                            SaveAccount(playerid);
                        }
                    }
                }
            }
        }
        case 69:
        {
            if(response)
            {
                switch(listitem)
                {
                    case 0: ShowPlayerDialog(playerid, 70, DIALOG_STYLE_INPUT, "Инвестирование", "Введите сумму инвестирования", "Готово", "Назад");//сутки
                    case 1: ShowPlayerDialog(playerid, 71, DIALOG_STYLE_INPUT, "Инвестирование", "Введите сумму инвестирования", "Готово", "Назад");//7 дней
                    case 2: ShowPlayerDialog(playerid, 72, DIALOG_STYLE_INPUT, "Инвестирование", "Введите сумму инвестирования", "Готово", "Назад");//14 дней
                    case 3: ShowPlayerDialog(playerid, 73, DIALOG_STYLE_INPUT, "Инвестирование", "Введите сумму инвестирования", "Готово", "Назад");//21 дней
                    case 4: ShowPlayerDialog(playerid, 74, DIALOG_STYLE_INPUT, "Инвестирование", "Введите сумму инвестирования", "Готово", "Назад");//28 дней
                }
            }
            else
            {
                ShowPlayerDialog(playerid, 68, DIALOG_STYLE_LIST, "Меню инвестиций", "[0] Информация о инвестициях\n[1] Инвестировать\n[2] Получить прибыль", "Далее", "Отмена");
            }
        }
        case 70:
        {
            if(response)
            {
                if(!strlen(inputtext))
                    return ShowPlayerDialog(playerid, 70, DIALOG_STYLE_INPUT, "Инвестирование", "Введите сумму инвестирования", "Готово", "Отмена");
                new money = strval(inputtext);
                if(!(1 <= money <= 10000000))
                {
                    SendClientMessage(playerid, COLOR_WHITE, "Инвестировать сумму можно от 1 вирт(а) до 1.000.000");
                    ShowPlayerDialog(playerid, 70, DIALOG_STYLE_INPUT, "Инвестирование", "Введите сумму инвестирования", "Готово", "Отмена");
                    return 1;
                }
                if(PlayerInfo[playerid][pMoney] < money)
                {
                    SendClientMessage(playerid, COLOR_WHITE, "[Ошибка]: У вас недостаточно денег!");
                    ShowPlayerDialog(playerid, 70, DIALOG_STYLE_INPUT, "Инвестирование", "Введите сумму инвестирования", "Готово", "Отмена");
                    return 1;
                }
                if(!( 3 <= PlayerInfo[playerid][pLevel] <= 15))//Игровой лвл указывайте сами от мин до макс
                    return SendClientMessage(playerid, COLOR_WHITE, "Инвестировать можно с 3 lvl");
                if(PlayerInfo[playerid][pInvest] == 1)
                    return SendClientMessage(playerid, COLOR_WHITE, "Вы уже инвестировали свои деньги!");
                PlayerInfo[playerid][pMoney] -= money;//Вычитаем деньги которые инвестировали
                PlayerInfo[playerid][pInvestBank] += money;//Прибовляем деньги к инвестированию
                PlayerInfo[playerid][pInvest] = 1;//переменная для инвестирования
                PlayerInfo[playerid][pInvestTime] = gettime()+86400;//Время инвестирования сутки в секундах
                PlayerInfo[playerid][pInvestProcent] = (PlayerInfo[playerid][pInvestBank] / 100) * 5;//сумма / 100 * 5 процентов
                static const invests[] = "Вы инвестировали %d вирт на срок 1 день под 5%";
                static strings[sizeof(invests) + ( -2 + 50)];
                format(strings, sizeof(strings), invests, money);
                SendClientMessage(playerid, COLOR_BLUE, strings);
                SaveAccount(playerid);
            }
            else
            {
                ShowPlayerDialog(playerid, 69, DIALOG_STYLE_LIST, "Инвестировать", "[0] сутки\n[1] 7 дней\n[2] 14 дней\n[3] 21 день\n[4] 28 дней", "Далее", "Отмена");
            }
        }
        case 71:
        {
            if(response)
            {
                if(!strlen(inputtext))
                    return ShowPlayerDialog(playerid, 71, DIALOG_STYLE_INPUT, "Инвестирование", "Введите сумму инвестирования", "Готово", "Отмена");
                new money = strval(inputtext);
                if(!(1 <= money <= 10000000))
                {
                    SendClientMessage(playerid, COLOR_WHITE, "Инвестировать сумму можно от 1 вирт(а) до 1.000.000");
                    ShowPlayerDialog(playerid, 71, DIALOG_STYLE_INPUT, "Инвестирование", "Введите сумму инвестирования", "Готово", "Отмена");
                    return 1;
                }
                if(PlayerInfo[playerid][pMoney] < money)
                {
                    SendClientMessage(playerid, COLOR_WHITE, "[Ошибка]: У вас недостаточно денег!");
                    ShowPlayerDialog(playerid, 71, DIALOG_STYLE_INPUT, "Инвестирование", "Введите сумму инвестирования", "Готово", "Отмена");
                    return 1;
                }
                if(!( 3 <= PlayerInfo[playerid][pLevel] <= 15))//Игровой лвл указывайте сами от мин до макс
                    return SendClientMessage(playerid, COLOR_WHITE, "Инвестировать можно с 3 lvl");
                if(PlayerInfo[playerid][pInvest] == 1)
                    return SendClientMessage(playerid, COLOR_WHITE, "Вы уже инвестировали свои деньги!");
                PlayerInfo[playerid][pMoney] -= money;//Вычитаем деньги которые инвестировали
                PlayerInfo[playerid][pInvestBank] += money;//Прибовляем деньги к инвестированию
                PlayerInfo[playerid][pInvest] = 1;//переменная для инвестирования
                PlayerInfo[playerid][pInvestTime] = gettime()+604800;//Время инвестирования 7 дней в секундах
                PlayerInfo[playerid][pInvestProcent] = (PlayerInfo[playerid][pInvestBank] / 100) * 10;//сумма / 100 * 10 процентов
                static const invests[] = "Вы инвестировали %d вирт на срок 7 дней под 10%";
                static strings[sizeof(invests) + ( -2 + 50)];
                format(strings, sizeof(strings), invests, money);
                SendClientMessage(playerid, COLOR_BLUE, strings);
                SaveAccount(playerid);
            }
            else
            {
                ShowPlayerDialog(playerid, 69, DIALOG_STYLE_LIST, "Инвестировать", "[0] сутки\n[1] 7 дней\n[2] 14 дней\n[3] 21 день\n[4] 28 дней", "Далее", "Отмена");
            }
        }
        case 72:
        {
            if(response)
            {
                if(!strlen(inputtext))
                    return ShowPlayerDialog(playerid, 72, DIALOG_STYLE_INPUT, "Инвестирование", "Введите сумму инвестирования", "Готово", "Отмена");
                new money = strval(inputtext);
                if(!(1 <= money <= 10000000))
                {
                    SendClientMessage(playerid, COLOR_WHITE, "Инвестировать сумму можно от 1 вирт(а) до 1.000.000");
                    ShowPlayerDialog(playerid, 72, DIALOG_STYLE_INPUT, "Инвестирование", "Введите сумму инвестирования", "Готово", "Отмена");
                    return 1;
                }
                if(PlayerInfo[playerid][pMoney] < money)
                {
                    SendClientMessage(playerid, COLOR_WHITE, "[Ошибка]: У вас недостаточно денег!");
                    ShowPlayerDialog(playerid, 72, DIALOG_STYLE_INPUT, "Инвестирование", "Введите сумму инвестирования", "Готово", "Отмена");
                    return 1;
                }
                if(!( 3 <= PlayerInfo[playerid][pLevel] <= 15))//Игровой лвл указывайте сами от мин до макс
                    return SendClientMessage(playerid, COLOR_WHITE, "Инвестировать можно с 3 lvl");
                if(PlayerInfo[playerid][pInvest] == 1)
                    return SendClientMessage(playerid, COLOR_WHITE, "Вы уже инвестировали свои деньги!");
                PlayerInfo[playerid][pMoney] -= money;//Вычитаем деньги которые инвестировали
                PlayerInfo[playerid][pInvestBank] += money;//Прибовляем деньги к инвестированию
                PlayerInfo[playerid][pInvest] = 1;//переменная для инвестирования
                PlayerInfo[playerid][pInvestTime] = gettime()+1209600;//Время инвестирования 14 дней в секундах
                PlayerInfo[playerid][pInvestProcent] = (PlayerInfo[playerid][pInvestBank] / 100) * 12;//сумма / 100 * 12 процентов
                static const invests[] = "Вы инвестировали %d вирт на срок 14 дней под 12%";
                static strings[sizeof(invests) + ( -2 + 50)];
                format(strings, sizeof(strings), invests, money);
                SendClientMessage(playerid, COLOR_BLUE, strings);
                SaveAccount(playerid);
            }
            else
            {
                ShowPlayerDialog(playerid, 69, DIALOG_STYLE_LIST, "Инвестировать", "[0] сутки\n[1] 7 дней\n[2] 14 дней\n[3] 21 день\n[4] 28 дней", "Далее", "Отмена");
            }
        }
        case 73:
        {
            if(response)
            {
                if(!strlen(inputtext))
                    return ShowPlayerDialog(playerid, 73, DIALOG_STYLE_INPUT, "Инвестирование", "Введите сумму инвестирования", "Готово", "Отмена");
                new money = strval(inputtext);
                if(!(1 <= money <= 10000000))
                {
                    SendClientMessage(playerid, COLOR_WHITE, "Инвестировать сумму можно от 1 вирт(а) до 1.000.000");
                    ShowPlayerDialog(playerid, 73, DIALOG_STYLE_INPUT, "Инвестирование", "Введите сумму инвестирования", "Готово", "Отмена");
                    return 1;
                }
                if(PlayerInfo[playerid][pMoney] < money)
                {
                    SendClientMessage(playerid, COLOR_WHITE, "[Ошибка]: У вас недостаточно денег!");
                    ShowPlayerDialog(playerid, 73, DIALOG_STYLE_INPUT, "Инвестирование", "Введите сумму инвестирования", "Готово", "Отмена");
                    return 1;
                }
                if(!( 3 <= PlayerInfo[playerid][pLevel] <= 15))//Игровой лвл указывайте сами от мин до макс
                    return SendClientMessage(playerid, COLOR_WHITE, "Инвестировать можно с 3 lvl");
                if(PlayerInfo[playerid][pInvest] == 1)
                    return SendClientMessage(playerid, COLOR_WHITE, "Вы уже инвестировали свои деньги!");
                PlayerInfo[playerid][pMoney] -= money;//Вычитаем деньги которые инвестировали
                PlayerInfo[playerid][pInvestBank] += money;//Прибовляем деньги к инвестированию
                PlayerInfo[playerid][pInvest] = 1;//переменная для инвестирования
                PlayerInfo[playerid][pInvestTime] = gettime()+1814400;//Время инвестирования 21 день в секундах
                PlayerInfo[playerid][pInvestProcent] = (PlayerInfo[playerid][pInvestBank] / 100) * 15;//сумма / 100 * 15 процентов
                static const invests[] = "Вы инвестировали %d вирт на срок 21 день под 15%";
                static strings[sizeof(invests) + ( -2 + 50)];
                format(strings, sizeof(strings), invests, money);
                SendClientMessage(playerid, COLOR_BLUE, strings);
                SaveAccount(playerid);
            }
            else
            {
                ShowPlayerDialog(playerid, 69, DIALOG_STYLE_LIST, "Инвестировать", "[0] сутки\n[1] 7 дней\n[2] 14 дней\n[3] 21 день\n[4] 28 дней", "Далее", "Отмена");
            }
        }
        case 74:
        {
            if(response)
            {
                if(!strlen(inputtext))
                    return ShowPlayerDialog(playerid, 74, DIALOG_STYLE_INPUT, "Инвестирование", "Введите сумму инвестирования", "Готово", "Отмена");
                new money = strval(inputtext);
                if(!(1 <= money <= 10000000))
                {
                    SendClientMessage(playerid, COLOR_WHITE, "Инвестировать сумму можно от 1 вирт(а) до 1.000.000");
                    ShowPlayerDialog(playerid, 74, DIALOG_STYLE_INPUT, "Инвестирование", "Введите сумму инвестирования", "Готово", "Отмена");
                    return 1;
                }
                if(PlayerInfo[playerid][pMoney] < money)
                {
                    SendClientMessage(playerid, COLOR_WHITE, "[Ошибка]: У вас недостаточно денег!");
                    ShowPlayerDialog(playerid, 74, DIALOG_STYLE_INPUT, "Инвестирование", "Введите сумму инвестирования", "Готово", "Отмена");
                    return 1;
                }
                if(!(3 <= PlayerInfo[playerid][pLevel] <= 15))//Игровой лвл указывайте сами от мин до макс
                    return SendClientMessage(playerid, COLOR_WHITE, "Инвестировать можно с 3 lvl");
                if(PlayerInfo[playerid][pInvest] == 1)
                    return SendClientMessage(playerid, COLOR_WHITE, "Вы уже инвестировали свои деньги!");
                PlayerInfo[playerid][pMoney] -= money;//Вычитаем деньги которые инвестировали
                PlayerInfo[playerid][pInvestBank] += money;//Прибовляем деньги к инвестированию
                PlayerInfo[playerid][pInvest] = 1;//переменная для инвестирования
                PlayerInfo[playerid][pInvestTime] = gettime()+2419200;//Время инвестирования 28 дней в секундах
                PlayerInfo[playerid][pInvestProcent] = (PlayerInfo[playerid][pInvestBank] / 100) * 20;//сумма / 100 * 20 процентов
                static const invests[] = "Вы инвестировали %d вирт на срок 28 дней под 20%";
                static strings[sizeof(invests) + ( -2 + 50)];
                format(strings, sizeof(strings), invests, money);
                SendClientMessage(playerid, COLOR_BLUE, strings);
                SaveAccount(playerid);
            }
            else
            {
                ShowPlayerDialog(playerid, 69, DIALOG_STYLE_LIST, "Инвестировать", "[0] сутки\n[1] 7 дней\n[2] 14 дней\n[3] 21 день\n[4] 28 дней", "Далее", "Отмена");
            }
        }
Загрузка аккаунта и можно добавить еще одну проверку на PayDay чтобы не перезаходить в игру и показать игроку что инвестиция закончена

PHP:
if(PlayerInfo[playerid][pInvestTime] > 1 && PlayerInfo[playerid][pInvest] == 1)
    {
        if(gettime() >= PlayerInfo[playerid][pInvestTime])
        {
            SendClientMessage(playerid, COLOR_WHITE, "Ваша инвестирование завершено! Пройдите в банк для получения прибыли!");
        }
    }
ко всем переменным
PHP:
new invest[] =
"- Инвестиции (англ. Investment) — размещение капитала с целью получения прибыли\n"\
"- Инвестиции являются неотъемлемой частью современной экономики.\n"\
"- От кредитов инвестиции отличаются степенью риска для инвестора\n",
invest_1[] =
"- (кредитора) — кредит и проценты необходимо возвращать в оговорённые сроки независимо от прибыльности проекта,\n"\
"- инвестиции (инвестированный капитал) возвращаются и приносят доход только в прибыльных проектах.\n"\
"- Если проект убыточен — инвестиции могут быть утрачены полностью или частично\n\n"\
"- Информация о процентах, и срок депозита:\n"\
"- сутки: 5%, 7 дней: 10%, 14 дней: 12%, 21 день: 15%, 28 дней 20%";
OnGameModeInit
PHP:
    invest[sizeof(invest)-1] = '\n';
    invest_1[sizeof(invest_1)-1] = '\0';
Если у вас есть переменная которая отвечает за чекпоинты не создовайте переменную
PHP:
new MerCP[MAX_PLAYERS];
public OnPlayerEnterCheckpoint(playerid)
PHP:
    if(MerCP[playerid] == 3)
    {
        ShowPlayerDialog(playerid, 68, DIALOG_STYLE_LIST, "Меню инвестиций", "[0] Информация о инвестициях\n[1] Инвестировать\n[2] Получить прибыль", "Далее", "Отмена");
        return 1;
    }
Вход/Выход из банка у меня стандарный банк как RLS модах
PHP:
//пикап входа
        SetPlayerCheckpoint(playerid, 2316.6206, -4.6812, 26.7422, 1.5);
        MerCP[playerid] = 3;
//И потом в пикап выхода
        DisablePlayerCheckpoint(playerid);
        MerCP[playerid] = INVALID_PLAYER_ID;
и в сохранении аккаунта не забудьте добавить переменные у каждого по разному сохранение у меня на MYSQL
PHP:
    pInvest
    pInvestTime
    pInvestBank
    pInvestProcent
Версия системы: 0.2v
Автор: Dima_Tushin
Система будет обновляться,улучшаться.

Информация об инвестиции была взята с wiki педии

Копирование на сторонних порталах без разрешения автора запрещено!
 
Последнее редактирование:
Сверху Снизу