Добрый вечер. Решил сегодня накидать простенький FS покупки оружия. Для выбора раздела используйте кнопки ' Y ' и ' N '. Для покупки 'Пробел'. Скрипт в большей мере подойдет для ДМ серверов. Сразу извиняюсь за "быдло-код и оптимизацию" так как это моя первая работа. Хотелось бы услышать адекватную критику в сторону данного скрипта. Ниже прилагаю скрин.
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,backcolor,textalignment); Указание текста для секции. Заметка #1: Функция схожа с функцией SetObjectMaterialText. Заметка #2: Если указан неверный ID секции или меню, функция вернет -1.
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 выбранной секции.