Ръчно Запознаване с диалозите за файлове - про пешка - пешка-портал на скриптове


Тази функция е добавен в SA-MP 0.3a и няма да работи в по-ранни версии!

Описание:
Тя показва определен диалоговия играч.
Опции:

(Playerid,,,<Название>,<Текст>,<Первая кнопка>,<Вторая кнопка>)


playerid
Player ID, който ще бъде показан диалог.



Уникален идентификационен номер на диалог.



диалоговия прозорец Style.


<Название>
Заглавието на прозореца.


<Текст>
Текстът на диалога.


<Первая кнопка>
Името на първите (ляво) бутоните за диалог.


<Вторая кнопка>
Името на бутона втори (вдясно).

Върнете стойности:
Тази функция не се връща конкретна стойност.


0
DIALOG_STYLE_MSGBOX
Обичайната диалога с 2 копчета


1
DIALOG_STYLE_INPUT
Диалог с полето за въвеждане на


2
DIALOG_STYLE_LIST
Списък на няколко елемента


3
DIALOG_STYLE_PASSWORD
Позволява на играчите да въведете парола, без да разкрива неговата

функция:
Наречен ShowPlayerDialog функция на диалоговия прозорец, структурата на функция е, както следва:

ShowPlayerDialog (playerid,,,<Название>,<Текст>,<Первая кнопка>,<Вторая кнопка>);

опростяване:
Обикновено, за да не запомните цифрите и не пишете дълги диалози име стил, аз ги замени като макроси:


#define СПИСЪК DIALOG_STYLE_LIST

#define ПАРОЛА DIALOG_STYLE_PASSWORD

#define MsgBox DIALOG_STYLE_MSGBOX

#define INPUT DIALOG_STYLE_INPUT
Или можете да използвате диалогов прозорец стил

За да напишете основния текст на диалоговия прозорец, можете да използвате таблицата по-долу:


\ Н
Нов ред


\ R
за връщане


\ о
вертикална таблични


"
двойни кавички

// пример за DIALOG_STYLE_MSGBOX
ShowPlayerDialog (playerid, 1, DIALOG_STYLE_MSGBOX "Известие", "Вие сте влезли в сървъра", "Затвори", "");

// пример за DIALOG_STYLE_LIST
ShowPlayerDialog (playerid, 1, DIALOG_STYLE_LIST: "Моят диалог", "Ред 1 \ R \ N 2 низ \ R \ N 3 низ ...", "Вариант 1", "Вариант 2");

Отговорът на диалога:
Ние сме направили диалогов меню се състои от 9 точки. И ние трябва да сме сигурни, че когато кликнете върху първата точка, имаме различен диалог с друга информация. За това ние ще използваме тук следния код:


случай :
ако (отговор)
ако (Редовете == 0) // Първата точка
>
иначе, ако (Редовете == 1) // Втората точка
>
иначе, ако (Редовете == 2) // Трета позиция
>
иначе, ако (Редовете == 3) // Четвъртата точка
>
иначе, ако (Редовете == 4) // Петата точка
>
иначе, ако (Редовете == 5) // Шестият точка
>
иначе, ако (Редовете == 6) // Седми параграф
>
иначе, ако (Редовете == 7) // осми параграф
>
иначе, ако (Редовете == 8) // деветият параграф
>
>
>

условностите:
Тук вземе един дизайн


ако (отговор) // Състояние: ако натисна първия бутон
>
останало // Състояние: ако натисна втория бутон
>

Пример диалог с използването на конвенционална конструкция

Създаване на екип с помощта ZCMD (черупка)


CMD: тест (playerid, Params [])
ShowPlayerDialog (playerid, 1, DIALOG_STYLE_MSGBOX "Известие", "Избор", "първи", "втори");
>


ако (strcmp ( "/ тест", cmdtext, вярно, 10) == 0)
ShowPlayerDialog (playerid, 1, DIALOG_STYLE_MSGBOX "Известие", "Избор", "първи", "втори");
>


И ние добавяме обществен отзвук OnDialogResponse в нашия диалог


СЛУЧАЙ 1:
ако (отговор) // Състояние: ако натисна първия бутон
SendClientMessage (playerid, 0xFFFFFFAA: "Ти натиснат първия бутон");
>
останало // Състояние: ако натисна втория бутон
SendClientMessage (playerid, 0xFFFFFFAA: "Ти натисна втория бутон");
>
>


Kreativizatsiya:
Вие сте решили да се създаде диалог, и то е сяра и скучен?
Ние можем да рисувам нашия диалог във всеки цвят формат RGB.
например:

ShowPlayerDialog (playerid, 1, DIALOG_STYLE_MSGBOX "Известие", "Избор", "първи", "втори");
Цветът ние сме затворени в скоби ""
FFFFFF - тя е бяла
3DB6F2 - светло синьо
Мисля, че цветовете няма да влязат много усилия да се намери. За да направите това, има много търсачките.


По-добре е да се използва ключ за да преминете през диалози.

Какъв е ключът за оператор?
изявление ключ - е изборът на оператора. Полезно е преди всичко, защото тя може да замести много условия, ако, който проверява стойността на една променлива.
Пример за строителство с това твърдение:


превключвател (причина)
При 0: // Първата точка
// Тук имате нещо, което ще
>
СЛУЧАЙ 1: // Втората точка
// Тук имате нещо, което ще
>
Случай 2: // трета точка
// Тук имате нещо, което ще
>
>

Прави впечатление, че в официалната документация на езика, на който е написано: "В пешка, превключвател е структуриран" ако "", което означава, че дизайнът ключ - е съвкупност от структурирани if'ov, от това следва, че ключът не може да работи по-бързо, ако. Но това не винаги е така.


Примери от ZiGGi


превключвател (VAR)
случай 40,80,150,160,230,420: връщане 1;
>

ако (Var == 40 || Var == 80 || Var == 150 || Var == 160 || Var == 230 || Var == 420) връщане 1;
Следващият строителството:


превключвател (VAR)
случай 40..80,150..160,230..420: връщане 1;
>

ако (Var> = 40 Var <= 80 || var>= 150 Var <= 160 || var>= 230 Var <= 420 ) return 1;
Следващият строителството:

превключвател (VAR)
При 40: 1 връщане;
>
е същото като

ако (Var == 40) се върне 1;
Следващият строителството:

превключвател (VAR)
случай 40..50: връщане 1;
>
по-бързо от

ако (Var> = 40 Var <= 50 ) return 1;
Както можете да видите - ключ / случай бавно (много), ако само при големи интервали от стойности.

Кого искате да ви кажа малко за това как е възможно в диалог да се използва много по-голям брой символи.

Този метод е подходящ, когато са налице някои променливи, които трябва да бъдат въведени в текста.


нов низ [брой знаци];
формат (низ, sizeof (низ), "1 линия");
формат (низ, sizeof (низ), "\ n2 низ", низ);
формат (низ, sizeof (низ), "\ n3 низ", низ);
формат (низ, sizeof (низ), "\ n4 низ", низ);
формат (низ, sizeof (низ), "\ n5stroka", низ);
ShowPlayerDialog (playerid, NOMER_DIALOGA, STIL_DIALOGOVOGO_OKNA, "TITLE", низ ", KNOPKA1" "KNOPKA2");


Линия - тази на пространството за съхранение знака (букви и / или символи). Линии трябва да се поставят в масив, така че всяка клетка може да съдържа букви, трябва да се уточни допълнително клетката за идентификатор на ред - "0".


нов низ [128];
формат (низ, sizeof (низ), "Твоето име е:% S", pInfo [playerid] [pName]);
формат (низ, sizeof (низ), "\ nIgrovoy ниво :.", низ, pInfo [playerid] [pLevel]);
формат (низ, sizeof (низ), "\ nData регистрация :.", низ, pInfo [playerid] [pDataReg]);
формат (низ, sizeof (низ), "\ nKolichestvo Kills: и смърт: ..", низ, pInfo [playerid] [pKills], pInfo [playerid] [pDeaths]);
ShowPlayerDialog (playerid, 228, DIALOG_STYLE_MSGBOX, "Статистика": низ, "Ясно е,", "");


Има и друг метод, който е повече или по-малко известни за мен - това е постоянно променлива. Този пример е често срещана в RLS / SRL режими. Аз наистина не харесва тази metod.Prichiny не е много четлив за хората, за разлика от първия пример.


статичен CONST _n [5] [] =
"Една линия \ п",
"2 низ \ Н",
"3 линия \ п",
"4 низ \ Н",
"5 низ"
>
формат (низ, sizeof (низ), "% S% S% S% S% S% S", _n [0], _ п [1], _ п [2], _ п [3], _ п [5]);
ShowPlayerDialog (playerid, NOMER_DIALOGA, STIL_DIALOGOVOGO_OKNA, "TITLE", низ ", KNOPKA1" "KNOPKA2");


статичен CONST _n [11] [] =
<
"Lorem Ipsum - е текстов-риба, често се използват в пресата и \ Н",
"Уеб дизайн. Lorem Ipsum е стандарт за риба \ Н",
"Текстове в Латинска от началото на XVI век. По това време на \ N",
"Без име принтер създаде голяма колекция от размери и \ Н",
"Font форми с помощта на Lorem Ipsum за печатни проби. \ N"
"Lorem Ipsum е оцелял не само без значителни промени \ н"
"Пет века, но е навлязъл и в електронен дизайн. Тя \ Н"
"Популяризирана време беше списъците на публикуване \ Н"
"Letraset с Lorem Ipsum пасажи от 60-те години, а отскоро \ Н"
"Времето, електронен софтуер за печатни издания като Aldus PageMaker, в \ Н"
"Шаблони, които използват Lorem Ipsum."
>
формат (низ, sizeof (низ), "% S% S% S% S% S% S", _n [0], _ п [1], _ п [2], _ п [3], _ п [5], _ п [6], _ п [7], _ п [8], _ п [9], _ п [10]);
ShowPlayerDialog (playerid, 1337, DIALOG_STYLE_MSGBOX "Lorem Ipsum", низ, "Ясно е,", "Затвори");