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

 



 
          





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





Последние Файлы 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
SMOUKДата: Вторник, 26.10.2010, 00:21 | Сообщение # 121
Местный
Группа: Продвинутые
Сообщений: 646
Награды: 13
Город: Рославль
Репутация: 284
Замечания: 100%
Статус:
Ммм. Возможно.. Я на это как то внимания не обращал т.к не маюсь с этой проблемой )


SiZMaNДата: Понедельник, 08.11.2010, 21:02 | Сообщение # 122
Новенький
Группа: Пользователи
Сообщений: 56
Награды: 0
Город: нижний новгород
Репутация: 0
Замечания: 0%
Статус:
А как сделать так вот допустим создал я меню в нем 3 варианта выбора!

Code
    if(dialogid == 3 && response)
     {
         switch(listitem)
         {
             case 0:
             {
        SendClientMessage(playerid, 0xFFFF00AA, " Садитесь в тягач, подцепляйте телегу и едьте на красный круг, что-бы доставить продукты!");
        SetPlayerCheckpoint(playerid, 2176.2202,-2230.3501,21.9618, 3.0);
             }
             case 1:
             {
        SendClientMessage(playerid, 0xFFFF00AA, " Садитесь в тягач, подцепляйте телегу и едьте на красный круг, что-бы доставить продукты!");
        SetPlayerCheckpoint(playerid, 2497.6387,-651.5430,12.2501, 3.0);
             }
             case 2:
             {
        SendClientMessage(playerid, 0xFFFF00AA, " Садитесь в тягач, подцепляйте телегу и едьте на красный круг, что-бы доставить продукты!");
        SetPlayerCheckpoint(playerid, 2332.4812,-1925.5785,21.8174, 3.0);
             }
         }
     }

Как к ним привязать чтобы выбрать именно эту машину, и проверку на то что на чекпоинт подьехала машина с телегой?

npopok64RUSДата: Четверг, 11.11.2010, 17:00 | Сообщение # 123
Новенький
Группа: Пользователи
Сообщений: 14
Награды: 0
Город: San Fiero
Репутация: 0
Замечания: 0%
Статус:
ПАМАГИТЕ ПЛИЗ: Я зделал /drink в диалоге. диалог пашет но тока диалог и всё!
http://www.4shared.com/document/6NsQvOh_/1_online.html - я добавил код в блакноте просматрите плиз и потскажитк!

Добавлено (11.11.2010, 17:00)
---------------------------------------------
и подскажите плиз как мне зделать так чтобы когда потходиш к пикапу (вигледит тк"j")автоматически вилезло диалоговае окно с нескальками вариантами!?


http://games-sait.ucoz.ru
http://games-sait.ucoz.ru
http://games-sait.ucoz.ru
http://games-sait.ucoz.ru
SiZMaNДата: Суббота, 13.11.2010, 22:43 | Сообщение # 124
Новенький
Группа: Пользователи
Сообщений: 56
Награды: 0
Город: нижний новгород
Репутация: 0
Замечания: 0%
Статус:
npopok64RUS,
Quote (npopok64RUS)
подскажите плиз как мне зделать так чтобы когда потходиш к пикапу (вигледит тк"j")автоматически вилезло диалоговае окно с нескальками вариантами!?

В начало:

Code
new pic;

В public OnGameModeInit()

Code
pic = CreatePickup(model, type, Float:X, Float:Y, Float:Z, Virtualworld); //Тут сам допишешь модель координаты и тд!

В public OnPlayerPickUpPickup( playerid, pickupid )

Code
{
if(pickupid == mesto)
{
// Тут диалог!!!
}
return 1;
}

Добавлено (11.11.2010, 19:42)
---------------------------------------------
================================

Quote (SiZMaN)
{
if(pickupid == mesto) // Вместо mesto > pic
{
// Тут диалог!!!
}
return 1;
}

Добавлено (13.11.2010, 22:43)
---------------------------------------------
Помогите перевести на диалоги!
Должно ипользоваться при конекте и когда игрок еще не зарегистрирован:

Code
    if(!strcmp(cmd, "/register", true))
  {
  new tmp[256];
  tmp = strtok(cmdtext, idx);
  RegisterPlayer(playerid,tmp);
  return 1;
  }

Должно ипользоваться при конекте и когда игрок зарегистрирован:
Code
    new cmd[256];
  new idx = 0;
  cmd = strtok(cmdtext, idx);
  if(!strcmp(cmd, "/login", true))
  {
  new tmp[256];
  tmp = strtok(cmdtext, idx);
  LoginPlayer(playerid,tmp);
  return 1;
  }

Просто не могу понять как в DIALOG_STYLE_INPUT все это делаеться! :(

tailerДата: Воскресенье, 14.11.2010, 22:48 | Сообщение # 125
Новенький
Группа: Пользователи
Сообщений: 67
Награды: 27
Город: Казань
Репутация: 85
Замечания: 0%
Статус:
SiZMaN,
Ты хочешь регистрацию в диолог перевести ?
________________
Ребят когда диологи создоешь нужно что нибудь добовлять ? ну там new, forward, define ??

SiZMaNДата: Понедельник, 15.11.2010, 18:19 | Сообщение # 126
Новенький
Группа: Пользователи
Сообщений: 56
Награды: 0
Город: нижний новгород
Репутация: 0
Замечания: 0%
Статус:
tailer, Да
1)Как сделать так, чтобы окно не закрывалось после регистрации, если пустое поле, и если пароль при входе не правильный?
Code
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new tmp[256];
new idx = 0;
if(dialogid == 1)
{
if(response)
{
//РЕГИСТРАЦИЯ
tmp = strtok(inputtext, idx);
RegisterPlayer(playerid,tmp);
}
}
else
{
//ВХОД
tmp = strtok(inputtext, idx);
LoginPlayer(playerid,tmp);
}
}

Добавлено (15.11.2010, 18:19)
---------------------------------------------

Quote (tailer)
Ребят когда диологи создоешь нужно что нибудь добовлять ? ну там new, forward, define ??

Если что то ДА

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new tmp[256];
new idx = 0;

if(dialogid == 1)
{
if(response)
{
//РЕГИСТРАЦИЯ
tmp = strtok(inputtext, idx);
RegisterPlayer(playerid,tmp);
}
}
else
{
//ВХОД
tmp = strtok(inputtext, idx);
LoginPlayer(playerid,tmp);
}
}

wizarДата: Четверг, 18.11.2010, 17:42 | Сообщение # 127
Уверенный в себе
Группа: Продвинутые
Сообщений: 277
Награды: 2
Город: Алчевск
Репутация: -20
Замечания: 20%
Статус:
всем ку.делаю правила для сервера. непойму что и куда вставлять чтобі если я непринимаю правила чтобы кик вот я тут что то сделал и незнаю куда присунуть кик
Quote
if(dialogid == 739)
{
format(string,sizeof(string),"Я Мужчина\nЯ Женщина");
ShowPlayerDialog(playerid,251,DIALOG_STYLE_LIST,"Выбор пола",string,"Принят","Отмена");
return 1;
}

ZmeyДата: Понедельник, 22.11.2010, 22:27 | Сообщение # 128
Уверенный в себе
Группа: Продвинутые
Сообщений: 185
Награды: 8
Город: Москва
Репутация: 79
Замечания: 0%
Статус:
у тебя ваще не то)
в OnPlayerConnect
Code
        ShowPlayerDialog(playerid,765,DIALOG_STYLE_MSGBOX,"Правила","Блаблабла\nБлаблабла\nБлаблабла","Согласен","Ну их нах");

в OnDialogResponse
Code
    if(dialogid == 765)
  {
  if(response)
   {
      SendClientMessage(playerid, COLOR_GREEN, "*Молодец что принял правила <img rel="usm" src="http://www.samp-rus.com/Smiles_for_forum/wink.gif" border="0" align="absmiddle" alt=";)"> *");
   }
  else
      {
      SendClientMessage(playerid, COLOR_GREEN, "*Правила нах не посылают <img rel="usm" src="http://www.samp-rus.com/Smiles_for_forum/wink.gif" border="0" align="absmiddle" alt=";)"> *");
      Kick(playerid);
   }
  }

ты заметил там где правила - \n - это переход на след строку если чо...
а так если ошибка говори поправь я не тестил но вроде не должно быть ошибок!!

Добавлено (22.11.2010, 22:27)
---------------------------------------------
Эмм пацаны выше ктото писал чтоб ему помогли регу на диалог перевести, кто возьмется мне заодно пожалуйста переведите, ато перевожу а там пасс не читается!
[cut=Вот /login] if (strcmp(cmd, "/login", true) ==0 )
{
if(IsPlayerConnected(playerid))
{
new tmppass[64];
if(gPlayerLogged[playerid] == 1)
{
SendClientMessage(playerid, COLOR_GREY, " Âû óæå çàëîãèíåíû.");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GREY, " ÏÎÄÑÊÀÇÊÀ: /login [ïàðîëü]");
return 1;
}
strmid(tmppass, tmp, 0, strlen(cmdtext), 255);
OnPlayerLogin(playerid,tmppass);
}
return 1;
}[/cut]
[cut=А вот /register] if (strcmp(cmd, "/register", true)==0)
{
new string[265];
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GREY, " ÏÎÄÑÊÀÇÊÀ: /register [ïàðîëü]");
return 1;
}
if (gPlayerAccount[playerid] == 1)
{
SendClientMessage(playerid, COLOR_GREY, " Íèê óæå çàðåãèñòðèðîâàí");
return 1;
}

strmid(PlayerInfo[playerid][pPassword], tmp, 0, strlen(cmdtext), 255);
GetPlayerName(playerid, playername, sizeof(playername));
format(string, sizeof(string), "%s.txt", playername);
new File: file = fopen(string, io_read);
if (file)
{
SendClientMessage(playerid, COLOR_GREY, " Íèê óæå çàðåãèñòðèðîâàí");
fclose(file);
return 1;
}
new File:hFile;
hFile = fopen(string, io_append);
new var[32];//
format(var, 32, "%s\n", PlayerInfo[playerid][pPassword]);fwrite(hFile, var);
format(var, 32, "Kills=%d\n",PlayerInfo[playerid][pKills]);fwrite(hFile, var);
format(var, 32, "Deaths=%d\n",PlayerInfo[playerid][pDeaths]);fwrite(hFile, var);
PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);
format(var, 32, "Money=%d\n",PlayerInfo[playerid][pCash]);fwrite(hFile, var);
format(var, 32, "Admin=%d\n",PlayerInfo[playerid][pAdmin]);fwrite(hFile, var);
fclose(hFile);
SendClientMessage(playerid, COLOR_WHITE, " Ñïàñèáî çà ðåãèñòðàöèþ!");
SendClientMessage(playerid, COLOR_WHITE, " Ïðè âõîäå íà ñåðâåð ââîäèòå /login [ïàðîëü] ÷òîáû âîéòè");
OnPlayerLogin(playerid,PlayerInfo[playerid][pPassword]);
return 1;[/cut]


(skype) zmey77771
(icq) 24-77-58-69
Makar_PogorelovДата: Четверг, 02.12.2010, 17:58 | Сообщение # 129
Освоившийся
Группа: Пользователи
Сообщений: 75
Награды: 0
Город: Дзержинск
Репутация: 0
Замечания: 0%
Статус:
ПЛИИИзЗЗ помоги.Или куда мне написать?Как сделать менюшку в виде диалога что бы там можно было выбирать пункты.Наприме статистика игрока и т.п.
AdrenalineRushДата: Четверг, 02.12.2010, 18:55 | Сообщение # 130
Освоившийся
Группа: Продвинутые
Сообщений: 119
Награды: 1
Город: ....
Репутация: 33
Замечания: 0%
Статус:
Makar_Pogorelov, Создавай команду, при её вводе вызывай диалоговое окно, в этом диалоговом окне сделай пункты, "Статистика игрока", что тебе там еще надо..Ну и допустим при нажатии на "Статистика игрока" показывай статистику.
ImperealДата: Четверг, 02.12.2010, 19:44 | Сообщение # 131
Мастер джэдай
Группа: I'm V.I.P.
Сообщений: 2677
Награды: 51
Город: Санкт-Петербург
Репутация: 1868
Замечания: 100%
Статус:
Makar_Pogorelov,
2 - DIALOG_STYLE_LIST
dialog_style_2.PNG



Прощай самп-рус =Р
Makar_PogorelovДата: Четверг, 02.12.2010, 22:47 | Сообщение # 132
Освоившийся
Группа: Пользователи
Сообщений: 75
Награды: 0
Город: Дзержинск
Репутация: 0
Замечания: 0%
Статус:
Спасибо вы мне очень помогли.Но мне бы конечно пример скрипта если можно.
AdrenalineRushДата: Четверг, 02.12.2010, 23:19 | Сообщение # 133
Освоившийся
Группа: Продвинутые
Сообщений: 119
Награды: 1
Город: ....
Репутация: 33
Замечания: 0%
Статус:
Makar_Pogorelov, У тебя GF? если да, то делай так:

В public OnPlayerCommandText вставь:
[cut=Код]if(strcmp(cmd, "/command", true) == 0)
{
// 888 - ID диалога , DIALOG_STYLE_LIST - Стиль диалога
ShowPlayerDialog(playerid, 888, DIALOG_STYLE_LIST, "Выберите пункт", "Статистика\nЧто-то другое", "Выбрать", "Отмена");
return 1;
}[/cut]

И в public OnDialogResponse вставь:

[cut=Код]if(dialogid == 888)
{
if(response)
{
if(listitem == 0)
{
ShowStats(playerid,playerid); // Действие которое будет выполняться при выборе пункта "Статистика"
}
if(listitem == 1)
{
SendClientMessage(playerid, 0x33AA33AA, "Что-то другое"); // Действие которое будет выполняться при выборе пункта "Что-то другое"
}
}
}[/cut]


Сообщение отредактировал AdrenalineRush - Четверг, 02.12.2010, 23:20
Makar_PogorelovДата: Пятница, 03.12.2010, 17:02 | Сообщение # 134
Освоившийся
Группа: Пользователи
Сообщений: 75
Награды: 0
Город: Дзержинск
Репутация: 0
Замечания: 0%
Статус:
Всё понял.Спасибо большое.А то мучался .
tailerДата: Суббота, 04.12.2010, 19:35 | Сообщение # 135
Новенький
Группа: Пользователи
Сообщений: 67
Награды: 27
Город: Казань
Репутация: 85
Замечания: 0%
Статус:
Подскажите пожалуста как делать диалоги DIALOG_STYLE_INPUT ?? ХОЧУ СДЕЛАТЬ ЧТО БЫ МОЖНО БЫЛО ПИСАТЬ СВОЕЙ ИМЯ И ФАМИЛИЯ.
нУ НАПРИМЕР РЕГАЕШЬСЯ И ТЕБЕ нужно придумать имя и фамилию только не те которые ты написал в сампе. а когда заходишь на сервер после введения пароля.

Добавлено (04.12.2010, 19:35)
---------------------------------------------
мдэ... проошло 7 часов и не одного ответа.

Поиск:





 


 


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