EasyDialog
#1
EasyDialog

Tegemist on include failiga, millega ei pea kasutama Public OnDialogRespons -i. Muudab natuke mugavamaks ja lihtsamaks kasutamise (toimib nagu zcmd jne).

Autor: Emmet_
Originaal teema: asub siin

Kuidas kasutada:
1. Tõmba alla endale include fail SIIT
2. Paigalda see enda serveri kausta /pawno/include
3. Lisa endale GM-i #include <EasyDialog>

Kuidas kasutada:

Originaalis kasutame me nii:

Code:
// Lisad mingi tegevuse alla
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Teade", "Sisesta enda teade.", "Teata", "Loobu");

// Pead lisama kõik dialogid siia alla
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if (dialogid == 1)
    {
        if (response)
        {
            SendClientMessageToAll(-1, inputtext);
        }
        else SendClientMessage(playerid, -1, "Sa loobusid.");
    }
    return 1;
}

Aga EasyDialog-iga kasutame me nii:
Code:
// Lisad mingi tegevuse alla
ShowDialog(playerid, Show:<Test>, DIALOG_STYLE_INPUT, "Teade", "Sisesta enda teade.", "Teata", "Loobu");

// Selle lisad kuhu soovid (kasvõi include failide alla et GM oleks lühem
Dialog:Test(playerid, response, listitem, inputtext[])
{
    if (response)
    {
        SendClientMessageToAll(-1, inputtext);
    }
    else SendClientMessage(playerid, -1, "Sa loobusid.");
    return 1;
}

Näide:

Code:
// Näiteks teeme käskluse
CMD:proovidialoog(playerid, params[])
{
    // Käsklust kasutades näitame me dialoogi kasutajale
    ShowDialog(playerid, Show:<Proov>, DIALOG_STYLE_INPUT, "Tere tulemast tagasi", "Sisesta enda parool.", "Sisene", "Loobu");
    // ShowDialog - Ehk näitame siis dialoogi
    // playerid - ehk siis soovitud kasutajale
    // Show:Proov - "Show" on mida näitame ja "Proov" on dialoogi id ( DIALOOGI ID-D EI PEA ERALDI DEFINEERIMA!!!! )
        // LIHTSALT LISAD "Show:DialoogiNimi" ja pärast tuleb LIHTSALT "Dialog:DialoogiNimi"
        // EI OLE ERALDI VAJA DEFINEERIDA nagu muidu et #define DialoogiNimi 1
    // DIALOG_STYLE_INPUT - dialoogi stiin nagu ikka (võimalikud stiilid
        /*     DIALOG_STYLE_INPUT
            DIALOG_STYLE_MSGBOX
            DIALOG_STYLE_LIST
            DIALOG_STYLE_PASSWORD
        */
    //    "Tere tulemast tagasi" - dialoogi pealkiri
    //    "Sisesta enda parool." - põhi tekst
    //  "Sisene" - nupp 1 ehk (response)
    //  "Loobu" - nupp 2 ehk (!response)

}

Ja vastame siis dialoogile:
Code:
// Siia tuleb siis dialoogi vastus ehk OnDialogResponse

// Dialog: - ehk anname teada et on dialoogi vastus
// Proov - on Dialoogi Nimi mille sisestasime ennist "Show:" järgi
// (playerid, response, listitem, inputtext[]) - võimalikud kasutus varjandid
Dialog:Proov(playerid, response, listitem, inputtext[])
{
    // Kui vastab (esimene nupp)
    if (response)  
    {
        // Saada teade kõigile sisestatud tekstiga
        SendClientMessageToAll(-1, inputtext);
    }
    // või kui vajutab teist nuppu või Esc nuppu saadab teate kasutajale et loobus
    else SendClientMessage(playerid, -1, "Sa loobusid.");
    return 1;
}

Lõpuks peaks välja nägema siuke:
Code:
CMD:proovidialoog(playerid, params[])
{
    ShowDialog(playerid, Show:<Proov>, DIALOG_STYLE_INPUT, "Tere tulemast tagasi", "Sisesta enda parool.", "Sisene", "Loobu");
}

Code:
Dialog:Proov(playerid, response, listitem, inputtext[])
{
    if (response)
    {
        SendClientMessageToAll(-1, inputtext);
    }
    else SendClientMessage(playerid, -1, "Sa loobusid.");
    return 1;
}

Loodan et saite aru ja on teile kasuks. Siiski minu esimene õpetus Smile

Lisan lõppu siis rea ka kui fail peaks ära kaduma upload.ee keskonnast. See on siis vaja manuaalselt lisada .inc failiks
Code:
/*
    Easy Dialogs by Emmet_

    This Source Code Form is subject to the terms of the Mozilla Public
    License, v. 2.0. If a copy of the MPL was not distributed with this
    file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/

#include <a_samp>

#define Dialog:%0(%1,%2,%3,%4) \
    forward dialog_%0(%1,%2,%3,%4); public dialog_%0(%1,%2,%3,%4)

#define Show:<%0> #dialog_%0

#if !defined isnull
    #define isnull(%1) ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))
#endif

new stock g_DialogShown[MAX_PLAYERS char];
new stock g_CurrentDialog[MAX_PLAYERS][32 char];

stock ShowDialog(playerid, dialog[], style, caption[], info[], button1[], button2[])
{
    if (funcidx(dialog) != -1)
    {
        g_DialogShown{playerid} = 1;
        strpack(g_CurrentDialog[playerid], dialog);
        ShowPlayerDialog(playerid, 0, style, caption, info, button1, button2);
        return 1;
    }
    return 0;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if (g_DialogShown{playerid} == 1)
    {
        new unpacked[32];
        strunpack(unpacked, g_CurrentDialog[playerid]);
        if (funcidx(unpacked) != -1)
        {
            g_DialogShown{playerid} = 0;
            if (isnull(inputtext))
            {
                CallLocalFunction(unpacked, "ddds", playerid, response, listitem, "\1");
                return 1;
            }
            CallLocalFunction(unpacked, "ddds", playerid, response, listitem, inputtext);
            return 1;
        }
    }
    if (isnull(inputtext)) return CallLocalFunction("easyDialog_OnDialogResponse", "iiiis", playerid, dialogid, response, listitem, "\1");
    return CallLocalFunction("easyDialog_OnDialogResponse", "iiiis", playerid, dialogid, response, listitem, inputtext);
}

#if defined _ALS_OnDialogResponse
    #undef OnDialogResponse
#else
    #define _ALS_OnDialogResponse
#endif
#define OnDialogResponse easyDialog_OnDialogResponse
forward easyDialog_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]);
Reply
#2
Tubli oled, et tegid siia õpetuse. Aga kui include sisu on väike, siis võid ikka panna esimesesse postitusesse, kuna on siis parem. Äkki mingiaeg fail kaob upload.ee keskkonnast, siis on jama. (Muidu kasutajad peavad include taga otsima) Hea soovitus oleks kasutada foorumi attachementi ehk manust, kui ei mahu esimesesse postitusesse.
Reply
#3
(18.11 2012, 12:44)Typhome Wrote:  Tubli oled, et tegid siia õpetuse. Aga kui include sisu on väike, siis võid ikka panna esimesesse postitusesse, kuna on siis parem. Äkki mingiaeg fail kaob upload.ee keskkonnast, siis on jama. (Muidu kasutajad peavad include taga otsima) Hea soovitus oleks kasutada foorumi attachementi ehk manust, kui ei mahu esimesesse postitusesse.

Lisasin postituse lõppu terve include faili mis on siis vaja käsitsi ise .inc faili salvestada
Reply
#4
http://forum.sa-mp.com/showthread.php?t=475838 EasyDialogil on juba poolteist aastat uus versioon väljas.
Reply
#5
(07.02 2015, 16:12)kvann Wrote:  http://forum.sa-mp.com/showthread.php?t=475838 EasyDialogil on juba poolteist aastat uus versioon väljas.

Olen sellest teadlik, ise kasutan uut juba. Ja tegin endal ümber uue versiooni juba et ühilduks ka vanaga. Aga pole õpetust viitsinud teha Big Grin
Vaata lisaks!! Minu tehtud õpetused ja funksioonid mida olen teinud ja kokku kogunud!!

SIIT


By Geto244
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)