Стили: 3 стиля диалогового окна. Стиль 0=DIALOG_STYLE_MSGBOX Стиль 1=DIALOG_STYLE_INPUT Стиль 2=DIALOG_STYLE_LIST
Примеры использования стилей: DIALOG_STYLE_MSGBOX(0) можно использовать для вывода сообщений. DIALOG_STYLE_INPUT(1) система регистрации и т.п. DIALOG_STYLE_LIST(2) Лист возможных опций
caption: Название диалога info: Текст в диалоговом окне button1: Первая кнопка например: Ок, Login button2: вторая кнопка .Пример:Cancel
Вот вам пример кода:
Code
if(strcmp(cmdtext, "/login", true) == 0) { new s[128]; new loginname[MAX_PLAYER_NAME]; GetPlayerName(playerid,loginname,MAX_PLAYER_NAME); format(s,sizeof(s),"Welcome again, %s!\n\nContiune to login!",loginname); ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Login Plase!",s,"Login","Cancel"); return 1; }
Добавка от меня а если вот так то текст будет по-русски:
Code
if(strcmp(cmdtext, "/login", true) == 0) { new s[128]; new loginname[MAX_PLAYER_NAME]; GetPlayerName(playerid,loginname,MAX_PLAYER_NAME); format(s,sizeof(s)," Здарова еще раз, %s!\n\n Зайди под своим ником!",loginname); ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT," Форма Логина!",s," Логин"," Отмена"); return 1; }
Проверено, пишет по-русски.. ладно продолжим туториал...Дальше вообще то отсутствует функция работы с диалоговым окном, т.е. что будет срабатывать если нажали на Ок.... в туториале который я переводил но шас попробую вам рассказать сам.
Вот паблик функции работы с ней:
Code
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
Сейчас расскажу здесь что означает: playerid: ну я думаю вы поняли что это ид игрок. dialogid: ид диалогового окна response: проверка нажал ли игрок на первую кнопку или на вторую listitem: если выбрали стиль окна DIALOG_STYLE_LIST ,то это будет выбор опции находящего в списке inputtext[] это то что игрок ввел в поле, например, в системе регистрации.
Сейчас сделаю скрипт диалогового окна на примере стиля DIALOG_STYLE_MSGBOX(0).
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { if(dialogid == 0) { if(response) { //Здесь то что случится если игрок нажмет на кнопка1 } else { //А здесь если он нажмет кнопка2 } } }[/pwn]
Вот Вам не большой пример скрипта..
Кстати да при использования диалогового окна в случае необходимости нужно пользоваться: \b - backspae - забой \f - Form feed - перевод страницы \n - new line - новая строка \r - возврат каретки \t - табуляция \v - вертикальная табуляция \' - одиночная кавычка \" - двойные кавычки \? - вопросительный знак
>>>> Вообщем уважаемые скриптёры вот этот код из public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) Сначала кода это окончание анимационного диалогового меню, а далее начинается оружейное диалоговое меню... Проблема в том что когда покупаю в оружейном меню к примеру нож у меня покупается он вместе с лимонадом ... Думаю проблема в том что надо правельно отделить первое диалоговое меню от второго. Я думаю что одной скобки ( } ) не достаточно.. Подскажите пожалуйста как правельно исправить это... Заранее очень благодарен.
это какой-то массив, судя по названию, в него автор пытался внести ид диалога, открытого игроку, но из-за тупости ему не могло дойти что ShowPlayerDialog не возращает ID диалогового окна.
помогите сделать такую регу, гф читал вчитывался пробовал но ничего не получилось, обращался в раздел гф но там не помогли сказали выдерни или юзай поиск, вот мой код
[pwn]if(RegistrationStep[playerid] > 0) { if(RegistrationStep[playerid] == 1) { new idx; tmp = strtok(text, idx); if((strcmp("male", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("male"))) { PlayerInfo[playerid][pSex] = 1; SendClientMessage(playerid, COLOR_YELLOW2, " Ok, вы мужчина."); SendClientMessage(playerid, COLOR_YELLOW, "* Когда у вас день рождения? (Пишите dd/mm/yyyy)?"); RegistrationStep[playerid] = 2; return 0; } else if((strcmp("female", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("female"))) { PlayerInfo[playerid][pSex] = 2; SendClientMessage(playerid, COLOR_YELLOW2, "* Ok, вы женщина."); SendClientMessage(playerid, COLOR_YELLOW, "* Когда у вас день рождения? (Пишите dd/mm/yyyy)?"); RegistrationStep[playerid] = 2; return 0; } else { SendClientMessage(playerid, COLOR_YELLOW, "* Вы Женщина или мужчина? (пишите если женщина-female, если мужчина male)."); } return 0; } else if(RegistrationStep[playerid] == 2) { new year, month,day; getdate(year, month, day); new DateInfo[3][20]; split(text, DateInfo, '/'); if(year - strval(DateInfo[2]) > 100 || strval(DateInfo[2]) < 1 || strval(DateInfo[2]) >= year) { SendClientMessage(playerid, COLOR_YELLOW, "* Когда у вас день рождения? (Пишите dd/mm/yyyy)"); return 0; } new check = year - strval(DateInfo[2]); if(check == year) { SendClientMessage(playerid, COLOR_YELLOW, "* Когда у вас день рождения? (Пишите dd/mm/yyyy)"); return 0; } if(strval(DateInfo[1]) > month) { check -= 1; } else if(strval(DateInfo[1]) == month && strval(DateInfo[0]) > day) { check -= 1; } PlayerInfo[playerid][pAge] = check; format(string, sizeof(string), "Ok, вам %d лет.",PlayerInfo[playerid][pAge]); SendClientMessage(playerid, COLOR_YELLOW2, string); RegistrationStep[playerid] = 3; SendClientMessage(playerid, COLOR_YELLOW, "* Откуда вы?? (Пишите LS, SF, LV) "); return 0; } else if(RegistrationStep[playerid] == 3) { new idx; tmp = strtok(text, idx); if((strcmp("LS", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("LS"))) { PlayerInfo[playerid][pOrigin] = 1; SendClientMessage(playerid, COLOR_YELLOW2, "* Ладно, вы из Los santos."); SendClientMessage(playerid, COLOR_YELLOW, "* Спасибо что заполнили информацию, сейчас вам покажут краткое руководство к серверу*"); RegistrationStep[playerid] = 0; TutTime[playerid] = 1; return 0; } else if((strcmp("SF", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("SF"))) { PlayerInfo[playerid][pOrigin] = 2; SendClientMessage(playerid, COLOR_YELLOW2, "* Ладно, вы из San fiero.*"); SendClientMessage(playerid, COLOR_YELLOW, "* Спасибо что заполнили информацию, сейчас вам покажут краткое руководство к серверу*"); RegistrationStep[playerid] = 0; TutTime[playerid] = 1; return 0; } else if((strcmp("LV", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("LV"))) { PlayerInfo[playerid][pOrigin] = 3; SendClientMessage(playerid, COLOR_YELLOW2, "*Ладно, вы из Las venturos.*"); SendClientMessage(playerid, COLOR_YELLOW, "* Спасибо что заполнили информацию, сейчас вам покажут краткое руководство к серверу*"); RegistrationStep[playerid] = 0; TutTime[playerid] = 1; return 0; } else { SendClientMessage(playerid, COLOR_YELLOW, "* Откуда вы?? (Пишите LS, SF, LV) "); } return 0; } return 0; }[/pwn]
юзайте switch(listitem) { case 0: { // код } case 1: { // код } }
Спор на форуме, все равно что олимпиада среди умственно отсталых: даже если ты победил, ты все равно гермофродит. Хочешь остаться при своем мнении - держи его при себе.
Спор на форуме, все равно что олимпиада среди умственно отсталых: даже если ты победил, ты все равно гермофродит. Хочешь остаться при своем мнении - держи его при себе.
Добавлено (25.04.2010, 11:03) --------------------------------------------- кинте плыз нормальное павно с совсеми инклудами или свое то что норм кинте за +
Добавлено (25.04.2010, 11:37) --------------------------------------------- выложыте плыз норм павно совсеми инклудами или нормальное свое плзы за +