Создание меню 0.3x (mSelection 1.1 R3)

Описание: Готовые решения скриптов, filterScript
Модератор: SJplayer

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

#1 Дим » 6 мая 2013, 14:25

Создание меню 0.3x (mSelection 1.1 R3)

Include, который добавляет возможность создавать меню "Модель с изображением" с помощью всего нескольких строк кода.


Лог обновлений:

Код: Выделить всё

- 1.1 R3
Убран баг с блокировкой тексдрава OnPlayerClick
(Player)

-
 1.1 R2
Убран баг с нажатием клавиши ESC
.

-
 1.1
Добавлено динамическое меню
Добавлена кнопка 
"cancel"

- 1.0 R3:
Убран баг с использованием ShowModelSelectionMenu в OnPlayerModelSelection

- 1.0 R2:
Добавлена возможность использовать ShowModelSelectionMenu в OnPlayerModelSelection


Функции и их использование:

Код: Выделить всё

// for both (static and per player lists)
HideModelSelectionMenu(playerid)
//static lists
LoadModelSelectionMenu(f_name[])
ShowModelSelectionMenu(playerid, ListID, header_text[], dialogBGcolor = 0x4A5A6BBB, previewBGcolor = 0x88888899 , tdSelectionColor = 0xFFFF00AA)
 
forward OnPlayerModelSelection
(playerid, response, listid, modelid);
//dynamic per player lists
ShowModelSelectionMenuEx(playerid, items_array[], item_amount, header_text[], extraid, Float:Xrot = 0.0, Float:Yrot = 0.0, Float:Zrot = 0.0, Float:mZoom = 1.0, dialogBGcolor = 0x4A5A6BBB, previewBGcolor = 0x88888899 , tdSelectionColor = 0xFFFF00AA)
 
forward OnPlayerModelSelectionEx
(playerid, response, extraid, modelid); 


LoadModelSelectionMenu(f_name[])
Открывает меню со списком моделей из файла.
f_name[]: Название списка моделей из папки scriptfiles.
returns: ID списка

Строка должна выглядеть примерно так: modelID xRot yRot zRot Zoom (Текст выделенный красным цветом необязателен для использования)

Пример с транспортом Инфернус (411):

Код: Выделить всё

411
411 180.0
411 0.0 180.0
411 0.0 0.0 180.0
411 0.0 0.0 0.0 1.0


  • Все 4 примера, показывают Инфернус с разного поворота.

Примеры с авиатехникой planes.txt:

Код: Выделить всё

460 16.0 0.0 -55.0
476 16.0 0.0 
-55.0
511 16.0 0.0 
-55.0
512 16.0 0.0 
-55.0
513 16.0 0.0 
-55.0
519 16.0 0.0 
-55.0
520 16.0 0.0 
-55.0
553 16.0 0.0 
-55.0
577 16.0 0.0 
-55.0
592 16.0 0.0 
-55.0
593 16.0 0.0 
-55.0


Примечание: Если больше моделей используется с одной информацией поворотом/приближения, то информация будет сохранена только один раз.(Например: для 100 автомобилей с одним поворотом будет сохранение с одним поворотом)


HideModelSelectionMenu(playerid)

Код: Выделить всё

Скрывает меню от игрока.
playerid: ID игрока.
returns: Ничего


ShowModelSelectionMenu(playerid, ListID, header_text[], dialogBGcolor = 0x4A5A6BBB, previewBGcolor = 0x88888899 , tdSelectionColor = 0xFFFF00AA)

Код: Выделить всё

Показывает игроку меню с выбором (цифрами со звездочкой показаны места на меню для закрашивания).
playerid: ID игрока.
ListID: ID списка/меню, которое будет показано.
header_test[]: Название списка/меню.
dialogBGcolor(optional): Цвет меню (*1).
previewBGcolor(optional): Цвет меню (*2).
tdSelectionColor(optional): Цвет меню (*3).
returns: 1 - успешно, 0 - неуспешно


Изображение


OnPlayerModelSelection(playerid, response, listid, modelid)

Код: Выделить всё

Используется, когда игрок выбрал модель из списка.
playerid: ID игрока.
response: 1 = Модель выбрана, 0 = Отмена выбора.
listid: ID списка/меню.
modelid: Выбранная модель


ShowModelSelectionMenuEx(playerid, items_array[], item_amount, header_text[], extraid, Float:Xrot = 0.0, Float:Yrot = 0.0, Float:Zrot = 0.0, Float:mZoom = 1.0, dialogBGcolor = 0x4A5A6BBB, previewBGcolor = 0x88888899 , tdSelectionColor = 0xFFFF00AA)

Код: Выделить всё

Показывает меню игроку (цифрами со звездочкой показаны места на меню для закрашивания).
playerid: ID игрока.
items_array[]: Массив пунктов, которые будут показаны.
item_amount: Количество пунктов items_array[] (Например: item_amount = 3 покажут items_array[0-2])
header_test[]: Название списка/меню.
extraid: Дополнительный ID который будет в OnPlayerModelSelectionEx после выбора.
Xrot: X угол поворота для показа.
Yrot: Y угол поворота для показа.
Zrot: Z угол поворота для показа.
mZoom: Приближение.
dialogBGcolor(optional): Цвет меню (*1).
previewBGcolor(optional): Цвет меню (*2).
tdSelectionColor(optional): Цвет меню (*3).
returns: 1 - успешно, 0 - неуспешно


Изображение


OnPlayerModelSelectionEx(playerid, response, extraid, modelid)

Код: Выделить всё

Используется, когда игрок выбрал модель.
playerid: ID игрока.
response: 1 = Модель выбрана, 0 = Отмена выбора.
extraid: Доп. ID используемый в ShowModelSelectionMenuEx
modelid
: Выбранная модель


Примеры скрипта используемый с помощью этой функции:


Пример №1: Статический список.
Scriptfiles: planes.txt - skins.txt

Код: Выделить всё

#include <a_samp>
#include <mSelection>
 
new
    planelist = mS_INVALID_LISTID;
new
    skinlist = mS_INVALID_LISTID;
public OnFilterScriptInit(){
    planelist = LoadModelSelectionMenu("planes.txt");
    skinlist = LoadModelSelectionMenu("skins.txt");
    return 1;
}
 
public OnPlayerCommandText
(playerid, cmdtext[]){
    if(strcmp(cmdtext, "/plane", true) == 0){
        ShowModelSelectionMenu(playerid, planelist, "->Planes<-");
        return 1;}
    if(strcmp(cmdtext, "/changeskin", true) == 0){
        ShowModelSelectionMenu(playerid, skinlist, "Select Skin");
        return 1;}
    return 0;
}
 
public OnPlayerModelSelection
(playerid, response, listid, modelid)
{
    if(listid == planelist)
    {
        if(response)
        {
            SendClientMessage(playerid, 0xFF0000FF, "Plane Spawned");
            new Float:pos[3]; GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
            CreateVehicle(modelid, pos[0] + 2.5, pos[1], pos[2] + 2.5, 0.0, random(128), random(128), -1);
        }
        else SendClientMessage(playerid, 0xFF0000FF, "Canceled plane selection");
        return 1;
    }
    if(listid == skinlist)
    {
        if(response)
        {
            SendClientMessage(playerid, 0xFF0000FF, "Skin Changed");
            SetPlayerSkin(playerid, modelid);
        }
        else SendClientMessage(playerid, 0xFF0000FF, "Canceled skin selection");
        return 1;
    }
    return 1;


Пример №2: Динамический список.

Код: Выделить всё

#include <a_samp>
#include <mSelection>
 
#define CUSTOM_TRAILER_MENU 1
 
public OnPlayerCommandText
(playerid, cmdtext[])
{
    if(strcmp(cmdtext, "/selectVehicleTrailer", true) == 0)
    {
        new cars[15];
        cars[0] = 435;
        cars[1] = 450;
        cars[2] = 569;
        cars[3] = 570;
        cars[4] = 584;
        cars[5] = 590;
        cars[6] = 591;
        cars[7] = 606;
        cars[8] = 607;
        cars[9] = 608;
        cars[10] = 610;
        cars[11] = 611;
        ShowModelSelectionMenuEx(playerid, cars, 12, "Select trailer", CUSTOM_TRAILER_MENU, 16.0, 0.0, -55.0);
        return 1;
    }
    return 0;
}
 
public OnPlayerModelSelectionEx
(playerid, response, extraid, modelid)
{
    if(extraid == CUSTOM_TRAILER_MENU)
    {
        if(response)
        {
            SendClientMessage(playerid, 0xFF0000FF, "Trailer Spawned");
            new Float:pos[3]; GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
            CreateVehicle(modelid, pos[0] + 2.5, pos[1], pos[2] + 2.5, 0.0, random(128), random(128), -1);
        }
        else SendClientMessage(playerid, 0xFF0000FF, "Canceled trailer selection");
    }
    return 1;


Скачать:RGhost :tuta:
PASTEBIN :tuta:
[center]i love you [s]mxIni[/s] Mysql[/center]


  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Скрипты / FS»

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

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