- Регистрация
- 16 Сен 2017
- Сообщения
- 1,327
- Лучшие ответы
- 0
- Репутация
- 241
Привет!
Многие у меня спрашивали, как правильно создавать прогресс бары через Textdraw, и дабы не разъснять всем, я решил запилить урок по этому. В этом уроке я приведу пример использования, как рисовать и писать код для прогресс баров. Отвечу на вопрос, который приходит всем "гуру-скриптерам", после прочтенного:
Q: Зачем использовать TD, если можно использовать простой FS, который и создает эти прогресс бары?
A: А за тем, что в FS создается единый стиль этого бара - стиль, как у полоски ХП, брони и воздуха. А в TD можно создать любой стиль, который на ум придет.
Ну чтож, думаю все объяснил, теперь пора приступать.
Для начала, вот примеры прогресс баров на TD:
Для начала, нам понадобиться редактор TD, я советую русский редактор от Ramzes'a:
Запускаем редактор и заходим на сервер.
Мы будем создавать простой прогресс бар, в котором будет фон, и сам прогресс:
Вот и все, мы нарисовали прогресс бар, теперь нам нужно написать под него код.
Забираем наш TD из scriptfiles > tde > exports > NewProgressBar.
И вставляем код в мод:
Теперь нам нужна вот эта функция:
У нас тут есть 2 числа: 173.0000 и 57.0000.
173.0000 - это длина нашего прогресса, а 57.0000 - высота.
Нам понадобится длина.
Но, перед тем, как делать систему - обнулите длину, при создании TD:
Как сделать так, чтобы этот прогресс двигался:
Для начала, нужно задать количество, назовем их сдвигами, которые будет ограничением для прогресса: пусть это будет 100.
Теперь нам необходимо поделить 173 на 100 - 1.73. Это нужно для того, чтобы узнать, сколько нужно прибавлять к длине.
Создаем повторяющайся таймер на 50 м.с и переменную, которая будет отвечать за "сдвиги", а так же показываем TD:
Далее, создаем это в любом место в моде и делаем систему:
На этом все! За ранее прошу прощения, если кому-то что-то не понятно, ибо урок делаю впервые.
Если что-то не понятно, задавайте вопросы в тему - отвечу.
Чтобы Ваш прогресс шел более плавно, необходимо подбирать кол-во "сдвигов" и скорость повтора таймера.
Способ вычесления длины прогресс бара от Вадим97:
Многие у меня спрашивали, как правильно создавать прогресс бары через Textdraw, и дабы не разъснять всем, я решил запилить урок по этому. В этом уроке я приведу пример использования, как рисовать и писать код для прогресс баров. Отвечу на вопрос, который приходит всем "гуру-скриптерам", после прочтенного:
Q: Зачем использовать TD, если можно использовать простой FS, который и создает эти прогресс бары?
A: А за тем, что в FS создается единый стиль этого бара - стиль, как у полоски ХП, брони и воздуха. А в TD можно создать любой стиль, который на ум придет.
Ну чтож, думаю все объяснил, теперь пора приступать.
Для начала, вот примеры прогресс баров на TD:
- Мини-игра "Мышь" (Отсчет времени)
- Система голода (Very Good) (Мини-игра)
- Уникальная система загрузки
- Инфо. об игроке при прицеливании (Показатель ХП и брони)
Для начала, нам понадобиться редактор TD, я советую русский редактор от Ramzes'a:
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
.Запускаем редактор и заходим на сервер.
Мы будем создавать простой прогресс бар, в котором будет фон, и сам прогресс:
- Прописываем команду /tde и создаем новый проект: назовем его NewProgressBar.
- Правой кнопкой мыши нажимаем на кнопку "New" и выбираем "Спрайт".
- У нас создается спрайт, подгоняем его под размер. Чтобы придать ему цвет, правой кнопкой мыши нажимаем на кнопку "Color" и выбираем походящий вариант.
- Копируем данный спрайт кнопкой "Dublicate", придаем ему другой цвет и подгоняем под меньший размер, так, чтобы у нас фон не много выпирал из прогресса. (советую подбирать размер мышкой, т.к так придается точный размер в целых числах)
- Делаем этот спрайт для игрока и экспортируем его, нажав "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.5000, 206.0222, "LD_SPAC:white"); // пусто
TextDrawTextSize(bar_TD[0], 178.0000, 63.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(playerid, 239.0000, 209.4333, "LD_SPAC:white"); // пусто
PlayerTextDrawTextSize(playerid, bar_PTD[playerid][0], 173.0000, 57.0000);
PlayerTextDrawAlignment(playerid, bar_PTD[playerid][0], 1);
PlayerTextDrawColor(playerid, bar_PTD[playerid][0], 329001215);
PlayerTextDrawBackgroundColor(playerid, bar_PTD[playerid][0], 255);
PlayerTextDrawFont(playerid, bar_PTD[playerid][0], 4);
PlayerTextDrawSetProportional(playerid, bar_PTD[playerid][0], 0);
PlayerTextDrawSetShadow(playerid, bar_PTD[playerid][0], 0);
PHP:
PlayerTextDrawTextSize(playerid, bar_PTD[playerid][0], 173.0000, 57.0000);
173.0000 - это длина нашего прогресса, а 57.0000 - высота.
Нам понадобится длина.
Но, перед тем, как делать систему - обнулите длину, при создании TD:
PHP:
PlayerTextDrawTextSize(playerid, bar_PTD[playerid][0], 0.0000, 57.0000);
Для начала, нужно задать количество, назовем их сдвигами, которые будет ограничением для прогресса: пусть это будет 100.
Теперь нам необходимо поделить 173 на 100 - 1.73. Это нужно для того, чтобы узнать, сколько нужно прибавлять к длине.
Создаем повторяющайся таймер на 50 м.с и переменную, которая будет отвечать за "сдвиги", а так же показываем TD:
PHP:
// В начало мода
new ProgressBarTimer[MAX_PLAYERS];
new Sdvig[MAX_PLAYERS];
// Куда хотите
TextDrawShowForPlayer(playerid, bar_TD[0]);
Sdvig[playerid] = 0;
ProgressBarTimer[playerid] = SetTimerEx("UpdateProgressBar", 50, true, "i", playerid);
// Ну и обнуляем, где захотите
KillTimer(ProgressBarTimer[playerid]);
PHP:
forward UpdateProgressBar(playerid);
public UpdateProgressBar(playerid)
{
Sdvig[playerid] ++; // Прибовляем "сдвиг"
PlayerTextDrawTextSize(playerid, bar_PTD[playerid][0], Sdvig[playerid]*1.73, 57.0000); // Умножаем "сдвиги" на полученное ранее число, тем самым прибавляем длину TD
PlayerTextDrawShow(playerid, bar_PTD[playerid][0]); // Показываем TD, дабы обновить его у игрока
if(Sdvig[playerid] >= 100) // Ставим проверку на ограничение в 100 "сдвигов"
{
KillTimer(ProgressBarTimer[playerid]); // Удаляем таймер
PlayerTextDrawTextSize(playerid, bar_PTD[playerid][0], 0.0, 57.0000); // Обнуляем и скрываем TD
PlayerTextDrawHide(playerid, bar_PTD[playerid][0]);
TextDrawHideForPlayer(playerid, bar_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(playerid, bar_PTD[playerid][0], PROGRESS_BAR(Sdvig[playerid], 173), 57.0000);
Последнее редактирование: