Quantcast
Channel: SA-MP Forums
Viewing all articles
Browse latest Browse all 18226

[Tutorial] Base de GPS em dialog

$
0
0
Olá.

Sou iniciante em programção pawno, Este é o meu terceiro tutorial, mas vim passar pra vocês uma base de GPS em dialog, mas também estarei ensinando como eu fiz essa base.
Aceito Críticas e Sugestões!
Includes Utilizadas: <a_samp> || <zcmd>

1º Passo:
Crie uma definição para a sua DIALOG com uma numeração.
PHP Code:

#define DIALOG_GPS   1
//#define DIALOG_NOMEDADIALOG    NUMERAÇAO_DA_DIALOG 

2º Passo:
Vamos criar uma variável para ser reconhecida quando o player chegar ao local e ser removido o ponto.
PHP Code:

new GPSLocal[MAX_PLAYERS];
//new NOME_DA_VARIAVEL   [MAX_PLAYERS](se refere ao máximo de players encontrados no servidor); 

3º Passo:
Vamos na callback OnPlayerEnterCheckPoint(playerid) e vamos fazer as verificações dentro da variável.
PHP Code:

public OnPlayerEnterCheckpoint(playerid)
{
    if(
GPSLocal[playerid] == 1)
    {
        
GPSLocal[playerid] = 0;
        
DisablePlayerCheckpoint(playerid);
    }
    return 
1;


Explicações da ação acima:
Code:

public OnPlayerEnterCheckpoint(playerid) = Callback de quando o player estiver dentro de uma marcação criada.
{ = Abertura da chave da Callback
if(GPSLocal[playerid] == 1) = verificação, nós verificamos se a variável GPSLocal é criada.
{ = Abertura da chave de verificação
GPSLocal[playerid] = 0; = Estamos zerando qualquer marcação criada por alguma função
DisablePlayerCheckpoint(playerid); = Estamos desabilitando todas as marcações (desabilitando todas que estiverem sido criadas no momento)
} = Fechando chave de abertura da verificação
return 1; = Retornamos a Callback para 1 ou fizemos o retorno verdadeiro da callback
} = Fechando a chave de abertura da Callback

4º Passo:
Vamos criar o comando, no caso para aparecer a DIALOG dos locais. Eu fiz um exemplo para ir até uma casa lotérica.

PHP Code:

CMD:gps(playerid)
{
    
ShowPlayerDialog(playeridDIALOG_GPSDIALOG_STYLE_LIST"GPS""LOTERICA""Selecionar""Fechar");
    return 
1;


Obs.:Única função utilizada foi a ShowPlayerDialog, que é para mostrar uma caixa de Dialog para o player que digitou o comando.
Brevemente, trarei um tutorial explicando mais sobre a função.
Caso queira estudar: ShowPlayerDialog

5º Passo:
Vamos até a callback que é responsável por responder as dialogs, no caso a public OnDialogResponse.
PHP Code:

public OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    if(
dialogid == DIALOG_GPS)
        {
            if(
response)
            {
                if(
listitem == 0)
                {
                    
SetPlayerCheckpoint(playerid,1289.8077,-1654.2590,13.5469,8.0);
                    
SendClientMessage(playerid,-1,"[INFO] - A Lotérica foi marcada no seu mapa!");
                    
GPSLocal[playerid] = 1;
                }
            }
        }
    return 
1;


Explicação da ação acima:
Code:

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) = É Responsável pelo início da função.
{ = Abertura da chave da callback
if(dialogid == DIALOG_GPS) = Está verificando se a dialogid existe, e a ação contra ela será feita.
{ = Abertura da Chave da Verificação
if(response) = Verificação da responsabilidades que possuem as colunas.
{ = Abertura da Chave de Responsabilidade
if(listitem == 0) = Verificação se do item citado nas linhas do comando. No pawno, tudo começa do número 0(zero), O Zero equivale a primeira linha.
{ = Abertura da Verificação dos itens.
SetPlayerCheckPoint(playerid, 1289.8077,-1654.2590,13.5469,8.0); = Criar um checkpoint no mapa do jogo. playerid é o player que digitar o comando. Essas númerações são as coordenadas X,Y,Z,Size(Tamanho)
SendClientMessage(playerid, -1, "[INFO]: Lotérica marcado no Mapa, Vá até o ponto"); = Enviamos uma mensagem ao client. -1 é a cor que você deseja que apareça na mensagem(branco no pawn). Mensagem.
GPSLocal[playerid] = 1; = Damos um valor para a variável GPSLocal, que foi 1 ao clicarmos no Local desejado, após chegarmos, o local será desmarcado.
} = Fecha a verificação dos itens.
} = Fechando a chave de responsabilidade.
} = Fechando a chave de verificação de definição da DIALOG.
return 1; = Estamos finalizando ou dando o retorno final(ou verdadeiro) da função.
} = Fechando chave de função da callback.


Por fim, toda a função será da seguinte forma:

PHP Code:

#include <a_samp>
#include <zcmd>

#define DIALOG_GPS      1

new GPSLocal[MAX_PLAYERS];

CMD:gps(playerid)
{
    
ShowPlayerDialog(playeridDIALOG_GPSDIALOG_STYLE_LIST"GPS""LOTERICA""Selecionar""Fechar");
    return 
1;
}

public 
OnPlayerEnterCheckpoint(playerid)
{
    if(
GPSLocal[playerid] == 1)
    {
        
GPSLocal[playerid] = 0;
        
DisablePlayerCheckpoint(playerid);
    }
    return 
1;
}

public 
OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    if(
dialogid == DIALOG_GPS)
     {
          if(
response)
           {
             if(
listitem == 0)
               {
                 
SetPlayerCheckpoint(playerid,1289.8077,-1654.2590,13.5469,8.0);
                   
SendClientMessage(playerid,-1,"[INFO] - A Lotérica foi marcada no seu mapa!");
                 
GPSLocal[playerid] = 1;
               }
            }
      }
    return 
1;


Obrigado!

Source: Pastebin

Viewing all articles
Browse latest Browse all 18226

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>