[Tutorial] Base de GPS em dialog
#1

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 код:
#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 код:
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 код:
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 код:
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 код:
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 код:
#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 код:
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 код:
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
Reply
#2

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.
Reply
#3

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.
Reply
#4

Quote:
Originally Posted by C4rtm4n
Посмотреть сообщение
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 код:
public OnPlayerEnterCheckpoint(playerid)
{
    if(
GPSLocal[playerid] == 1)
    {
        
GPSLocal[playerid] = 0;
        
DisablePlayerCheckpoint(playerid);
        
GameTextForPlayer(playerid"~r~Vocк chegou no seu destino!"20004);
    }
    return 
1;

Reply
#5

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.
Reply
#6

Quote:
Originally Posted by C4rtm4n
Посмотреть сообщение
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 код:
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;

Reply
#7

Boa base para quem esta iniciando.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)