09:12
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
  • Страница 1 из 14
  • 1
  • 2
  • 3
  • 13
  • 14
  • »
Модератор форума: Dima-kun  
Форум SAMP о мультиплеерах для GTA. »   » Wiki-Samp-Rus » [Tutorial]Создание Диалогового окна (Переведено с sa-mp.com)
[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
Fifa4kaДата: Четверг, 12.11.2009, 17:01 | Сообщение # 2
Местный
Группа: I'm V.I.P.
Сообщений: 748
Награды: 38
Город: Рига
Замечания: 0%
Статус:
Напиши скрипт Типо правила сервера и две кнопки принять и Отмена я ппросто не понимаю как(((

[pwn] format("Правила сервера");
ShowPlayerDialog(playerid,0,DIALOG_STYLE_MSGBOX,"Правила [RP]_FaNTaSy_WoRLD_[RUS]","Принять","Отмена");
return 1;
}[/pwn]

вот у меня какая та хня получилась


EdYaДата: Четверг, 12.11.2009, 17:09 | Сообщение # 3
Местный
Группа: Продвинутые
Сообщений: 737
Награды: 16
Город: Таллинн
Репутация: 259
Замечания: 20%
Статус:
Fifa4ka, просмотри внимательно параметры функции ShowPlayerDialog(playerid, dialogid, style, caption[], info[], button1[], button2[])

теперь я покажу, как сделано у тебя

playerid - playerid
dialogid - 0
style - DIALOG_STYLE_MSGBOX
caption[] - Правила [RP]_FaNTaSy_WoRLD_[RUS]
info[] - то, что будет отображатся в окне и у тебя этого параметра просто нету
button1[] - Принять
button2[] - Отмена

Fifa4kaДата: Четверг, 12.11.2009, 17:14 | Сообщение # 4
Местный
Группа: I'm V.I.P.
Сообщений: 748
Награды: 38
Город: Рига
Замечания: 0%
Статус:
Quote (EdYa)
Fifa4ka, просмотри внимательно параметры функции ShowPlayerDialog(playerid, dialogid, style, caption[], info[], button1[], button2[])

теперь я покажу, как сделано у тебя

playerid - playerid
dialogid - 0
style - DIALOG_STYLE_MSGBOX
caption[] - Правила [RP]_FaNTaSy_WoRLD_[RUS]
info[] - то, что будет отображатся в окне и у тебя этого параметра просто нету
button1[] - Принять
button2[] - Отмена

Я не понимаю как сделать если не сложно можешь написать тока без

прописки команд
if(strcmp(cmdtext,"/okno",true)==0)
просто чтоб зайти на сервер и сразу выдало Правила сервера принять и дальше либо регистрация либо логин ну ты понял наверно :(


EdYaДата: Четверг, 12.11.2009, 17:21 | Сообщение # 5
Местный
Группа: Продвинутые
Сообщений: 737
Награды: 16
Город: Таллинн
Репутация: 259
Замечания: 20%
Статус:
Хмм... в твоём случае игроку придется каждый раз соглашаться с правилами при подключении, лучше сделай так:

в OnPlayerLogin в конец проверки

if(PlayerInfo[playerid][pReg] == 0)

new pravila[256+1];
format(pravila, sizeof(pravila), "Не читери\nНе оскарбляй\nУважай остальных");
ShowPlayerDialog(playerid,0,DIALOG_STYLE_MSGBOX,"Правила [RP]_FaNTaSy_WoRLD_[RUS]","pravila","Принять","Отмена");

и в OnPlayerDialog

if(dialogid == 0)
{
if(response)
{
SendClientMessage(playerid, COLOR_YELLOW, " Удачной игры на сервере");
}
else
{
SendClientMessage(playerid, COLOR_YELLOW, " Для игры на нашем сервере, вы должны принять правила");
Kick(playerid);
}
}

Fifa4kaДата: Четверг, 12.11.2009, 17:27 | Сообщение # 6
Местный
Группа: I'm V.I.P.
Сообщений: 748
Награды: 38
Город: Рига
Замечания: 0%
Статус:
Quote (EdYa)
Хмм... в твоём случае игроку придется каждый раз соглашаться с правилами при подключении, лучше сделай так:

в OnPlayerLogin в конец проверки

if(PlayerInfo[playerid][pReg] == 0)

new pravila[256+1];
format(pravila, sizeof(pravila), "Не читери\nНе оскарбляй\nУважай остальных");
ShowPlayerDialog(playerid,0,DIALOG_STYLE_MSGBOX,"Правила [RP]_FaNTaSy_WoRLD_[RUS]","pravila","Принять","Отмена");

и в OnPlayerDialog

if(dialogid == 0)
{
if(response)
{
SendClientMessage(playerid, COLOR_YELLOW, " Удачной игры на сервере");
}
else
{
SendClientMessage(playerid, COLOR_YELLOW, " Для игры на нашем сервере, вы должны принять правила");
Kick(playerid);
}
}

так что тяжело соглашатся каждый раз но чтоб они знали про правила

спасибо вот +

у меня система другая написана

нету этого OnPlayerDialog




Сообщение отредактировал Fifa4ka - Четверг, 12.11.2009, 17:30
EdYaДата: Четверг, 12.11.2009, 17:43 | Сообщение # 7
Местный
Группа: Продвинутые
Сообщений: 737
Награды: 16
Город: Таллинн
Репутация: 259
Замечания: 20%
Статус:
Fifa4ka, пардон, не OnPlayerDialog, а OnDialogResponse ;)
Damien_LOLДата: Четверг, 12.11.2009, 18:30 | Сообщение # 8
Освоившийся
Группа: Продвинутые
Сообщений: 133
Награды: 3
Город: Екатеринбург
Репутация: 8
Замечания: 0%
Статус:
Во, спасибо, щас сделаю регу менюшкой) Давно хотел да чет неполучилось. Кто подскажет функции чтобы еще можно было выбрать там Европа, Америка, Азия, Австралия, Африка. Кто поможет плюсом не обижу)


Http://vk.com/minusdot.team
GhostTTДата: Четверг, 12.11.2009, 18:35 | Сообщение # 9
Уважаемый человек
Группа: Продвинутые
Сообщений: 998
Награды: 17
Город: Челны
Репутация: 206
Замечания: 100%
Статус:
Все уже давно сделали такую регистрацию


Ололо, чем сложнее подпись - тем интересней*)
Damien_LOLДата: Четверг, 12.11.2009, 19:21 | Сообщение # 10
Освоившийся
Группа: Продвинутые
Сообщений: 133
Награды: 3
Город: Екатеринбург
Репутация: 8
Замечания: 0%
Статус:
JrC116, я не сделал то есть не все.


Http://vk.com/minusdot.team
EdYaДата: Четверг, 12.11.2009, 20:14 | Сообщение # 11
Местный
Группа: Продвинутые
Сообщений: 737
Награды: 16
Город: Таллинн
Репутация: 259
Замечания: 20%
Статус:
Quote (Fifa4ka)
можешь сказать куда вставлять и как сделать?

Quote (EdYa)
в OnPlayerLogin в конец проверки

if(PlayerInfo[playerid][pReg] == 0)

new pravila[256+1];
format(pravila, sizeof(pravila), "Не читери\nНе оскарбляй\nУважай остальных");
ShowPlayerDialog(playerid,0,DIALOG_STYLE_MSGBOX,"Правила [RP]_FaNTaSy_WoRLD_[RUS]","pravila","Принять","Отмена");

ну и то, что я выложил, в OnDialogResponse (будь внимательнее)

Fifa4kaДата: Пятница, 13.11.2009, 17:03 | Сообщение # 12
Местный
Группа: I'm V.I.P.
Сообщений: 748
Награды: 38
Город: Рига
Замечания: 0%
Статус:
Quote (EdYa)
Quote (EdYa)
в OnPlayerLogin в конец проверки

if(PlayerInfo[playerid][pReg] == 0)

new pravila[256+1];
format(pravila, sizeof(pravila), "Не читери\nНе оскарбляй\nУважай остальных");
ShowPlayerDialog(playerid,0,DIALOG_STYLE_MSGBOX,"Правила [RP]_FaNTaSy_WoRLD_[RUS]","pravila","Принять","Отмена");

ну и то, что я выложил, в OnDialogResponse (будь внимательнее) ответь в аське мне

я сделала как бы всё что ты сказал и всё равно не идёт(




Сообщение отредактировал Fifa4ka - Пятница, 13.11.2009, 17:10
TaLeRoKДата: Суббота, 14.11.2009, 12:52 | Сообщение # 13
Советчик
Группа: Продвинутые
Сообщений: 1237
Награды: 14
Город: Гдето там->
Репутация: 138
Замечания: 100%
Статус:
Опишите плз DIALOG_STYLE_LIST. Как там создавать пункты, и как выполнять функцию при нажатии на пункт.

Добавлено (14.11.2009, 12:52)
---------------------------------------------
На самп коме немного криво написано, вот взял из своего мода для примера

Code


new s[128];

хоть куда:
format(s,sizeof(s),"Скил ближнего оружия\nСкил дальнего оружия оружия\nСкил среднего оружия\nСкил устойчивости к радиации\nСкил телепортации\nСкил повышения очков опыта с каждого уровня\nСкил увиличения возможности крита\nСкил увиличения прыжка в высоту\nСкил временого увиличения скорости передвежения\nСкил увиличения хп");
ShowPlayerDialog(playerid,4,DIALOG_STYLE_LIST,"Выберите начальный скил",s,"Выбрать","Поже");

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 4)
      {
      if(response)
      {
          if (listitem == 0)
          {
              dini_IntSet(loginname,"S1",1);
              SendClientMessage(playerid, 0xAA3333AA, "Вы выбрали Скил ближнего оружия!");
              OnPlayerEnter(playerid);
    }
          else if (listitem == 1)
          {
              dini_IntSet(loginname,"S2",1);
              SendClientMessage(playerid, 0xAA3333AA, "Вы выбрали Скил среднего оружия!");
              OnPlayerEnter(playerid);
    }
****************************** мой код   

Думаю тут все понятно





Сообщение отредактировал TaLeRoK - Суббота, 14.11.2009, 12:53
GhostTTДата: Суббота, 14.11.2009, 14:45 | Сообщение # 14
Уважаемый человек
Группа: Продвинутые
Сообщений: 998
Награды: 17
Город: Челны
Репутация: 206
Замечания: 100%
Статус:
Создаем меню:
Code
ShowPlayerDialog(playerid,5,"Подзаголовок","Пункт1 \n Пункт2 \n Пункт3 \n","Выбрать","Отмена");

[pwn]public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 5)
if(!response) return 1;
if(listitem == 0) //проверка, выбран ли Пункт 1
{
Ваш код
}
if(listitem == 1) //проверка, выбран ли Пункт 2
{
Ваш код
}
if(listitem == 2) //проверка, выбран ли Пункт 3
{
Ваш код
}
}
return 1;
}[/pwn]


Ололо, чем сложнее подпись - тем интересней*)

Сообщение отредактировал JrC116 - Суббота, 14.11.2009, 14:46
Nick5Дата: Воскресенье, 22.11.2009, 13:00 | Сообщение # 15
Новенький
Группа: Продвинутые
Сообщений: 36
Награды: 1
Город: Ололо-city
Репутация: 1
Замечания: 0%
Статус:
Людии сооссс ,помогите. Сделал регу для пен1 но вот беда, как выяснилось не важно какой пароль вписывать оно будет по любому регить\логинить. вот код

Моя понимать что проблема кроеться в strmid(tmppass, inputtext, 0, strlen(inputtext), 255); но не понимать как её исправить)) помогите плиз чем можете.

Форум SAMP о мультиплеерах для GTA. »   » Wiki-Samp-Rus » [Tutorial]Создание Диалогового окна (Переведено с sa-mp.com)
  • Страница 1 из 14
  • 1
  • 2
  • 3
  • 13
  • 14
  • »
Поиск:





 


 


 
Хостинг от uCoz samp.at.ua