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

 



 
          





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





Последние Файлы 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  
Форум 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
W@RДата: Среда, 17.03.2010, 13:36 | Сообщение # 61
Постоялец
Группа: Пользователи
Сообщений: 335
Награды: 3
Город: а.k.a ЕкБ_ЮЗ
Репутация: 51
Замечания: 20%
Статус:
у тех у кого мод PEN1 выложите public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) пожалуйста, буду оч благодарен




Translation from english to russian Ravens_Roleplay_v3 (RC5.2) - 0.3c--------15%
EthernetДата: Воскресенье, 21.03.2010, 20:17 | Сообщение # 62
Новенький
Группа: Пользователи
Сообщений: 10
Награды: 1
Город: Поронайск
Репутация: 0
Замечания: 0%
Статус:
Code
SetPlayerSpecialAction (playerid, SPECIAL_ACTION_NONE );
             SetPlayerDrunkLevel (playerid, 0);
             GivePlayerMoney(playerid,-300);
             }
     if(dialogid == DIALOG_WEAPON)
  {
         if(response)
     {
    if(listitem == 0)
    {
             if(GetPlayerMoney(playerid) <100)
          return SendClientMessage(playerid, COLOR_RED, "** У вас недостаточно денежных средств **");
          GivePlayerMoney(playerid, -100);
          GivePlayerWeapon(playerid,4,1);
          SendClientMessage(playerid, COLOR_YELLOW, "[сервер] Нож куплен.");
          ShowPlayerDialog(playerid,2 , DIALOG_STYLE_LIST, "Выберите товар", "Нож(100$)\nПустынный орёл(500$)\nM4(5000$)\nРакетница(40000$)\nОгнемёт(5000$)\nГранаты(1000$)\nC4(2000$)\nСПАС-12(5000$)\nДробовик(3500$)\nСнайперская винтовка(5000$)\nMP5(3500$)\nПарашют(бесплатно)", "Выбрать", "Закрыть");
    }

>>>> Вообщем уважаемые скриптёры вот этот код из public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
Сначала кода это окончание анимационного диалогового меню, а далее начинается оружейное диалоговое меню...
Проблема в том что когда покупаю в оружейном меню к примеру нож у меня покупается он вместе с лимонадом ...
Думаю проблема в том что надо правельно отделить первое диалоговое меню от второго. Я думаю что одной скобки ( } ) не достаточно..
Подскажите пожалуйста как правельно исправить это... Заранее очень благодарен.

SprunkДата: Воскресенье, 21.03.2010, 20:23 | Сообщение # 63
Хостинг-провайдер
Группа: Пользователи
Сообщений: 2451
Награды: 125
Город: Волгоград.
Репутация: 774
Замечания: 100%
Статус:
Quote (Ethernet)
Я думаю что одной скобки ( } ) не достаточно..

Компилятор выдавал бы ошибки
хм.....мб совпадают ид окон,хотя нет врядле
Quote (Ethernet)
if(dialogid == DIALOG_WEAPON)
{

Может в покупке лимонада у тебя тоже ид DIALOG_WEAPON? crazy



pawn.su - Аренда игровых серверов.

Игровой портал Game Entertainment (Game-Ent.ru)

EthernetДата: Воскресенье, 21.03.2010, 20:37 | Сообщение # 64
Новенький
Группа: Пользователи
Сообщений: 10
Награды: 1
Город: Поронайск
Репутация: 0
Замечания: 0%
Статус:
Да нет в том то и дело там у меня
Code
if(dialogid == DIALOG_DRINK)

Непойму в чём дело ....

Alexx73Дата: Четверг, 08.04.2010, 19:29 | Сообщение # 65
Новенький
Группа: I'm V.I.P.
Сообщений: 50
Награды: 1
Репутация: 10
Замечания: 0%
Статус:
что такое "OnDialog[playerid]=" ? и для чего нужен "switch(row)" ?


Welcome - * -=::RUS/UA Server ~ Real World::=- * - 77.220.182.206:7777
Dima-kunДата: Четверг, 08.04.2010, 19:40 | Сообщение # 66
Группа: Разработчики
Сообщений: 6269
Награды: 72
Репутация: 3512
Замечания: 0%
Статус:
Quote (Alexx73)
OnDialog[playerid]

это какой-то массив, судя по названию, в него автор пытался внести ид диалога, открытого игроку, но из-за тупости ему не могло дойти что ShowPlayerDialog не возращает ID диалогового окна.

Quote (Alexx73)
switch(row)

Почитай основы.



Мои работы:
[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
ABATAPДата: Вторник, 13.04.2010, 20:11 | Сообщение # 67
Советчик
Группа: Продвинутые
Сообщений: 1007
Награды: 14
Город: Новосибирск
Репутация: 729
Замечания: 0%
Статус:
помогите сделать такую регу, гф читал вчитывался пробовал но ничего не получилось, обращался в раздел гф но там не помогли сказали выдерни или юзай поиск, вот мой код

[pwn]if(RegistrationStep[playerid] > 0)
{
if(RegistrationStep[playerid] == 1)
{
new idx;
tmp = strtok(text, idx);
if((strcmp("male", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("male")))
{
PlayerInfo[playerid][pSex] = 1;
SendClientMessage(playerid, COLOR_YELLOW2, " Ok, вы мужчина.");
SendClientMessage(playerid, COLOR_YELLOW, "* Когда у вас день рождения? (Пишите dd/mm/yyyy)?");
RegistrationStep[playerid] = 2;
return 0;
}
else if((strcmp("female", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("female")))
{
PlayerInfo[playerid][pSex] = 2;
SendClientMessage(playerid, COLOR_YELLOW2, "* Ok, вы женщина.");
SendClientMessage(playerid, COLOR_YELLOW, "* Когда у вас день рождения? (Пишите dd/mm/yyyy)?");
RegistrationStep[playerid] = 2;
return 0;
}
else
{
SendClientMessage(playerid, COLOR_YELLOW, "* Вы Женщина или мужчина? (пишите если женщина-female, если мужчина male).");
}
return 0;
}
else if(RegistrationStep[playerid] == 2)
{
new year, month,day;
getdate(year, month, day);
new DateInfo[3][20];
split(text, DateInfo, '/');
if(year - strval(DateInfo[2]) > 100 || strval(DateInfo[2]) < 1 || strval(DateInfo[2]) >= year)
{
SendClientMessage(playerid, COLOR_YELLOW, "* Когда у вас день рождения? (Пишите dd/mm/yyyy)");
return 0;
}
new check = year - strval(DateInfo[2]);
if(check == year)
{
SendClientMessage(playerid, COLOR_YELLOW, "* Когда у вас день рождения? (Пишите dd/mm/yyyy)");
return 0;
}
if(strval(DateInfo[1]) > month)
{
check -= 1;
}
else if(strval(DateInfo[1]) == month && strval(DateInfo[0]) > day)
{
check -= 1;
}
PlayerInfo[playerid][pAge] = check;
format(string, sizeof(string), "Ok, вам %d лет.",PlayerInfo[playerid][pAge]);
SendClientMessage(playerid, COLOR_YELLOW2, string);
RegistrationStep[playerid] = 3;
SendClientMessage(playerid, COLOR_YELLOW, "* Откуда вы?? (Пишите LS, SF, LV) ");
return 0;
}
else if(RegistrationStep[playerid] == 3)
{
new idx;
tmp = strtok(text, idx);
if((strcmp("LS", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("LS")))
{
PlayerInfo[playerid][pOrigin] = 1;
SendClientMessage(playerid, COLOR_YELLOW2, "* Ладно, вы из Los santos.");
SendClientMessage(playerid, COLOR_YELLOW, "* Спасибо что заполнили информацию, сейчас вам покажут краткое руководство к серверу*");
RegistrationStep[playerid] = 0;
TutTime[playerid] = 1;
return 0;
}
else if((strcmp("SF", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("SF")))
{
PlayerInfo[playerid][pOrigin] = 2;
SendClientMessage(playerid, COLOR_YELLOW2, "* Ладно, вы из San fiero.*");
SendClientMessage(playerid, COLOR_YELLOW, "* Спасибо что заполнили информацию, сейчас вам покажут краткое руководство к серверу*");
RegistrationStep[playerid] = 0;
TutTime[playerid] = 1;
return 0;
}
else if((strcmp("LV", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("LV")))
{
PlayerInfo[playerid][pOrigin] = 3;
SendClientMessage(playerid, COLOR_YELLOW2, "*Ладно, вы из Las venturos.*");
SendClientMessage(playerid, COLOR_YELLOW, "* Спасибо что заполнили информацию, сейчас вам покажут краткое руководство к серверу*");
RegistrationStep[playerid] = 0;
TutTime[playerid] = 1;
return 0;
}
else
{
SendClientMessage(playerid, COLOR_YELLOW, "* Откуда вы?? (Пишите LS, SF, LV) ");
}
return 0;
}
return 0;
}[/pwn]

ABATAPДата: Четверг, 15.04.2010, 12:36 | Сообщение # 68
Советчик
Группа: Продвинутые
Сообщений: 1007
Награды: 14
Город: Новосибирск
Репутация: 729
Замечания: 0%
Статус:
suicide2 suicide2
Ghost-XДата: Четверг, 15.04.2010, 14:23 | Сообщение # 69
Мастер джэдай
Группа: Продвинутые
Сообщений: 3548
Награды: 36
Город: Наб. Челны
Репутация: 856
Замечания: 40%
Статус:
Quote (Ethernet)
if(listitem == 0)

юзайте switch(listitem)
{
case 0:
{
// код
}
case 1:
{
// код
}
}



Спор на форуме, все равно что олимпиада среди умственно отсталых: даже если ты победил, ты все равно гермофродит.
Хочешь остаться при своем мнении - держи его при себе.
NoxikДата: Четверг, 15.04.2010, 14:37 | Сообщение # 70
Освоившийся
Группа: Пользователи
Сообщений: 114
Награды: 1
Город: Черкассы
Репутация: 14
Замечания: 20%
Статус:
[offtop] У кого есть ФС диалогового окна? [/offtop]


Играй там где лучше - 77.220.182.86:7777 Premium|Game
Ghost-XДата: Четверг, 15.04.2010, 15:09 | Сообщение # 71
Мастер джэдай
Группа: Продвинутые
Сообщений: 3548
Награды: 36
Город: Наб. Челны
Репутация: 856
Замечания: 40%
Статус:
Noxik, он идет в наборе с сервером
test_cmds



Спор на форуме, все равно что олимпиада среди умственно отсталых: даже если ты победил, ты все равно гермофродит.
Хочешь остаться при своем мнении - держи его при себе.
TiShAДата: Суббота, 24.04.2010, 15:46 | Сообщение # 72
Освоившийся
Группа: Продвинутые
Сообщений: 96
Награды: 6
Город: KIev
Репутация: -356
Замечания: 100%
Статус:
: error 017: undefined symbol "ShowPlayerDialog"

что мне с ним зделать чтоб не выбивал?

SprunkДата: Суббота, 24.04.2010, 15:52 | Сообщение # 73
Хостинг-провайдер
Группа: Пользователи
Сообщений: 2451
Награды: 125
Город: Волгоград.
Репутация: 774
Замечания: 100%
Статус:
TiShA, использовать инклуды от samp 0.3a
http://files.sa-mp.com/samp03asvr_R7_win32.zip



pawn.su - Аренда игровых серверов.

Игровой портал Game Entertainment (Game-Ent.ru)

TiShAДата: Воскресенье, 25.04.2010, 11:37 | Сообщение # 74
Освоившийся
Группа: Продвинутые
Сообщений: 96
Награды: 6
Город: KIev
Репутация: -356
Замечания: 100%
Статус:
004: function "PlayerToPoint" is not implemented

а ето как исправить? подскажыте пожалуйста!

Добавлено (25.04.2010, 11:03)
---------------------------------------------
кинте плыз нормальное павно с совсеми инклудами или свое то что норм кинте за +

Добавлено (25.04.2010, 11:37)
---------------------------------------------
выложыте плыз норм павно совсеми инклудами или нормальное свое плзы за +

KPECTokДата: Понедельник, 03.05.2010, 11:57 | Сообщение # 75
Освоившийся
Группа: Пользователи
Сообщений: 93
Награды: 0
Город: Земля мой город..
Репутация: 5
Замечания: 0%
Статус:
Народ, как замутить Showstats в диалог?
Пишем /stats и вся статистика в окошке аккуратном.. Кто приведет пример?

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





 


 


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