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

 



 
          





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





Последние Файлы 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
Makar_PogorelovДата: Четверг, 09.12.2010, 15:44 | Сообщение # 136
Освоившийся
Группа: Пользователи
Сообщений: 75
Награды: 0
Город: Дзержинск
Репутация: 0
Замечания: 0%
Статус:
Quote (tailer)
Подскажите пожалуста как делать диалоги DIALOG_STYLE_INPUT ?? ХОЧУ СДЕЛАТЬ ЧТО БЫ МОЖНО БЫЛО ПИСАТЬ СВОЕЙ ИМЯ И ФАМИЛИЯ. нУ НАПРИМЕР РЕГАЕШЬСЯ И ТЕБЕ нужно придумать имя и фамилию только не те которые ты написал в сампе. а когда заходишь на сервер после введения пароля.Добавлено (04.12.2010, 19:35)---------------------------------------------мдэ... проошло 7 часов и не одного ответа.

Т.I


Используй SetPlayerName.

DIZmanДата: Четверг, 16.12.2010, 18:53 | Сообщение # 137
Новенький
Группа: Пользователи
Сообщений: 11
Награды: 0
Город: Minsk
Репутация: 0
Замечания: 0%
Статус:
Подскажите пожалуйста!

Вот есть такой код:

Code
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%]
Ghost-XДата: Четверг, 16.12.2010, 19:11 | Сообщение # 138
Мастер джэдай
Группа: Продвинутые
Сообщений: 3548
Награды: 36
Город: Наб. Челны
Репутация: 856
Замечания: 40%
Статус:
for(new i=0;i<MAX_VEHICLES;i++) DestroyVehicle(i);


Спор на форуме, все равно что олимпиада среди умственно отсталых: даже если ты победил, ты все равно гермофродит.
Хочешь остаться при своем мнении - держи его при себе.
DIZmanДата: Пятница, 17.12.2010, 19:26 | Сообщение # 139
Новенький
Группа: Пользователи
Сообщений: 11
Награды: 0
Город: Minsk
Репутация: 0
Замечания: 0%
Статус:
Ghost-X, спасибо!

Вот что ещё...
На 1 RP моде видел....
Заходишь в игру.. и ты выбираешь:
1) в каком городе ты будешь жить(листаешь), после идёт выбор скинов (как это сделать)
2) При выборе игрока из LS ему перед ником пишется "[LS]_" (как это сделать)

Подскажите пожалуйста... suicide2 suicide2 suicide2


Gamemodes:
• SF: United Team War v1 - [100%]
• SF: United Team War v2 - [89%]
• Sand War - [100%]
FilterScripts:
• [AIS]Админ остров - [100%]
Makar_PogorelovДата: Пятница, 17.12.2010, 20:09 | Сообщение # 140
Освоившийся
Группа: Пользователи
Сообщений: 75
Награды: 0
Город: Дзержинск
Репутация: 0
Замечания: 0%
Статус:
Для ghost-x:Го мир.

Я не профи но мочь думаю смогу.Если что не получится стукни в 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;
}

Добавлено (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 исправь меня.

Leo111Дата: Суббота, 25.12.2010, 13:37 | Сообщение # 141
Уверенный в себе
Группа: I'm V.I.P.
Сообщений: 226
Награды: 8
Город: Las Venturas
Замечания: 0%
Статус:
кстати у меня тоже этот жэ вопрос..чо у DIALOG_STYLE_MSGBOX ограничение в количестве символов стоит?....я искал ответ так и ненашел..
максимум выводится ~ 50 символов и всё...остальное как обрезало....

кстати на других серверах видел и на весь монитор тексты....в одном диалоге

MakS[28RuS]Дата: Вторник, 28.12.2010, 09:38 | Сообщение # 142
Новенький
Группа: Пользователи
Сообщений: 24
Награды: 1
Город: Тында
Репутация: 1
Замечания: 0%
Статус:
Никто не может кинуть аренду авто для GF в ДИАЛОГЕ?! Чтоб не надо было писать /rentcar

ПОЖАЛУЙСТА сделайте!!!


[move]Очень скоро я изменю мир![/move]
LikonikoДата: Вторник, 28.12.2010, 11:46 | Сообщение # 143
Местный
Группа: I'm V.I.P.
Сообщений: 584
Награды: 3
Город: Vaasa
Репутация: 199
Замечания: 20%
Статус:
MakS[28RuS]

Code
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 0)
{
if(response)  
{
SendClientMessage(playerid, 0x99CCFF, "Ты арендовал авто.");
OnPlayerCommandText(playerid,"/rentcar")
{
return 1;
}
}
else  
{
//
}
}
}

Code
    {
     if(PlayerToPoint(5, playerid,кординаты авто))   
               ShowPlayerDialog(playerid,0,DIALOG_STYLE_MSGBOX,"Аренда авто","Хочеш арендовать авто?"
     ,"Да","Нет");
   return 1;
              }

Code
public PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
   new Float:oldposx, Float:oldposy, Float:oldposz;
   new Float:tempposx, Float:tempposy, Float:tempposz;
   GetPlayerPos(playerid, oldposx, oldposy, oldposz);
   tempposx = (oldposx -x);
   tempposy = (oldposy -y);
   tempposz = (oldposz -z);
   if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
   {
    return 1;
   }
   return 0;
}

Добавлено (28.12.2010, 11:46)
---------------------------------------------

Quote (Makar_Pogorelov)
Чтоб именно прям так листать я точно сказать не смогу.Ну вот через диалог.
в 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 исправь меня.

Как то так)) Вроде верно


[cut noguest=Мои работы]FAQ перенапровление портов:http://www.samp-rus.com/forum/42-14704-1
[FS]_bus_job:http://www.samp-rus.com/forum/8-14707-1
[FS]Cafe:http://www.samp-rus.com/forum/8-14725-1
[FS]Gate Creator:http://www.samp-rus.com/forum/8-14747-1#314492
[MAP]Office:http://www.samp-rus.com/forum/65-16002-1
[MAP]Квартиры:http://www.samp-rus.com/forum/65-16183-1
[FS] Квартиры:http://www.samp-rus.com/forum/8-16212-1[/cut]
Мой блог
Sl1mДата: Вторник, 28.12.2010, 11:56 | Сообщение # 144
Советчик
Группа: I'm V.I.P.
Сообщений: 1153
Награды: 22
Город: Arizona
Репутация: 696
Замечания: 0%
Статус:
Quote (Likoniko)
SetPlayerPos(playerid, Корды в ЛВ, Корды в ЛВ, Корды в ЛВ );

Code
x , y , z

off:[на всякий, вдруг что то перепутает. yes ]

Le_MarkДата: Воскресенье, 02.01.2011, 12:14 | Сообщение # 145
Уверенный в себе
Группа: Продвинутые
Сообщений: 207
Награды: 1
Город: /root
Репутация: 32
Замечания: 0%
Статус:
Ребят, подскажите пожалуйста...
Code
ShowPlayerDialog(playerid,1001,DIALOG_STYLE_LIST,"|_______ Доступный Список _______|","Джипы\nШустрые Тачки\nЛодки И Катера\nСамолеты И Вертолеты\nМототранспорт\nБюджетные машины\nБюджетные машины 2","Ок","Отмена");

Нужно чтобы при нажатии на кнопку "Отмена" (в нижнем коде) возвращало в верхний код.
Code
if(dialogid == 1001)
  {
      if(response)
   {
       new item = listitem;
       if (item == 0)
    {
        ShowPlayerDialog(playerid,1002,DIALOG_STYLE_LIST,"|_______ Доступный Список Джипов _______|","Landstalker $200000\nBobcat $200000\nBFInjection $100000\nHotknife $100000\nMonster $2000000\nRancher $300000\nSandking $2000000\
     \nMesa $80000\nRancher2 $350000\nYousemite $350000\nHuntley $500000\nSadler_Shit $10000","Ок","Отмена");
    }
    if (item == 1)
    {
        ShowPlayerDialog(playerid,1003,DIALOG_STYLE_LIST,"|_______ Доступный Список Быстрых Тачек _______|","Buffalo $750000\nInfernus $3500000\nCheetah $1500000\nBanshee $1800000\nTurismo $2500000\nZR-350 $850000\
     \nHotring $4000000\nSuper-GT $1000000\nBullet $1600000\nSultan $500000\nElegy $350000\nFlash $280000\nPhoenix $1000000\nJester $300000","Ок","Отмена");
    }

Добавлено (29.12.2010, 23:48)
---------------------------------------------
Ну что, так ни кто и не поможет?
Я не пойму как это сделать, хотябы намекните.

Добавлено (02.01.2011, 12:14)
---------------------------------------------
Все, вопрос снят!

LumennnДата: Четверг, 06.01.2011, 13:09 | Сообщение # 146
Освоившийся
Группа: Пользователи
Сообщений: 79
Награды: 1
Город: Тула
Репутация: 9
Замечания: 0%
Статус:
Люди подскажите как сделать чтобы диалог высвечивался при входу в чекпоинт и в определённом случаее например после реги.
G1FДата: Среда, 12.01.2011, 21:15 | Сообщение # 147
Новенький
Группа: Пользователи
Сообщений: 54
Награды: 0
Город: dsdddddd
Репутация: 0
Замечания: 0%
Статус:
Люди помогите сделать меню HELP!!!
velixДата: Среда, 12.01.2011, 22:27 | Сообщение # 148
Группа: Удаленные





G1F, скидывай код команды, будем ГУИть :D
DoK45Дата: Четверг, 13.01.2011, 00:52 | Сообщение # 149
Новенький
Группа: Продвинутые
Сообщений: 71
Награды: 1
Город: Анапа
Репутация: -20
Замечания: 40%
Статус:
искал и нашел спс за инфу всем!
GSDNДата: Четверг, 13.01.2011, 02:28 | Сообщение # 150
Уверенный в себе
Группа: Пользователи
Сообщений: 266
Награды: 0
Город: Самара
Репутация: 27
Замечания: 60%
Статус:
есть нормальный ФАК на тему создания меню? дайте ссыль . тут не понятно...


███████████████████████████████████████████████
OPEN-GTO COOL!!!
███████████████████████████████████████████████
Поиск:





 


 


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