[Include] Task-based (async) dialog handling with PawnPlus

Started by SA:MP, May 10, 2023, 02:54 PM

Previous topic - Next topic

0 Members and 4 Guests are viewing this topic.

Nicolasnam

Портал для современных мужчин https://zlochinec.kyiv.ua Практические советы по уходу, здоровью и креативным проектам своими руками.

Nicolasnam

Портал для современных мужчин https://zlochinec.kyiv.ua Практические советы по уходу, здоровью и креативным проектам своими руками.

Nicolasnam

Портал для современных мужчин https://zlochinec.kyiv.ua Практические советы по уходу, здоровью и креативным проектам своими руками.

Patrickbon

Онлайн-журнал о стройке https://oupen-mir.ru ремонте, дизайне  и обустройстве дома или квартиры

Patrickbon

Онлайн-журнал о стройке https://oupen-mir.ru ремонте, дизайне  и обустройстве дома или квартиры

Patrickbon

Онлайн-журнал о стройке https://oupen-mir.ru ремонте, дизайне  и обустройстве дома или квартиры

MelvinBuice

Журнал о строительстве https://jurnalshtori.ru и ремонте, как строить, ремонтировать, выбирать товары, решать проблемы и работать с прорабами

MelvinBuice

Журнал о строительстве https://jurnalshtori.ru и ремонте, как строить, ремонтировать, выбирать товары, решать проблемы и работать с прорабами

MelvinBuice

Журнал о строительстве https://jurnalshtori.ru и ремонте, как строить, ремонтировать, выбирать товары, решать проблемы и работать с прорабами

Robertrix

Официальный сайт Мостбет https://obukhov-sport.ru бонусы за вход, промокоды и фриспины в онлайн казино Mostbet. Надежная букмекерская компания и онлайн казино.

Robertrix

Официальный сайт Мостбет https://obukhov-sport.ru бонусы за вход, промокоды и фриспины в онлайн казино Mostbet. Надежная букмекерская компания и онлайн казино.

Robertrix

Официальный сайт Мостбет https://cryptofarm-expo.ru бонусы за вход, промокоды и фриспины в онлайн казино Mostbet. Надежная букмекерская компания и онлайн казино.

SA:MP

[Include] Task-based (async) dialog handling with PawnPlus

samp-async-dialogs







Async dialog handling with PawnPlus tasks.



Installation



Simply install to your project:




Code:

sampctl package install AGraber/samp-async-dialogs

Include in your code and begin using the library:




Code:

#include <async-dialogs>

It is recommended that you set a PawnPlus version explicitely on your pawn.json (preferibly the latest) to avoid always downloading the latest one.



If you don't use sampctl, just download the async-dialogs.inc include and drop it to your includes/ folder, and then download the PawnPlus plugin and include from here.



While you're on it and if you don't use PawnPlus yet, you should check it out!



Usage



This include provides one single function




Code:

AwaitAsyncDialog(playerid, dialog_response[e_DIALOG_RESPONSE_INFO], style, const caption[], const info[], const button1[], const button2[])

This will show the dialog and await for the response, which will pause the current script's execution and return the yielded value to the last public function (or 0 if it wasn't set). When it's responded to, the response details will be inside the dialog_response[e_DIALOG_RESPONSE_INFO] array. If another dialog gets shown while awaiting, the Task will be discarded with any following code that was to be resumed.



Example command:




Code:

CMD:asyncdialog(playerid, params[])
{
    task_yield(1);

    new dialog_response[e_DIALOG_RESPONSE_INFO];
    AwaitAsyncDialog(playerid, dialog_response, DIALOG_STYLE_LIST, "Example dialog", "This is listitem 0\nAnd this is one\nShow example nested dialog", "ok", "no");

    if(dialog_response[E_DIALOG_RESPONSE_Response])
    {
        if(dialog_response[E_DIALOG_RESPONSE_Listitem] == 2)
        {
            new other_dialog_response[e_DIALOG_RESPONSE_INFO];
            AwaitAsyncDialog(playerid, other_dialog_response, DIALOG_STYLE_MSGBOX, "Example nested dialog", "You will recieve a message\nwhichever your response is", "OK", "Yes");

            SendClientMessage(playerid, COLOR_WHITE, "You responded something to the example dialog");
        }
        else
        {
            SendClientMessageEx(playerid, COLOR_WHITE, "Recieved: listitem = %d | inputtext = %s", dialog_response[E_DIALOG_RESPONSE_Listitem], dialog_response[E_DIALOG_RESPONSE_InputText]);
        }
    }
    else
    {
        SendClientMessage(playerid, COLOR_WHITE, "Bye!");
    }
}

Thanks

  • IllidanS4 for PawnPlus, which allows this and even more awesome stuff

  • TommyB for helping me test it out on a real environment


Source: [Include] Task-based (async) dialog handling with PawnPlus