Ръчно Запознаване с диалозите за файлове - про пешка - пешка-портал на скриптове
Тази функция е добавен в 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", низ, "Ясно е,", "Затвори");