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

 



 
          





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





Последние Файлы 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
AxeleratorДата: Воскресенье, 02.10.2011, 14:07 | Сообщение # 181
Уверенный в себе
Группа: I'm V.I.P.
Сообщений: 237
Награды: 2
Город: Омск
Репутация: 159
Замечания: 40%
Статус:
Quote (ten_strike)
нород помогите а в какой повно вставлять их там выше крыши

Всмысле в какой pawno? В тот что в папке "pawno/pawno.exe"

Quote (ten_strike)
и кому не сложно помогите написать не фига не получаеться мне надо DIALOG_STYLE_LIST название петбай а там продрозделы я их сам могу заполнить самое главное чтобы командой открывалось /mm

Если я тебя правильно понял, то тебе нужно чтобы по команде "/mm" выводился диалог типа "DIALOG_STYLE_LIST". Просто создавай команду и выводи в ней диалог игроку, например:

Code
if(strcmp(cmd, "/mm", true) == 0)
{
       ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, "Заголовок диалога", "Строка1\nСтрока2 (и т.д)", "Первая кнопка (например ОК)", "Вторая кнопка (например Отмена)");
       return 1;
}



Сообщение отредактировал Axelerator - Воскресенье, 02.10.2011, 14:10
ten_strikeДата: Воскресенье, 02.10.2011, 16:20 | Сообщение # 182
Новенький
Группа: Пользователи
Сообщений: 5
Награды: 0
Город: da
Репутация: 0
Замечания: 0%
Статус:
я пытаюсь а не получаеться если не сложно можеш подсказать куда сохранять этот повно потом и нодо ли где пробисавать его
AxeleratorДата: Воскресенье, 02.10.2011, 16:50 | Сообщение # 183
Уверенный в себе
Группа: I'm V.I.P.
Сообщений: 237
Награды: 2
Город: Омск
Репутация: 159
Замечания: 40%
Статус:
ten_strike, что значит "куда сохранять этот повно" ? и что "пробисавать"?
ten_strikeДата: Воскресенье, 02.10.2011, 22:20 | Сообщение # 184
Новенький
Группа: Пользователи
Сообщений: 5
Награды: 0
Город: da
Репутация: 0
Замечания: 0%
Статус:
Quote (Axelerator)
"пробисавать"?

сори ошибся прописывать
Quote (Axelerator)
что значит "куда сохранять этот повно

ну там несколько папок в какуя конкретно и надо где ево прописывать ну типо как плагин дапустим он прописываеться в сервер кфг
а павно надо где или нет??

AxeleratorДата: Четверг, 06.10.2011, 18:32 | Сообщение # 185
Уверенный в себе
Группа: I'm V.I.P.
Сообщений: 237
Награды: 2
Город: Омск
Репутация: 159
Замечания: 40%
Статус:
Quote (ten_strike)
ну там несколько папок в какуя конкретно и надо где ево прописывать ну типо как плагин дапустим он прописываеться в сервер кфг
а павно надо где или нет??

В server.cfg прописываются моды/фильтрскрипты, которые будут запускаться при старте сервера.

Misha_FocusДата: Четверг, 13.10.2011, 14:29 | Сообщение # 186
Новенький
Группа: Пользователи
Сообщений: 7
Награды: 0
Город: Екатеринбург
Репутация: -20
Замечания: 0%
Статус:
Я не чего не понял :(
Может мне пожалуйста кто-нибудь написать диалоговое окно для телепорта по этажам. Типо встаёш на пикап и выходит окно там выбераешь этаж

AxeleratorДата: Четверг, 13.10.2011, 14:36 | Сообщение # 187
Уверенный в себе
Группа: I'm V.I.P.
Сообщений: 237
Награды: 2
Город: Омск
Репутация: 159
Замечания: 40%
Статус:
Quote (Misha_Focus)
Я не чего не понял

Что именно непонятно? Все и так ясно и понятно написано... mda

DrevenДата: Воскресенье, 16.10.2011, 04:02 | Сообщение # 188
Гуру
Группа: Продвинутые
Сообщений: 1096
Награды: 205
Город: od.ua
Репутация: 1099
Замечания: 0%
Статус:
Misha_Focus,
Code

if(!strcmp(cmdtext, "/этаж", true))
       {
         ShowPlayerDialog(playerid, 99, DIALOG_STYLE_LIST, "Donate Money", "1 этаж\n2этаж\n3 этаж", "Выбрать", "Отмена");
       return 1;
       }

Потом в паблик
Code

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])

Code

if(dialogid == 99)
{
if(response)
{
if(listitem == 0)
{
SetPlayerPos(playerid, 1 этаж твой);
SetPlayerInterior(playerid,0);
PlayerInfo[playerid][pInt] = 0;
}
if(listitem == 1)
{
SetPlayerPos(playerid, 2 этаж твой);
SetPlayerInterior(playerid,0);
PlayerInfo[playerid][pInt] = 0;
}
if(listitem == 2)
{
SetPlayerPos(playerid, 3 этаж твой);
SetPlayerInterior(playerid,0);
PlayerInfo[playerid][pInt] = 0;
}
}



www.samp-rpg.com

Сообщение отредактировал Dreven - Воскресенье, 16.10.2011, 04:03
DimanBagДата: Четверг, 27.10.2011, 12:05 | Сообщение # 189
Новенький
Группа: Пользователи
Сообщений: 14
Награды: 0
Город: Киселевск
Репутация: -19
Замечания: 20%
Статус:
В проект нужен опытный скриптер подробности в skype diman8355

(пометка !скриптер! обязательна)



Diman_Treiser
SAMP---RUSДата: Понедельник, 06.02.2012, 18:49 | Сообщение # 190
Новенький
Группа: Пользователи
Сообщений: 29
Награды: 0
Город: stavropol
Репутация: -16
Замечания: 0%
Статус:
ктонить переделайте мне статистику
вот код
Code
if(strcmp(cmdtext, "/mystats", true) == 0)
  {
      new prtm;
   prtm=(((500*(100*(level[playerid]+1)))/100))-LevUp[playerid];
         SendClientMessageToAll(COLOR_WHITE, "------------------------------------------------------");
      format(string, sizeof(string), ">> %s's Ñòàòèñòèêà:", PlayerName(playerid));
   SendClientMessageToAll(COLOR_YELLOW, string);
   format(string, sizeof(string), ">> Óáèéñòâà äëÿ óðîâíÿ: %d Ñìåðòè äëÿ óðîâíÿ: %d Ðåàëüíûõ óáèéñòâ: %d Ðåàëüíûõ ñìåðòåé: %d Ðåïóòàöèÿ: %0.2f Óðîâåíü: %d ", KillCount[playerid], DeathCount[playerid], RealKills[playerid], RealDeaths[playerid], (Float:KillCount[playerid]+Float:statsRab[playerid]+Float:Sport[playerid])/(Float:DeathCount[playerid]+Float:autokill[playerid]+Float:level[playerid]),level[playerid]);
   SendClientMessageToAll(COLOR_YELLOW, string);
   format(string, sizeof(string), ">> Ñïîðò: %d Îáùåå âðåìÿ ïðîâåäåííîå íà ñåðâåðå: %d ÷, Äî ñëåäóþùåãî óðîâíÿ îñòàëîñü: %d ìèí, Âðåìÿ çà ðóëåì: %d ìèí", Sport[playerid], timeInGame[playerid]/60, prtm, timeDrive[playerid]);
         SendClientMessageToAll(COLOR_YELLOW, string);
   format(string, sizeof(string), ">> Ñðîê Ïðàâ %d , Ñðîê îðóæèÿ %d , Ñåéô %d ", DriveSrok[playerid], WeapSrok[playerid], bankDom[playerid]);
   SendClientMessageToAll(COLOR_YELLOW, string);
   SendClientMessageToAll(COLOR_WHITE, "------------------------------------------------------");
   return 1;
     }

MckenzyДата: Понедельник, 06.02.2012, 20:09 | Сообщение # 191
Советчик
Группа: I'm V.I.P.
Сообщений: 1212
Награды: 130
Город: Ярославль
Репутация: 2125
Замечания: 80%
Статус:
SAMP---RUS, если есть руки и голова, сам сделаешь ибо как делать написано в первом посте.
Max_DavydonДата: Воскресенье, 19.02.2012, 12:33 | Сообщение # 192
Новенький
Группа: Пользователи
Сообщений: 1
Награды: 0
Город: Электросталь
Репутация: -9
Замечания: 0%
Статус:
Ребят,помогите пожалуйста сделать Диалоговое окно (Приглашение на Мероприятие)
Вот так: Внимание! Внимание! Внимание! На сервере мероприятие. Согласны ли вы участвовать в нём? [В <b>] ( Внимание! Внимание! Внимание! "Красный", а остальное "Оранжевый", и пожалуйста Жирный шрифт.

"Да" "Нет" (Да "Красный", Нет "Зелёный")

Кто сделает буду очень благодарен
Очень очень буду Благодарен. Кто сделает просьба Скинуть в скайп: fakel321 ну или на форуме

LatronДата: Воскресенье, 19.02.2012, 13:09 | Сообщение # 193
Группа: I'm V.I.P.
Сообщений: 2115
Награды: 22
Город: Орел
Репутация: 1604
Замечания: 0%
Статус:
Max_Davydon,

ShowPlayerDialog( playerid, 1025, DIALOG_STYLE_MSGBOX,
"{FF0000}Внимание! Внимание! Внимание!",
"{FFA500}На сервере мероприятие.\nСогласны ли вы участвовать в нём?",
"Да", "Нет" );

1025 - это ID диалогового окна.
А цвет кнопок менять нельзя.



Моё портфолио

Мои работы:
[ Lesson ] Операторы в PAWN.
[ Lesson ] Переменная.
[ GM ] RegSys. ( Last update: 21.04.2012 )




Сообщение отредактировал Latron - Воскресенье, 19.02.2012, 13:11
NiXONДата: Воскресенье, 19.02.2012, 13:57 | Сообщение # 194
Местный
Группа: I'm V.I.P.
Сообщений: 708
Награды: 32
Город: MyGame*World
Репутация: 0
Замечания: 80%
Статус:
Quote (Latron)
А цвет кнопок менять нельзя.

Можно менять цвет текства на кнопке,но только если на ней 1 буква



Полный FAQ для любого сервера по установке и настройке GTA SA-MP
Как начать играть в GTA SA online.
Скачать GTA San Andreas

Нас пугает наш блеск, а не наш мрак.
Быть маленьким и скромным
не самая благородная роль.
Ничтожность никого не вдохновляет...
даже если она удобна окружающим.
Мы хотим блистать и сверкать.


ВеликсДата: Воскресенье, 19.02.2012, 14:09 | Сообщение # 195
Мастер джэдай
Группа: Модераторы
Сообщений: 3931
Награды: 287
Город: Мухосранск
Репутация: 8429
Замечания: 0%
Статус:
Quote (Nixonchik)
Можно менять цвет текства на кнопке,но только если на ней 1 буква

Ну тогда можно сделать Y и N :)



[cut=freestyle]
ПРИНЕСЛА СОРОКА В РОТЕ ПРИВОРОТ ,
СВЯЗАЛАСЬ НА ШЕЕ ЛОЗА И БЫЛ ПОЛНЫЙ ПИ**ЕЦ,
ОСЕНЬ С ЗИМОЙ, ЛЕТО С ВЕСНОЙ,
ГУСЬ С ЛИСОЙ, ЕБ**ИСЬ ВО ТЬМЕ НОЧНОЙ.
УЗЕЛ ЗАВЯЗАЛСЯ, ПЕПЕЛ РАЗМЕТАЛСЯ И ЛИСА ЗАБЕРЕМЕНЕЛА.
ВМЕСТЕ ВЕК ВЕКОВАТЬ, ПУТУ НЕ РАЗВЯЗАТЬ.
ТРАВА ПЕРЕПЛЕТИСЬ, УЗЕЛ ЗАВОРОЖИСЬ.
ЛЕНАРУ ДАЙ УМА И ЛЕНУ
НА ВЕЛЕ НЕ ОТРАЗИСЬ,ЕБ*СЬ ЕБ*СЬ ЕБ*СЬ
© Хасан
[/cut]
Форум SAMP о мультиплеерах для GTA. »   » Wiki-Samp-Rus » [Tutorial]Создание Диалогового окна (Переведено с sa-mp.com)
Поиск:





 


 


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