Просмотр полной версии : [Вопрос] Диалог
Здравствуйте!
Хочу чтобы при открытии одного из списка меню (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
Попробуйте
else ShowPlayerDialog(playerid, dMs, DSL, "Меню","1. Статистика\n2. Команды\n3. Задать вопрос\n4. Репорт\n5. Настройки","Принять","Выйти");
Куда этот else? И что поменялось?
return ShowPlayerDialog(playerid, dMs, DSL, "Меню","1. Статистика\n2. Команды\n3. Задать вопрос\n4. Репорт\n5. Настройки","Принять","Выйти");
Попробуйте
else ShowPlayerDialog(playerid, dMs, DSL, "Меню","1. Статистика\n2. Команды\n3. Задать вопрос\n4. Репорт\n5. Настройки","Принять","Выйти");
Не дошло?
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
Используйте
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) в самом начале функции. Из-за неё никакие диалоги не будут обрабатываться, если игрок нажмёт "Назад".
Ну так правильно, вы ж сами зачем-то сделали проверку 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.
Ветку 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;
}
О господи..
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
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot