PDA

Просмотр полной версии : [Вопрос] DLDialog / Dynamic List Dialog



MARVEL
27.03.2017, 21:54
Вечер добрый. Недавно понадобилось создать динамические диалоги, поискав немного в интернете, я нашел инклуд DLDialog. Все, вроде бы, подключил.. Но столкнулся с такой проблемой, список создается нормально, но когда выбираю пункт из списка ничего не происходит, просто закрывается диалог. Может я чего упустил, не подскажите?



enum
{
APANEL_VIP_PLAYERS,
APANEL_ADMINS,
APANEL_ALL_ADMINS,
APANEL_COMMANDS,
APANEL_SETTINGS_ADMIN,
APANEL_CONTROL_SERVER
}


OnDialogResponse:


case DLG_ADMIN_PANEL:
{
if(response)
{
switch(DLItemID)
{
case APANEL_VIP_PLAYERS:
{
new year, month, day, string[100];
new current_date = getdate(year, month, day);
SendClientMessage(playerid, COLOR_BLUE, "VIP игроки:");
foreach(new i: Player)
{
if(!PlayerLogged[i] || !PI[i][pVip]) continue;
format(string, sizeof(string), "- %s (осталось дн.: %i)", getName(i), PI[i][pVipTime] - current_date);
SendClientMessage(playerid, COLOR_WHITE, string);
}
}
case APANEL_ADMINS: callcmd::admins(playerid);
case APANEL_ALL_ADMINS:
{
mysql_tquery(dbHandle, "SELECT * FROM "T_ADMIN" WHERE level > '0'", "AllAdmins", "i", playerid);
}
case APANEL_COMMANDS:
{
new string[128];

if(PI[playerid][pAdmin] >= ADM_MODER)
format(string, sizeof string, "1-й уровень");

if(PI[playerid][pAdmin] >= ADM_SUPER_MODER)
format(string, sizeof string, "%s\n2-й уровень", string);

if(PI[playerid][pAdmin] >= ADM_ADMIN)
format(string, sizeof string, "%s\n3-й уровень", string);

if(PI[playerid][pAdmin] >= ADM_SUPER_ADMIN)
format(string, sizeof string, "%s\n4-й уровень", string);

if(PI[playerid][pAdmin] >= ADM_GRAND_ADMIN)
format(string, sizeof string, "%s\n5-й уровень", string);

if(PI[playerid][pAdmin] >= ADM_SPECIAL_ADMIN)
format(string, sizeof string, "%s\n6-й уровень", string);

if(PI[playerid][pAdmin] >= ADM_FOUNDER)
format(string, sizeof string, "%s\n7-й уровень", string);

ShowPlayerDialog(
playerid, DLG_ADMIN_COMMAND, DIALOG_STYLE_LIST,
!"Команды администратора", string, !"Выбрать", !"Назад"
);
}
case APANEL_SETTINGS_ADMIN:
{
if(PI[playerid][pAdmin] < ADM_SUPER_ADMIN) return SendClientMessage(playerid, COLOR_GREY, "[Ошибка] У вас нет доступа!");
new string[350];
format(string, sizeof(string), "{ffffff}Телепорт к себе\t\t| %s\n{ffffff}Телепорт себя\t\t\t| %s\n{ffffff}Слежка за собой\t\t| %s\nИнформация",
(AdminInfo[playerid][admGoto]) ? ("{F04245}Запрещён") : ("{63BD4E}Разрешён"),
(AdminInfo[playerid][admGethere]) ? ("{F04245}Запрещён") : ("{63BD4E}Разрешён"),
(AdminInfo[playerid][admSpectate]) ? ("{F04245}Запрещена") : ("{63BD4E}Разрешена"));
ShowPlayerDialog(playerid, dAdminPanel_Permission, 2, "{FFCC00}Настройки администратора", string, "Выбрать", "Назад");
}
case APANEL_CONTROL_SERVER:
{
if(PI[playerid][pAdmin] < ADM_FOUNDER) return SendClientMessage(playerid, COLOR_GREY, "[Ошибка] У вас нет доступа!");
new string[256];
format(string, sizeof(string), "{ffffff}Удвоение опыта:\t %s\n{ffffff}Удвоение доната:\t %s\n",
(!doubling_exp) ? ("{F04245}Выкл") : ("{63BD4E}Вкл"),
(!doubling_donate) ? ("{F04245}Выкл") : ("{63BD4E}Вкл"));
ShowPlayerDialog(playerid, dAdminPanel_Bonuses, DIALOG_STYLE_TABLIST, "Бонусы", string, "Выбрать", "Назад");
}
}
}
}


Команда:


CMD:apanel(playerid)
{
if(PI[playerid][pAdmin] >= ADM_GRAND_ADMIN)
AddDListItem(playerid, "VIP игроки [ONLINE]", APANEL_VIP_PLAYERS);

AddDListItem(playerid, "Список администрации [ONLINE]", APANEL_ADMINS);

if(PI[playerid][pAdmin] >= ADM_GRAND_ADMIN)
AddDListItem(playerid, "Весь список администрации", APANEL_ALL_ADMINS);

AddDListItem(playerid, "Команды сервера", APANEL_COMMANDS);

if(PI[playerid][pAdmin] >= ADM_SUPER_ADMIN)
AddDListItem(playerid, "Настройки администратора", APANEL_SETTINGS_ADMIN);

if(PI[playerid][pAdmin] >= ADM_SPECIAL_ADMIN)
AddDListItem(playerid, "Управление сервером", APANEL_CONTROL_SERVER);

ShowPlayerDList(playerid, DLG_ADMIN_PANEL, "Панель администратора", "Выбрать", "Закрыть");
return true;
}