PDA

Просмотр полной версии : [CMD] Клист [DC_CMD + sscanf]



Desulaid
06.04.2015, 20:33
Важно: Данная команда работает с плагином sscanf (http://forum.sa-mp.com/showthread.php?p=520110).

Использование: при вводе команды "/color" ( без указания параметров ) у игрока открывается диалог со списком и выбором цвета. Если вы помните цвет по памяти, то можете использовать команду так: "/color [ID цвета]".

Установка:
В начало мода, ко всем константам ( или макросам ):


const
CLIST_DIALOG = 1500,
MAX_COLOR_NAME = 16;

enum
e_CLIST_INFO
{
color_name[MAX_COLOR_NAME],
color_hex_code
};

static const
clist_data[][e_CLIST_INFO] =
{
{ "Стандартный", 0xC2C2C2FF },
{ "Зелёный", 0x00FF00FF },
{ "Светло-зелёный", 0xBFFF00FF },
{ "Ярко-зелёный", 0x66FF00FF },
{ "Бирюзовый", 0x30D5C8FF },
{ "Жёлто-зелёный", 0xADFF2FFF },
{ "Тёмно-зелёный", 0x013220FF },
{ "Серо-зелёный", 0x5DA130FF },
{ "Красный", 0xFF0000FF },
{ "Ярко-красный", 0xFF2400FF },
{ "Оранжевый", 0xFFA500FF },
{ "Коричневый", 0x964B00FF },
{ "Тёмно-красный", 0xC41E3AFF },
{ "Серо-красный", 0xBB4488FF },
{ "Жёлто-оранжевый", 0xFF9900FF },
{ "Малиновый", 0xDC143CFF },
{ "Розовый", 0xFFC0CBFF },
{ "Синий", 0x0000FFFF },
{ "Голубой", 0x42AAFFFF },
{ "Синяя сталь", 0x1E90FFFF },
{ "Сине-зелёный", 0x008080FF },
{ "Тёмно-синий", 0x4169E1FF },
{ "Фиолетовый", 0x8B00FFFF },
{ "Индиго", 0xCD00CDFF },
{ "Серо-синий", 0xA2A0F6FF },
{ "Жёлтый", 0xFFFF00FF },
{ "Кукурузный", 0xFBEC5DFF },
{ "Золотой", 0xFFD700FF },
{ "Старое золото", 0xCFB53BFF },
{ "Оливковый", 0x808000FF },
{ "Серый", 0xBBBBBBFF },
{ "Серебро", 0xC0C0C0FF },
{ "Чёрный", 0x000000FF },
{ "Белый", 0xFFFFFFFF }
};



Добавляем команду, в любое удобное для вас место в моде:


CMD:color(playerid, params[])
{
static const
fmt_item_msg[] = "%i. {%06x}%s\n";

static
clist_item_string
[
sizeof(fmt_item_msg)
+ (-2)
+ 3
+ (-4)
+ 6
+ (-2)
+ MAX_COLOR_NAME
],
clist_string[sizeof(clist_item_string) * sizeof(clist_data)];

extract params -> new colorid; else
{
for(new i = 0; i < sizeof(clist_data); i++)
{
format(
clist_item_string, sizeof(clist_item_string),
fmt_item_msg,
i+1,
clist_data[i] >>> 8,
clist_data[i][color_name]
);

strcat(clist_string, clist_item_string);
}
ShowPlayerDialog(playerid, CLIST_DIALOG, DIALOG_STYLE_LIST, "Выберите цвет из списка:", clist_string, "Выбрать", "Отмена");

}
else
{
if(!(0 <= colorid <= (sizeof(clist_data)-1)))
return SendClientMessage(playerid, -1, "Такого цвета не существует, используйте команду без параметра, чтобы узнать ID цвета.");

SetPlayerColor(playerid, clist_data[colorid][color_hex_code]);
}
return 1;
}


В паблик OnDialogResponse добавляем следующий код:


if(dialogid == CLIST_DIALOG)
return
response
? SetPlayerColor(playerid, clist_data[listitem][color_hex_code])
: 1;


https://i.gyazo.com/9918ddea84c822936a3ebde2d8840c83.png

[COLOR="#FF8C00"]Автор: Untonyst
Доработка: Londlem

L0ndl3m
08.04.2015, 20:09
Код занесите в тэг:

php
и поработайте над табуляцией.

Desulaid
08.04.2015, 22:17
Код занесите в тэг:

php
и поработайте над табуляцией.

С табуляцией все хорошо, а вот в тег PHP занесу