Include, который добавляет возможность создавать меню "Модель с изображением" с помощью всего нескольких строк кода.
Лог обновлений:
Code: Select all
- 1.1 R3
Убран баг с блокировкой тексдрава OnPlayerClick(Player)
- 1.1 R2
Убран баг с нажатием клавиши ESC.
- 1.1
Добавлено динамическое меню
Добавлена кнопка "cancel"
- 1.0 R3:
Убран баг с использованием ShowModelSelectionMenu в OnPlayerModelSelection
- 1.0 R2:
Добавлена возможность использовать ShowModelSelectionMenu в OnPlayerModelSelection
Функции и их использование:
Code: Select all
// 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):
Code: Select all
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:
Code: Select all
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)
Code: Select all
Скрывает меню от игрока.
playerid: ID игрока.
returns: Ничего.
ShowModelSelectionMenu(playerid, ListID, header_text[], dialogBGcolor = 0x4A5A6BBB, previewBGcolor = 0x88888899 , tdSelectionColor = 0xFFFF00AA)
Code: Select all
Показывает игроку меню с выбором (цифрами со звездочкой показаны места на меню для закрашивания).
playerid: ID игрока.
ListID: ID списка/меню, которое будет показано.
header_test[]: Название списка/меню.
dialogBGcolor(optional): Цвет меню (*1).
previewBGcolor(optional): Цвет меню (*2).
tdSelectionColor(optional): Цвет меню (*3).
returns: 1 - успешно, 0 - неуспешно.
OnPlayerModelSelection(playerid, response, listid, modelid)
Code: Select all
Используется, когда игрок выбрал модель из списка.
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)
Code: Select all
Показывает меню игроку (цифрами со звездочкой показаны места на меню для закрашивания).
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)
Code: Select all
Используется, когда игрок выбрал модель.
playerid: ID игрока.
response: 1 = Модель выбрана, 0 = Отмена выбора.
extraid: Доп. ID используемый в ShowModelSelectionMenuEx
modelid: Выбранная модель.
Примеры скрипта используемый с помощью этой функции:
Пример №1: Статический список.
Scriptfiles: planes.txt - skins.txt
Code: Select all
#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: Динамический список.
Code: Select all
#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
PASTEBIN