 |
|
 |
|
|
|
Последние Файлы 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 |
| |
|
|
| Makar_Pogorelov | Дата: Четверг, 09.12.2010, 15:44 | Сообщение # 136 |
|
Освоившийся
Группа:
Пользователи
Сообщений: 75
Награды: 0
Город: Дзержинск
Репутация: 0
Замечания: 0%
Статус: 
| Quote (tailer) Подскажите пожалуста как делать диалоги DIALOG_STYLE_INPUT ?? ХОЧУ СДЕЛАТЬ ЧТО БЫ МОЖНО БЫЛО ПИСАТЬ СВОЕЙ ИМЯ И ФАМИЛИЯ. нУ НАПРИМЕР РЕГАЕШЬСЯ И ТЕБЕ нужно придумать имя и фамилию только не те которые ты написал в сампе. а когда заходишь на сервер после введения пароля.Добавлено (04.12.2010, 19:35)---------------------------------------------мдэ... проошло 7 часов и не одного ответа. Т.I Используй SetPlayerName.
|
| |
|
|
| DIZman | Дата: Четверг, 16.12.2010, 18:53 | Сообщение # 137 |
|
Новенький
Группа:
Пользователи
Сообщений: 11
Награды: 0
Город: Minsk
Репутация: 0
Замечания: 0%
Статус: 
| Подскажите пожалуйста! Вот есть такой код: Code dcmd_car(playerid,params[]) { if(Player[playerid][pPlaying] == false) return SendClientMessage(playerid, AAD_COLOR_GREY, "Вы можете сделать это только в раунде"); if(Current == -1) return SendClientMessage(playerid, AAD_COLOR_GREY, "Раунд не активен"); if(Gametype != 0) return SendClientMessage(playerid, AAD_COLOR_GREY, "Режим должен быть установлен в 1"); if(Player[playerid][pTeam] == T_DEF) return SendClientMessage(playerid, AAD_COLOR_GREY, "Только атакеры могут создавать автомобили"); if(Player[playerid][pTeam] == T_REF) return SendClientMessage(playerid, AAD_COLOR_GREY, "Только атакеры могут создавать автомобили"); if(BInteriors[Current] != 0) return SendClientMessage(playerid, AAD_COLOR_GREY, "Ты не можешь делать, что в интерьере базы"); if(!strlen(params)) return SendClientMessage(playerid, AAD_COLOR_GREY, "[!] /car <имя машины>"); if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, AAD_COLOR_GREY, "Вы уже находитесь в автомобиле"); new Float: angl; GetPlayerFacingAngle(playerid, angl); new Float: cx, Float: cy, Float: cz; GetPlayerPos(playerid, cx, cy, cz); if(cx > BSpawns[Current][0][0] + 100 || cx < BSpawns[Current][0][0] - 100 || cy > BSpawns[Current][0][1] + 100 || cy < BSpawns[Current][0][1] - 100) { return SendClientMessage(playerid, AAD_COLOR_GREY, "Ты слишком далеко от своей базы"); } else { for(new i; i < 24; i++) { if(params[0] == CarNames[i][0] && params[1] == CarNames[i][1] && params[2] == CarNames[i][2]) { new id = CreateVehicle(CarIds[i], cx, cy, cz, angl, 3, 1, never); PutPlayerInVehicle(playerid, id, 0); return 1; } } return SendClientMessage(playerid, AAD_COLOR_GREY, "Нету такого, /carlist - список машин"); } } он делает:при написания команды /car появляется машина(введя её название) Хотелось бы создать список машин в диалоговом окне! Пример: /car Вылетает список машин "Автомобили\nМотоциклы\nВертолёты\nЛодки" При нажатии на любую категорию выдавался список доступных машин и при выборе игрок появлялся в машине! И как мне засунуть(будущий список) в код(который сверху)???
Добавлено (16.12.2010, 18:53) --------------------------------------------- Ладно... С этим я разобрался ) Но появилась новая проблема! Как сделать что бы при окончании(завершении(/end)) базы машины все удалялись с карты???
Gamemodes: • SF: United Team War v1 - [100%] • SF: United Team War v2 - [89%] • Sand War - [100%] FilterScripts: • [AIS]Админ остров - [100%]
|
| |
|
|
| Ghost-X | Дата: Четверг, 16.12.2010, 19:11 | Сообщение # 138 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 3548
Награды: 36
Город: Наб. Челны
Репутация: 856
Замечания: 40%
Статус: 
| for(new i=0;i<MAX_VEHICLES;i++) DestroyVehicle(i);
Спор на форуме, все равно что олимпиада среди умственно отсталых: даже если ты победил, ты все равно гермофродит. Хочешь остаться при своем мнении - держи его при себе.
|
| |
|
|
| DIZman | Дата: Пятница, 17.12.2010, 19:26 | Сообщение # 139 |
|
Новенький
Группа:
Пользователи
Сообщений: 11
Награды: 0
Город: Minsk
Репутация: 0
Замечания: 0%
Статус: 
| Ghost-X, спасибо! Вот что ещё... На 1 RP моде видел.... Заходишь в игру.. и ты выбираешь: 1) в каком городе ты будешь жить(листаешь), после идёт выбор скинов (как это сделать) 2) При выборе игрока из LS ему перед ником пишется "[LS]_" (как это сделать) Подскажите пожалуйста... 
Gamemodes: • SF: United Team War v1 - [100%] • SF: United Team War v2 - [89%] • Sand War - [100%] FilterScripts: • [AIS]Админ остров - [100%]
|
| |
|
|
| Makar_Pogorelov | Дата: Пятница, 17.12.2010, 20:09 | Сообщение # 140 |
|
Освоившийся
Группа:
Пользователи
Сообщений: 75
Награды: 0
Город: Дзержинск
Репутация: 0
Замечания: 0%
Статус: 
| Для ghost-x:Го мир. Я не профи но мочь думаю смогу.Если что не получится стукни в icq. Quote (DIZman) 1) в каком городе ты будешь жить(листаешь), после идёт выбор скинов (как это сделать) Чтоб именно прям так листать я точно сказать не смогу.Ну вот через диалог. в OnPlayerConnect. ShowPlayerDialog(playerid,1985,DIALOG_STYLE_LIST,"Выбор гоорода","Лос-Сантос\nСан-Фиеро\nЛас-Вентурас\n\n","Выбрать","Выйти"); В OnDialogResponse if(dialogid == 1985) { if(!response)return 1; switch(listitem) { case 0: { SetPlayerPos(playerid, Корды в лс, Корды в лс , Корды в лс ); } case 1: { SetPlayerPos(playerid, Корды в сф, Корды в сф , Корды в сф); } case 2: { SetPlayerPos(playerid, Корды в ЛВ, Корды в ЛВ, Корды в ЛВ ); } } } } return 1; } Добавлено (17.12.2010, 20:09) ---------------------------------------------
Quote (DIZman) 2) При выборе игрока из LS ему перед ником пишется "[LS]_" (как это сделать) Про это забыл.Вообщем к каждому действию в диалоге добавляй new pname[MAX_PLAYER_NAME],string[256]; GetPlayerName(playerid,pname,sizeof(pname)); SetPlayerName(playerid,[LS]%s); Наверно такой бред написаал!!!!! Ghost-X исправь меня.
|
| |
|
|
| Leo111 | Дата: Суббота, 25.12.2010, 13:37 | Сообщение # 141 |
|
Уверенный в себе
Группа:
I'm V.I.P.
Сообщений: 226
Награды: 8
Город: Las Venturas
Замечания: 0%
Статус: 
| кстати у меня тоже этот жэ вопрос..чо у DIALOG_STYLE_MSGBOX ограничение в количестве символов стоит?....я искал ответ так и ненашел.. максимум выводится ~ 50 символов и всё...остальное как обрезало.... кстати на других серверах видел и на весь монитор тексты....в одном диалоге
|
| |
|
|
| MakS[28RuS] | Дата: Вторник, 28.12.2010, 09:38 | Сообщение # 142 |
|
Новенький
Группа:
Пользователи
Сообщений: 24
Награды: 1
Город: Тында
Репутация: 1
Замечания: 0%
Статус: 
| Никто не может кинуть аренду авто для GF в ДИАЛОГЕ?! Чтоб не надо было писать /rentcar ПОЖАЛУЙСТА сделайте!!!
[move]Очень скоро я изменю мир![/move]
|
| |
|
|
| Likoniko | Дата: Вторник, 28.12.2010, 11:46 | Сообщение # 143 |
|
Местный
Группа:
I'm V.I.P.
Сообщений: 584
Награды: 3
Город: Vaasa
Репутация: 199
Замечания: 20%
Статус: 
| MakS[28RuS] Code public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { if(dialogid == 0) { if(response) { SendClientMessage(playerid, 0x99CCFF, "Ты арендовал авто."); OnPlayerCommandText(playerid,"/rentcar") { return 1; } } else { // } } } Code { if(PlayerToPoint(5, playerid,кординаты авто)) ShowPlayerDialog(playerid,0,DIALOG_STYLE_MSGBOX,"Аренда авто","Хочеш арендовать авто?" ,"Да","Нет"); return 1; } Code public PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z) { new Float:oldposx, Float:oldposy, Float:oldposz; new Float:tempposx, Float:tempposy, Float:tempposz; GetPlayerPos(playerid, oldposx, oldposy, oldposz); tempposx = (oldposx -x); tempposy = (oldposy -y); tempposz = (oldposz -z); if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi))) { return 1; } return 0; } Добавлено (28.12.2010, 11:46) ---------------------------------------------
Quote (Makar_Pogorelov) Чтоб именно прям так листать я точно сказать не смогу.Ну вот через диалог. в OnPlayerConnect. new pname[MAX_PLAYER_NAME],string[256]; ShowPlayerDialog(playerid,1985,DIALOG_STYLE_LIST,"Выбор гоорода","Лос-Сантос\nСан-Фиеро\nЛас-Вентурас\n\n","Выбрать","Выйти"); В OnDialogResponse if(dialogid == 1985) { if(!response)return 1; switch(listitem) { case 0: { GetPlayerName(playerid,pname,sizeof(pname)); SetPlayerName(playerid,[LS]%s); SetPlayerPos(playerid, Корды в лс, Корды в лс , Корды в лс ); } case 1: { GetPlayerName(playerid,pname,sizeof(pname)); SetPlayerName(playerid,[SF]%s); SetPlayerPos(playerid, Корды в сф, Корды в сф , Корды в сф); } case 2: { GetPlayerName(playerid,pname,sizeof(pname)); SetPlayerName(playerid,[LV]%s); SetPlayerPos(playerid, Корды в ЛВ, Корды в ЛВ, Корды в ЛВ ); } } } } return 1; } Добавлено (17.12.2010, 20:09) --------------------------------------------- Quote (DIZman) 2) При выборе игрока из LS ему перед ником пишется "[LS]_" (как это сделать) Про это забыл.Вообщем к каждому действию в диалоге добавляй new pname[MAX_PLAYER_NAME],string[256]; GetPlayerName(playerid,pname,sizeof(pname)); SetPlayerName(playerid,[LS]%s); Наверно такой бред написаал!!!!! Ghost-X исправь меня. Как то так)) Вроде верно
[cut noguest=Мои работы]FAQ перенапровление портов:http://www.samp-rus.com/forum/42-14704-1 [FS]_bus_job:http://www.samp-rus.com/forum/8-14707-1 [FS]Cafe:http://www.samp-rus.com/forum/8-14725-1 [FS]Gate Creator:http://www.samp-rus.com/forum/8-14747-1#314492 [MAP]Office:http://www.samp-rus.com/forum/65-16002-1 [MAP]Квартиры:http://www.samp-rus.com/forum/65-16183-1 [FS] Квартиры:http://www.samp-rus.com/forum/8-16212-1[/cut] Мой блог
|
| |
|
|
| Sl1m | Дата: Вторник, 28.12.2010, 11:56 | Сообщение # 144 |
|
Советчик
Группа:
I'm V.I.P.
Сообщений: 1153
Награды: 22
Город: Arizona
Репутация: 696
Замечания: 0%
Статус: 
| Quote (Likoniko) SetPlayerPos(playerid, Корды в ЛВ, Корды в ЛВ, Корды в ЛВ ); off:[на всякий, вдруг что то перепутает. ]
|
| |
|
|
| Le_Mark | Дата: Воскресенье, 02.01.2011, 12:14 | Сообщение # 145 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 207
Награды: 1
Город: /root
Репутация: 32
Замечания: 0%
Статус: 
| Ребят, подскажите пожалуйста... Code ShowPlayerDialog(playerid,1001,DIALOG_STYLE_LIST,"|_______ Доступный Список _______|","Джипы\nШустрые Тачки\nЛодки И Катера\nСамолеты И Вертолеты\nМототранспорт\nБюджетные машины\nБюджетные машины 2","Ок","Отмена"); Нужно чтобы при нажатии на кнопку "Отмена" (в нижнем коде) возвращало в верхний код. Code if(dialogid == 1001) { if(response) { new item = listitem; if (item == 0) { ShowPlayerDialog(playerid,1002,DIALOG_STYLE_LIST,"|_______ Доступный Список Джипов _______|","Landstalker $200000\nBobcat $200000\nBFInjection $100000\nHotknife $100000\nMonster $2000000\nRancher $300000\nSandking $2000000\ \nMesa $80000\nRancher2 $350000\nYousemite $350000\nHuntley $500000\nSadler_Shit $10000","Ок","Отмена"); } if (item == 1) { ShowPlayerDialog(playerid,1003,DIALOG_STYLE_LIST,"|_______ Доступный Список Быстрых Тачек _______|","Buffalo $750000\nInfernus $3500000\nCheetah $1500000\nBanshee $1800000\nTurismo $2500000\nZR-350 $850000\ \nHotring $4000000\nSuper-GT $1000000\nBullet $1600000\nSultan $500000\nElegy $350000\nFlash $280000\nPhoenix $1000000\nJester $300000","Ок","Отмена"); } Добавлено (29.12.2010, 23:48) --------------------------------------------- Ну что, так ни кто и не поможет? Я не пойму как это сделать, хотябы намекните. Добавлено (02.01.2011, 12:14) --------------------------------------------- Все, вопрос снят!
|
| |
|
|
| Lumennn | Дата: Четверг, 06.01.2011, 13:09 | Сообщение # 146 |
|
Освоившийся
Группа:
Пользователи
Сообщений: 79
Награды: 1
Город: Тула
Репутация: 9
Замечания: 0%
Статус: 
| Люди подскажите как сделать чтобы диалог высвечивался при входу в чекпоинт и в определённом случаее например после реги.
|
| |
|
|
| G1F | Дата: Среда, 12.01.2011, 21:15 | Сообщение # 147 |
|
Новенький
Группа:
Пользователи
Сообщений: 54
Награды: 0
Город: dsdddddd
Репутация: 0
Замечания: 0%
Статус: 
| Люди помогите сделать меню HELP!!!
|
| |
|
|
| velix | Дата: Среда, 12.01.2011, 22:27 | Сообщение # 148 |
|
Группа:
Удаленные
| G1F, скидывай код команды, будем ГУИть
|
| |
|
|
| DoK45 | Дата: Четверг, 13.01.2011, 00:52 | Сообщение # 149 |
|
Новенький
Группа:
Продвинутые
Сообщений: 71
Награды: 1
Город: Анапа
Репутация: -20
Замечания: 40%
Статус: 
| искал и нашел спс за инфу всем!
|
| |
|
|
| GSDN | Дата: Четверг, 13.01.2011, 02:28 | Сообщение # 150 |
|
Уверенный в себе
Группа:
Пользователи
Сообщений: 266
Награды: 0
Город: Самара
Репутация: 27
Замечания: 60%
Статус: 
| есть нормальный ФАК на тему создания меню? дайте ссыль . тут не понятно...
███████████████████████████████████████████████ OPEN-GTO COOL!!! ███████████████████████████████████████████████
|
| |
|
|
|
 |
|
 | |
| |
|