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

 



 
          





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





Последние Файлы 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
[RGS]JAGUARДата: Пятница, 13.08.2010, 19:04 | Сообщение # 106
Советчик
Группа: Продвинутые
Сообщений: 1154
Награды: 25
Город: FloatX,FloatY,FloatZ
Репутация: 291
Замечания: 40%
Статус:
Quote (xLock)
Но вот проблема! Даже если пользователь ничего не ввел его всеравно регает! Как это исправить? Как сделать так чтобы окно выскакивало пока он не введет норм пароль?

перенеси в SetPlayerSpawn!



[/url]
Новая ICQ: 593922
xLockДата: Пятница, 13.08.2010, 20:46 | Сообщение # 107
Освоившийся
Группа: Продвинутые
Сообщений: 148
Награды: 3
Город: Грозный
Репутация: -8
Замечания: 20%
Статус:
фуф... всё разобрался в чом шнага была. :) :)
[RGS]JAGUAR, не то но спасибо new_russian




www.samp-gto.ru - мир без правил, мир без победителей и проигравших. (с) MSRV
Рекламируй свой сервер, повышай посещаемость, добавляй его в наш рейтинг
Jumpman23Дата: Суббота, 14.08.2010, 14:47 | Сообщение # 108
Группа: I'm V.I.P.
Сообщений: 1359
Награды: 23
Город: Kingston, Rastapolis
Репутация: 504
Замечания: 100%
Статус:
Quote (xLock)
фуф... всё разобрался в чом шнага была.

ну так напиши всем, чтобы знали что делать...эгоист


Тсссс, тссс, отключите снисходительный тон. Помните: вас уже лишали права слова на этом форуме.
Прошу прощения у всех кого я заебал или оскорбил (Кроме икварпа и чеза - вы ибланы).
Великс ты красава.
KillForFunДата: Среда, 06.10.2010, 22:30 | Сообщение # 109
Освоившийся
Группа: Продвинутые
Сообщений: 143
Награды: 3
Город: Cызрань
Репутация: 26
Замечания: 0%
Статус:
Люди хелп пытался сделать что бы можно было устраиваться на работу в диалогах выкидывает кучу ошибок помагите плиз
Code

if(strcmp(cmd, "/Работа", true) == 0) {
      new listitems[] = "1\tРабота1\n2\tРабота\n3\tРабота\n4\tРабота\n5\tÍРабота\n6\tРабота\n7\tРабота\n8\tGun Dealer\n9\tРабота\n10\tРабота";
      ShowPlayerDialog(playerid,123,DIALOG_STYLE_LIST," Пуфто",listitems," Устроиться"," Отмена");
         return 1;
     }

и 2 в public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
Code

if(dialogid == 123)
  {
   switch(listitem)
   {
   case 0:
     {
     SetPlayerFightingStyle (playerid, GettingJob[playerid] = 20);
     SendClientMessage(playerid, 0xFFFFFFAA, " Âû óñòðîèëèñü Âîäèòåëåì Äàëüíîáîéùèêîì!");
     }
    case 1:
  {
  SetPlayerFightingStyle (playerid, GettingJob[playerid] = 1);
     SendClientMessage(playerid, 0xFFFFFFAA, " Âû óñòðîèëèñü íà ðàáîòó äåòåêòèâîì!");
  }
  case 2:
  {
   SetPlayerFightingStyle (playerid, GettingJob[playerid] = 2);
     SendClientMessage(playerid, 0xFFFFFFAA, " Âû óñòðîèëèñü íà ðàáîòó Àäâîêàòîì!");
  }
  case 3:
  {
  SetPlayerFightingStyle (playerid, GettingJob[playerid] = 3);
     SendClientMessage(playerid, 0xFFFFFFAA, " Âû óñòðîèëèñü íà ðàáîòó â ïóáëè÷íûé äîì!");
  }
  case 4:
  {
   SetPlayerFightingStyle (playerid, GettingJob[playerid] = 4);
     SendClientMessage(playerid, 0xFFFFFFAA, " Âû óñòðîèëèñü ïðîäàâöîì íàðêîòèêîâ!");
  }
  case 5:
  {
   SetPlayerFightingStyle (playerid, GettingJob[playerid] = 5);
     SendClientMessage(playerid, 0xFFFFFFAA, " Âû óñòðîèëèñü àâòî âîðîì!");
     }
     case 6:
  {
   SetPlayerFightingStyle (playerid, GettingJob[playerid] = 7);
     SendClientMessage(playerid, 0xFFFFFFAA, " Âû óñòðîèëèñü ìåõàíèêîì!");
  }
  case 7:
  {
   SetPlayerFightingStyle (playerid, GettingJob[playerid] = 9);
     SendClientMessage(playerid, 0xFFFFFFAA, " Âû óñòðîèëèñü Gun Dealer!");
     }
     case 8:
  {
   SetPlayerFightingStyle (playerid, GettingJob[playerid] = 14);
     SendClientMessage(playerid, 0xFFFFFFAA, " Âû óñòðîèëèñü Âîäèòåëåì àâòîáóñà!");
     }
     case 9:
  {
   SetPlayerFightingStyle (playerid, GettingJob[playerid] = 17);
     SendClientMessage(playerid, 0xFFFFFFAA, " Âû óñòðîèëèñü Âîäèòåëåì Áèëàçà!");
     return 0;
     }

     }

что не так скажите плиз а да вот сами ошибки
Code

C:\ÌîÄý\GF.pwn(4956) : error 004: function "CheckForLicenseTestCheckpoint" is not implemented
C:\ÌîÄý\GF.pwn(4971) : error 004: function "CheckForLicenseTestCheckpoint" is not implemented
C:\ÌîÄý\GF.pwn(5379) : error 004: function "IsADrivingTest" is not implemented
C:\ÌîÄý\GF.pwn(6590) : error 004: function "ClearChatbox" is not implemented
C:\ÌîÄý\GF.pwn(6603) : error 004: function "ClearChatbox" is not implemented
C:\ÌîÄý\GF.pwn(6617) : error 004: function "ClearChatbox" is not implemented
C:\ÌîÄý\GF.pwn(6630) : error 004: function "ClearChatbox" is not implemented
C:\ÌîÄý\GF.pwn(6644) : error 004: function "ClearChatbox" is not implemented
C:\ÌîÄý\GF.pwn(6658) : error 004: function "ClearChatbox" is not implemented
C:\ÌîÄý\GF.pwn(6671) : error 004: function "ClearChatbox" is not implemented
C:\ÌîÄý\GF.pwn(6684) : error 004: function "ClearChatbox" is not implemented
C:\ÌîÄý\GF.pwn(6700) : error 004: function "ClearChatbox" is not implemented
C:\ÌîÄý\GF.pwn(6713) : error 004: function "ClearChatbox" is not implemented
C:\ÌîÄý\GF.pwn(7294) : error 004: function "SaveGas" is not implemented
C:\ÌîÄý\GF.pwn(8703) : error 004: function "LoadGas" is not implemented
C:\ÌîÄý\GF.pwn(12932) : error 004: function "RemoveRoadblock" is not implemented
C:\ÌîÄý\GF.pwn(12945) : error 004: function "RemoveRoadblock" is not implemented
C:\ÌîÄý\GF.pwn(14070) : error 004: function "SaveGas" is not implemented
C:\ÌîÄý\GF.pwn(14136) : error 017: undefined symbol "RangeBan"
C:\ÌîÄý\GF.pwn(36405) : error 079: inconsistent return types (array & non-array)
C:\ÌîÄý\GF.pwn(36425) : error 079: inconsistent return types (array & non-array)
C:\ÌîÄý\GF.pwn(36448) : error 079: inconsistent return types (array & non-array)
C:\ÌîÄý\GF.pwn(36456) : error 079: inconsistent return types (array & non-array)
C:\ÌîÄý\GF.pwn(36469) : error 079: inconsistent return types (array & non-array)
C:\ÌîÄý\GF.pwn(36477) : error 079: inconsistent return types (array & non-array)
C:\ÌîÄý\GF.pwn(36485) : error 079: inconsistent return types (array & non-array)

Compilation aborted.Pawn compiler 3.2.3664     Copyright (c) 1997-2006, ITB CompuPhase

26 Errors.

если мод компелировать без того что я добавлял диалоги . то норм все пашет (((



|______Мои работы______|
Хотдоги на диалогах
|______________________|
Modern State[RP] IP Addres 88.198.67.14:7557
Cайт http:\\rp-ms.ru
ParlamentДата: Среда, 06.10.2010, 23:18 | Сообщение # 110
Группа: I'm V.I.P.
Сообщений: 271
Награды: 19
Город: Маарду
Репутация: 474
Замечания: 0%
Статус:
BloodRain, SetPlayerFightingStyle это причём тут? mda
Я бы на твоём месте сделал бы всё через listitem ;) И просто став GettingJob[playerid] = 1; и т.п



abhorДата: Среда, 06.10.2010, 23:18 | Сообщение # 111
Уверенный в себе
Группа: Продвинутые
Сообщений: 184
Награды: 3
Город: Оттава
Репутация: 108
Замечания: 0%
Статус:
BloodRain, попробуй так:

Команда:

Code

if(!strcmp(cmdtext, "/работа", true))
{
     ShowPlayerDialog(playerid, 123, DIALOG_STYLE_LIST, "Работа", "Работа 1\nРабота 2\nРабота 3", "Устроится", "Отмена");
     return 1;
}

в ondialogresponse:

Code

if(dialogid == 123 && response)
     {
         switch(listitem)
         {
             case 0:
             {
               //действие при нажатие на Работа 1
             }
             case 1:
             {
               //действие при нажатие на Работа 2
             }
             case 2:
             {
               //действие при нажатие на Работа 3
             }
         }
     }



HostName: [MoD] Call Of Duty - Urban Clashes. FREE VIP!
Address: 91.121.164.164:8077
ParlamentДата: Среда, 06.10.2010, 23:29 | Сообщение # 112
Группа: I'm V.I.P.
Сообщений: 271
Награды: 19
Город: Маарду
Репутация: 474
Замечания: 0%
Статус:
Моя версия crazy

Code
if(strcmp(cmd, "/join", true) == 0)
{
new listitems[] = "1\tРабота1\n2\tРабота\n3\tРабота\n4\tРабота\n5\tÍРабота\n6\tРабота\n7\tРабота\n8\tGun Dealer\n9\tРабота\n10\tРабота";     
ShowPlayerDialog(playerid,123,DIALOG_STYLE_LIST,"Работа",listitems," Устроиться"," Отмена");    
return 1;
}

Code
if(dialogid == 123)
{
if(response)
{
if(listitem == 1)
{
GettingJob[playerid] = 1;
SendClientMessage(playerid, COLOR_YELLOW, " У тебя новая работа ");
}
if(listitem == 2)
{
GettingJob[playerid] = 2;
SendClientMessage(playerid, COLOR_YELLOW, " У тебя новая работа  ");
}
}
else
{
Можешь написать тут что-то, если хочешь))
}
return 1;
}

И так далее, но это я так привык так делать, так что не судите строго crazy





Сообщение отредактировал Parlament - Среда, 06.10.2010, 23:32
ZmeyДата: Среда, 13.10.2010, 19:25 | Сообщение # 113
Уверенный в себе
Группа: Продвинутые
Сообщений: 185
Награды: 8
Город: Москва
Репутация: 79
Замечания: 0%
Статус:
Помогите как мне создать хорошую регистрацию в диалоговом окне чтобы в файл все писалось нормально для ДМ сервера!! ПОЖАЛУЙСТА ПОМОГИТЕ!!!


(skype) zmey77771
(icq) 24-77-58-69
maximus-vrnДата: Понедельник, 25.10.2010, 17:18 | Сообщение # 114
Уверенный в себе
Группа: Продвинутые
Сообщений: 174
Награды: 2
Город: Воронеж
Репутация: 13
Замечания: 0%
Статус:
Из-за чего может быть такая штука? У меня окно ShowPlayerDialog типа DIALOG_STYLE_LIST и вот, когда прокручиваешь мышкой список до конца и отпускаешь мышь то через несколько секунд опять список переходит на начало, хотя я видел на некоторых серверах не переходит, а остаётся там где и оставили.
SMOUKДата: Понедельник, 25.10.2010, 18:57 | Сообщение # 115
Местный
Группа: Продвинутые
Сообщений: 646
Награды: 13
Город: Рославль
Репутация: 284
Замечания: 100%
Статус:
Quote (maximus-vrn)
Из-за чего может быть такая штука? У меня окно ShowPlayerDialog типа DIALOG_STYLE_LIST и вот, когда прокручиваешь мышкой список до конца и отпускаешь мышь то через несколько секунд опять список переходит на начало, хотя я видел на некоторых серверах не переходит, а остаётся там где и оставили.

Диалог открываеться через пикап ?
Если да то после нового появления пикпа а это где то 3 секунды - диалог сново выскакивает. на других серверах настраивают сам пикап. Или же DestroyPickup ) Wiki юзай )


maximus-vrnДата: Понедельник, 25.10.2010, 21:26 | Сообщение # 116
Уверенный в себе
Группа: Продвинутые
Сообщений: 174
Награды: 2
Город: Воронеж
Репутация: 13
Замечания: 0%
Статус:
DestroyPickup мне удалит мой пикап, а он мне нужен. А как настроить можно?
SMOUKДата: Понедельник, 25.10.2010, 23:05 | Сообщение # 117
Местный
Группа: Продвинутые
Сообщений: 646
Награды: 13
Город: Рославль
Репутация: 284
Замечания: 100%
Статус:
Code
CreatePickup(1242, 2, 1503.3359, 1432.3585, 10.1191, -1);

Попробуй вместо 2(или что там у тебя) поставить вот эту цифру 4. Мы таким образом сменим тип пикапа , 4 - исчезнет и появиться через некоторое время. Но я канешно сомневаюсь в эотм способе но всё можетполучиться.. )
Тем более если учитывать проходимость канала хостинга на катором стоит или будет стоять твой сервер а так же интернет игрока вскрывающего диалог то времени достаточно на пользование самим диалогом. ) На локалке тебе просто кажеться что быстро )

Ах да . Вот тебе переведенный списочек типов. Попробуешь может ище какие нибуть.

Пикап не отображается.

1
Не pickupable, существует все время. (Подходит для полностью сценарий Доставка использованием OnPlayerPickUpPickup)

2
Pickupable, появляется снова через некоторое время.

3
Pickupable, появляется после смерти

4
Исчезает вскоре после того, создается (возможно, для оружия капли?)

5
Исчезает вскоре после того, создается (возможно, для оружия капли?)

8
Pickupable, но не имеет никакого эффекта. Исчезает автоматически.

11
Взрывает несколько секунд после создания (бомбы?)

12
Взрывает несколько секунд после создания.

13
Медленно decends на землю.

14
Pickupable, но только тогда, когда в транспортном средстве. Фолс через предметы, сделанные с CreateObject, и т.д.

15
Pickupable, появляется после смерти

19
Pickupable, но не имеет никакого эффекта (информация иконки?)

22
Pickupable, появляется после смерти.

23
Pickupable, но не исчезает на пикап.


maximus-vrnДата: Понедельник, 25.10.2010, 23:24 | Сообщение # 118
Уверенный в себе
Группа: Продвинутые
Сообщений: 174
Награды: 2
Город: Воронеж
Репутация: 13
Замечания: 0%
Статус:
Поменял на 4, перескакиваний нет, но у меня пикап выдаёт оружие и полочается как только я что-то купил, пикап сразу пропадает и появляется только после того как я выйду и войду в магазин. За перевод спасобо, но PROMT у меня тоже есть :D
SMOUKДата: Понедельник, 25.10.2010, 23:38 | Сообщение # 119
Местный
Группа: Продвинутые
Сообщений: 646
Награды: 13
Город: Рославль
Репутация: 284
Замечания: 100%
Статус:
maximus-vrn
Я кагбе не промт а гугл онлайн юзал :D
Если такая обстановка не устраивает то тогда создавай таймер в SetPlayerUnJaill. По которому будет удалять пикаап и опять ставить его. ) Но там полная марока. Я уже объяснил что нечего страшного в такой фишке что у тебя происходит - нэт :)



maximus-vrnДата: Вторник, 26.10.2010, 00:03 | Сообщение # 120
Уверенный в себе
Группа: Продвинутые
Сообщений: 174
Награды: 2
Город: Воронеж
Репутация: 13
Замечания: 0%
Статус:
SMOUK, А почему в списке описаний ID пикапов отсутствуют некоторые номера? Те которые отсутствуют они действующие, просто о них нет информации на Wiki?
Поиск:





 


 


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