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

 



 
          





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





Последние Файлы 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
Модератор форума: Dima-kun  
[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
Ghost-XДата: Понедельник, 03.05.2010, 21:56 | Сообщение # 76
Мастер джэдай
Группа: Продвинутые
Сообщений: 3548
Награды: 36
Город: Наб. Челны
Репутация: 856
Замечания: 40%
Статус:
KPECTok,
format(str,sizeof(str),"Kills:%d\nDeaths:%d\nMoney:%d\nHealth:%f",Player[playerid][Kills],Player[playerid][Deaths],GetPlayerMoney(playerid),Player[playerid][Health]);
ShowPlayerDialog(playerid,dialogid,DIALOG_STYLE_MSGBOX,"Stats",str,"Ok","Cancel");



Спор на форуме, все равно что олимпиада среди умственно отсталых: даже если ты победил, ты все равно гермофродит.
Хочешь остаться при своем мнении - держи его при себе.
XuMuKДата: Вторник, 04.05.2010, 10:55 | Сообщение # 77
Новенький
Группа: Пользователи
Сообщений: 1
Награды: 0
Город: Omsk
Репутация: 0
Замечания: 0%
Статус:
Людии нужна помощь) Я хочу сделать в MSGBOX чтоб на команду /help открывалась менюшка..... И там описание всех комманд.... Ставлю /n не работает ( Кто нибуть приведите пример буду оч благодарен


ыЫы
73_ReeBokДата: Вторник, 04.05.2010, 16:59 | Сообщение # 78
Новенький
Группа: Пользователи
Сообщений: 28
Награды: 2
Город: _
Репутация: 4
Замечания: 20%
Статус:
не /n, а \n - перенос строки
[RGS]JAGUARДата: Пятница, 07.05.2010, 21:53 | Сообщение # 79
Советчик
Группа: Продвинутые
Сообщений: 1154
Награды: 25
Город: FloatX,FloatY,FloatZ
Репутация: 291
Замечания: 40%
Статус:
XuMuK, поменяй стиль диалоговога окна! crazy crazy crazy wall wall wall wall


[/url]
Новая ICQ: 593922
_Darк_Дата: Пятница, 28.05.2010, 21:19 | Сообщение # 80
Новенький
Группа: Пользователи
Сообщений: 52
Награды: 0
Город: Ростов-на-Дону
Репутация: -66
Замечания: 20%
Статус:
Дайте код рабочего списка. Типа набираешь /rules появляется окно "Правила", и там список "Правила для игроков", "Правила для админов", и при нажатии на определенную строчку, появляются определенные правила. Напишите пример кода, я разберусь )


...
Ghost-XДата: Суббота, 29.05.2010, 08:03 | Сообщение # 81
Мастер джэдай
Группа: Продвинутые
Сообщений: 3548
Награды: 36
Город: Наб. Челны
Репутация: 856
Замечания: 40%
Статус:
_Dark_, а хуй тебе не пососать?


Спор на форуме, все равно что олимпиада среди умственно отсталых: даже если ты победил, ты все равно гермофродит.
Хочешь остаться при своем мнении - держи его при себе.
kachДата: Четверг, 10.06.2010, 12:51 | Сообщение # 82
Новенький
Группа: Пользователи
Сообщений: 44
Награды: 2
Город: Барнаул
Репутация: -8
Замечания: 40%
Статус:
А как сделать чтобы при входе окно выводилось сразу чтобы не надо было писать /login

Добавлено (10.06.2010, 12:51)
---------------------------------------------
Я вот с new начал все делать написал все как надо нажимаю регистрация ну на кнопку окна и ниче не происходит

FYRДата: Четверг, 10.06.2010, 19:47 | Сообщение # 83
Местный
Группа: I'm V.I.P.
Сообщений: 606
Награды: 13
Город: Казань
Репутация: 163
Замечания: 40%
Статус:
kach, попробуй сделать по FAQ


Ушел в Counter Strike 1.6

[cut noguest=Контакты]ICQ: tba
Skype: tba[/cut]
FaratoS_VeXДата: Понедельник, 21.06.2010, 21:29 | Сообщение # 84
Новенький
Группа: Продвинутые
Сообщений: 41
Награды: 1
Город: Пенза-Сити
Репутация: 1
Замечания: 0%
Статус:
Code
    if(strcmp(cmd, "/knife", true) ==0)
  {
  ShowPlayerDialog(playerid,1,DIALOG_STYLE_LIST,"Âûáåðàéòå îðóæèå","íîæ \n êàòàíà \n áåíçîïèëà \n","Âûáðàòü","Îòìåíà");
    return 1;
    }
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {

if(dialogid == 1)
{
if(!response) return 1;
switch(listitem)
{
case 0:
{
GivePlayerWeapon(playerid, 4, 30);
}
case 1:
{
GivePlayerWeapon(playerid,8,1);
}
case 2:
{
GivePlayerWeapon(playerid,9,1);
}
}
}
}
return 1;

Вот сам код помогите пожалуйста выдает ошибки при компиляции
C:\Users\BuGaTi\Desktop\samp03asvr_R7_win32\gamemodes\l.pwn(1958) : error 029: invalid expression, assumed zero
C:\Users\BuGaTi\Desktop\samp03asvr_R7_win32\gamemodes\l.pwn(1958) : error 017: undefined symbol "dialogid"
C:\Users\BuGaTi\Desktop\samp03asvr_R7_win32\gamemodes\l.pwn(1961) : error 017: undefined symbol "dialogid"
C:\Users\BuGaTi\Desktop\samp03asvr_R7_win32\gamemodes\l.pwn(1963) : error 017: undefined symbol "response"
C:\Users\BuGaTi\Desktop\samp03asvr_R7_win32\gamemodes\l.pwn(1964) : error 017: undefined symbol "listitem"
C:\Users\BuGaTi\Desktop\samp03asvr_R7_win32\gamemodes\l.pwn(1985) : warning 225: unreachable code
это ошибки







Сообщение отредактировал FaratoS_VeX - Понедельник, 21.06.2010, 21:49
CupuKДата: Вторник, 22.06.2010, 01:57 | Сообщение # 85
Новенький
Группа: Пользователи
Сообщений: 71
Награды: 0
Город: Рига
Репутация: -46
Замечания: 40%
Статус:
Пацы кто подскажет! КТо поможет зделать! Диалоговое окно типо при заходе ! Ждите 15 секунд и вводите пароль!
Без кнопок! чтоб через 15 сек окно пропало!

Ykrop86Дата: Вторник, 22.06.2010, 10:17 | Сообщение # 86
Освоившийся
Группа: Пользователи
Сообщений: 88
Награды: 1
Город: Радужный
Репутация: 1
Замечания: 0%
Статус:
Плиз кто нить скажите как команду /stats сделать в диологовом окне.
зарание спс

BorogДата: Вторник, 22.06.2010, 10:53 | Сообщение # 87
Долгожитель
Группа: I'm V.I.P.
Сообщений: 1362
Награды: 43
Город: Москва
Репутация: 1249
Замечания: 20%
Статус:
Ykrop86, При наличии public ShowStats(playerid, targetid), вставляем в него:
[cut=pwn КОД паблика ShowStats]public ShowStats(playerid, targetid)
{
new string[256];
new playername[MAX_PLAYER_NAME];
GetPlayerName(targetid, playername, sizeof(playername));
new m[4][256]; // Где 4 - количество всех параметров, отображаемых в статистике

format(string, 128, "Статистика игрока %s", playername); // Заголовок
m[0] = string;

format(string, 128, "Уровень: %d", PlayerInfo[playerid][pLevel]);// Количество подобных строк должно соответствовать количеству значений "x" в переменной m[х][256];
m[1] = string;

format(string, 128, "Деньги: %d", PlayerInfo[playerid][pCash]);
m[2] = string;

format(string, 128, "Админ уровень: %d", PlayerInfo[playerid][pAdmin]);
m[3] = string;

format(string, sizeof(string), "%s \n%s \n%s", m[1], m[2], m[3]); // Количество всех '\n%s' и ', m[х]' должно соответствовать количеству значений "x" в переменной m[х][256];
ShowPlayerDialog(targetid, 1, DIALOG_STYLE_LIST, m[0], string, "Ok", "Cancel"); Где 1 - ид окна
return 1;
}[/cut]
Ну и конечно же не забудем про public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
[cut=pwn КОД паблика public OnDialogResponse]
if(dialogid == 1)
{
return 1;
}
[/cut]


Silver Break
http://s-break.ru/
http://vk.com/sbreak


Сообщение отредактировал Borog - Вторник, 22.06.2010, 10:56
Ykrop86Дата: Вторник, 22.06.2010, 11:43 | Сообщение # 88
Освоившийся
Группа: Пользователи
Сообщений: 88
Награды: 1
Город: Радужный
Репутация: 1
Замечания: 0%
Статус:
Borog, спс тебе большое
CupuKДата: Среда, 23.06.2010, 23:48 | Сообщение # 89
Новенький
Группа: Пользователи
Сообщений: 71
Награды: 0
Город: Рига
Репутация: -46
Замечания: 40%
Статус:
Quote (CupuK)
Пацы кто подскажет! КТо поможет зделать! Диалоговое окно типо при заходе ! Ждите 15 секунд и вводите пароль! Без кнопок! чтоб через 15 сек окно пропало!

Ктонибуть подскажет?

1lsd2Дата: Четверг, 24.06.2010, 12:04 | Сообщение # 90
Новенький
Группа: Продвинутые
Сообщений: 10
Награды: 1
Город: Кривой Рог
Репутация: -4
Замечания: 0%
Статус:
Спс работает держи плюс. Теперь создам свою крутую регистрацию!
Поиск:





 


 


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