PDA

Просмотр полной версии : [Вопрос] Диалог



Vince
10.06.2015, 21:42
Здравствуйте!

Хочу чтобы при открытии одного из списка меню (listitem), и при нажатии кнопки назад, окно не закрывалось, а перекидывало в главное меню, но ничего не выходит, делаю так:


public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(response)
{
switch(dialogid)
{
case(dMs):
{
if(response)
{
switch(listitem)
{
case 0:
ShowPlayerDialog(playerid, dStats, DSM, "Статистика","Тест","Назад","");
case 1:
ShowPlayerDialog(playerid, dCommands, DSM, "Команды","Тест","Назад","");
}
}
else
{
return ShowPlayerDialog(playerid, dMs, DSL, "Меню","1. Статистика\n2. Команды\n3. Задать вопрос\n4. Репорт\n5. Настройки","Принять","Выйти");
}
}
}
}
return 1;
}

То есть, при нажатии в диалоге dStats на кнопку "Назад", нужно чтобы выкидывало в диалог dMs

ArtyomG
10.06.2015, 23:19
Попробуйте


else ShowPlayerDialog(playerid, dMs, DSL, "Меню","1. Статистика\n2. Команды\n3. Задать вопрос\n4. Репорт\n5. Настройки","Принять","Выйти");

Vince
11.06.2015, 00:41
Куда этот else? И что поменялось?

Sp1ke
11.06.2015, 01:22
return ShowPlayerDialog(playerid, dMs, DSL, "Меню","1. Статистика\n2. Команды\n3. Задать вопрос\n4. Репорт\n5. Настройки","Принять","Выйти");



Попробуйте


else ShowPlayerDialog(playerid, dMs, DSL, "Меню","1. Статистика\n2. Команды\n3. Задать вопрос\n4. Репорт\n5. Настройки","Принять","Выйти");


Не дошло?

Vince
11.06.2015, 01:30
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(response)
{
switch(dialogid)
{
case(dMs):
{
if(response)
{
switch(listitem)
{
case 0:
ShowPlayerDialog(playerid, dStats, DSM, "Статистика","Тест","Назад","");
case 1:
ShowPlayerDialog(playerid, dCommands, DSM, "Команды","Тест","Назад","");
}
}
else
{
ShowPlayerDialog(playerid, dMs, DSL, "Меню","1. Статистика\n2. Команды\n3. Задать вопрос\n4. Репорт\n5. Настройки","Принять","Выйти");
}
}
}
}
return 1;
}


Вот весь паб целеком, убрал ретерн, диалог не выводится(

Niko_Grey
11.06.2015, 18:58
Используйте
else
{
ShowPlayerDialog(playerid, dMs, DSL, "Меню","1. Статистика\n2. Команды\n3. Задать вопрос\n4. Репорт\n5. Настройки","Принять","Выйти");
}

В диалогах dStats и dCommands

Vince
11.06.2015, 20:34
Используйте
else
{
ShowPlayerDialog(playerid, dMs, DSL, "Меню","1. Статистика\n2. Команды\n3. Задать вопрос\n4. Репорт\n5. Настройки","Принять","Выйти");
}

В диалогах dStats и dCommands

Сделал так:


public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(response)
{
switch(dialogid)
{
case dMs:
{
switch(listitem)
{
case 0:
{
if(response)
{
ShowPlayerDialog(playerid, dStats, DSM, "Статистика","Тест","Назад","");
}
else
{
ShowPlayerDialog(playerid, dMs, DSL, "Меню","1. Статистика\n2. Команды\n3. Задать вопрос\n4. Репорт\n5. Настройки","Принять","Выйти");
}
}
}
}
}
}
else
{
return 0;
}
return 1;
}

Диалог dStats просто закрывается

Daniel_Cortez
11.06.2015, 21:24
Сделал так:


public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(response)
{
switch(dialogid)
{
case dMs:
{
switch(listitem)
{
case 0:
{
if(response)
{
ShowPlayerDialog(playerid, dStats, DSM, "Статистика","Тест","Назад","");
}
else
{
ShowPlayerDialog(playerid, dMs, DSL, "Меню","1. Статистика\n2. Команды\n3. Задать вопрос\n4. Репорт\n5. Настройки","Принять","Выйти");
}
}
}
}
}
}
else
{
return 0;
}
return 1;
}

Диалог dStats просто закрывается
Ну так правильно, вы ж сами зачем-то сделали проверку if(response) в самом начале функции. Из-за неё никакие диалоги не будут обрабатываться, если игрок нажмёт "Назад".

Vince
11.06.2015, 22:06
Ну так правильно, вы ж сами зачем-то сделали проверку if(response) в самом начале функции. Из-за неё никакие диалоги не будут обрабатываться, если игрок нажмёт "Назад".

Я думал так, если "правда" открывается dStats, все остальное возвращает dMs :sorry:

- - - Добавлено - - -


public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case dMs:
{
switch(listitem)
{
case 0:
{
if(response)
{
ShowPlayerDialog(playerid, dStats, DSM, "Статистика","Тест","Назад","");
}
else
{
ShowPlayerDialog(playerid, dMs, DSL, "Меню","1. Статистика\n2. Команды\n3. Задать вопрос\n4. Репорт\n5. Настройки","Принять","Выйти");
}
}
}
}
}
return 1;
}

Сделал так, теперь в самом меню dMs, при нажатии на "Выход", он по новой открывается, то есть просто не выходит

Daniel_Cortez
11.06.2015, 23:39
Ветку else не в тот диалог поставили. Вам же нужно обработать выбор пункта "Назад" или нажатие "Esc" в диалоге dStats, а не dMs.

Vince
12.06.2015, 12:18
Ветку else не в тот диалог поставили. Вам же нужно обработать выбор пункта "Назад" или нажатие "Esc" в диалоге dStats, а не dMs.


public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case dMs:
{
switch(listitem)
{
case 0:
{
ShowPlayerDialog(playerid, dStats, DSM, "Статистика","Тест","Назад","");
}
}
switch(dialogid)
{
case dStats:
{
if(!response)ShowPlayerDialog(playerid, dMs, DSL, "Меню","1. Статистика\n2. Команды\n3. Задать вопрос\n4. Репорт\n5. Настройки","Принять","Выйти");
}
}
}
}
return 1;
}

Сделал проверку по dStats, теперь при входе в главное меню, и нажатии на кнопку "Выйти" оно открывает само себя, то есть не закрывается

Niko_Grey
12.06.2015, 17:15
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case dMs:
{
switch(listitem)
{
case 0:
{
ShowPlayerDialog(playerid, dStats, DSM, "Статистика","Тест","Назад","");
}
}
switch(dialogid)
{
case dStats:
{
if(!response)ShowPlayerDialog(playerid, dMs, DSL, "Меню","1. Статистика\n2. Команды\n3. Задать вопрос\n4. Репорт\n5. Настройки","Принять","Выйти");
}
}
}
}
return 1;
}

Сделал проверку по dStats, теперь при входе в главное меню, и нажатии на кнопку "Выйти" оно открывает само себя, то есть не закрывается



О господи..


public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case dMs:
{
switch(listitem)
{
case 0:
{
ShowPlayerDialog(playerid, dStats, DSM, "Статистика","Тест","Назад","");
}
}
}
case dStats:
{
if(!response) return ShowPlayerDialog(playerid, dMs, DSL, "Меню","1. Статистика\n2. Команды\n3. Задать вопрос\n4. Репорт\n5. Настройки","Принять","Выйти");
}
}
return 1;
}

Vince
12.06.2015, 18:02
О господи..


public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case dMs:
{
switch(listitem)
{
case 0:
{
ShowPlayerDialog(playerid, dStats, DSM, "Статистика","Тест","Назад","");
}
}
}
case dStats:
{
if(!response) return ShowPlayerDialog(playerid, dMs, DSL, "Меню","1. Статистика\n2. Команды\n3. Задать вопрос\n4. Репорт\n5. Настройки","Принять","Выйти");
}
}
return 1;
}

Делал я так, вот что выходит:

При открытии самого /mm

http://i.imgur.com/lwpkeOA.png

При выходе из него:

http://i.imgur.com/Tc9j67H.png

Vince
13.06.2015, 16:00
Upp