Стили: 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 - вертикальная табуляция \' - одиночная кавычка \" - двойные кавычки \? - вопросительный знак
Подскажите пожалуста как делать диалоги DIALOG_STYLE_INPUT ?? ХОЧУ СДЕЛАТЬ ЧТО БЫ МОЖНО БЫЛО ПИСАТЬ СВОЕЙ ИМЯ И ФАМИЛИЯ. нУ НАПРИМЕР РЕГАЕШЬСЯ И ТЕБЕ нужно придумать имя и фамилию только не те которые ты написал в сампе. а когда заходишь на сервер после введения пароля.Добавлено (04.12.2010, 19:35)---------------------------------------------мдэ... проошло 7 часов и не одного ответа.
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%]
Спор на форуме, все равно что олимпиада среди умственно отсталых: даже если ты победил, ты все равно гермофродит. Хочешь остаться при своем мнении - держи его при себе.
Вот что ещё... На 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%]
Я не профи но мочь думаю смогу.Если что не получится стукни в 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; }
2) При выборе игрока из LS ему перед ником пишется "[LS]_" (как это сделать)
Про это забыл.Вообщем к каждому действию в диалоге добавляй new pname[MAX_PLAYER_NAME],string[256]; GetPlayerName(playerid,pname,sizeof(pname)); SetPlayerName(playerid,[LS]%s); Наверно такой бред написаал!!!!! Ghost-X исправь меня.
кстати у меня тоже этот жэ вопрос..чо у DIALOG_STYLE_MSGBOX ограничение в количестве символов стоит?....я искал ответ так и ненашел.. максимум выводится ~ 50 символов и всё...остальное как обрезало....
кстати на других серверах видел и на весь монитор тексты....в одном диалоге
Чтоб именно прям так листать я точно сказать не смогу.Ну вот через диалог. в 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 исправь меня.
ShowPlayerDialog(playerid,1001,DIALOG_STYLE_LIST,"|_______ Доступный Список _______|","Джипы\nШустрые Тачки\nЛодки И Катера\nСамолеты И Вертолеты\nМототранспорт\nБюджетные машины\nБюджетные машины 2","Ок","Отмена");
Нужно чтобы при нажатии на кнопку "Отмена" (в нижнем коде) возвращало в верхний код.
Добавлено (29.12.2010, 23:48) --------------------------------------------- Ну что, так ни кто и не поможет? Я не пойму как это сделать, хотябы намекните.
Добавлено (02.01.2011, 12:14) --------------------------------------------- Все, вопрос снят!