 |
|
 |
|
|
|
Последние Файлы 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 |
| |
|
|
| SMOUK | Дата: Вторник, 26.10.2010, 00:21 | Сообщение # 121 |
|
Местный
Группа:
Продвинутые
Сообщений: 646
Награды: 13
Город: Рославль
Репутация: 284
Замечания: 100%
Статус: 
| Ммм. Возможно.. Я на это как то внимания не обращал т.к не маюсь с этой проблемой )

|
| |
|
|
| SiZMaN | Дата: Понедельник, 08.11.2010, 21:02 | Сообщение # 122 |
|
Новенький
Группа:
Пользователи
Сообщений: 56
Награды: 0
Город: нижний новгород
Репутация: 0
Замечания: 0%
Статус: 
| А как сделать так вот допустим создал я меню в нем 3 варианта выбора! Code if(dialogid == 3 && response) { switch(listitem) { case 0: { SendClientMessage(playerid, 0xFFFF00AA, " Садитесь в тягач, подцепляйте телегу и едьте на красный круг, что-бы доставить продукты!"); SetPlayerCheckpoint(playerid, 2176.2202,-2230.3501,21.9618, 3.0); } case 1: { SendClientMessage(playerid, 0xFFFF00AA, " Садитесь в тягач, подцепляйте телегу и едьте на красный круг, что-бы доставить продукты!"); SetPlayerCheckpoint(playerid, 2497.6387,-651.5430,12.2501, 3.0); } case 2: { SendClientMessage(playerid, 0xFFFF00AA, " Садитесь в тягач, подцепляйте телегу и едьте на красный круг, что-бы доставить продукты!"); SetPlayerCheckpoint(playerid, 2332.4812,-1925.5785,21.8174, 3.0); } } } Как к ним привязать чтобы выбрать именно эту машину, и проверку на то что на чекпоинт подьехала машина с телегой?
|
| |
|
|
| npopok64RUS | Дата: Четверг, 11.11.2010, 17:00 | Сообщение # 123 |
|
Новенький
Группа:
Пользователи
Сообщений: 14
Награды: 0
Город: San Fiero
Репутация: 0
Замечания: 0%
Статус: 
| ПАМАГИТЕ ПЛИЗ: Я зделал /drink в диалоге. диалог пашет но тока диалог и всё! http://www.4shared.com/document/6NsQvOh_/1_online.html - я добавил код в блакноте просматрите плиз и потскажитк!Добавлено (11.11.2010, 17:00) --------------------------------------------- и подскажите плиз как мне зделать так чтобы когда потходиш к пикапу (вигледит тк"j")автоматически вилезло диалоговае окно с нескальками вариантами!?
http://games-sait.ucoz.ru http://games-sait.ucoz.ru http://games-sait.ucoz.ru http://games-sait.ucoz.ru
|
| |
|
|
| SiZMaN | Дата: Суббота, 13.11.2010, 22:43 | Сообщение # 124 |
|
Новенький
Группа:
Пользователи
Сообщений: 56
Награды: 0
Город: нижний новгород
Репутация: 0
Замечания: 0%
Статус: 
| npopok64RUS, Quote (npopok64RUS) подскажите плиз как мне зделать так чтобы когда потходиш к пикапу (вигледит тк"j")автоматически вилезло диалоговае окно с нескальками вариантами!? В начало: В public OnGameModeInit() Code pic = CreatePickup(model, type, Float:X, Float:Y, Float:Z, Virtualworld); //Тут сам допишешь модель координаты и тд! В public OnPlayerPickUpPickup( playerid, pickupid ) Code { if(pickupid == mesto) { // Тут диалог!!! } return 1; } Добавлено (11.11.2010, 19:42) --------------------------------------------- ================================ Quote (SiZMaN) { if(pickupid == mesto) // Вместо mesto > pic { // Тут диалог!!! } return 1; } Добавлено (13.11.2010, 22:43) --------------------------------------------- Помогите перевести на диалоги! Должно ипользоваться при конекте и когда игрок еще не зарегистрирован: Code if(!strcmp(cmd, "/register", true)) { new tmp[256]; tmp = strtok(cmdtext, idx); RegisterPlayer(playerid,tmp); return 1; } Должно ипользоваться при конекте и когда игрок зарегистрирован: Code new cmd[256]; new idx = 0; cmd = strtok(cmdtext, idx); if(!strcmp(cmd, "/login", true)) { new tmp[256]; tmp = strtok(cmdtext, idx); LoginPlayer(playerid,tmp); return 1; } Просто не могу понять как в DIALOG_STYLE_INPUT все это делаеться!
|
| |
|
|
| tailer | Дата: Воскресенье, 14.11.2010, 22:48 | Сообщение # 125 |
|
Новенький
Группа:
Пользователи
Сообщений: 67
Награды: 27
Город: Казань
Репутация: 85
Замечания: 0%
Статус: 
| SiZMaN, Ты хочешь регистрацию в диолог перевести ? ________________ Ребят когда диологи создоешь нужно что нибудь добовлять ? ну там new, forward, define ??
|
| |
|
|
| SiZMaN | Дата: Понедельник, 15.11.2010, 18:19 | Сообщение # 126 |
|
Новенький
Группа:
Пользователи
Сообщений: 56
Награды: 0
Город: нижний новгород
Репутация: 0
Замечания: 0%
Статус: 
| tailer, Да 1)Как сделать так, чтобы окно не закрывалось после регистрации, если пустое поле, и если пароль при входе не правильный?
Code public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { new tmp[256]; new idx = 0; if(dialogid == 1) { if(response) { //РЕГИСТРАЦИЯ tmp = strtok(inputtext, idx); RegisterPlayer(playerid,tmp); } } else { //ВХОД tmp = strtok(inputtext, idx); LoginPlayer(playerid,tmp); } } Добавлено (15.11.2010, 18:19) ---------------------------------------------
Quote (tailer) Ребят когда диологи создоешь нужно что нибудь добовлять ? ну там new, forward, define ?? Если что то ДА public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { new tmp[256]; new idx = 0; if(dialogid == 1) { if(response) { //РЕГИСТРАЦИЯ tmp = strtok(inputtext, idx); RegisterPlayer(playerid,tmp); } } else { //ВХОД tmp = strtok(inputtext, idx); LoginPlayer(playerid,tmp); } }
|
| |
|
|
| wizar | Дата: Четверг, 18.11.2010, 17:42 | Сообщение # 127 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 277
Награды: 2
Город: Алчевск
Репутация: -20
Замечания: 20%
Статус: 
| всем ку.делаю правила для сервера. непойму что и куда вставлять чтобі если я непринимаю правила чтобы кик вот я тут что то сделал и незнаю куда присунуть кик Quote if(dialogid == 739) { format(string,sizeof(string),"Я Мужчина\nЯ Женщина"); ShowPlayerDialog(playerid,251,DIALOG_STYLE_LIST,"Выбор пола",string,"Принят","Отмена"); return 1; }
|
| |
|
|
| Zmey | Дата: Понедельник, 22.11.2010, 22:27 | Сообщение # 128 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 185
Награды: 8
Город: Москва
Репутация: 79
Замечания: 0%
Статус: 
| у тебя ваще не то) в OnPlayerConnect Code ShowPlayerDialog(playerid,765,DIALOG_STYLE_MSGBOX,"Правила","Блаблабла\nБлаблабла\nБлаблабла","Согласен","Ну их нах"); в OnDialogResponse Code if(dialogid == 765) { if(response) { SendClientMessage(playerid, COLOR_GREEN, "*Молодец что принял правила <img rel="usm" src="http://www.samp-rus.com/Smiles_for_forum/wink.gif" border="0" align="absmiddle" alt=";)"> *"); } else { SendClientMessage(playerid, COLOR_GREEN, "*Правила нах не посылают <img rel="usm" src="http://www.samp-rus.com/Smiles_for_forum/wink.gif" border="0" align="absmiddle" alt=";)"> *"); Kick(playerid); } } ты заметил там где правила - \n - это переход на след строку если чо... а так если ошибка говори поправь я не тестил но вроде не должно быть ошибок!!Добавлено (22.11.2010, 22:27) --------------------------------------------- Эмм пацаны выше ктото писал чтоб ему помогли регу на диалог перевести, кто возьмется мне заодно пожалуйста переведите, ато перевожу а там пасс не читается! [cut=Вот /login] if (strcmp(cmd, "/login", true) ==0 ) { if(IsPlayerConnected(playerid)) { new tmppass[64]; if(gPlayerLogged[playerid] == 1) { SendClientMessage(playerid, COLOR_GREY, " Âû óæå çàëîãèíåíû."); return 1; } tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GREY, " ÏÎÄÑÊÀÇÊÀ: /login [ïàðîëü]"); return 1; } strmid(tmppass, tmp, 0, strlen(cmdtext), 255); OnPlayerLogin(playerid,tmppass); } return 1; }[/cut] [cut=А вот /register] if (strcmp(cmd, "/register", true)==0) { new string[265]; tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GREY, " ÏÎÄÑÊÀÇÊÀ: /register [ïàðîëü]"); return 1; } if (gPlayerAccount[playerid] == 1) { SendClientMessage(playerid, COLOR_GREY, " Íèê óæå çàðåãèñòðèðîâàí"); return 1; } strmid(PlayerInfo[playerid][pPassword], tmp, 0, strlen(cmdtext), 255); GetPlayerName(playerid, playername, sizeof(playername)); format(string, sizeof(string), "%s.txt", playername); new File: file = fopen(string, io_read); if (file) { SendClientMessage(playerid, COLOR_GREY, " Íèê óæå çàðåãèñòðèðîâàí"); fclose(file); return 1; } new File:hFile; hFile = fopen(string, io_append); new var[32];// format(var, 32, "%s\n", PlayerInfo[playerid][pPassword]);fwrite(hFile, var); format(var, 32, "Kills=%d\n",PlayerInfo[playerid][pKills]);fwrite(hFile, var); format(var, 32, "Deaths=%d\n",PlayerInfo[playerid][pDeaths]);fwrite(hFile, var); PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid); format(var, 32, "Money=%d\n",PlayerInfo[playerid][pCash]);fwrite(hFile, var); format(var, 32, "Admin=%d\n",PlayerInfo[playerid][pAdmin]);fwrite(hFile, var); fclose(hFile); SendClientMessage(playerid, COLOR_WHITE, " Ñïàñèáî çà ðåãèñòðàöèþ!"); SendClientMessage(playerid, COLOR_WHITE, " Ïðè âõîäå íà ñåðâåð ââîäèòå /login [ïàðîëü] ÷òîáû âîéòè"); OnPlayerLogin(playerid,PlayerInfo[playerid][pPassword]); return 1;[/cut]
(skype) zmey77771 (icq) 24-77-58-69
|
| |
|
|
| Makar_Pogorelov | Дата: Четверг, 02.12.2010, 17:58 | Сообщение # 129 |
|
Освоившийся
Группа:
Пользователи
Сообщений: 75
Награды: 0
Город: Дзержинск
Репутация: 0
Замечания: 0%
Статус: 
| ПЛИИИзЗЗ помоги.Или куда мне написать?Как сделать менюшку в виде диалога что бы там можно было выбирать пункты.Наприме статистика игрока и т.п.
|
| |
|
|
| AdrenalineRush | Дата: Четверг, 02.12.2010, 18:55 | Сообщение # 130 |
|
Освоившийся
Группа:
Продвинутые
Сообщений: 119
Награды: 1
Город: ....
Репутация: 33
Замечания: 0%
Статус: 
| Makar_Pogorelov, Создавай команду, при её вводе вызывай диалоговое окно, в этом диалоговом окне сделай пункты, "Статистика игрока", что тебе там еще надо..Ну и допустим при нажатии на "Статистика игрока" показывай статистику.
|
| |
|
|
| Impereal | Дата: Четверг, 02.12.2010, 19:44 | Сообщение # 131 |
|
Мастер джэдай
Группа:
I'm V.I.P.
Сообщений: 2677
Награды: 51
Город: Санкт-Петербург
| Makar_Pogorelov, 2 - DIALOG_STYLE_LIST dialog_style_2.PNG
Прощай самп-рус =Р
|
| |
|
|
| Makar_Pogorelov | Дата: Четверг, 02.12.2010, 22:47 | Сообщение # 132 |
|
Освоившийся
Группа:
Пользователи
Сообщений: 75
Награды: 0
Город: Дзержинск
Репутация: 0
Замечания: 0%
Статус: 
| Спасибо вы мне очень помогли.Но мне бы конечно пример скрипта если можно.
|
| |
|
|
| AdrenalineRush | Дата: Четверг, 02.12.2010, 23:19 | Сообщение # 133 |
|
Освоившийся
Группа:
Продвинутые
Сообщений: 119
Награды: 1
Город: ....
Репутация: 33
Замечания: 0%
Статус: 
| Makar_Pogorelov, У тебя GF? если да, то делай так: В public OnPlayerCommandText вставь: [cut=Код]if(strcmp(cmd, "/command", true) == 0) { // 888 - ID диалога , DIALOG_STYLE_LIST - Стиль диалога ShowPlayerDialog(playerid, 888, DIALOG_STYLE_LIST, "Выберите пункт", "Статистика\nЧто-то другое", "Выбрать", "Отмена"); return 1; }[/cut] И в public OnDialogResponse вставь: [cut=Код]if(dialogid == 888) { if(response) { if(listitem == 0) { ShowStats(playerid,playerid); // Действие которое будет выполняться при выборе пункта "Статистика" } if(listitem == 1) { SendClientMessage(playerid, 0x33AA33AA, "Что-то другое"); // Действие которое будет выполняться при выборе пункта "Что-то другое" } } }[/cut]
Сообщение отредактировал AdrenalineRush - Четверг, 02.12.2010, 23:20 |
| |
|
|
| Makar_Pogorelov | Дата: Пятница, 03.12.2010, 17:02 | Сообщение # 134 |
|
Освоившийся
Группа:
Пользователи
Сообщений: 75
Награды: 0
Город: Дзержинск
Репутация: 0
Замечания: 0%
Статус: 
| Всё понял.Спасибо большое.А то мучался .
|
| |
|
|
| tailer | Дата: Суббота, 04.12.2010, 19:35 | Сообщение # 135 |
|
Новенький
Группа:
Пользователи
Сообщений: 67
Награды: 27
Город: Казань
Репутация: 85
Замечания: 0%
Статус: 
| Подскажите пожалуста как делать диалоги DIALOG_STYLE_INPUT ?? ХОЧУ СДЕЛАТЬ ЧТО БЫ МОЖНО БЫЛО ПИСАТЬ СВОЕЙ ИМЯ И ФАМИЛИЯ. нУ НАПРИМЕР РЕГАЕШЬСЯ И ТЕБЕ нужно придумать имя и фамилию только не те которые ты написал в сампе. а когда заходишь на сервер после введения пароля.Добавлено (04.12.2010, 19:35) --------------------------------------------- мдэ... проошло 7 часов и не одного ответа.
|
| |
|
|
|
 |
|
 | |
| |
|