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

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

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

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

Include u_donate.inc (ядро донат-системы - бета)

Untonyst

Умник
Здравствуйте, мне часто писали в ЛС в ВКонтакте с просьбой написать/переделать их систему доната. Я стал озадачен целью создания библиотеки, которая бы упростила бы вам жизнь, мои дорогие новички в скриптинге. На данный момент библиотека находятся находится в стадии бета разработки и имеет несколько функций:


  • TextDraw:
  • UpdateDonateTextDraw(игрок) - обновляет донат-счетчик (TextDraw)
  • HideDonateTextDraw(игрок) - скрывает донат-счетчик (TextDraw)
  • ShowDonateTextDraw(игрок) - показывает донат-счетчик (TextDraw)
    Деньги:
  • ResetPlayerDonateMoney(игрок) - обнуляет количество донат-денег
  • SetPlayerDonateMoney(игрок, сумма) - устанавливает количество донат-денег
  • GetPlayerDonateMoney(игрок) - получает количество донат-денег
  • GivePlayerDonateMoney(игрок, сумма) - выдает донат-деньги

Скрин счетчика


По традиции небольшой пример:
Напишем донат-панель с тримя пунктами: сменить имя, обменять донат-деньги на игровые и купить скин.

PHP:
#include <dc_cmd>
#include <sscanf2>

#include <u_donate>

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;
}

​

Автор: Untonyst
 
Последнее редактирование:
Сверху Снизу