[Tutorial] How to make a teleport menu in dialog
#1

Hello this is my tutorial on how to make a simple (adjustable) teleport menu in dialog. Let's begin.

Download ZCMD and place in your pawno > includes folder. Then add this at the top of your script:
pawn Код:
#include <zcmd>
Under that include we'll define the dialogs ID so we don't forget it, something memorable, we'll go for TPMENU.

pawn Код:
#include <zcmd>

#define TPMENU 1
// Change '1' to whatever dialog ID you want it to be.
Let's start creating the command, we'll begin by scripting the following:

pawn Код:
CMD:teleport(playerid, params[]) // When we type /teleport
{  
    return 1;
}
Having 'return 1;' is very important, it makes sure the command 'exists' so once typed it doesn't give an UNKNOWN COMMAND message to the player.

Now we want it to bring up a dialog list of all the places we want to teleport to, for this we'll use the function 'ShowPlayerDialog'.

pawn Код:
CMD:teleport(playerid, params[])
{
    ShowPlayerDialog(playerid, TPMENU, DIALOG_STYLE_LIST, "Teleport Menu", "Police Department\nGym\nGrove Street\nGlen Park\nLas Venturas\nSan Fierro", "Go", "Exit");
    return 1;
}
What does this mean then? TPMENU is our dialogs ID which we defined earlier, duh! DIALOG_STYLE_LIST is the type of dialog which pops up, in our case a list. "Teleport Menu" is the title of the dialog which shows at the very top of the dialog. "Police Department\nGym\nGrove Street... ETC" is the actual list, '\n' means a new line. "Go" is the left button and finally "Exit" is the right button.

This may help: ShowPlayerDialog(player, dialogid, dialogtype, title, textbody, leftbutton, rightbutton);

Now once we've made it pop up the dialog, we want it to teleport them to the locations we want. Now CNTRL F and type 'OnDialogResponse' then press enter.

pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    return 0;
}
Now we want to say, if they clicked 'Police Department' on dialog TPMENU, then teleport them. So we'll script that now.

pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == TPMENU)
    {
       
    }
    return 0;
}
Now we want to say, if they clicked the button 'Go' or double clicked a place on the list then teleport them.

pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == TPMENU)
    {
        if(response) // Clicked 'Go'
        {
            switch(listitem)
            {

            }
        }
    }
    return 0;
}
'switch(listitem)' switches between the places on the list, this basically means we're scripting about a list menu.

Now we will add the cases, we always begin with 0 NOT 1.

pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == TPMENU)
    {
        if(response) // Clicked 'Go'
        {
            switch(listitem)
            {
                case 0: // PD
                case 1: // Gym
                case 2: // Grove
                case 3: // Glen Park
                case 4: // LV
                case 5: // SF
            }
        }
    }
    return 0;
}
Now we can add the actual coordinates of where we want them to teleport to, we add that right after each case.

pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == TPMENU)
    {
        if(response) // Clicked 'Go'
        {
            switch(listitem)
            {
                case 0: SetPlayerPos(playerid,1530,-1674,14); // PD
                case 1: SetPlayerPos(playerid,2228,-1741, 14); // Gym
                case 2: SetPlayerPos(playerid,2485,1666,14); // Grove
                case 3: SetPlayerPos(playerid,1973,-1195,26); // Glen Park
                case 4: SetPlayerPos(playerid,2067,1320,11); // LV
                case 5: SetPlayerPos(playerid,-2009,164,28); // SF
            }
        }
    }
    return 0;
}
So there, thats it.

I hope I helped and I give permission if you want to copy and use this because either way, I did help you. But rather than copying it I do advise reading through it to learn it yourself.
Reply
#2

Nice i am sure this will help the newbies
Reply
#3

Well I think this would be little better for a "All" world server.
pawn Код:
#include <zcmd>
#include <a_samp>
#define TPMENU 1
#define TPLS 2
#define TPLV 3
#define TPSF 4
CMD:teleport(playerid, params[]) // When we type /teleport
{
    ShowPlayerDialog(playerid, TPMENU, DIALOG_STYLE_LIST, "Teleport Menu", "Los Santos\nLas Venturas\nSan Fierro", "Go", "Exit");
    return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == TPMENU)
    {
        if(response) // Clicked 'Go'
        {
            switch(listitem)
            {
                case 0: ShowPlayerDialog(playerid, TPLS, DIALOG_STYLE_LIST, "Teleport Menu", "Police Department\nGym\nGrove Street\nGlen Park", "Go", "Exit");
                case 1: ShowPlayerDialog(playerid, TPLV, DIALOG_STYLE_LIST, "Teleport Menu", "Police Department\nGym\nGrove Street\nGlen Park", "Go", "Exit");
                case 2: ShowPlayerDialog(playerid, TPSF, DIALOG_STYLE_LIST, "Teleport Menu", "Police Department\nGym\nGrove Street\nGlen Park", "Go", "Exit");
            }
        }
    }
    return 0;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == TPLS)
    {
        if(response) // Clicked 'Go'
        {
            switch(listitem)
            {
                case 0: SetPlayerPos Shit here
                case 1: SetPlayerPos Shit here
                case 2: SetPlayerPos Shit here
                case 3: SetPlayerPos Shit here
            }
        }
    }
    return 0;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == TPLV)
    {
        if(response) // Clicked 'Go'
        {
            switch(listitem)
            {
                case 0: SetPlayerPos Shit here
                case 1: SetPlayerPos Shit here
                case 2: SetPlayerPos Shit here
                case 3: SetPlayerPos Shit here
            }
        }
    }
    return 0;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == TPSF)
    {
        if(response) // Clicked 'Go'
        {
            switch(listitem)
            {
                case 0: SetPlayerPos Shit here
                case 1: SetPlayerPos Shit here
                case 2: SetPlayerPos Shit here
                case 3: SetPlayerPos Shit here
            }
        }
    }
    return 0;
}
This aint working becuse i havent set SetPlayerPos I just made this fast for a example
Anyway Good Job. Keep it up.
Reply
#4

This is a tutorial on the basics of how to make a teleport menu and you just gave them all a code to copy and paste so they don't learn..
Reply
#5

Quote:
Originally Posted by jackx3rx
Посмотреть сообщение
This is a tutorial on the basics of how to make a teleport menu and you just gave them all a code to copy and paste so they don't learn..
Yeah but i said a "Example"...
Reply
#6

Nice
Reply
#7

Nice xd
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)