SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese > Lançamentos/Releases

Reply
 
Thread Tools Display Modes
Old 20/08/2017, 05:17 PM   #1
fxckshzt
Huge Clucker
 
Join Date: Jul 2017
Location: 127.0.0.1
Posts: 272
Reputation: 11
Default Base de GPS em dialog

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:
Quote:
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:
Quote:
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;

@Edit:

Caso queira o comando "/desligargps":
PHP Code:
CMD:desligargps(playerid)
{
    if(
GPSLocal[playerid] == 1)
    {
        
GPSLocal[playerid] = 0;
        
DisablePlayerCheckpoint(playerid);
        
SendClientMessage(playerid, -1"{00BFFF}[SERVER]{FFFFFF}: GPS Desligado!");
     }
     else
     {
         
SendClientMessage(playerid, -1"{FF0000}ERRO: Você não está com o GPS ligado!");
     }
    return 
1;

Ter a opção de desligar GPS na Dialog:

PHP Code:
public OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    if(
dialogid == DIALOG_GPS)
     {
          if(
response)
        {
            if(
listitem == 0)
            {
                if(
GPSLocal[playerid] == 1)
                {
                    
GPSLocal[playerid] = 0;
                    
DisablePlayerCheckpoint(playerid);
                    
SendClientMessage(playerid, -1"{00BFFF}[SERVER]{FFFFFF}: GPS Desligado!");
                }
                else
                {
                    
SendClientMessage(playerid, -1"{FF0000}ERRO: Você não está com o GPS ligado!");
                }
            }
             if(
listitem == 1)
               {
                 
SetPlayerCheckpoint(playerid1289.8077, -1654.259013.54698.0);
                   
SendClientMessage(playerid,-1,"[INFO] - A Lotérica foi marcada no seu mapa!");
                 
GPSLocal[playerid] = 1;
               }
           }
       }
    return 
1;

Obrigado!

Source: Pastebin
__________________
Paz & Amor

Last edited by fxckshzt; 14/09/2017 at 11:26 PM.
fxckshzt is offline   Reply With Quote
Old 20/08/2017, 06:05 PM   #2
GuilhermeNunes
Gangsta
 
Join Date: Feb 2017
Posts: 586
Reputation: 8
Default Re: Base de GPS em dialog

Boa mano vejo que você esta aprendendo muito rs daqui uns dias nem vai precisar da minha ajuda queria dar rep mas ja dei ksksksk continue assim.
GuilhermeNunes is offline   Reply With Quote
Old 23/08/2017, 12:07 AM   #3
C4rtm4n
Gangsta
 
C4rtm4n's Avatar
 
Join Date: Jul 2017
Location: South Park
Posts: 590
Reputation: 13
Default Re: Base de GPS em dialog

Util para quem esta fazendo servidor de RPG só uma dica faz em Inglês para os gringos tbm aqui: http://forum.sa-mp.com/forumdisplay.php?f=70

la tem muitos que estão fazendo servidor rpg e você ira ajudar muito quem não sabe

@Edit

Faltou a parte de desligar o GPS.
__________________
No Projects At the moment

C4rtm4n is online now   Reply With Quote
Old 23/08/2017, 02:07 AM   #4
fxckshzt
Huge Clucker
 
Join Date: Jul 2017
Location: 127.0.0.1
Posts: 272
Reputation: 11
Default Re: Base de GPS em dialog

Quote:
Originally Posted by C4rtm4n View Post
Util para quem esta fazendo servidor de RPG só uma dica faz em Inglês para os gringos tbm aqui: http://forum.sa-mp.com/forumdisplay.php?f=70

la tem muitos que estão fazendo servidor rpg e você ira ajudar muito quem não sabe

@Edit

Faltou a parte de desligar o GPS.
O Checkpoint é desmarcado quando o player chega até o local.
Testei e funcionou perfeitamente.
Se estiver se referindo há uma mensagem quando o player chega...
Acrescente a função GameTextForPlayer
Na callback OnPlayerEnterCheckpoint, abaixo da chave de verificação da variável "GPSLocal" que está igualada a 1.

Acrescentei e ficou até melhor para o player visualizar se chegou até o devido local que ele quer.
PHP Code:
public OnPlayerEnterCheckpoint(playerid)
{
    if(
GPSLocal[playerid] == 1)
    {
        
GPSLocal[playerid] = 0;
        
DisablePlayerCheckpoint(playerid);
        
GameTextForPlayer(playerid"~r~Você chegou no seu destino!"20004);
    }
    return 
1;

__________________
Paz & Amor
fxckshzt is offline   Reply With Quote
Old 23/08/2017, 02:12 AM   #5
GuilhermeNunes
Gangsta
 
Join Date: Feb 2017
Posts: 586
Reputation: 8
Default Re: Base de GPS em dialog

Amigo o Cartman quis dizer para você atualizar o tópico e ensinar uma opção de desligar o GPS


Exemplo

Desligar GPS
ai quando clica aparece O GPS foi deslogado e desmarca todos os Checkpoint.
GuilhermeNunes is offline   Reply With Quote
Old 23/08/2017, 02:15 AM   #6
fxckshzt
Huge Clucker
 
Join Date: Jul 2017
Location: 127.0.0.1
Posts: 272
Reputation: 11
Default Re: Base de GPS em dialog

Quote:
Originally Posted by C4rtm4n View Post
Util para quem esta fazendo servidor de RPG só uma dica faz em Inglês para os gringos tbm aqui: http://forum.sa-mp.com/forumdisplay.php?f=70

la tem muitos que estão fazendo servidor rpg e você ira ajudar muito quem não sabe

@Edit

Faltou a parte de desligar o GPS.
Desenvolvi agora o comando caso o player deseje desligar o GPS.

PHP Code:
CMD:desligargps(playerid)
{
    if(
GPSLocal[playerid] == 1)
    {
        
GPSLocal[playerid] = 0;
        
DisablePlayerCheckpoint(playerid);
        
SendClientMessage(playerid, -1,"{00BFFF}[SERVER]{FFFFFF}: Seu GPS foi desativado!");
    }
    else
    {
        
SendClientMessage(playerid, -1,"{FF0000}ERRO: Você não está com o GPS Ligado!");
    }
    return 
1;

__________________
Paz & Amor
fxckshzt is offline   Reply With Quote
Old 23/08/2017, 03:56 AM   #7
Swinte
Big Clucker
 
Swinte's Avatar
 
Join Date: Jan 2017
Location: Brasil
Posts: 146
Reputation: 4
Default Re: Base de GPS em dialog

Boa base para quem esta iniciando.
__________________
Code:
x
================
ip. x
ts3 : x
================
São Paulo F.C <3
Usuário de 2013
Swinte is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[FilterScript] [BASE DA BASE] aProp - Sistema de Propriedades(casas) v0.0001 Axll Lançamentos/Releases 63 02/08/2014 07:57 PM
[GameMode] [BASE]Brasil Ultimate Deathmatch[BASE] Jake_Dunlapp Lançamentos/Releases 27 12/05/2012 01:54 PM
[Map] Rock Base/Cave/Admin Base/Garage (whatever you want to call it) Firzendxiw Maps 11 21/06/2011 01:27 AM


All times are GMT. The time now is 07:38 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.