Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

[0.3x] mSelection 1.1 R3 - выбираем модель

Статус
В этой теме нельзя размещать новые ответы.

Lester

Специалист
Здравствуйте, уважаемые пользователи Pawno-Info. Я вас ознакомлю с новой функцией и представляю вам инклуд с помощью которого, вы можете создавать уникальные меню в которых можно выбирать модель. Функции полезны для систем покупки одежды, транспорта и.т.д. Инклуд работает только на версии SA-MP'а 0.3x (можно скачать на офф. сайте).

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

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

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

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

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

PHP:
// 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);
• LoadModelSlectionMenu(f_name[])
Открывает меню со списком моделей из файла.
f_name[]: Название списка моделей из папки scriptfiles.
returns: ID списка

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

Примеры с транспортом Инфернусом (ID: 411):
PHP:
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):
PHP:
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: -

PHP:
#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: Динамический список.
PHP:
#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;
}
Благодарности:
Kye: за создание vspawner.pwn
D0erfler: за создание данного инклуда и за мануал.

Перевел: Lester


 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу