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

 



 
          





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





Последние Файлы 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
G1FДата: Четверг, 13.01.2011, 18:07 | Сообщение # 151
Новенький
Группа: Пользователи
Сообщений: 54
Награды: 0
Город: dsdddddd
Репутация: 0
Замечания: 0%
Статус:
Вот то что сейчас в моде:

if(iscmd(cmd,"/help")){
tmp = strtok(cmdtext,idx);
if(!strlen(tmp)) tmp = "general";
for(new i=0; i<strlen(tmp); i++) if(!((tmp[i]>='0' && tmp[i]<='9')
|| (tmp[i]>='a' && tmp[i]<='z') || (tmp[i]>='A' && tmp[i]<='Z'))) {
Message(playerid,"Запрашуемого раздела не существует",clDarkRed);
return 1;
}
new fname[max_line];
format(fname,max_line,"/help/%s.txt",tmp);
if(!fexist(fname)){
Message(playerid,"Запрашуемого раздела не существует",clDarkRed);
return 1;
}
format(msg,max_line,"[Справка: %s] Использование: /help [раздел]",tmp);
Message(playerid,msg,clYellow);
new File: f = fopen(fname,io_read), buff[max_line];
while(fread(f,buff)) Message(playerid,buff);
fclose(f);
return 1;
}

Хочу єто переделать под диалоговое окно DIALOG_STYLE_LIST!!! Помогите плиз!!!

GSDNДата: Пятница, 14.01.2011, 15:01 | Сообщение # 152
Уверенный в себе
Группа: Пользователи
Сообщений: 266
Награды: 0
Город: Самара
Репутация: 27
Замечания: 60%
Статус:
ау народ помогите кто нибудь :( хочется научится окно делать.... :(


███████████████████████████████████████████████
OPEN-GTO COOL!!!
███████████████████████████████████████████████
DoTstErДата: Вторник, 18.01.2011, 15:21 | Сообщение # 153
Новенький
Группа: Пользователи
Сообщений: 11
Награды: 0
Город: Днепропетровск
Репутация: 0
Замечания: 0%
Статус:
Quote (Borog)
Ykrop86, При наличии public ShowStats(playerid, targetid), вставляем в него: [ pwn КОД паблика ShowStats ]public ShowStats(playerid, targetid) { new string[256]; new playername[MAX_PLAYER_NAME]; GetPlayerName(targetid, playername, sizeof(playername)); new m[4][256]; // Где 4 - количество всех параметров, отображаемых в статистике format(string, 128, "Статистика игрока %s", playername); // Заголовок m[0] = string; format(string, 128, "Уровень: %d", PlayerInfo[playerid][pLevel]);// Количество подобных строк должно соответствовать количеству значений "x" в переменной m[х][256]; m[1] = string; format(string, 128, "Деньги: %d", PlayerInfo[playerid][pCash]); m[2] = string; format(string, 128, "Админ уровень: %d", PlayerInfo[playerid][pAdmin]); m[3] = string; format(string, sizeof(string), "%s \n%s \n%s", m[1], m[2], m[3]); // Количество всех '\n%s' и ', m[х]' должно соответствовать количеству значений "x" в переменной m[х][256]; ShowPlayerDialog(targetid, 1, DIALOG_STYLE_LIST, m[0], string, "Ok", "Cancel"); Где 1 - ид окна return 1; } Ну и конечно же не забудем про public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) [ pwn КОД паблика public OnDialogResponse ]

А если такого паблика не существует ?
Предполагаю что ответ будет : "создать"
Где его создать ?

GSDNДата: Воскресенье, 23.01.2011, 21:37 | Сообщение # 154
Уверенный в себе
Группа: Пользователи
Сообщений: 266
Награды: 0
Город: Самара
Репутация: 27
Замечания: 60%
Статус:
баёбы блин а. wall ............


███████████████████████████████████████████████
OPEN-GTO COOL!!!
███████████████████████████████████████████████
KirjaДата: Четверг, 27.01.2011, 21:17 | Сообщение # 155
Новенький
Группа: Продвинутые
Сообщений: 35
Награды: 1
Город: Tallinn
Репутация: 5
Замечания: 0%
Статус:
Подскажите пожалуйста как сделать 2 диалоговых окна,что бы в первом ввести ИД игрока, а во втором Сколько денег передать.
На примере команды /pay или /transfer
_________________________________________

Уже не надо, сам всё сделал. ;)


Сообщение отредактировал Kirja - Пятница, 28.01.2011, 11:06
Dies_BlackДата: Воскресенье, 30.01.2011, 11:19 | Сообщение # 156
Новенький
Группа: Пользователи
Сообщений: 37
Награды: 0
Город: Internet
Репутация: -8
Замечания: 0%
Статус:
Kirja, не подскажешь как сделал? Тоже хотел такое сделать :)


Кому нужен исходник мода SF:Gang 1.8 стучите в аську 646-619-718 или пишите в ЛС, не дорого :)
npopok64RUSДата: Вторник, 08.03.2011, 09:25 | Сообщение # 157
Новенький
Группа: Пользователи
Сообщений: 14
Награды: 0
Город: San Fiero
Репутация: 0
Замечания: 0%
Статус:
скажите пожалуста как мне зделать вот это но тока в диалоге:
Code
if(PlayerInfo[playerid][pTestRp] == 0)
      {
             TogglePlayerControllable(playerid, 0);
             EmptyMessages(playerid, 100);
             //SetPlayerPos(playerid, 2.8155,28.6501,1199.5938 ); // â ñàìîë¸òå
    //SetPlayerFacingAngle(playerid, 37.2185);
    SetPlayerPos(playerid, 1318.7843,1254.2932,14.2731 );
    SetPlayerFacingAngle(playerid, 4.0);
             SetPlayerCameraPos(playerid, 1322.0588,1261.0223,15.8203 );
    SetPlayerCameraLookAt(playerid, 1318.7843,1254.2932,14.2731 );
    //ApplyAnimation(playerid,"PED","SEAT_down",4.1,0,0,0,1,1);
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid, playerid+1);
    PlayerInfo[playerid][pInt] = 0;
             SendClientMessage(playerid, COLOR_YELLOW2, "Âû äîëæíû ïðîéòè íåáîëüøîé íåáîëüøîé òåñò íà àäåêâàòíîñòü. Ïðàâèëà íà www.rg.mficho.ru");
    SendClientMessage(playerid, COLOR_YELLOW2, "Åñëè âû óâåðåíû â ñåáå - âû íå äîïóñòèòå îøèáîê. Îòâåòüòå íà 10 ïðîñòûõ âîïðîñîâ.");
    SendClientMessage(playerid, COLOR_GREEN, "============ ÂÎÏÐÎÑ 1 ==========");
    SendClientMessage(playerid, COLOR_WHITE, "×òî òàêîå ÎÎÑ. Äàéòå îïðåäåëåíèå.");
    SendClientMessage(playerid, COLOR_WHITE, "1. Out of Character");
    SendClientMessage(playerid, COLOR_WHITE, "2. Out Of Clothes");
    SendClientMessage(playerid, COLOR_WHITE, "3. Out of City");
             testtime[playerid] = 1;
    return 1;
         }



http://games-sait.ucoz.ru
http://games-sait.ucoz.ru
http://games-sait.ucoz.ru
http://games-sait.ucoz.ru
HeKuTДата: Вторник, 08.03.2011, 10:24 | Сообщение # 158
Новенький
Группа: Пользователи
Сообщений: 43
Награды: 0
Город: Liepaja
Репутация: 5
Замечания: 0%
Статус:
Code
D:\Documents and Settings\Admin\Рабочий стол\servak\Server R2\RolePlay.pwn(17616) : error 017: undefined symbol "dialogid"
D:\Documents and Settings\Admin\Рабочий стол\servak\Server R2\RolePlay.pwn(17616) : warning 215: expression has no effect
D:\Documents and Settings\Admin\Рабочий стол\servak\Server R2\RolePlay.pwn(17616) : error 001: expected token: ";", but found "]"
D:\Documents and Settings\Admin\Рабочий стол\servak\Server R2\RolePlay.pwn(17616) : error 029: invalid expression, assumed zero
D:\Documents and Settings\Admin\Рабочий стол\servak\Server R2\RolePlay.pwn(17616) : fatal error 107: too many error messages on one line

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

4 Errors.

Помогите :(


[IMG]http://s42.radikal.ru/i096/1103/c9/1f0531de33bf.jpg[/IMG]
Dies_BlackДата: Суббота, 12.03.2011, 14:01 | Сообщение # 159
Новенький
Группа: Пользователи
Сообщений: 37
Награды: 0
Город: Internet
Репутация: -8
Замечания: 0%
Статус:
HeKuT, неопределённая переменная dialogid


Кому нужен исходник мода SF:Gang 1.8 стучите в аську 646-619-718 или пишите в ЛС, не дорого :)
BannyHopДата: Суббота, 02.04.2011, 17:24 | Сообщение # 160
Освоившийся
Группа: Продвинутые
Сообщений: 128
Награды: 3
Город: Кемерово
Репутация: 138
Замечания: 0%
Статус:
Скажите, какой максимальный размер окна диалога? (dialog box)
Code
if(listitem == 0)//Ïåðâûé ïóíêò
    {
             new string[256];
       new string1[256];
        new string2[256];
        new string3[256];
     new string4[256];
     new string5[256];
     new string6[256];
     new string7[256];
     new string8[256];
     new string9[256];
     new string10[256];
     new string11[256];
     new string12[256];
     format(string,256,"--");
        format(string1,256,"*** ÀÊÊÀÓÍÒ *** /rules /regnick /login /changenick /changepass /level /buylevel /upgrade\n");
                 format(string2,256,"*** ÎÁÙÅÅ *** /pay /charity /time /buy /unrentcar /givekey /switchkey /bmenu /lock1\n");
                 format(string3,256,"** ÎÁÙÅÅ *** /resetupgrades(100k) /betrace /betdm /bets /buygun /bestbuy /bestsale /rob /exitdm\n");
                 format(string4,256,"*** ×ÀÒ *** (/t)xt /pmoff /pmoffall /unpm\n");
                 format(string5,256,"*** ÁÀÍÊ *** /balance /withdraw /bank /wiretransfer /loan\n");
                 format(string6,256,"*** ÍÎÂÎÅ *** /count /countall /iconcolors /fixcar /bounties /lotto /animlist /teles /timeveh\n");
                 format(string7,256,"*** ÍÎÂÎÅ *** /respawn(anee au eaa) Noeee aiy:/NORMAL /BOXING /KUNGFU /KNEEHEAD /GRABKICK /ELBOW\n");
                 format(string8,256,"*** ÍÎÂÎÅ *** /outcar /miscar /rep\n*** Votekick *** /acsinfo /votekick /avote\n");
                 format(string9,256,"*** ÏÎËÈÖÈß *** (/r)adio (/d)epartments (/m)egaphone /duty /free /su\n*** ÏÎËÈÖÈß *** /roz /arest /jail\n");
                 format(string10,256,"*** ÌÅÄÈÊÈ *** (/r)adio (/d)epartments /heal\n*** ÄÐÓÃÎÅ *** /speedo /music /dice /fuel /kill /plnumber\n");
                 format(string11,256,"*** ÏÎÌÎÙÜ *** /help /cellphonehelp /househelp /renthelp /bizhelp /duelhelp /garagehelp\n");
                 format(string12,256,"*** ÏÎÌÎÙÜ *** /prisonhelp /ganghelp /kachhelp /bankhelp /cophelp /trenhelp /kshelp");
     strcat(string,string1);
     strcat(string,string2);
     strcat(string,string3);
     strcat(string,string4);
     strcat(string,string5);
     strcat(string,string6);
     strcat(string,string7);
     strcat(string,string8);
     strcat(string,string9);
     strcat(string,string10);
     strcat(string,string11);
     strcat(string,string12);
     ShowPlayerDialog(playerid, 14, DIALOG_STYLE_MSGBOX, "Êîìàíäû ñåðâåðà", string, "Çàêðûòü", "");
     return 1;
      
    }

Cделал такой диалог, но показывается только 3 строки, и то не полностью. Код кривой, да. Подскажите как правильно сделать.

Dima-kunДата: Суббота, 02.04.2011, 18:22 | Сообщение # 161
Группа: Разработчики
Сообщений: 6269
Награды: 72
Репутация: 3512
Замечания: 0%
Статус:
BannyHop, ну ты вася блин, а не проще сразу стринг выводить? а не запиливать кучу стрингов в один, а потом выводить? тебе массива 256 ячеек не хватает


Мои работы:
[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
BannyHopДата: Воскресенье, 03.04.2011, 08:12 | Сообщение # 162
Освоившийся
Группа: Продвинутые
Сообщений: 128
Награды: 3
Город: Кемерово
Репутация: 138
Замечания: 0%
Статус:
Code
if(dialogid ==13) //smile
  {
   if(response)//Åñëè íàæàë íà Ëåâóþ êíîïêó
   {
    if(listitem == 0)//Ïåðâûé ïóíêò
    {
             new string[13][1024];
        
     format(string[0],512,"========================================\n");
        format(string[1],512,"*** ÀÊÊÀÓÍÒ *** /rules /regnick /login /changenick /changepass /level /buylevel /upgrade\n");
                 format(string[2],512,"*** ÎÁÙÅÅ *** /pay /charity /time /buy /unrentcar /givekey /switchkey /bmenu /lock1\n");
                 format(string[3],512,"** ÎÁÙÅÅ *** /resetupgrades(100k) /betrace /betdm /bets /buygun /bestbuy /bestsale /rob /exitdm\n");
                 format(string[4],512,"*** ×ÀÒ *** (/t)xt /pmoff /pmoffall /unpm\n");
                 format(string[5],512,"*** ÁÀÍÊ *** /balance /withdraw /bank /wiretransfer /loan\n");
                 format(string[6],512,"*** ÍÎÂÎÅ *** /count /countall /iconcolors /fixcar /bounties /lotto /animlist /teles /timeveh\n");
                 format(string[7],512,"*** ÍÎÂÎÅ *** /respawn(anee au eaa) Noeee aiy:/NORMAL /BOXING /KUNGFU /KNEEHEAD /GRABKICK /ELBOW\n");
                 format(string[8],512,"*** ÍÎÂÎÅ *** /outcar /miscar /rep\n*** Votekick *** /acsinfo /votekick /avote\n");
                 format(string[9],512,"*** ÏÎËÈÖÈß *** (/r)adio (/d)epartments (/m)egaphone /duty /free /su\n*** ÏÎËÈÖÈß *** /roz /arest /jail\n");
                 format(string[10],512,"*** ÌÅÄÈÊÈ *** (/r)adio (/d)epartments /heal\n*** ÄÐÓÃÎÅ *** /speedo /music /dice /fuel /kill /plnumber\n");
                 format(string[11],512,"*** ÏÎÌÎÙÜ *** /help /cellphonehelp /househelp /renthelp /bizhelp /duelhelp /garagehelp\n");
                 format(string[12],512,"*** ÏÎÌÎÙÜ *** /prisonhelp /ganghelp /kachhelp /bankhelp /cophelp /trenhelp /kshelp");
     strcat(string[0],string[1]);
     strcat(string[0],string[2]);
     strcat(string[0],string[3]);
     strcat(string[0],string[4]);
     strcat(string[0],string[5]);
     strcat(string[0],string[6]);
     strcat(string[0],string[7]);
     strcat(string[0],string[8]);
     strcat(string[0],string[9]);
     strcat(string[0],string[10]);
     strcat(string[0],string[11]);
     strcat(string[0],string[12]);
     ShowPlayerDialog(playerid, 14, DIALOG_STYLE_MSGBOX, "Êîìàíäû ñåðâåðà", string[0], "Çàêðûòü", "");
     return 1;
      
    }

Вообще не отображается диалог

Добавлено (03.04.2011, 08:12)
---------------------------------------------
Ребят, напишите пожалуйста пример диалога( msg_box), где будет больше 3-5 строк. Любые вообще строки.
Но не так: "тутвставьтекст", а нормально сделайте и сами проверьте. Я уже день мозг *** с этой херней.

Dima-kunДата: Воскресенье, 03.04.2011, 13:15 | Сообщение # 163
Группа: Разработчики
Сообщений: 6269
Награды: 72
Репутация: 3512
Замечания: 0%
Статус:
BannyHop, ппц
Code
format(string,sizeof(string),"текст1");
SendClientMessage(playerid,color,string);
format(string,sizeof(string),"текст2");
SendClientMessage(playerid,color,string);
format(string,sizeof(string),"текст3");
SendClientMessage(playerid,color,string);

не?


Мои работы:
[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
BannyHopДата: Воскресенье, 03.04.2011, 13:47 | Сообщение # 164
Освоившийся
Группа: Продвинутые
Сообщений: 128
Награды: 3
Город: Кемерово
Репутация: 138
Замечания: 0%
Статус:
Мне нужно показать диалог -_-
Al_CaponeДата: Среда, 13.04.2011, 09:54 | Сообщение # 165
Новенький
Группа: Пользователи
Сообщений: 52
Награды: 0
Город: Степное
Репутация: 0
Замечания: 0%
Статус:
Помогите сделать /help. Для фракций и работ. Например для LSPD "*** Фракция *** LSPD /su (дать розыск), /wanted, /cuff (надеть наручники)");
Поиск:





 


 


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