 |
|
 |
|
|
|
Последние Файлы GTA 4 |
Последние Файлы GTA-MP |
Реклама |
|
|
|
|
|
[Tutorial]Создание Диалогового окна
| |
| Dima-kun | Дата: Четверг, 29.10.2009, 22:47 | Сообщение # 1 |
|
Группа:
Разработчики
Сообщений: 6269
Награды: 72
Репутация: 3512
Замечания: 0%
Статус: 
| Урок по созданию диалогового окна в sa-mp 0.3 Автор:BlackWolfA Перевод:DizeL[ZR] Функция: Code ShowPlayerDialog(playerid, dialogid, style, caption[], info[], button1[], button2[]); Параметры: Code playerid, dialogid, style, caption[], info[], button1[], button2[] dialogid: например 1-2-3-4-5... и т.д Стили: 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[]) Параметры: Code playerid, dialogid, response, listitem, inputtext[] Сейчас расскажу здесь что означает: playerid: ну я думаю вы поняли что это ид игрок. dialogid: ид диалогового окна response: проверка нажал ли игрок на первую кнопку или на вторую listitem: если выбрали стиль окна DIALOG_STYLE_LIST ,то это будет выбор опции находящего в списке inputtext[] это то что игрок ввел в поле, например, в системе регистрации. Сейчас сделаю скрипт диалогового окна на примере стиля DIALOG_STYLE_MSGBOX(0). [pwn]public OnPlayerCommandText(playerid,cmdtext[]) { if(strcmp(cmdtext,"/okno",true)==0) {ShowPlayerDialog(playerid,0,DIALOG_STYLE_MSGBOX,"Заголовок","Текст информации","Кнопка1"," Кнопка2"); return 1;}return 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 - вертикальная табуляция \' - одиночная кавычка \" - двойные кавычки \? - вопросительный знак
Мои работы: [INC] Сборник d_includes [LAST],[FS] New Demage Effect,[FS]Авто-Поворотники, [FS]mp3player,[FS] Fun Chat Game,[FS] Car Buy Syst,[FS] Anti-AirBrk,[INC] d_setpos, [GM] Game Move v0.1,[FS+include]Super-Armour [0.3z],[FS + Include] Multi Checkpoints
Сообщение отредактировал DizeL-ZR- - Пятница, 30.10.2009, 15:20 |
| |
|
|
| W@R | Дата: Среда, 17.03.2010, 13:36 | Сообщение # 61 |
|
Постоялец
Группа:
Пользователи
Сообщений: 335
Награды: 3
Город: а.k.a ЕкБ_ЮЗ
Репутация: 51
Замечания: 20%
Статус: 
| у тех у кого мод PEN1 выложите public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) пожалуйста, буду оч благодарен
Translation from english to russian Ravens_Roleplay_v3 (RC5.2) - 0.3c--------15%
|
| |
|
|
| Ethernet | Дата: Воскресенье, 21.03.2010, 20:17 | Сообщение # 62 |
|
Новенький
Группа:
Пользователи
Сообщений: 10
Награды: 1
Город: Поронайск
Репутация: 0
Замечания: 0%
Статус: 
| Code SetPlayerSpecialAction (playerid, SPECIAL_ACTION_NONE ); SetPlayerDrunkLevel (playerid, 0); GivePlayerMoney(playerid,-300); } if(dialogid == DIALOG_WEAPON) { if(response) { if(listitem == 0) { if(GetPlayerMoney(playerid) <100) return SendClientMessage(playerid, COLOR_RED, "** У вас недостаточно денежных средств **"); GivePlayerMoney(playerid, -100); GivePlayerWeapon(playerid,4,1); SendClientMessage(playerid, COLOR_YELLOW, "[сервер] Нож куплен."); ShowPlayerDialog(playerid,2 , DIALOG_STYLE_LIST, "Выберите товар", "Нож(100$)\nПустынный орёл(500$)\nM4(5000$)\nРакетница(40000$)\nОгнемёт(5000$)\nГранаты(1000$)\nC4(2000$)\nСПАС-12(5000$)\nДробовик(3500$)\nСнайперская винтовка(5000$)\nMP5(3500$)\nПарашют(бесплатно)", "Выбрать", "Закрыть"); } >>>> Вообщем уважаемые скриптёры вот этот код из public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) Сначала кода это окончание анимационного диалогового меню, а далее начинается оружейное диалоговое меню... Проблема в том что когда покупаю в оружейном меню к примеру нож у меня покупается он вместе с лимонадом ... Думаю проблема в том что надо правельно отделить первое диалоговое меню от второго. Я думаю что одной скобки ( } ) не достаточно.. Подскажите пожалуйста как правельно исправить это... Заранее очень благодарен.
|
| |
|
|
| Sprunk | Дата: Воскресенье, 21.03.2010, 20:23 | Сообщение # 63 |
|
Хостинг-провайдер
Группа:
Пользователи
Сообщений: 2451
Награды: 125
Город: Волгоград.
Репутация: 774
Замечания: 100%
Статус: 
| Quote (Ethernet) Я думаю что одной скобки ( } ) не достаточно.. Компилятор выдавал бы ошибки хм.....мб совпадают ид окон,хотя нет врядлеQuote (Ethernet) if(dialogid == DIALOG_WEAPON) { Может в покупке лимонада у тебя тоже ид DIALOG_WEAPON?
pawn.su - Аренда игровых серверов. Игровой портал Game Entertainment (Game-Ent.ru)
|
| |
|
|
| Ethernet | Дата: Воскресенье, 21.03.2010, 20:37 | Сообщение # 64 |
|
Новенький
Группа:
Пользователи
Сообщений: 10
Награды: 1
Город: Поронайск
Репутация: 0
Замечания: 0%
Статус: 
| Да нет в том то и дело там у меня Code if(dialogid == DIALOG_DRINK) Непойму в чём дело ....
|
| |
|
|
| Alexx73 | Дата: Четверг, 08.04.2010, 19:29 | Сообщение # 65 |
|
Новенький
Группа:
I'm V.I.P.
Сообщений: 50
Награды: 1
Репутация: 10
Замечания: 0%
Статус: 
| что такое "OnDialog[playerid]=" ? и для чего нужен "switch(row)" ?
Welcome - * -=::RUS/UA Server ~ Real World::=- * - 77.220.182.206:7777
|
| |
|
|
| Dima-kun | Дата: Четверг, 08.04.2010, 19:40 | Сообщение # 66 |
|
Группа:
Разработчики
Сообщений: 6269
Награды: 72
Репутация: 3512
Замечания: 0%
Статус: 
| Quote (Alexx73) OnDialog[playerid] это какой-то массив, судя по названию, в него автор пытался внести ид диалога, открытого игроку, но из-за тупости ему не могло дойти что ShowPlayerDialog не возращает ID диалогового окна. Quote (Alexx73) switch(row) Почитай основы.
Мои работы: [INC] Сборник d_includes [LAST],[FS] New Demage Effect,[FS]Авто-Поворотники, [FS]mp3player,[FS] Fun Chat Game,[FS] Car Buy Syst,[FS] Anti-AirBrk,[INC] d_setpos, [GM] Game Move v0.1,[FS+include]Super-Armour [0.3z],[FS + Include] Multi Checkpoints
|
| |
|
|
| ABATAP | Дата: Вторник, 13.04.2010, 20:11 | Сообщение # 67 |
|
Советчик
Группа:
Продвинутые
Сообщений: 1007
Награды: 14
Город: Новосибирск
Репутация: 729
Замечания: 0%
Статус: 
| помогите сделать такую регу, гф читал вчитывался пробовал но ничего не получилось, обращался в раздел гф но там не помогли сказали выдерни или юзай поиск, вот мой код [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]
|
| |
|
|
| ABATAP | Дата: Четверг, 15.04.2010, 12:36 | Сообщение # 68 |
|
Советчик
Группа:
Продвинутые
Сообщений: 1007
Награды: 14
Город: Новосибирск
Репутация: 729
Замечания: 0%
Статус: 
|
|
| |
|
|
| Ghost-X | Дата: Четверг, 15.04.2010, 14:23 | Сообщение # 69 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 3548
Награды: 36
Город: Наб. Челны
Репутация: 856
Замечания: 40%
Статус: 
| Quote (Ethernet) if(listitem == 0) юзайте switch(listitem) { case 0: { // код } case 1: { // код } }
Спор на форуме, все равно что олимпиада среди умственно отсталых: даже если ты победил, ты все равно гермофродит. Хочешь остаться при своем мнении - держи его при себе.
|
| |
|
|
| Noxik | Дата: Четверг, 15.04.2010, 14:37 | Сообщение # 70 |
|
Освоившийся
Группа:
Пользователи
Сообщений: 114
Награды: 1
Город: Черкассы
Репутация: 14
Замечания: 20%
Статус: 
| [offtop] У кого есть ФС диалогового окна? [/offtop]
Играй там где лучше - 77.220.182.86:7777 Premium|Game
|
| |
|
|
| Ghost-X | Дата: Четверг, 15.04.2010, 15:09 | Сообщение # 71 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 3548
Награды: 36
Город: Наб. Челны
Репутация: 856
Замечания: 40%
Статус: 
| Noxik, он идет в наборе с сервером test_cmds
Спор на форуме, все равно что олимпиада среди умственно отсталых: даже если ты победил, ты все равно гермофродит. Хочешь остаться при своем мнении - держи его при себе.
|
| |
|
|
| TiShA | Дата: Суббота, 24.04.2010, 15:46 | Сообщение # 72 |
|
Освоившийся
Группа:
Продвинутые
Сообщений: 96
| : error 017: undefined symbol "ShowPlayerDialog" что мне с ним зделать чтоб не выбивал?
|
| |
|
|
| Sprunk | Дата: Суббота, 24.04.2010, 15:52 | Сообщение # 73 |
|
Хостинг-провайдер
Группа:
Пользователи
Сообщений: 2451
Награды: 125
Город: Волгоград.
Репутация: 774
Замечания: 100%
Статус: 
| TiShA, использовать инклуды от samp 0.3a http://files.sa-mp.com/samp03asvr_R7_win32.zip
pawn.su - Аренда игровых серверов. Игровой портал Game Entertainment (Game-Ent.ru)
|
| |
|
|
| TiShA | Дата: Воскресенье, 25.04.2010, 11:37 | Сообщение # 74 |
|
Освоившийся
Группа:
Продвинутые
Сообщений: 96
| 004: function "PlayerToPoint" is not implemented а ето как исправить? подскажыте пожалуйста! Добавлено (25.04.2010, 11:03) --------------------------------------------- кинте плыз нормальное павно с совсеми инклудами или свое то что норм кинте за + Добавлено (25.04.2010, 11:37) --------------------------------------------- выложыте плыз норм павно совсеми инклудами или нормальное свое плзы за +
|
| |
|
|
| KPECTok | Дата: Понедельник, 03.05.2010, 11:57 | Сообщение # 75 |
|
Освоившийся
Группа:
Пользователи
Сообщений: 93
Награды: 0
Город: Земля мой город..
Репутация: 5
Замечания: 0%
Статус: 
| Народ, как замутить Showstats в диалог? Пишем /stats и вся статистика в окошке аккуратном.. Кто приведет пример?
|
| |
|
|
|
 |
|
 | |
| |
|