Закрыть Привет! Если вы читаете это - Вы еще не зарегистрированы. Это займет не больше минуты. Нажмите здесь, чтобы пройти регистрацию в несколько простых шагов, чтобы пользоваться всеми возможностями нашего форума. Обратите внимание, запрещены непристойные, матерные, бессмысленные (цифры, случайный набор букв) ники. Удачи!

Тема: Как создавать прогресс бары на TextDraw

Показано с 1 по 7 из 7

  1. #1
    Пользователь

    Аватар для AndreY.eXe

    Статус: Оффлайн
    Регистрация:16.09.2017
    Адрес:unknown
    Сообщений:1,176
    Репутация:170 [+/-] 

    Как создавать прогресс бары на TextDraw

    Привет!

    Многие у меня спрашивали, как правильно создавать прогресс бары через Textdraw, и дабы не разъснять всем, я решил запилить урок по этому. В этом уроке я приведу пример использования, как рисовать и писать код для прогресс баров. Отвечу на вопрос, который приходит всем "гуру-скриптерам", после прочтенного:

    Q: Зачем использовать TD, если можно использовать простой FS, который и создает эти прогресс бары?
    A: А за тем, что в FS создается единый стиль этого бара - стиль, как у полоски ХП, брони и воздуха. А в TD можно создать любой стиль, который на ум придет.

    Ну чтож, думаю все объяснил, теперь пора приступать.

    Для начала, вот примеры прогресс баров на TD:
    1. Мини-игра "Мышь" (Отсчет времени)
    2. Система голода (Very Good) (Мини-игра)
    3. Уникальная система загрузки
    4. Инфо. об игроке при прицеливании (Показатель ХП и брони)

    Думаю, этого будет достаточно. А теперь, к тому, как создавать такие прогресс бары:


    Для начала, нам понадобиться редактор TD, я советую русский редактор от Ramzes'a: YandexDisk VirusTotal.
    Запускаем редактор и заходим на сервер.

    Мы будем создавать простой прогресс бар, в котором будет фон, и сам прогресс:
    1. Прописываем команду /tde и создаем новый проект: назовем его NewProgressBar.
    2. Правой кнопкой мыши нажимаем на кнопку "New" и выбираем "Спрайт".
    3. У нас создается спрайт, подгоняем его под размер. Чтобы придать ему цвет, правой кнопкой мыши нажимаем на кнопку "Color" и выбираем походящий вариант.
    4. Копируем данный спрайт кнопкой "Dublicate", придаем ему другой цвет и подгоняем под меньший размер, так, чтобы у нас фон не много выпирал из прогресса. (советую подбирать размер мышкой, т.к так придается точный размер в целых числах)
    5. Делаем этот спрайт для игрока и экспортируем его, нажав "Export" и выбрав название переменной.

    Скриншоты









    [Скрыть]

    Вот и все, мы нарисовали прогресс бар, теперь нам нужно написать под него код.

    Забираем наш TD из scriptfiles > tde > exports > NewProgressBar.
    И вставляем код в мод:
    PHP код:
    // В начало мода
    new Text:bar_TD[1];
    new 
    PlayerText:bar_PTD[MAX_PLAYERS][1];

    // В OnGameModeInit
    bar_TD[0] = TextDrawCreate(236.5000206.0222"LD_SPAC:white"); // пусто
    TextDrawTextSize(bar_TD[0], 178.000063.0000);
    TextDrawAlignment(bar_TD[0], 1);
    TextDrawColor(bar_TD[0], 858993663);
    TextDrawBackgroundColor(bar_TD[0], 255);
    TextDrawFont(bar_TD[0], 4);
    TextDrawSetProportional(bar_TD[0], 0);
    TextDrawSetShadow(bar_TD[0], 0);

    // В OnPlayerConnect
    bar_PTD[playerid][0] = CreatePlayerTextDraw(playerid239.0000209.4333"LD_SPAC:white"); // пусто
    PlayerTextDrawTextSize(playeridbar_PTD[playerid][0], 173.000057.0000);
    PlayerTextDrawAlignment(playeridbar_PTD[playerid][0], 1);
    PlayerTextDrawColor(playeridbar_PTD[playerid][0], 329001215);
    PlayerTextDrawBackgroundColor(playeridbar_PTD[playerid][0], 255);
    PlayerTextDrawFont(playeridbar_PTD[playerid][0], 4);
    PlayerTextDrawSetProportional(playeridbar_PTD[playerid][0], 0);
    PlayerTextDrawSetShadow(playeridbar_PTD[playerid][0], 0); 
    Теперь нам нужна вот эта функция:
    PHP код:
    PlayerTextDrawTextSize(playeridbar_PTD[playerid][0], 173.000057.0000); 
    У нас тут есть 2 числа: 173.0000 и 57.0000.
    173.0000 - это длина нашего прогресса, а 57.0000 - высота.
    Нам понадобится длина.
    Но, перед тем, как делать систему - обнулите длину, при создании TD:
    PHP код:
    PlayerTextDrawTextSize(playeridbar_PTD[playerid][0], 0.000057.0000); 
    Как сделать так, чтобы этот прогресс двигался:
    Для начала, нужно задать количество, назовем их сдвигами, которые будет ограничением для прогресса: пусть это будет 100.
    Теперь нам необходимо поделить 173 на 100 - 1.73. Это нужно для того, чтобы узнать, сколько нужно прибавлять к длине.
    Создаем повторяющайся таймер на 50 м.с и переменную, которая будет отвечать за "сдвиги", а так же показываем TD:
    PHP код:
    // В начало мода
    new ProgressBarTimer[MAX_PLAYERS];
    new 
    Sdvig[MAX_PLAYERS];

    // Куда хотите
    TextDrawShowForPlayer(playeridbar_TD[0]);

    Sdvig[playerid] = 0;
    ProgressBarTimer[playerid] = SetTimerEx("UpdateProgressBar"50true"i"playerid);

    // Ну и обнуляем, где захотите
    KillTimer(ProgressBarTimer[playerid]); 
    Далее, создаем это в любом место в моде и делаем систему:
    PHP код:
    forward UpdateProgressBar(playerid);
    public 
    UpdateProgressBar(playerid)
    {
        
    Sdvig[playerid] ++; // Прибовляем "сдвиг"
        
    PlayerTextDrawTextSize(playeridbar_PTD[playerid][0], Sdvig[playerid]*1.7357.0000); // Умножаем "сдвиги" на полученное ранее число, тем самым прибавляем длину TD
        
    PlayerTextDrawShow(playeridbar_PTD[playerid][0]); // Показываем TD, дабы обновить его у игрока

        
    if(Sdvig[playerid] >= 100// Ставим проверку на ограничение в 100 "сдвигов"
        
    {
            
    KillTimer(ProgressBarTimer[playerid]); // Удаляем таймер

            
    PlayerTextDrawTextSize(playeridbar_PTD[playerid][0], 0.057.0000); // Обнуляем и скрываем TD
            
    PlayerTextDrawHide(playeridbar_PTD[playerid][0]);
            
    TextDrawHideForPlayer(playeridbar_TD[0]);
        }
        return 
    true;

    На этом все! За ранее прошу прощения, если кому-то что-то не понятно, ибо урок делаю впервые.
    Если что-то не понятно, задавайте вопросы в тему - отвечу.

    Чтобы Ваш прогресс шел более плавно, необходимо подбирать кол-во "сдвигов" и скорость повтора таймера.







    Способ вычесления длины прогресс бара от Вадим97:

    Открыть спойлер

    PHP код:
    #define PROGRESS_BAR(%0,%1) (%0 * ((%1 != 0) ? (%1 / 100) : (0)))

    // Тем самым, в PlayerTextDrawTextSize в UpdateProgressBar заменяем:
    Sdvig[playerid]*1.73 >> PROGRESS_BAR(Sdvig[playerid], 173)

    PlayerTextDrawTextSize(playeridbar_PTD[playerid][0], PROGRESS_BAR(Sdvig[playerid], 173), 57.0000); 
    [Скрыть]
    Последний раз редактировалось AndreY.eXe; 27.10.2018 в 02:45. Причина: Обновил доп. пример вычесления длины прогресс бара
  2. 4 пользователей сказали cпасибо AndreY.eXe за это полезное сообщение:

    Вадим97 (26.10.2018), Artur_Caron (25.10.2018), Charli (20.11.2018), unreal. (28.11.2018)

  3. #2
    Пользователь

    Аватар для AndreY.eXe

    Статус: Оффлайн
    Регистрация:16.09.2017
    Адрес:unknown
    Сообщений:1,176
    Репутация:170 [+/-] 
    Модераторы, измените название темы на "Как создавать прогресс бары на Textdraw".
  4. 1 пользователь сказал cпасибо AndreY.eXe за это полезное сообщение:

    Artur_Caron (25.10.2018)

  5. #3
    Цензурный

    Аватар для Pa[DoN]oK

    Статус: Оффлайн
    Регистрация:29.05.2012
    Адрес:Донецк/Харьков
    Сообщений:2,023
    Репутация:264 [+/-] 
    Модераторы, измените название темы на "Как создавать прогресс бары на Textdraw".
    Переименовано.

    Если я тебе помог, жми кнопочку "Спасибо", благодари людей за помощь.


    ВАЖНО

    [Скрыть]

  6. 1 пользователь сказал cпасибо Pa[DoN]oK за это полезное сообщение:

    AndreY.eXe (16.10.2018)

  7. #4
    Пользователь

    Аватар для Вадим97

    Статус: Оффлайн
    Регистрация:03.07.2014
    Адрес:Unknown
    Сообщений:155
    Репутация:8 [+/-] 
    PHP код:
    #define PROGRESS_BAR(%0,%1) \
        
    (%* ((%!= 0) ? (%100) : (0))) 
    Пример использование:
    PHP код:
    PROGRESS_BAR(Sdvig[playerid], 173
    Последний раз редактировалось Вадим97; 27.10.2018 в 00:34.
  8. 2 пользователей сказали cпасибо Вадим97 за это полезное сообщение:

    AndNatt (01.12.2018), AndreY.eXe (26.10.2018)

  9. #5
    Пользователь

    Аватар для Chaprnks

    Статус: Оффлайн
    Регистрация:21.04.2013
    Адрес:Советская Америка
    Сообщений:11
    Репутация:0 [+/-] 
    Было бы проще и эффективнее использовать progress2.inc?

    https://github.com/Southclaws/progress2
    Project Roleplay
    samp.gta.sh:7777

    10 лет в процессе создания
  10. #6
    Пользователь

    Аватар для unreal.

    Статус: Оффлайн
    Регистрация:15.10.2015
    Адрес:Ростов-на-Дону
    Сообщений:572
    Репутация:372 [+/-] 
    Было бы проще и эффективнее использовать progress2.inc?

    https://github.com/Southclaws/progress2
    Проще, но по-моему таким способом красивее получатся
  11. #7
    Пользователь

    Аватар для AndreY.eXe

    Статус: Оффлайн
    Регистрация:16.09.2017
    Адрес:unknown
    Сообщений:1,176
    Репутация:170 [+/-] 
    Было бы проще и эффективнее использовать progress2.inc?

    https://github.com/Southclaws/progress2
    Кхм... Читать бы хоть начился.
    Q: Зачем использовать TD, если можно использовать простой FS, который и создает эти прогресс бары?
    A: А за тем, что в FS создается единый стиль этого бара - стиль, как у полоски ХП, брони и воздуха. А в TD можно создать любой стиль, который на ум придет.

Пользователи, которые читали эту тему: 131

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
В обязанности Администрации не входит контроль легальности или нелегальности передаваемой информации (любой, включая, но не ограничиваясь, информацией передаваемой между пользователями, внутренней пересылки информации в виде различных ссылок, текстов или архивов), определение прав собственности или законности передачи, приема или использования этой информации.
Администрация не несёт никакой ответственности за пользователей и модер состав форума!
читы хаки samp-rp advanvce скачать pawn скриптинг моды скрипты гарант s0beit cs 1.6 0.3x читы World of Tanks Баги samp-rp,читы samp-rp,аккаунты самп-рп Скриптинг PAWNO SA-MP IV-MP MTA уроки помощь создание сервер моды скрипты плагины cleo читы читинг собейт s0beit sobeit моды для sa-mp скрипты для sa-mp pawno скриптинг pawno скрипты pawno моды iv-mp скриптинг iv-mp скрипты iv-mp моды мод godfather Моды SAMP как установить машины для gta 4 Моды гта 4 Моды GTA 4 скачать моды для GTA 4 скрипты и моды GTA 4 скачать скрипты SAMP моды SAMP на русском языке где можно скачать Pen1 LS скачать Pen1 Fugitive скачать The Godfather rp roleplay samp-rp скачать бесплатно создать sa-mp сервер создать мод sa-mp создать скрипт в pawno gta-iv gta-v gta-sa gta-3 gta-III gta-4 gta-5 gta-vc mta mta-dm mta-race mta-sa pawno инфо info информация ru помощь в pawno ошибки pawno сервер павно gta-iv крэк gta-iv патч gta-v демо gta-v трейлер gta-iv keygen скрипты gta sa gta 4 multiplayer gta san adnreas multiplayer sa-mp forum форум о sa-mp форум о pawno русский sa-mp русское pawno русификатор реклама раскрутка сервера пиар сервера sa-mp мониторинг gta-sa ошибки в pawno pawno errors sa-mp 0.3c SA-MP 0.3d Играть в гта по сети моды для сампа скрипты самп Моды гта 4 Моды GTA 4 скачать моды для GTA 4 скрипты и моды GTA 4 скачать скрипты SAMP моды SAMP на русском языке где можно скачать Pen1 LS скачать Pen1 Fugitive скачать The Godfather Все моды SAMP у нас взлом вк hack rat android instagram twitter хак хакер лайфхак рынок продажа ddos защита услуги администратор root linux ubuntu mac android андроид прошивка без ограничений advance arizona читы 4g безлимит