Перейти к содержанию
Авторизация  
Anton_Styazhkin

ядро донат-системы - бета

Рекомендуемые сообщения

Anton_Styazhkin
U_DONATE.INC
ядро донат-системы
 
SsqF4dToBf4.jpg
 
Здравствуйте, мне часто писали в ЛС в ВКонтакте с просьбой написать/переделать их систему доната. Я стал озадачен целью создания библиотеки, которая бы упростила бы вам жизнь, мои дорогие новички в скриптинге. На данный момент библиотека находятся находится в стадии бета разработки и имеет несколько функций:
 
TextDraw:
UpdateDonateTextDraw(игрок) - обновляет донат-счетчик (TextDraw)
HideDonateTextDraw(игрок) - скрывает донат-счетчик (TextDraw)
ShowDonateTextDraw(игрок) - показывает донат-счетчик (TextDraw)
 
Деньги:
ResetPlayerDonateMoney(игрок) - обнуляет количество донат-денег
SetPlayerDonateMoney(игрок, сумма) - устанавливает количество донат-денег
GetPlayerDonateMoney(игрок) - получает количество донат-денег
GivePlayerDonateMoney(игрок, сумма) - выдает донат-деньги
 
По традиции небольшой пример:
Напишем донат-панель с тримя пунктами: сменить имя, обменять донат-деньги на игровые и купить скин.
 
#include <dc_cmd>
#include <sscanf2>

#include <u_donate> // :3

enum
    e_PLAYERS
{
    name[MAX_PLAYER_NAME],
    money,
    skin
};

new player[MAX_PLAYERS][e_PLAYERS];

COMMAND:donate(playerid)
{
    ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, "Донат", "{FFFFFF}Изменить имя\nОбменять на деньги\nИзменить скин", "Выбрать", "Отмена");
}

COMMAND:give_donate(playerid, params[])
{
    if(sscanf(params, "i", params[0]))
        return 0;

    GivePlayerDonateMoney(playerid, params[0]);
    UpdateDonateTextDraw(playerid);
    ShowDonateTextDraw(playerid);
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch(dialogid)
    {
        case 0:
        {
            if(!response)
                return 0;

            if(response)
            {
                switch(listitem)
                {
                    case 0:
                    {
                        if(GetPlayerDonateMoney(playerid) < 15)
                        {
                            SendClientMessage(playerid, -1, "У вас недостаточно донат-денег !");
                            return 0;
                        }
                        
                        ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "../изменить имя", "{FFFFFF}Введите новое имя.", "Купить", "Отмена");
                    }
                    case 1:
                    {
                        if(GetPlayerDonateMoney(playerid) <= 0)
                        {
                            SendClientMessage(playerid, -1, "Вам нечего менять ((99");
                            return 0;
                        }
                        
                        ShowPlayerDialog(playerid, 2, DIALOG_STYLE_MSGBOX, "../обменять на деньги", "{FFFFFF}Вы действительно хотите обменять донат-деньги?", "Да", "Нет");
                    }
                    case 2:
                    {
                        if(GetPlayerDonateMoney(playerid) < 75)
                        {
                            SendClientMessage(playerid, -1, "У вас недостаточно донат-денег !");
                            return 0;
                        }
                        
                        ShowPlayerDialog(playerid, 3, DIALOG_STYLE_INPUT, "../изменить скин", "{FFFFFF}Укажите номер скина, который хотите получить.", "Да", "Нет");
                    }
                }
            }
        }
        case 1:
        {
            if(!response)
                return 0;

            if(response)
            {
                if(!strlen(inputtext))
                    return ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "../изменить имя", "{FFFFFF}Введите новое имя.", "Купить", "Отмена");
           
                if(strlen(inputtext) < MAX_PLAYER_NAME - 18 && strlen(inputtext) > MAX_PLAYER_NAME)
                    return ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "../изменить имя", "{FFFFFF}Введите новое имя.", "Купить", "Отмена");

                for(new i = strlen(inputtext) - 1; i != -1; i--)
                    if((inputtext[i] >= 'a' &&  inputtext[i] <= 'z') || (inputtext[i] >= 'A' && inputtext[i] <= 'Z') || (inputtext[i] == '_'))
                        continue;
                    else
                        return ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "../изменить имя", "{FFFFFF}Введите новое имя.", "Купить", "Отмена");

                sscanf(inputtext, "s[24]", player[playerid][name]);

                SetPlayerName(playerid, player[playerid][name]);

                static const
                    str[] = "Вы сменили имя на %s";
                new
                    ftm_str[sizeof(str) + (-2) + MAX_PLAYER_NAME];
                format(ftm_str, sizeof(ftm_str), str, player[playerid][name]);
                SendClientMessage(playerid, -1, ftm_str);

                SetPlayerDonateMoney(playerid, GetPlayerDonateMoney(playerid) - 15);

                UpdateDonateTextDraw(playerid);
                
                GameTextForPlayer(playerid, "~r~-$15", 2000, 5);
            }
        }
        case 2:
        {
            if(!response)
                return 0;

            if(response)
            {
                static const
                    str[] = "~g~+$%i";
                new
                    ftm_str[sizeof(str) + (-2) + 8];
                format(ftm_str, sizeof(ftm_str), str, GetPlayerDonateMoney(playerid));
                GameTextForPlayer(playerid, ftm_str, 2000, 5);

                GivePlayerMoney(playerid, GetPlayerDonateMoney(playerid));
                
                ResetPlayerDonateMoney(playerid);

                UpdateDonateTextDraw(playerid);
                
                SendClientMessage(playerid, -1, "Вы обменяли донат-деньги на игровые!");
            }
        }
        case 3:
        {
            if(!response)
                return 0;

            if(response)
            {
                new
                    old_skin;

                old_skin = player[playerid][skin];
                
                sscanf(inputtext, "i", player[playerid][skin]);
                
                if(old_skin == player[playerid][skin])
                {
                    player[playerid][skin] = old_skin;
                    SetPlayerSkin(playerid, player[playerid][skin]);
                    return 0;
                }
                    
                SetPlayerDonateMoney(playerid, GetPlayerDonateMoney(playerid) - 75);

                GameTextForPlayer(playerid, "~r~-$75", 2000, 5);

                UpdateDonateTextDraw(playerid);

                SetPlayerSkin(playerid, player[playerid][skin]);
                
                SendClientMessage(playerid, -1, "Вы изменили скин!");
            }
        }
    }
    return 1;
}

Скачать (click).

 

Автор: Anton_Styazhkin aka Untonyst ;)

 

Можете предлагать все ваши идеи, все учту.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.