3DMenu

Описание: Инклуды
Модератор: SJplayer

Дим M
Автор темы, Администратор
Администратор
Аватара
Дим M
Автор темы, Администратор
Администратор
Сообщения: 1608
Зарегистрирован: 5 апреля 2013
С нами: 10 лет 11 месяцев

#1 Дим » 8 апреля 2013, 15:03

3DMenu
Автор: SDraw

Данный инклуд позволяет создать новый тип меню взамен стандартного меню и диалогов.
[*]Создание меню для каждого игрока.
[*]Поворот меню по оси Z.
[*]Установка параметров для секций схожа с установкой текста для объекта.
[*]Автовычисление позиций новых линий и смещений секций.
[*]Лимиты: MAX_PLAYERS+10 меню и неограниченное количество секций для каждого меню (регулируется вручную).

Что можно сделать с помощью данного инклуда?

Данный инклуд был создан для альтернативного выбора скинов/транспорта. Вы можете также найти ему другое применение.

Скрины
ИзображениеИзображениеИзображение

phpBB [media]


Изменения

- Добавлены "playerid" и "rotation" параметры в Create3DMenu().
- Увеличен лимит секций до 16.
- Изменен тип создания секций. Теперь их нумерация идет с верху в низ. Добавлен OnPlayerChange3DMenuBox(playerid,MenuID,boxid) callback. Добавлен FS для демонстрации
- Удален параметр MenuID из функции CancelSelect3DMenu. Увеличен лимит меню - 1024.
- Обновлены ложные native'ы.
- Добавлено перемещение секций.
- Изменен алгоритм вычисления линий и поворота.
- Добавлены 2 цвета на задний фон: при активной секции и неактивной.
- Удален y_hook, исправлен баг при отсоединении игрока, когда он выбирал меню.

Требования

- 0.3e (и выше) сервер
- Incognito's Streamer (0.3e и выше)
- foreach

Функции

Create3DMenu(Float: x,Float:y,Float:z,Float:rotation,boxes,playerid);
Создание меню на определенной позиции с определенным количеством секций и для определенного игрока.
Заметка #1: Если Вы хотите, чтобы все видели меню, используйте -1 в параметре playerid.
Заметка #2: Поворот должен быть от 0 до 360. Большие или меньшие значения сделают выбор меню невозможным.
Заметка #3: Функция возвращает ID созданного меню.


SetBoxText(MenuID,box,text[],materialsize,fontface[],fontsize,bold,fontcolor,selectcolor,unselectcolor ,textalignment);
Указание текста для секции.
Заметка #1: Функция схожа с функцией SetObjectMaterialText.
Заметка #2: Если указан неверный ID секции или меню, функция вернет -1.
selectcolor - цвет фона при активной секции, unselectcolor - при неактивной.


Select3DMenu(playerid,MenuID);
Начать выбор меню для игрока. Клавиши - смена секций: Y,N ; выбор - Пробел.
Заметка #1: Функция вернет -1, если указан неверный ID меню.


CancelSelect3DMenu(playerid);
Отменить выбор меню для игрока.
Заметка #1: Функция вернет -1, если игрок не выбирает никакое меню.


Destroy3DMenu(MenuID);
Уничтожение меню.
Заметка #1: Если какой-то из игроков выбирает меню с данным ID, функция CancelSelect3DMenu будет вызвана автоматически.
Заметка #2: Функция вернет -1, если меню с данным ID не существует.

Callback'и

OnPlayerChange3DMenuBox(playerid,MenuID,boxid);
Данный callback вызывается, когда игрок нажимает Y или N при выборе меню.
Заметка #1: Параметр boxid равен ID отображаемой секции.


OnPlayerSelect3DMenuBox(playerid,MenuID,selected);
Данный callback вызывается, когда игрок нажимает Пробел при выборе.
Заметка #1: Параметр selected равен ID выбранной секции.

Загрузка

MediaFire.com: Include + FS для демонстрации.

Благодарности

- TheArcher за ложные native'ы и проверку на #define FILTERSCRIPT.
- iPleomax за видео с идеей.
- Incognito за Streamer (и стиль топика ).
[center]i love you [s]mxIni[/s] Mysql[/center]


Вернуться в «Include»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 6 гостей