[Tutorial] Criando um teleport em dialog com ZCMD.
#1

E aн pessoal.

Eu procurei й nгo achei nada relacionado a isso, entгo eu resolvi criar um tutorial, ensinando passo-a-passo de como criar um teleport em dialog usando a include ZCMD, que e praticamente a mais utilizada atualmente.


Introduзгo
• Primeiramente vocк terб que ter a include ZCMD, й уbvio, vocк pode baixa-la clicando aqui.
• Й um simples tutorial, muito simples, mais eu fis com o intuito de ajudar os novatos na бrea.


Iniciando
• Apуs ter baixado a include, coloque-a na pasta "pawno/include".
• Logo apуs abra o pawno, que se encontra na pasta anterior que vocк colocou as includes, clique File e em seguida clique em New, ou se vocк jб tiver o GameMode/FilterScript pronto, basta abrir-lo, clicando em File e logo em seguida em "Open" selecione o seu GameMode/FilterScript e abra-o, й assim faзa o comando.

Topo do GameMode/FilterScript


PHP код:
#include <zcmd> 



Definimos o nosso dialog, que usaremos no teleporte, topo do GameMode/FilterScript.


PHP код:
#define Tutorial 2728 
Explicaзгo
Usado para definir a nossa dialog. Observaзгo: Cuidado para nгo ter nenhum dialog alйm desse definido como "2728".




Definindo a cor, topo do GameMode/FilterScript.

PHP код:
#define COLOR_RED           0xFF0000FF 
Explicaзгo
Definimos a COR no topo, para usar-mos no nosso dialog.




Agora adicione ao seu GameMode/FilterScript.

PHP код:
COMMAND:tutorial(playeridparams[])
{
      
ShowPlayerDialog(playeridTutorialDIALOG_STYLE_LIST"Tutorial - Criando teleport por Dialog""Teleporte 1\nTeleporte 2""Selecionar""Sair");
      return 
1;

Ou se vocк preferir, pode usar dessa forma

PHP код:
CMD:tutorial(playeridparams[])
{
      
ShowPlayerDialog(playeridTutorialDIALOG_STYLE_LIST"{FF0000}Tutorial - Criando teleport por Dialog""Teleporte 1\nTeleporte 2""Ok""Cancelar");
      return 
1;


Explicaзгo


ShowPlayerDialog - Para executar o dialog.
Playerid - Aparecer o dialog somente o ID que digitou o comando.
Tutorial - Nome do nosso dialog, que definimos no topo.
DIALOG_STYLE_LIST - Dialog usado para listas com opзхes.
{FF0000} - Cor que usaremos no titulo do nosso dialog.
Tutorial - Criando teleport por Dialog - Titulo que usaremos no nosso dialog.
Teleporte 1 - Primeira opзгo(teleporte).
\n - Use isso, para pular linhas, ou seja, ir para a prуxima linha.
Teleporte 2 - Segunda opзгo(teleporte).
Ok - Botгo usado para selecionar a opзгo desejada.
Cancelar - Para fechar o dialog, e cancelar.




Agora vб atй a public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])

PHP код:
public OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    if(
dialogid == Tutorial)
    {
        if(
response)
        {
            if(
listitem == 0)
            {
                
SetPlayerInterior(playerid0);
                
SetPlayerPos(playerid,Float:x,Float:y,Float:z);
                
SendClientMessage(playeridCOLOR_RED"[INFO] Vocк teletransportou para o Teleporte nъmero 1.");
                return 
1;
            }
            else if(
listitem == 1)
            {
                
SetPlayerInterior(playerid0);
                
SetPlayerPos(playerid,Float:x,Float:y,Float:z);
                
SendClientMessage(playeridCOLOR_RED"[INFO] Vocк teletransportou para o Teleporte nъmero 2.");
            }
        }
    }
    return 
1;

Explicaзгo

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) - Public onde contem todos os dialogs do GameMode/Filterscripter.

if(dialogid == Tutorial) - Colocamos a "palavra-chave" do nosso dialog, que definimos no topo, e para executar o diaog, ao digitar o comando.


if(listitem == 0)
- Primeira opзгo(Teleporte 1).

else if(listitem == 1) - Segunda opзгo(Teleporte 2).

SetPlayerPos(playerid,Float: x,Float:y,Float:z) - Teletransporta o player para a posiзгo desejada.

Playerid - Teleportar somente o ID que digitou o comando.
Float: x - A coordenada X para posicionar o jogador.
Float:y - A coordenada Y para posicionar o jogador.
Float:z - A coordenada Z para posicionar o jogador.

SetPlayerInterior(playerid, 0); - Interior/Virtual World que a posiзгo se encontra(em casos de teleporte para algum lugar que nгo esteja em interior, essa parte e inъtil e nгo precisa ser utilizada).

SendClientMessage(playerid, COLOR_RED, "[INFO] Vocк teletransportou para o Teste nъmero 1."); - Manda a mensagem, ao jogar que digitou/teleportou para o local.

return 1; - Fechamos a public OnDialogResponse().




Questionario


Pergunta: Como eu posso ver os interiores, ids e cordenadas?
Resposta: Existe um site que disponibiliza todos os interiores, seus IDs e suas posiзхes, clique aqui para acessa-lo.

Pergunta: Como posso fazer um teleporte para um interior?
Resposta: Siga o tutorial, somente mude as posiзхes e o ID para teleportar a algum interior.

Pergunta: Aonde acho cores para colocar em meu dialog?
Resposta: Eu uso em cуdigos HTML. Clique aqui para ver o site, depois que escolher a cor, copie o segundo nъmero que aparecer, copie somente os nъmeros depois do #, apуs copia-los, coloque ele nesse modelo {CуdigoDaCor}, й coloque antes da mensagem do dialog.

Pergunta: Tem como fazer pra mandar uma mensagem para todos que o player foi ao teleporte?
Resposta: Sim, use a funзгo SendClientMessageToAll.

Atenзгo dispenso, comentбrios fъteis e ofensas. Se quiser critнcas, critнque, mais por favor, seja construtivo com sua critнca. Se quiser dar alguma sugestгo de tutoriais, entre outras, faзa uma sugestгo construtiva, por gentileza.


Crйditos
Đeagle - Criaзгo do Tutorial.
Zeex - Criaзгo da include zCMD.
Reply
#2

Quote:
Originally Posted by Đeagle
Посмотреть сообщение
Agora vб atй a public OnPlayerCommandText() й adicione.

PHP код:
COMMAND:tutorial(playeridparams[])
{
      
ShowPlayerDialog(playeridTutorialDIALOG_STYLE_LIST"Tutorial - Criando teleport por Dialog""Teleporte 1\nTeleporte 2""Selecionar""Sair");
      return 
1;

Ou se vocк preferir, pode usar dessa forma

PHP код:
CMD:tutorial(playeridparams[])
{
      
ShowPlayerDialog(playeridTutorialDIALOG_STYLE_LIST"{FF0000}Tutorial - Criando teleport por Dialog""Teleporte 1\nTeleporte 2""Ok""Cancelar");
      return 
1;

ZCMD nгo usa esta callback, correto...? Aliбs, nгo usa nenhuma callback, й como se fosse uma funзгo a ser definida, entгo fica fora de callbacks...

Podia praticar uma identaзгo gostosinha tambйm e.e
pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == Tutorial)
    {
        if(response)
        {
            if(listitem == 0)
            {
                SetPlayerInterior(playerid, 0);
                SetPlayerPos(playerid,Float:x,Float:y,Float:z);
                SendClientMessage(playerid, COLOR_RED, "[INFO] Vocк teletransportou para o Teleporte nъmero 1.");
                return 1;
            }
            else if(listitem == 1)
            {
                SetPlayerInterior(playerid, 0);
                SetPlayerPos(playerid,Float:x,Float:y,Float:z);
                SendClientMessage(playerid, COLOR_RED, "[INFO] Vocк teletransportou para o Teleporte nъmero 2.");
                return 1;
            }
        }
    }
    return 1;
}
Legal o tutorial, me serб ъtil...
Reply
#3

Digo a mesma coisa que o amigo disse acima, ZCMD nгo se usa em callback, pode ser colocado em qualquer canto !
Reply
#4

LoL q crйditos й esses ai kkkkkkkkkkkkkkk
Reply
#5

pawn Код:
public OnDialogResponse() //cade os paramкtros? rs
O certo seria:
pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
pawn Код:
return 0; //final da callback OnDialogResponse vocк ta returnando false? ._.'
O certo seria:
pawn Код:
return true;
//ou
return 1;
Foi boa sua intenзгo, mas tutoriais sobre teleport й o que nгo falta nessa board.
Reply
#6

Otimo tutorial
Reply
#7

bom Tutorial gostei.
Reply
#8

Se for um FilterScript, deverб sim retornar false em OnDialogResponse, caso contrбrio darб conflito com o OnDialogResponse do GameMode.
Reply
#9

Quote:
Originally Posted by Jeffrey_Hatrix Jeffrey_
Посмотреть сообщение
ZCMD nгo usa esta callback, correto...? Aliбs, nгo usa nenhuma callback, й como se fosse uma funзгo a ser definida, entгo fica fora de callbacks...

Podia praticar uma identaзгo gostosinha tambйm e.e
pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == Tutorial)
    {
        if(response)
        {
            if(listitem == 0)
            {
                SetPlayerInterior(playerid, 0);
                SetPlayerPos(playerid,Float:x,Float:y,Float:z);
                SendClientMessage(playerid, COLOR_RED, "[INFO] Vocк teletransportou para o Teleporte nъmero 1.");
                return 1;
            }
            else if(listitem == 1)
            {
                SetPlayerInterior(playerid, 0);
                SetPlayerPos(playerid,Float:x,Float:y,Float:z);
                SendClientMessage(playerid, COLOR_RED, "[INFO] Vocк teletransportou para o Teleporte nъmero 2.");
                return 1;
            }
        }
    }
    return 1;
}

Legal o tutorial, me serб ъtil...
Cada comando do ZCMD й uma callback.
por isto, ele usa callbacks.
(veja mais lendo o suorce do ZCMD).
Reply
#10

Quote:
Originally Posted by DarkScripter
Посмотреть сообщение
Cada comando do ZCMD й uma callback.
por isto, ele usa callbacks.
(veja mais lendo o suorce do ZCMD).
Eu nгo sabia dessa nгo, eu utilizava ele dentro da public OnPlayerCommandText(playerid, cmdtext[]) . Sу fiquei sabendo depois que traduzi, e lн por completo o tуpico em que ele foi postado.
Valeu ae, por avisar.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)