Просмотр полной версии : [Вопрос] Динамические диалоги.
I'm Cobra
28.01.2015, 20:50
Здравствуйте, ув. пользователи Pro-Pawn! Сегодня я столкнулся с такой проблемой, нужно было сделать динамический диалог. А я никогда не работал с ними. В просторах интернета видел только инклуды. Помогите пожалйуста. Дайте ссылку на какой-нибудь урок, или если не составит труда, распишите все.
Диалоги, которые Вы формируете сами какой-либо функцией/циклом.
Например, кусок кода:
foreach(new i: Player)
{
if(IsPlayerNPC(i) || player_is_logged{i} == 0) continue;
if(PlayerInfo[playerid][pMember] == PlayerInfo[i][pMember])
{
MEMBERS++;
f(str, "{FFFFFF}%d.{1E90FF} %s[%d] {FFFFFF}(%s[%d])\n", MEMBERS, Name(i), i, FracRank[PlayerInfo[i][pMember]][PlayerInfo[i][pRank]], PlayerInfo[i][pRank]);
strcat(sctring,str);
f(string, "{FFFFFF}Членов организации онлайн: {1E90FF}%i", MEMBERS);
SPD(playerid, D_EMPTY, MSGBOX, string, sctring, "ENTER", "");
}
}
if(strlen(str) < 1) SCM(playerid, COLOR_WHITE, "[SERVER]: Нет членов организации онлайн.");
Показывает, сколько членов организации онлайн на момент ввода команды.
Получается, заведомо неизвестно, сколько строк будет в диалоге и будут ли они там вообще. Вот и вся суть динамического диалога. (моё мнение)
I'm Cobra
28.01.2015, 21:10
Диалоги, которые Вы формируете сами какой-либо функцией/циклом.
Например, кусок кода:
foreach(new i: Player)
{
if(IsPlayerNPC(i) || player_is_logged{i} == 0) continue;
if(PlayerInfo[playerid][pMember] == PlayerInfo[i][pMember])
{
MEMBERS++;
f(str, "{FFFFFF}%d.{1E90FF} %s[%d] {FFFFFF}(%s[%d])\n", MEMBERS, Name(i), i, FracRank[PlayerInfo[i][pMember]][PlayerInfo[i][pRank]], PlayerInfo[i][pRank]);
strcat(sctring,str);
f(string, "{FFFFFF}Членов организации онлайн: {1E90FF}%i", MEMBERS);
SPD(playerid, D_EMPTY, MSGBOX, string, sctring, "ENTER", "");
}
}
if(strlen(str) < 1) SCM(playerid, COLOR_WHITE, "[SERVER]: Нет членов организации онлайн.");
Показывает, сколько членов организации онлайн на момент ввода команды.
Получается, заведомо неизвестно, сколько строк будет в диалоге и будут ли они там вообще. Вот и вся суть динамического диалога. (моё мнение)
Например, при вводе команды /test у игрока выскакивает диалог со стилем INPUT и он вводит текст. Потом при вводе команда /showtest диалог со стилем LIST и в этом диалоге все что было введено в /test.
Например, при вводе команды /test у игрока выскакивает диалог со стилем INPUT и он вводит текст. Потом при вводе команда /showtest диалог со стилем LIST и в этом диалоге все что было введено в /test.
Быстро схватываете.
I'm Cobra
28.01.2015, 21:24
Быстро схватываете.
Вообще-то, это была просьба показать примерный код, или объяснить как это сделать :)
Ну вот пример:
new some_text[20];
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 0)
{
if(!response) return true;
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 0, DIALOG_STYLE_INPUT, "Test", "Введите какой-нибудь текст:", "Далее", "Отмена");
strmid(some_text, inputtext, 0, strlen(inputtext), 21);
}
return true;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp("/test", cmdtext, true, 10) == 0)
{
ShowPlayerDialog(playerid, 0, DIALOG_STYLE_INPUT, "Test", "Введите какой-нибудь текст:", "Далее", "Отмена");
return 1;
}
else if(strcmp("/showtest", cmdtext, true, 10) == 0)
{
if(!strlen(some_text)) return SendClientMessage(playerid, -1, "В переменной ничего не записано!");
new string[20];
format(string, sizeof(string), "%s", some_text);
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_LIST, "Test", string, "Выбрать", "Отмена");
return 1;
}
return 0;
}
Mazzilla
29.01.2015, 08:11
new string[20];
format(string, sizeof(string), "%s", some_text);
Извращенец какой-то.
new string[20];
format(string, sizeof(string), "%s", some_text);
Извращенец какой-то.
Да, затупил :D
Погоня за количествами строк объявляется открытой.
if (0 == strcmp("/showtest", cmdtext, true, 9)) {
return (0 == strlen(some_text))
? SendClientMessage(playerid, -1, "В переменной ничего не записано!")
: ShowPlayerDialog(playerid, 1, DIALOG_STYLE_LIST, "Test", string, "Выбрать", "Отмена");
}
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot