Създаване на прост диалог

Създаване на прост диалог

Диалозите са три вида:
  • 0 - DIALOG_STYLE_MSGBOX - редовен диалог с 2 бутона,
  • 1 - DIALOG_STYLE_INPUT - диалогов прозорец с поле за въвеждане на данни,
  • 2 - DIALOG_STYLE_LIST - списък на няколко елемента.
  • 3 - DIALOG_STYLE_PASSWORD - диалог с паролата на полето.
Наречен диалоговия ShowPlayerDialog функция. функция структура е както следва:

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

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

#define DSL DIALOG_STYLE_LIST
#define DSI DIALOG_STYLE_INPUT
# определят DSM DIALOG_STYLE_MSGBOX
# определят DSP DIALOG_STYLE_PASSWORD

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

\ B backspase
\ F фураж Форма
\ N нов ред
\ R връщане
\ Раздела T
\ V вертикален раздела
\ 'Single цитат
"Двойни кавички
\? въпросителен знак

Така че, давай към практиката или на анализа на първия стил: DIALOG_STYLE_MSGBOX. Помислете за общ пример: Ние въведете командата и се отвори диалогов прозорец с молба да потвърдите команда. За да започнете, ще напише прост скрипт команди в avtovyzyvaemuyu функция OnPlayerCommandText

ако (strcmp ( "/ тест", cmdtext, вярно, 10) == 0)
върне 1;
>

След това използвайте функцията ShowPlayerDialog ние наричаме този диалогов прозорец. Тъй като ние ще предизвика менюто с командата и напишете функцията, по-долу вътре в нея.

1 ShowPlayerDialog (playerid, 0, на DSM, "Доказателство", "Наистина ли искате да изпълните", "Да", "Не");
  • Брой 0 - е идентификатор (ID) на диалог, всеки диалог, неговата ID.
  • След написването на името на диалоговия стил ID. но тя се заменя с постоянна, така е писано DSM (DIALOG_STYLE_MSGBOX).
  • Следвайки стила на писане на името на диалог.
  • На следващо място, пише в текста на диалога и името на първия и втория ключовете.
Като цяло, кодът ще бъде, както следва:

ако (strcmp ( "/ тест", cmdtext, вярно, 10) == 0)
ShowPlayerDialog (playerid, 0, на DSM, "Доказателство", "Наистина ли искате да изпълните", "Да", "Не");
върне 1;
>

И това ще изглежда като този диалогов прозорец:

Но това няма да работи на диалоговия прозорец, ако не се напише функция за него. Да кажем, че нашият екип ще даде чата цялата информация за играча, т.е. когато натиснете "Да", всичко това ще се случи, но когато кликнете върху бутона "Не", ние ще издаде съобщение в червено, че командата не е изпълнена.

Напиши диалоговия прозорец функция ще avtovyzyvaemoy OnDialogResponse функция. Първо, във функцията ще напишем условно, че ще провери, че това е бил причинен от диалоговия прозорец. условния код е както следва:

ако (dialogid == 0) // Състояние: ако наречен диалог с ID = 0
>

проверки Състояние: дали се дължи на диалоговия прозорец ID 0. на Вътре в този условен
добави още едно условие:

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

проверки състояние, първия бутон, когато се натисне втория бутон, след това кода, след като друг е бил натиснат. Вътре в този условен пишем следния код, за да първия бутон.

ако (отговор)
нов низ [128]; // променлива към основния текст на диалог
нов plname [MAX_PLAYER_NAME]; // променлива с име Player
нови пари; // променлива за съхраняване на брой кеш играч
Новият Float: здраве, Float: броня; // променлива за съхраняване на редица здравни и броня Player
GetPlayerName (playerid, plname, MAX_PLAYER_NAME); // Напишете името на играча в променлива plname
пари = GetPlayerMoney (playerid); // Напишете пари играч в променливата парите и т.н.
GetPlayerHealth (playerid, здравеопазване);
GetPlayerArmour (playerid, броня);
формат (низ, sizeof (низ), "Player: \ н Здраве $ ::% .2f \ н Armor:% .2f% ите (ID:.) пари ..."
plname, playerid, пари, здраве, броня);
ShowPlayerDialog (playerid, 1, на DSM, "Информация за плейъра": низ, "OK", "");
> още<>

На първо място, ние създаваме всички променливи, а след това се вземат данните и веднага ги пишете само с променливи. Обърнете внимание на функцията GetPlayerMoney. в скоби, че има само един аргумент (playerid), за разлика от другите, и го връща размера на парите, един играч. Ето защо, ние присвоите променлива пари, тази функция, която връща стойност, която е и ще бъде стойността на тази променлива.

Друга забележка% .2f, можех просто използвайте% е. Точка и цифра показва колко числа след десетичната точка трябва да бъдат в десетично число. След това, ние форматирате съобщението и след това се обадете на новия ID с нов диалогов прозорец. Моля, имайте предвид, че името на другите бутони не е уточнено, в този случай, бутонът ще просто не се появи в диалоговия прозорец. И вместо основния текст, заместваме променливата низ, който вече имате готов форматирано съобщение.

Диалогов прозорец ще се появи втори, както следва:

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

1 SendClientMessage (playerid, COLOR_RED "Отмяна");